summaryrefslogtreecommitdiff
path: root/Source/WebCore/inspector/front-end/inspector.js
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/inspector/front-end/inspector.js')
-rw-r--r--Source/WebCore/inspector/front-end/inspector.js254
1 files changed, 140 insertions, 114 deletions
diff --git a/Source/WebCore/inspector/front-end/inspector.js b/Source/WebCore/inspector/front-end/inspector.js
index a39246bb8..91ee54f03 100644
--- a/Source/WebCore/inspector/front-end/inspector.js
+++ b/Source/WebCore/inspector/front-end/inspector.js
@@ -29,7 +29,7 @@
*/
var WebInspector = {
- _createPanels: function()
+ _panelDescriptors: function()
{
this.panels = {};
WebInspector.inspectorView = new WebInspector.InspectorView();
@@ -37,35 +37,36 @@ var WebInspector = {
WebInspector.inspectorView.show(parentElement);
WebInspector.inspectorView.addEventListener(WebInspector.InspectorView.Events.PanelSelected, this._panelSelected, this);
+ var elements = new WebInspector.PanelDescriptor("elements", WebInspector.UIString("Elements"), "ElementsPanel", "ElementsPanel.js");
+ var resources = new WebInspector.PanelDescriptor("resources", WebInspector.UIString("Resources"), "ResourcesPanel", "ResourcesPanel.js");
+ var network = new WebInspector.PanelDescriptor("network", WebInspector.UIString("Network"), "NetworkPanel", "NetworkPanel.js");
+ var scripts = new WebInspector.PanelDescriptor("scripts", WebInspector.UIString("Sources"), "ScriptsPanel", "ScriptsPanel.js");
+ var timeline = new WebInspector.PanelDescriptor("timeline", WebInspector.UIString("Timeline"), "TimelinePanel", "TimelinePanel.js");
+ var profiles = new WebInspector.PanelDescriptor("profiles", WebInspector.UIString("Profiles"), "ProfilesPanel", "ProfilesPanel.js");
+ var audits = new WebInspector.PanelDescriptor("audits", WebInspector.UIString("Audits"), "AuditsPanel", "AuditsPanel.js");
+ var console = new WebInspector.PanelDescriptor("console", WebInspector.UIString("Console"), "ConsolePanel");
+ var allDescriptors = [elements, resources, network, scripts, timeline, profiles, audits, console];
+
+ var panelDescriptors = [];
if (WebInspector.WorkerManager.isWorkerFrontend()) {
- this.panels.scripts = new WebInspector.ScriptsPanel();
- this.panels.timeline = new WebInspector.TimelinePanel();
- this.panels.profiles = new WebInspector.ProfilesPanel();
- this.panels.console = new WebInspector.ConsolePanel();
- return;
+ panelDescriptors.push(scripts);
+ panelDescriptors.push(timeline);
+ panelDescriptors.push(profiles);
+ panelDescriptors.push(console);
+ return panelDescriptors;
}
+ var allDescriptors = [elements, resources, network, scripts, timeline, profiles, audits, console];
var hiddenPanels = (InspectorFrontendHost.hiddenPanels() || "").split(',');
- if (hiddenPanels.indexOf("elements") === -1)
- this.panels.elements = new WebInspector.ElementsPanel();
- if (hiddenPanels.indexOf("resources") === -1)
- this.panels.resources = new WebInspector.ResourcesPanel();
- if (hiddenPanels.indexOf("network") === -1)
- this.panels.network = new WebInspector.NetworkPanel();
- if (hiddenPanels.indexOf("scripts") === -1)
- this.panels.scripts = new WebInspector.ScriptsPanel();
- if (hiddenPanels.indexOf("timeline") === -1)
- this.panels.timeline = new WebInspector.TimelinePanel();
- if (hiddenPanels.indexOf("profiles") === -1)
- this.panels.profiles = new WebInspector.ProfilesPanel();
- if (hiddenPanels.indexOf("audits") === -1)
- this.panels.audits = new WebInspector.AuditsPanel();
- if (hiddenPanels.indexOf("console") === -1)
- this.panels.console = new WebInspector.ConsolePanel();
+ for (var i = 0; i < allDescriptors.length; ++i) {
+ if (hiddenPanels.indexOf(allDescriptors[i].name) === -1)
+ panelDescriptors.push(allDescriptors[i]);
+ }
+ return panelDescriptors;
},
_panelSelected: function()
{
- this._toggleConsoleButton.disabled = WebInspector.inspectorView.currentPanel() === WebInspector.panels.console;
+ this._toggleConsoleButton.disabled = WebInspector.inspectorView.currentPanel().name === "console";
},
_createGlobalStatusBarItems: function()
@@ -83,8 +84,12 @@ var WebInspector = {
this._toggleConsoleButton.addEventListener("click", this._toggleConsoleButtonClicked.bind(this), false);
mainStatusBar.insertBefore(this._toggleConsoleButton.element, bottomStatusBarContainer);
- if (this.panels.elements)
- mainStatusBar.insertBefore(this.panels.elements.nodeSearchButton.element, bottomStatusBarContainer);
+ if (!WebInspector.WorkerManager.isWorkerFrontend()) {
+ this._nodeSearchButton = new WebInspector.StatusBarButton(WebInspector.UIString("Select an element in the page to inspect it."), "node-search-status-bar-item");
+ this._nodeSearchButton.addEventListener("click", this._toggleSearchingForNode, this);
+ mainStatusBar.insertBefore(this._nodeSearchButton.element, bottomStatusBarContainer);
+ }
+
mainStatusBar.appendChild(this.settingsController.statusBarItem);
},
@@ -251,14 +256,7 @@ var WebInspector = {
body.addStyleClass("compact");
else
body.removeStyleClass("compact");
-
- // This may be called before doLoadedDone, hence the bulk of inspector objects may
- // not be created yet.
- if (WebInspector.toolbar)
- WebInspector.toolbar.compact = x;
-
- if (WebInspector.drawer)
- WebInspector.drawer.resize();
+ WebInspector.windowResize();
},
_updateErrorAndWarningCounts: function()
@@ -321,15 +319,6 @@ var WebInspector = {
errorWarningElement.title = null;
},
- /**
- * @param {NetworkAgent.RequestId} requestId
- * @return {?WebInspector.NetworkRequest}
- */
- networkRequestById: function(requestId)
- {
- return this.panels.network.requestById(requestId);
- },
-
get inspectedPageDomain()
{
var parsedURL = WebInspector.inspectedPageURL && WebInspector.inspectedPageURL.asParsedURL();
@@ -365,6 +354,36 @@ var WebInspector = {
{
WebInspector.settings.zoomLevel.set(this._zoomLevel);
InspectorFrontendHost.setZoomFactor(Math.pow(1.2, this._zoomLevel));
+ },
+
+ _toggleSearchingForNode: function()
+ {
+ var enabled = !this._nodeSearchButton.toggled;
+ /**
+ * @param {?Protocol.Error} error
+ */
+ function callback(error)
+ {
+ if (!error)
+ this._nodeSearchButton.toggled = enabled;
+ }
+ WebInspector.domAgent.setInspectModeEnabled(enabled, callback.bind(this));
+ },
+
+ _profilesLinkifier: function(title)
+ {
+ var profileStringMatches = WebInspector.ProfileURLRegExp.exec(title);
+ if (profileStringMatches) {
+ var profilesPanel = /** @ type {WebInspector.ProfilesPanel} */ WebInspector.panel("profiles");
+ title = WebInspector.ProfilesPanel._instance.displayTitleForProfileLink(profileStringMatches[2], profileStringMatches[1]);
+ }
+ return title;
+ },
+
+ _debuggerPaused: function()
+ {
+ // Create scripts panel upon demand.
+ WebInspector.panel("scripts");
}
}
@@ -439,6 +458,8 @@ WebInspector.doLoadedDone = function()
PageAgent.canOverrideDeviceMetrics(WebInspector._initializeCapability.bind(WebInspector, "canOverrideDeviceMetrics", null));
PageAgent.canOverrideGeolocation(WebInspector._initializeCapability.bind(WebInspector, "canOverrideGeolocation", null));
PageAgent.canOverrideDeviceOrientation(WebInspector._initializeCapability.bind(WebInspector, "canOverrideDeviceOrientation", WebInspector._doLoadedDoneWithCapabilities.bind(WebInspector)));
+ if ("debugLoad" in WebInspector.queryParamsObject)
+ WebInspector._doLoadedDoneWithCapabilities();
}
WebInspector._doLoadedDoneWithCapabilities = function()
@@ -455,9 +476,6 @@ WebInspector._doLoadedDoneWithCapabilities = function()
this.console.addEventListener(WebInspector.ConsoleModel.Events.MessageAdded, this._updateErrorAndWarningCounts, this);
this.console.addEventListener(WebInspector.ConsoleModel.Events.RepeatCountUpdated, this._updateErrorAndWarningCounts, this);
- this.debuggerModel = new WebInspector.DebuggerModel();
- this.breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, this.debuggerModel);
-
WebInspector.CSSCompletions.requestCSSNameCompletions();
this.drawer = new WebInspector.Drawer();
@@ -465,6 +483,8 @@ WebInspector._doLoadedDoneWithCapabilities = function()
this.networkManager = new WebInspector.NetworkManager();
this.resourceTreeModel = new WebInspector.ResourceTreeModel(this.networkManager);
+ this.debuggerModel = new WebInspector.DebuggerModel();
+ this.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
this.networkLog = new WebInspector.NetworkLog();
this.domAgent = new WebInspector.DOMAgent();
this.javaScriptContextManager = new WebInspector.JavaScriptContextManager(this.resourceTreeModel, this.consoleView);
@@ -495,17 +515,21 @@ WebInspector._doLoadedDoneWithCapabilities = function()
this.openAnchorLocationRegistry.registerHandler(autoselectPanel, function() { return false; });
this.workspace = new WebInspector.Workspace();
+ this.breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, this.debuggerModel, this.workspace);
- this._createPanels();
this._createGlobalStatusBarItems();
- this.toolbar = new WebInspector.Toolbar();
WebInspector._installDockToRight();
- for (var panelName in this.panels)
- this.addPanel(this.panels[panelName]);
+ this.toolbar = new WebInspector.Toolbar();
+ this.toolbar.setCoalescingUpdate(true);
+ var panelDescriptors = this._panelDescriptors();
+ for (var i = 0; i < panelDescriptors.length; ++i)
+ WebInspector.inspectorView.addPanel(panelDescriptors[i]);
+ this.toolbar.setCoalescingUpdate(false);
this.addMainEventListeners(document);
+ WebInspector.registerLinkifierPlugin(this._profilesLinkifier.bind(this));
window.addEventListener("resize", this.windowResize.bind(this), true);
@@ -527,6 +551,9 @@ WebInspector._doLoadedDoneWithCapabilities = function()
DatabaseAgent.enable();
DOMStorageAgent.enable();
+ if (!Capabilities.profilerCausesRecompilation || WebInspector.settings.profilerEnabled.get())
+ ProfilerAgent.enable();
+
if (WebInspector.settings.showPaintRects.get())
PageAgent.setShowPaintRects(true);
@@ -569,11 +596,6 @@ WebInspector._installDockToRight = function()
}
}
-WebInspector.addPanel = function(panel)
-{
- WebInspector.inspectorView.addPanel(panel);
-}
-
var windowLoaded = function()
{
var localizedStringsURL = InspectorFrontendHost.localizedStringsURL();
@@ -620,10 +642,14 @@ WebInspector.dispatchMessageFromBackend = function(messageObject)
WebInspector.windowResize = function(event)
{
- WebInspector.inspectorView.doResize();
- WebInspector.drawer.resize();
- WebInspector.toolbar.resize();
- WebInspector.settingsController.resize();
+ if (WebInspector.inspectorView)
+ WebInspector.inspectorView.doResize();
+ if (WebInspector.drawer)
+ WebInspector.drawer.resize();
+ if (WebInspector.toolbar)
+ WebInspector.toolbar.resize();
+ if (WebInspector.settingsController)
+ WebInspector.settingsController.resize();
}
WebInspector.setDockingUnavailable = function(unavailable)
@@ -655,7 +681,7 @@ WebInspector.documentClick = function(event)
if (WebInspector.isBeingEdited(event.target) || WebInspector._showAnchorLocation(anchor))
return;
- const profileMatch = WebInspector.ProfileType.URLRegExp.exec(anchor.href);
+ const profileMatch = WebInspector.ProfileURLRegExp.exec(anchor.href);
if (profileMatch) {
WebInspector.showProfileForURL(anchor.href);
return;
@@ -665,7 +691,7 @@ WebInspector.documentClick = function(event)
if (parsedURL && parsedURL.scheme === "webkit-link-action") {
if (parsedURL.host === "show-panel") {
var panel = parsedURL.path.substring(1);
- if (WebInspector.panels[panel])
+ if (WebInspector.panel(panel))
WebInspector.showPanel(panel);
}
return;
@@ -691,10 +717,9 @@ WebInspector.documentClick = function(event)
WebInspector.openResource = function(resourceURL, inResourcesPanel)
{
var resource = WebInspector.resourceForURL(resourceURL);
- if (inResourcesPanel && resource) {
- WebInspector.showPanel("resources");
- WebInspector.panels.resources.showResource(resource);
- } else
+ if (inResourcesPanel && resource)
+ WebInspector.showPanel("resources").showResource(resource);
+ else
InspectorFrontendHost.openInNewTab(resourceURL);
}
@@ -720,7 +745,7 @@ WebInspector._registerShortcuts = function()
var advancedSearchShortcut = WebInspector.AdvancedSearchController.createShortcut();
section.addKey(advancedSearchShortcut.name, WebInspector.UIString("Search across all sources"));
- var openResourceShortcut = WebInspector.OpenResourceDialog.createShortcut();
+ var openResourceShortcut = WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta);
section.addKey(openResourceShortcut.name, WebInspector.UIString("Go to source"));
if (WebInspector.isMac()) {
@@ -770,7 +795,7 @@ WebInspector.documentKeyDown = function(event)
switch (event.keyIdentifier) {
case "U+004F": // O key
if (!event.shiftKey && !event.altKey && WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event)) {
- WebInspector.panels.scripts.showGoToSourceDialog();
+ WebInspector.showPanel("scripts").showGoToSourceDialog();
event.consume(true);
}
break;
@@ -814,6 +839,22 @@ WebInspector.documentKeyDown = function(event)
}
break;
}
+
+ // Cmd/Control + Shift + C should be a shortcut to clicking the Node Search Button.
+ // This shortcut matches Firebug.
+ if (event.keyIdentifier === "U+0043") { // C key
+ if (WebInspector.isMac())
+ var isNodeSearchKey = event.metaKey && !event.ctrlKey && !event.altKey && event.shiftKey;
+ else
+ var isNodeSearchKey = event.ctrlKey && !event.metaKey && !event.altKey && event.shiftKey;
+
+ if (isNodeSearchKey) {
+ this._toggleSearchingForNode();
+ event.consume(true);
+ return;
+ }
+ return;
+ }
}
WebInspector.postDocumentKeyDown = function(event)
@@ -853,14 +894,6 @@ WebInspector.contextMenuEventFired = function(event)
event.preventDefault();
}
-WebInspector.toggleSearchingForNode = function()
-{
- if (this.panels.elements) {
- this.showPanel("elements");
- this.panels.elements.toggleSearchingForNode();
- }
-}
-
WebInspector.showConsole = function()
{
if (WebInspector._toggleConsoleButton && !WebInspector._toggleConsoleButton.toggled) {
@@ -872,13 +905,12 @@ WebInspector.showConsole = function()
WebInspector.showPanel = function(panel)
{
- if (!(panel in this.panels)) {
- if (WebInspector.WorkerManager.isWorkerFrontend())
- panel = "scripts";
- else
- panel = "elements";
- }
- WebInspector.inspectorView.setCurrentPanel(this.panels[panel]);
+ return WebInspector.inspectorView.showPanel(panel);
+}
+
+WebInspector.panel = function(panel)
+{
+ return WebInspector.inspectorView.panel(panel);
}
WebInspector.bringToFront = function()
@@ -965,45 +997,45 @@ WebInspector.inspect = function(payload, hints)
{
var object = WebInspector.RemoteObject.fromPayload(payload);
if (object.subtype === "node") {
- // Request node from backend and focus it.
- WebInspector.inspectorView.setCurrentPanel(WebInspector.panels.elements);
- object.pushNodeToFrontend(WebInspector.updateFocusedNode.bind(WebInspector), object.release.bind(object));
+ function callback(nodeId)
+ {
+ WebInspector._updateFocusedNode(nodeId);
+ object.release();
+ }
+ object.pushNodeToFrontend(callback);
return;
}
- if (hints.databaseId) {
- WebInspector.inspectorView.setCurrentPanel(WebInspector.panels.resources);
- WebInspector.panels.resources.selectDatabase(hints.databaseId);
- } else if (hints.domStorageId) {
- WebInspector.inspectorView.setCurrentPanel(WebInspector.panels.resources);
- WebInspector.panels.resources.selectDOMStorage(hints.domStorageId);
- }
+ if (hints.databaseId)
+ WebInspector.showPanel("resources").selectDatabase(hints.databaseId);
+ else if (hints.domStorageId)
+ WebInspector.showPanel("resources").selectDOMStorage(hints.domStorageId);
object.release();
}
-WebInspector.updateFocusedNode = function(nodeId)
+WebInspector._updateFocusedNode = function(nodeId)
{
- this.panels.elements.revealAndSelectNode(nodeId);
+ if (WebInspector._nodeSearchButton.toggled) {
+ InspectorFrontendHost.bringToFront();
+ WebInspector._nodeSearchButton.toggled = false;
+ }
+ WebInspector.showPanel("elements").revealAndSelectNode(nodeId);
}
WebInspector._showAnchorLocation = function(anchor)
{
if (WebInspector.openAnchorLocationRegistry.dispatch({ url: anchor.href, lineNumber: anchor.lineNumber}))
return true;
- var preferredPanels = [];
- if (this.panels[anchor.preferredPanel])
- preferredPanels.push(this.panels[anchor.preferredPanel]);
- if (this.panels.scripts)
- preferredPanels.push(this.panels.scripts);
- if (this.panels.resources)
- preferredPanels.push(this.panels.resources);
- if (this.panels.network)
- preferredPanels.push(this.panels.network);
- for (var i = 0; i < preferredPanels.length; ++i) {
- if (WebInspector._showAnchorLocationInPanel(anchor, preferredPanels[i]))
- return true;
- }
+ var preferredPanel = this.panels[anchor.preferredPanel];
+ if (preferredPanel && WebInspector._showAnchorLocationInPanel(anchor, preferredPanel))
+ return true;
+ if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("scripts")))
+ return true;
+ if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("resources")))
+ return true;
+ if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("network")))
+ return true;
return false;
}
@@ -1031,8 +1063,7 @@ WebInspector.showPanelForAnchorNavigation = function(panel)
WebInspector.showProfileForURL = function(url)
{
- WebInspector.showPanel("profiles");
- WebInspector.panels.profiles.showProfileForURL(url);
+ WebInspector.showPanel("profiles").showProfileForURL(url);
}
WebInspector.evaluateInConsole = function(expression, showResultOnly)
@@ -1056,9 +1087,4 @@ WebInspector.frontendReused = function()
this.resourceTreeModel.frontendReused();
}
-WebInspector._toolbarItemClicked = function(event)
-{
- var toolbarItem = event.currentTarget;
- WebInspector.inspectorView.setCurrentPanel(toolbarItem.panel);
-}
-
+WebInspector.ProfileURLRegExp = /webkit-profile:\/\/(.+)\/(.+)#([0-9]+)/;