diff -r 000000000000 -r 6474c204b198 browser/devtools/netmonitor/test/browser_net_image-tooltip.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/netmonitor/test/browser_net_image-tooltip.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,77 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + * Tests if image responses show a popup in the requests menu when hovered. + */ + +function test() { + initNetMonitor(CONTENT_TYPE_WITHOUT_CACHE_URL).then(([aTab, aDebuggee, aMonitor]) => { + info("Starting test... "); + + let { $, 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 after a few requests were made..."); + let requestItem = RequestsMenu.items[5]; + let requestTooltip = requestItem.attachment.tooltip; + ok(requestTooltip, "There should be a tooltip instance for the image request."); + + let anchor = $(".requests-menu-file", requestItem.target); + return showTooltipOn(requestTooltip, anchor); + }).then(aTooltip => { + ok(true, + "An tooltip was successfully opened for the image request."); + is(aTooltip.content.querySelector("image").src, TEST_IMAGE_DATA_URI, + "The tooltip's image content is displayed correctly."); + + 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."); + let requestItem = RequestsMenu.items[6]; + let requestTooltip = requestItem.attachment.tooltip; + ok(requestTooltip, "There should be a tooltip instance for the image request."); + + let anchor = $(".requests-menu-file", requestItem.target); + return showTooltipOn(requestTooltip, anchor); + }).then(aTooltip => { + ok(true, + "An tooltip was successfully opened for the image request."); + is(aTooltip.content.querySelector("image").src, TEST_IMAGE_DATA_URI, + "The tooltip's image content is displayed correctly."); + + teardown(aMonitor).then(finish); + }); + + function reloadAndPerformRequests() { + NetMonitorController.triggerActivity(ACTIVITY_TYPE.RELOAD.WITH_CACHE_ENABLED).then(() => { + aDebuggee.performRequests(); + }); + } + + /** + * @return a promise that resolves when the tooltip is shown + */ + function showTooltipOn(tooltip, element) { + return Task.spawn(function*() { + let isTarget = yield tooltip.isValidHoverTarget(element); + let onShown = tooltip.once("shown"); + tooltip.show(); + yield onShown; + return tooltip; + }); + } + + aDebuggee.performRequests(); + }); +}