/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

/**
 * Tests if image responses show a thumbnail in the requests menu.
 */

function test() {
  initNetMonitor(CONTENT_TYPE_WITHOUT_CACHE_URL).then(([aTab, aDebuggee, aMonitor]) => {
    info("Starting test... ");

    let { $, $all, EVENTS, ACTIVITY_TYPE, NetMonitorView, NetMonitorController } = aMonitor.panelWin;
    let { RequestsMenu } = NetMonitorView;

    promise.all([
      waitForNetworkEvents(aMonitor, 6),
      waitFor(aMonitor.panelWin, EVENTS.RESPONSE_IMAGE_THUMBNAIL_DISPLAYED)
    ]).then(() => {
      info("Checking the image thumbnail when all items are shown.");
      checkImageThumbnail();

      RequestsMenu.sortBy("size");
      info("Checking the image thumbnail when all items are sorted.");
      checkImageThumbnail();

      RequestsMenu.filterOn("images");
      info("Checking the image thumbnail when only images are shown.");
      checkImageThumbnail();

      info("Reloading the debuggee and performing all requests again...");
      reloadAndPerformRequests();

      return promise.all([
        waitForNetworkEvents(aMonitor, 7), // 6 + 1
        waitFor(aMonitor.panelWin, EVENTS.RESPONSE_IMAGE_THUMBNAIL_DISPLAYED)
      ]);
    }).then(() => {
      info("Checking the image thumbnail after a reload.");
      checkImageThumbnail();

      teardown(aMonitor).then(finish);
    });

    function reloadAndPerformRequests() {
      NetMonitorController.triggerActivity(ACTIVITY_TYPE.RELOAD.WITH_CACHE_ENABLED).then(() => {
        aDebuggee.performRequests();
      });
    }

    function checkImageThumbnail() {
      is($all(".requests-menu-icon[type=thumbnail]").length, 1,
        "There should be only one image request with a thumbnail displayed.");
      is($(".requests-menu-icon[type=thumbnail]").src, TEST_IMAGE_DATA_URI,
        "The image requests-menu-icon thumbnail is displayed correctly.");
      is($(".requests-menu-icon[type=thumbnail]").hidden, false,
        "The image requests-menu-icon thumbnail should not be hidden.");
    }

    aDebuggee.performRequests();
  });
}
