blob: 2dc033c4f57f06b56f266dbccccd9edecae8a4ea [file] [log] [blame]
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/extensions-test.js"></script>
<script type="text/javascript">
function initialize_extensionsSidebarTest()
{
InspectorTest.expandSidebar = function(callback)
{
var sidebar = InspectorTest._extensionSidebar();
InspectorTest.runAfterPendingDispatches(function() {
sidebar.expand();
callback();
});
}
InspectorTest._extensionSidebar = function()
{
var sidebarPanes = WebInspector.panel("elements").sidebarPanes;
// the sidebar of interest is presumed to always be last.
return sidebarPanes[Object.keys(sidebarPanes).pop()];
}
}
function extension_expandSidebar(callback)
{
evaluateOnFrontend("InspectorTest.expandSidebar(reply);", callback);
}
function extension_testOnSelectionChanged(nextTest)
{
function onSelectionChanged()
{
webInspector.panels.elements.onSelectionChanged.removeListener(onSelectionChanged);
output("onSelectionChanged fired");
nextTest();
}
webInspector.panels.elements.onSelectionChanged.addListener(onSelectionChanged);
webInspector.inspectedWindow.eval("inspect(document.body.children[0]), 0");
}
function extension_testOnRequestFinished(nextTest)
{
function onRequestFinished()
{
webInspector.network.onRequestFinished.removeListener(onRequestFinished);
output("onRequestFinished fired");
nextTest();
}
webInspector.network.onRequestFinished.addListener(onRequestFinished);
webInspector.inspectedWindow.eval("var xhr = new XMLHttpRequest(); xhr.open('GET', '" + location.href + "', false); xhr.send(null);");
}
function extension_testOnNavigated(nextTest)
{
var urls = [];
var loadCount = 0;
function onLoad()
{
++loadCount;
processEvent();
}
function processEvent()
{
if (loadCount !== urls.length)
return;
if (loadCount === 1)
evaluateOnFrontend("InspectorTest.navigate(WebInspector.inspectedPageURL.substring(0, WebInspector.inspectedPageURL.indexOf('?')), reply)", onLoad);
else {
webInspector.network.onNavigated.removeListener(onNavigated);
for (var i = 0; i < urls.length; ++i)
output("Navigated to: " + urls[i]);
nextTest();
}
}
function onNavigated(url)
{
urls.push(url.replace(/^(.*\/)*/, ""));
processEvent();
}
webInspector.network.onNavigated.addListener(onNavigated);
evaluateOnFrontend("InspectorTest.navigate(WebInspector.inspectedPageURL + '?navigated', reply)", onLoad);
}
function extension_testViewShowHide(nextTest)
{
var listenersToCleanup = [];
var sidebar;
var beenToExtensionPanel = false;
function onViewEvent(type, viewName, viewWindow)
{
output("Got " + type + " event for " + viewName);
if (type !== "onShown")
return;
if (viewName === "panel") {
output("Panel shown, location: " + trimURL(viewWindow.location.href));
extension_showPanel("elements");
} else if (viewName === "sidebar") {
output("Sidebar shown, location: " + trimURL(viewWindow.location.href));
if (!beenToExtensionPanel) {
extension_showPanel("extension");
beenToExtensionPanel = true;
} else {
cleanupListeners();
nextTest();
}
}
}
function addListener(view, viewName, type)
{
var listener = bind(onViewEvent, null, type, viewName);
var event = view[type];
listenersToCleanup.push({ event: event, listener: listener });
event.addListener(listener);
}
function cleanupListeners()
{
for (var i = 0; i < listenersToCleanup.length; ++i)
listenersToCleanup[i].event.removeListener(listenersToCleanup[i].listener);
}
function onPanelCreated(panel)
{
addListener(panel, "panel", "onShown");
addListener(panel, "panel", "onHidden");
addListener(sidebar, "sidebar", "onHidden");
addListener(sidebar, "sidebar", "onShown");
sidebar.setPage(basePath + "extension-sidebar.html");
}
extension_showPanel("elements", extension_expandSidebar);
var basePath = location.pathname.replace(/\/[^/]*$/, "/");
function onSidebarCreated(sidebarPane)
{
sidebar = sidebarPane;
webInspector.panels.create("Test Panel", basePath + "extension-panel.png", basePath + "extension-panel.html", onPanelCreated);
}
webInspector.panels.elements.createSidebarPane("Test Sidebar", onSidebarCreated);
}
function extension_testTimelineEvents(nextTest)
{
function onTimelineEvent(record)
{
if (record.type === "Layout") {
output("Got Layout event from timeline");
webInspector.timeline.onEventRecorded.removeListener(onTimelineEvent);
nextTest();
}
}
webInspector.timeline.onEventRecorded.addListener(onTimelineEvent);
// Trigger a relayout.
webInspector.inspectedWindow.eval("document.body.style.float = 'left';");
}
</script>
</head>
<body onload="runTest()">
<p>Tests WebInspector extension API</p>
</body>
</html>