3 <script src="../../http/tests/inspector/inspector-test.js"></script>
4 <script src="../../http/tests/inspector/extensions-test.js"></script>
5 <script src="../../http/tests/inspector/debugger-test.js"></script>
6 <script src="../sources/debugger/resources/edit-me.js"></script>
7 <script type="text/javascript">
9 function initialize_extensionsSidebarTest()
11 InspectorTest.expandSidebar = function(callback)
13 var sidebar = InspectorTest._extensionSidebar();
14 InspectorTest.runAfterPendingDispatches(function() {
20 InspectorTest._extensionSidebar = function()
22 return WebInspector.inspectorView.panel("elements")._extensionSidebarPanes[0];
26 function extension_expandSidebar(callback)
28 evaluateOnFrontend("InspectorTest.expandSidebar(reply);", callback);
31 function extension_testOnSelectionChanged(nextTest)
33 function onSelectionChanged()
35 webInspector.panels.elements.onSelectionChanged.removeListener(onSelectionChanged);
36 output("onSelectionChanged fired");
39 webInspector.panels.elements.onSelectionChanged.addListener(onSelectionChanged);
40 webInspector.inspectedWindow.eval("inspect(document.body.children[0]), 0");
43 function extension_testSourcesOnSelectionChanged(nextTest)
45 function onSelectionChanged(selectionInfo)
47 webInspector.panels.sources.onSelectionChanged.removeListener(onSelectionChanged);
48 output("sources onSelectionChanged fired, selectionInfo:");
49 dumpObject(selectionInfo, {url: "url"});
52 webInspector.panels.sources.onSelectionChanged.addListener(onSelectionChanged);
53 evaluateOnFrontend("InspectorTest.showScriptSource(\"edit-me.js\")");
56 function extension_testOnRequestFinished(nextTest)
58 function onRequestFinished()
60 webInspector.network.onRequestFinished.removeListener(onRequestFinished);
61 output("onRequestFinished fired");
64 webInspector.network.onRequestFinished.addListener(onRequestFinished);
65 webInspector.inspectedWindow.eval("var xhr = new XMLHttpRequest(); xhr.open('GET', '" + location.href + "', false); xhr.send(null);");
68 function extension_testOnNavigated(nextTest)
78 function processEvent()
80 if (loadCount !== urls.length)
83 evaluateOnFrontend("InspectorTest.navigate(WebInspector.resourceTreeModel.inspectedPageURL().substring(0, WebInspector.resourceTreeModel.inspectedPageURL().indexOf('?')), reply)", onLoad);
85 webInspector.network.onNavigated.removeListener(onNavigated);
86 for (var i = 0; i < urls.length; ++i)
87 output("Navigated to: " + urls[i]);
91 function onNavigated(url)
93 urls.push(url.replace(/^(.*\/)*/, ""));
96 webInspector.network.onNavigated.addListener(onNavigated);
97 evaluateOnFrontend("InspectorTest.navigate(WebInspector.resourceTreeModel.inspectedPageURL() + '?navigated', reply)", onLoad);
100 function extension_testViewShowHide(nextTest)
102 var listenersToCleanup = [];
104 var beenToExtensionPanel = false;
106 function onViewEvent(type, viewName, viewWindow)
108 output("Got " + type + " event for " + viewName);
109 if (type !== "onShown")
111 if (viewName === "panel") {
112 output("Panel shown, location: " + trimURL(viewWindow.location.href));
113 extension_showPanel("elements");
114 } else if (viewName === "sidebar") {
115 output("Sidebar shown, location: " + trimURL(viewWindow.location.href));
116 if (!beenToExtensionPanel) {
117 extension_showPanel("extension");
118 beenToExtensionPanel = true;
125 function addListener(view, viewName, type)
127 var listener = bind(onViewEvent, null, type, viewName);
128 var event = view[type];
129 listenersToCleanup.push({ event: event, listener: listener });
130 event.addListener(listener);
132 function cleanupListeners()
134 for (var i = 0; i < listenersToCleanup.length; ++i)
135 listenersToCleanup[i].event.removeListener(listenersToCleanup[i].listener);
137 function onPanelCreated(panel)
139 addListener(panel, "panel", "onShown");
140 addListener(panel, "panel", "onHidden");
141 addListener(sidebar, "sidebar", "onHidden");
142 addListener(sidebar, "sidebar", "onShown");
143 sidebar.setPage(basePath + "extension-sidebar.html");
145 extension_showPanel("elements", extension_expandSidebar);
146 var basePath = location.pathname.replace(/\/[^/]*$/, "/");
147 function onSidebarCreated(sidebarPane)
149 sidebar = sidebarPane;
150 webInspector.panels.create("Test Panel", basePath + "extension-panel.png", basePath + "extension-panel.html", onPanelCreated);
152 webInspector.panels.elements.createSidebarPane("Test Sidebar", onSidebarCreated);
157 <body onload="runTest()">
158 <p>Tests WebInspector extension API</p>