15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com). 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2009 Joseph Pecoraro 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * its contributors may be used to endorse or promote products derived 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * from this software without specific prior written permission. 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var WebInspector = { 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _panelDescriptors: function() 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.panels = {}; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView = new WebInspector.InspectorView(); 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parentElement = document.getElementById("main"); 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.show(parentElement); 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.addEventListener(WebInspector.InspectorView.Events.PanelSelected, this._panelSelected, this); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elements = new WebInspector.ElementsPanelDescriptor(); 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resources = new WebInspector.PanelDescriptor("resources", WebInspector.UIString("Resources"), "ResourcesPanel", "ResourcesPanel.js"); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var network = new WebInspector.NetworkPanelDescriptor(); 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var scripts = new WebInspector.ScriptsPanelDescriptor(); 44926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var timeline = new WebInspector.TimelinePanelDescriptor(); 45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var profiles = new WebInspector.ProfilesPanelDescriptor(); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var audits = new WebInspector.PanelDescriptor("audits", WebInspector.UIString("Audits"), "AuditsPanel", "AuditsPanel.js"); 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var console = new WebInspector.PanelDescriptor("console", WebInspector.UIString("Console"), "ConsolePanel"); 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var allDescriptors = [elements, resources, network, scripts, timeline, profiles, audits, console]; 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var allProfilers = [profiles]; 5053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (WebInspector.experimentsSettings.customizableToolbar.isEnabled()) { 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) allProfilers = []; 52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) allProfilers.push(new WebInspector.PanelDescriptor("cpu-profiler", WebInspector.UIString("CPU Profiler"), "CPUProfilerPanel", "ProfilesPanel.js")); 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!WebInspector.WorkerManager.isWorkerFrontend()) 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) allProfilers.push(new WebInspector.PanelDescriptor("css-profiler", WebInspector.UIString("CSS Profiler"), "CSSSelectorProfilerPanel", "ProfilesPanel.js")); 5553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) allProfilers.push(new WebInspector.PanelDescriptor("heap-profiler", WebInspector.UIString("Heap Profiler"), "HeapProfilerPanel", "ProfilesPanel.js")); 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!WebInspector.WorkerManager.isWorkerFrontend() && WebInspector.experimentsSettings.canvasInspection.isEnabled()) 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) allProfilers.push(new WebInspector.PanelDescriptor("canvas-profiler", WebInspector.UIString("Canvas Profiler"), "CanvasProfilerPanel", "ProfilesPanel.js")); 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) Array.prototype.splice.bind(allDescriptors, allDescriptors.indexOf(profiles), 1).apply(null, allProfilers); 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var panelDescriptors = []; 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.WorkerManager.isWorkerFrontend()) { 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) panelDescriptors.push(scripts); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) panelDescriptors.push(timeline); 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) panelDescriptors = panelDescriptors.concat(allProfilers); 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) panelDescriptors.push(console); 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return panelDescriptors; 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < allDescriptors.length; ++i) 70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) panelDescriptors.push(allDescriptors[i]); 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return panelDescriptors; 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _panelSelected: function() 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._toggleConsoleButton.setEnabled(WebInspector.inspectorView.currentPanel().name !== "console"); 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _createGlobalStatusBarItems: function() 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var bottomStatusBarContainer = document.getElementById("bottom-status-bar-container"); 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Create main dock button and options. 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var mainStatusBar = document.getElementById("main-status-bar"); 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mainStatusBar.insertBefore(this.dockController.element, bottomStatusBarContainer); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggleConsoleButton = new WebInspector.StatusBarButton(WebInspector.UIString("Show console."), "console-status-bar-item"); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggleConsoleButton.addEventListener("click", this._toggleConsoleButtonClicked.bind(this), false); 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mainStatusBar.insertBefore(this._toggleConsoleButton.element, bottomStatusBarContainer); 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this.inspectElementModeController) 9253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) mainStatusBar.insertBefore(this.inspectElementModeController.toggleSearchButton.element, bottomStatusBarContainer); 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) mainStatusBar.appendChild(this.settingsController.statusBarItem); 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _toggleConsoleButtonClicked: function() 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 99926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!this._toggleConsoleButton.enabled()) 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var animationType = window.event && window.event.shiftKey ? WebInspector.Drawer.AnimationType.Slow : WebInspector.Drawer.AnimationType.Normal; 10353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 10453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._toggleConsoleButton.toggled) 10553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.closeConsole(animationType); 10653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) else 10753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.showConsole(animationType); 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {Element} statusBarElement 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {WebInspector.View} view 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function()=} onclose 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) showViewInDrawer: function(statusBarElement, view, onclose) 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 11753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._toggleConsoleButton.title = WebInspector.UIString("Show console."); 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggleConsoleButton.toggled = false; 11953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._removeDrawerView(); 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var drawerStatusBarHeader = document.createElement("div"); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) drawerStatusBarHeader.className = "drawer-header status-bar-item"; 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) drawerStatusBarHeader.appendChild(statusBarElement); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) drawerStatusBarHeader.onclose = onclose; 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 12653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var closeButton = drawerStatusBarHeader.createChild("div", "close-button"); 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closeButton.addEventListener("click", this.closeViewInDrawer.bind(this), false); 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 129926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var panelStatusBar = document.getElementById("panel-status-bar"); 130926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var drawerViewAnchor = document.getElementById("drawer-view-anchor"); 131926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) panelStatusBar.insertBefore(drawerStatusBarHeader, drawerViewAnchor); 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._drawerStatusBarHeader = drawerStatusBarHeader; 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.drawer.show(view, WebInspector.Drawer.AnimationType.Immediately); 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) closeViewInDrawer: function() 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._drawerStatusBarHeader) { 13953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._removeDrawerView(); 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Once drawer is closed console should be shown if it was shown before current view replaced it in drawer. 14253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._consoleWasShown) 14353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.showConsole(); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 14553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.drawer.hide(WebInspector.Drawer.AnimationType.Immediately); 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _removeDrawerView: function() 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._drawerStatusBarHeader) { 152591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch this._drawerStatusBarHeader.remove(); 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._drawerStatusBarHeader.onclose) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._drawerStatusBarHeader.onclose(); 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._drawerStatusBarHeader; 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 15953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 16053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {WebInspector.Drawer.AnimationType=} animationType 16153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 16253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) showConsole: function(animationType) 16353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 16453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) animationType = animationType || WebInspector.Drawer.AnimationType.Normal; 16553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 16653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this.consoleView.isShowing()) 16753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 16853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 16953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (WebInspector.drawer.visible) 17053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._removeDrawerView(); 17153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 17253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._toggleConsoleButton.toggled = true; 17353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._toggleConsoleButton.title = WebInspector.UIString("Hide console."); 17453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.drawer.show(this.consoleView, animationType); 17553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._consoleWasShown = true; 17653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 17753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 17853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 17953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {WebInspector.Drawer.AnimationType=} animationType 18053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 18153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) closeConsole: function(animationType) 18253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 18353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) animationType = animationType || WebInspector.Drawer.AnimationType.Normal; 18453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 18553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!this.consoleView.isShowing() || !WebInspector.drawer.visible) 18653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 18753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 18853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._toggleConsoleButton.toggled = false; 18953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._toggleConsoleButton.title = WebInspector.UIString("Show console."); 19053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.drawer.hide(animationType); 19153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._consoleWasShown = false; 19253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 19353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 1947757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch _resetErrorAndWarningCounts: function() 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var errorWarningElement = document.getElementById("error-warning-count"); 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!errorWarningElement) 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2007757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch errorWarningElement.addStyleClass("hidden"); 2017757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch }, 2027757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 2037757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch _updateErrorAndWarningCounts: function() 2047757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch { 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var errors = WebInspector.console.errors; 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var warnings = WebInspector.console.warnings; 2077757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!errors && !warnings) { 2097757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch this._resetErrorAndWarningCounts(); 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2137757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch var errorWarningElement = document.getElementById("error-warning-count"); 2147757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch if (!errorWarningElement) 2157757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch return; 2167757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.removeStyleClass("hidden"); 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.removeChildren(); 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (errors) { 22253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var errorImageElement = errorWarningElement.createChild("div", "error-icon-small"); 22353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var errorElement = errorWarningElement.createChild("span"); 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorElement.id = "error-count"; 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorElement.textContent = errors; 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (warnings) { 22953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var warningsImageElement = errorWarningElement.createChild("div", "warning-icon-small"); 23053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var warningsElement = errorWarningElement.createChild("span"); 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) warningsElement.id = "warning-count"; 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) warningsElement.textContent = warnings; 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (errors) { 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (warnings) { 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (errors == 1) { 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (warnings == 1) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d error, %d warning", errors, warnings); 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d error, %d warnings", errors, warnings); 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if (warnings == 1) 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d errors, %d warning", errors, warnings); 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d errors, %d warnings", errors, warnings); 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if (errors == 1) 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d error", errors); 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d errors", errors); 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else if (warnings == 1) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d warning", warnings); 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (warnings) 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = WebInspector.UIString("%d warnings", warnings); 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningElement.title = null; 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get inspectedPageDomain() 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parsedURL = WebInspector.inspectedPageURL && WebInspector.inspectedPageURL.asParsedURL(); 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return parsedURL ? parsedURL.host : ""; 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _initializeCapability: function(name, callback, error, result) 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Capabilities[name] = result; 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(); 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _zoomIn: function() 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._zoomLevel = Math.min(this._zoomLevel + 1, WebInspector.Zoom.Table.length - WebInspector.Zoom.DefaultOffset - 1); 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestZoom(); 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _zoomOut: function() 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._zoomLevel = Math.max(this._zoomLevel - 1, -WebInspector.Zoom.DefaultOffset); 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestZoom(); 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _resetZoom: function() 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._zoomLevel = 0; 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestZoom(); 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _requestZoom: function() 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.settings.zoomLevel.set(this._zoomLevel); 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // For backwards compatibility, zoomLevel takes integers (with 0 being default zoom). 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var index = this._zoomLevel + WebInspector.Zoom.DefaultOffset; 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index = Math.min(WebInspector.Zoom.Table.length - 1, index); 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) index = Math.max(0, index); 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.setZoomFactor(WebInspector.Zoom.Table[index]); 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 29953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _debuggerPaused: function() 30053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 30153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // Create scripts panel upon demand. 30253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.panel("scripts"); 30353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) }, 30453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 30553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) _setupTethering: function() 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 30753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!this._portForwardings) { 30853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._portForwardings = {}; 30953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.settings.portForwardings.addChangeListener(this._setupTethering.bind(this)); 31053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 31153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var entries = WebInspector.settings.portForwardings.get(); 31253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var newForwardings = {}; 31353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) for (var i = 0; i < entries.length; ++i) 31453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) newForwardings[entries[i].port] = entries[i].location; 31553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 31653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) for (var port in this._portForwardings) { 31753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!newForwardings[port]) 31853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) unbind(port); 31953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 32053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 32153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) for (var port in newForwardings) { 32253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._portForwardings[port] && newForwardings[port] === this._portForwardings[port]) 32353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) continue; 32453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (this._portForwardings[port]) 32553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) unbind(port); 32653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) bind(port, newForwardings[port]); 32753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 32853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._portForwardings = newForwardings; 32953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 33153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {string} port 33253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {string} location 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 33453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) function bind(port, location) 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 33653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var command = { method: "Tethering.bind", params: { port: parseInt(port, 10), location: location }, id: InspectorBackend.nextCallbackId() }; 33753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) InspectorBackend.sendMessageObjectToBackend(command); 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) /** 34153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {string} port 34253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 34353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) function unbind(port) 34453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 34553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var command = { method: "Tethering.unbind", params: { port: parseInt(port, 10) }, id: InspectorBackend.nextCallbackId() }; 34653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) InspectorBackend.sendMessageObjectToBackend(command); 34753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Events = { 352926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorLoaded: "InspectorLoaded", 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorClosing: "InspectorClosing" 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){(function parseQueryParameters() 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.queryParamsObject = {}; 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queryParams = window.location.search; 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!queryParams) 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var params = queryParams.substring(1).split("&"); 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < params.length; ++i) { 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var pair = params[i].split("="); 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.queryParamsObject[pair[0]] = pair[1]; 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)})();} 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.suggestReload = function() 370926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 371926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (window.confirm(WebInspector.UIString("It is recommended to restart inspector after making these changes. Would you like to restart it?"))) 372926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.reload(); 373926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 374926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 375926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.reload = function() 376926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 3775267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) InspectorAgent.reset(); 3785267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 379926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var queryParams = window.location.search; 380926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var url = window.location.href; 381926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) url = url.substring(0, url.length - queryParams.length); 382926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var queryParamsObject = {}; 383926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var name in WebInspector.queryParamsObject) 384926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) queryParamsObject[name] = WebInspector.queryParamsObject[name]; 385926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.dockController) 386926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) queryParamsObject["dockSide"] = this.dockController.dockSide(); 387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var names = Object.keys(queryParamsObject); 388926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < names.length; ++i) 389926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) url += (i ? "&" : "?") + names[i] + "=" + queryParamsObject[names[i]]; 390926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) document.location = url; 391926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 392926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.loaded = function() 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 39553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) InspectorBackend.loadFromJSONIfNeeded("../protocol.json"); 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.dockController = new WebInspector.DockController(); 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.WorkerManager.isDedicatedWorkerFrontend()) { 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Do not create socket for the worker front-end. 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.doLoadedDone(); 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ws; 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ("ws" in WebInspector.queryParamsObject) 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ws = "ws://" + WebInspector.queryParamsObject.ws; 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if ("page" in WebInspector.queryParamsObject) { 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var page = WebInspector.queryParamsObject.page; 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var host = "host" in WebInspector.queryParamsObject ? WebInspector.queryParamsObject.host : window.location.host; 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ws = "ws://" + host + "/devtools/page/" + page; 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (ws) { 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket = new WebSocket(ws); 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket.onmessage = function(message) { InspectorBackend.dispatch(message.data); } 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket.onerror = function(error) { console.error(error); } 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket.onopen = function() { 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.sendMessageToBackend = WebInspector.socket.send.bind(WebInspector.socket); 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.doLoadedDone(); 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket.onclose = function() { 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.socket._detachReason) 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (new WebInspector.RemoteDebuggingTerminatedScreen("websocket_closed")).showModal(); 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.doLoadedDone(); 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // In case of loading as a web page with no bindings / harness, kick off initialization manually. 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (InspectorFrontendHost.isStub) { 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendAPI.dispatchQueryParameters(); 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector._doLoadedDoneWithCapabilities(); 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.doLoadedDone = function() 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Install styles and themes 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.installPortStyles(); 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.socket) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) document.body.addStyleClass("remote"); 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.queryParamsObject.toolbarColor && WebInspector.queryParamsObject.textColor) 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.setToolbarColors(WebInspector.queryParamsObject.toolbarColor, WebInspector.queryParamsObject.textColor); 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.WorkerManager.loaded(); 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 44953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WorkerAgent.canInspectWorkers(WebInspector._initializeCapability.bind(WebInspector, "canInspectWorkers", WebInspector._doLoadedDoneWithCapabilities.bind(WebInspector))); 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector._doLoadedDoneWithCapabilities = function() 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 454926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) new WebInspector.VersionController().updateVersion(); 455926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.shortcutsScreen = new WebInspector.ShortcutsScreen(); 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._registerShortcuts(); 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // set order of some sections explicitly 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.shortcutsScreen.section(WebInspector.UIString("Console")); 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.shortcutsScreen.section(WebInspector.UIString("Elements Panel")); 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 463926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var panelDescriptors = this._panelDescriptors(); 464926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < panelDescriptors.length; ++i) 465926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) panelDescriptors[i].registerShortcuts(); 466926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.console = new WebInspector.ConsoleModel(); 4687757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch this.console.addEventListener(WebInspector.ConsoleModel.Events.ConsoleCleared, this._resetErrorAndWarningCounts, this); 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.console.addEventListener(WebInspector.ConsoleModel.Events.MessageAdded, this._updateErrorAndWarningCounts, this); 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.console.addEventListener(WebInspector.ConsoleModel.Events.RepeatCountUpdated, this._updateErrorAndWarningCounts, this); 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 472926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.CSSMetadata.requestCSSShorthandData(); 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.drawer = new WebInspector.Drawer(); 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.networkManager = new WebInspector.NetworkManager(); 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.resourceTreeModel = new WebInspector.ResourceTreeModel(this.networkManager); 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.debuggerModel = new WebInspector.DebuggerModel(); 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this); 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.networkLog = new WebInspector.NetworkLog(); 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.domAgent = new WebInspector.DOMAgent(); 48253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.domAgent.addEventListener(WebInspector.DOMAgent.Events.InspectNodeRequested, this._inspectNodeRequested, this); 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.runtimeModel = new WebInspector.RuntimeModel(this.resourceTreeModel); 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.consoleView = new WebInspector.ConsoleView(WebInspector.WorkerManager.isWorkerFrontend()); 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorBackend.registerInspectorDispatcher(this); 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 489926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.isolatedFileSystemManager = new WebInspector.IsolatedFileSystemManager(); 490926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.isolatedFileSystemDispatcher = new WebInspector.IsolatedFileSystemDispatcher(this.isolatedFileSystemManager); 491521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) this.workspace = new WebInspector.Workspace(this.isolatedFileSystemManager.mapping()); 492926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 493926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.cssModel = new WebInspector.CSSStyleModel(this.workspace); 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.timelineManager = new WebInspector.TimelineManager(); 495fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch this.tracingAgent = new WebInspector.TracingAgent(); 496e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch this.overridesSupport = new WebInspector.OverridesSupport(); 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.searchController = new WebInspector.SearchController(); 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.advancedSearchController = new WebInspector.AdvancedSearchController(); 50053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!WebInspector.WorkerManager.isWorkerFrontend()) 50153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.inspectElementModeController = new WebInspector.InspectElementModeController(); 50253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.settingsController = new WebInspector.SettingsController(); 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.domBreakpointsSidebarPane = new WebInspector.DOMBreakpointsSidebarPane(); 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._zoomLevel = WebInspector.settings.zoomLevel.get(); 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._zoomLevel) 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._requestZoom(); 5105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var autoselectPanel = WebInspector.UIString("a panel chosen automatically"); 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var openAnchorLocationSetting = WebInspector.settings.createSetting("openLinkHandler", autoselectPanel); 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.openAnchorLocationRegistry = new WebInspector.HandlerRegistry(openAnchorLocationSetting); 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.openAnchorLocationRegistry.registerHandler(autoselectPanel, function() { return false; }); 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.workspaceController = new WebInspector.WorkspaceController(this.workspace); 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 518926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.fileSystemWorkspaceProvider = new WebInspector.FileSystemWorkspaceProvider(this.isolatedFileSystemManager, this.workspace); 519926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 520926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.networkWorkspaceProvider = new WebInspector.SimpleWorkspaceProvider(this.workspace, WebInspector.projectTypes.Network); 521926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) new WebInspector.NetworkUISourceCodeProvider(this.networkWorkspaceProvider, this.workspace); 522926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.breakpointManager = new WebInspector.BreakpointManager(WebInspector.settings.breakpoints, this.debuggerModel, this.workspace); 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 525926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.scriptSnippetModel = new WebInspector.ScriptSnippetModel(this.workspace); 526926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new WebInspector.DebuggerScriptMapping(this.workspace, this.networkWorkspaceProvider); 528926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.liveEditSupport = new WebInspector.LiveEditSupport(this.workspace); 529926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.styleContentBinding = new WebInspector.StyleContentBinding(this.cssModel, this.workspace); 53093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) new WebInspector.CSSStyleSheetMapping(this.cssModel, this.workspace, this.networkWorkspaceProvider); 5315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) new WebInspector.PresentationConsoleMessageHelper(this.workspace); 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._createGlobalStatusBarItems(); 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.toolbar = new WebInspector.Toolbar(); 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.startBatchUpdate(); 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < panelDescriptors.length; ++i) 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.addPanel(panelDescriptors[i]); 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.endBatchUpdate(); 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addMainEventListeners(document); 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.addEventListener("resize", this.windowResize.bind(this), true); 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var errorWarningCount = document.getElementById("error-warning-count"); 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) errorWarningCount.addEventListener("click", this.showConsole.bind(this), false); 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._updateErrorAndWarningCounts(); 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.extensionServer.initExtensions(); 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.console.enableAgent(); 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function showInitialPanel() 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.inspectorView.currentPanel()) 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel(WebInspector.settings.lastActivePanel.get()); 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorAgent.enable(showInitialPanel); 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.databaseModel = new WebInspector.DatabaseModel(); 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.domStorageModel = new WebInspector.DOMStorageModel(); 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 56353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) ProfilerAgent.enable(); 5645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 565521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) WebInspector.settings.forceCompositingMode = WebInspector.settings.createBackendSetting("forceCompositingMode", false, PageAgent.setForceCompositingMode.bind(PageAgent)); 5665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebInspector.settings.showPaintRects = WebInspector.settings.createBackendSetting("showPaintRects", false, PageAgent.setShowPaintRects.bind(PageAgent)); 5675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebInspector.settings.showDebugBorders = WebInspector.settings.createBackendSetting("showDebugBorders", false, PageAgent.setShowDebugBorders.bind(PageAgent)); 5685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebInspector.settings.continuousPainting = WebInspector.settings.createBackendSetting("continuousPainting", false, PageAgent.setContinuousPaintingEnabled.bind(PageAgent)); 5695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebInspector.settings.showFPSCounter = WebInspector.settings.createBackendSetting("showFPSCounter", false, PageAgent.setShowFPSCounter.bind(PageAgent)); 570591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch WebInspector.settings.showScrollBottleneckRects = WebInspector.settings.createBackendSetting("showScrollBottleneckRects", false, PageAgent.setShowScrollBottleneckRects.bind(PageAgent)); 571926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 57293ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) WebInspector.settings.showMetricsRulers.addChangeListener(showRulersChanged); 57393ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) function showRulersChanged() 57493ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) { 57593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) PageAgent.setShowViewportSizeOnResize(true, WebInspector.settings.showMetricsRulers.get()); 57693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) } 57793ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) showRulersChanged(); 57893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 5795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.WorkerManager.loadCompleted(); 5805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendAPI.loadCompleted(); 581926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 58253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (WebInspector.experimentsSettings.tethering.isEnabled()) 58353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this._setupTethering(); 58453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 585926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.notifications.dispatchEventToListeners(WebInspector.Events.InspectorLoaded); 5865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var windowLoaded = function() 5895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 59053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.loaded(); 5915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.removeEventListener("DOMContentLoaded", windowLoaded, false); 5925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete windowLoaded; 5935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 5945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)window.addEventListener("DOMContentLoaded", windowLoaded, false); 5965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// We'd like to enforce asynchronous interaction between the inspector controller and the frontend. 5985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// It is needed to prevent re-entering the backend code. 5995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Also, native dispatches do not guarantee setTimeouts to be serialized, so we 6005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// enforce serialization using 'messagesToDispatch' queue. It is also important that JSC debugger 6015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// tests require that each command was dispatch within individual timeout callback, so we don't batch them. 6025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)var messagesToDispatch = []; 6045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.dispatchQueueIsEmpty = function() { 6065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return messagesToDispatch.length == 0; 6075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.dispatch = function(message) { 6105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) messagesToDispatch.push(message); 6115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setTimeout(function() { 6125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorBackend.dispatch(messagesToDispatch.shift()); 6135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 0); 6145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.windowResize = function(event) 6175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.inspectorView) 6195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.doResize(); 6205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.drawer) 6215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.drawer.resize(); 6225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.toolbar) 6235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.toolbar.resize(); 6245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.settingsController) 6255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.settingsController.resize(); 6265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.setDockingUnavailable = function(unavailable) 6295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.dockController) 6315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dockController.setDockingUnavailable(unavailable); 6325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.close = function(event) 6355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._isClosing) 6375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isClosing = true; 6395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.notifications.dispatchEventToListeners(WebInspector.Events.InspectorClosing); 6405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.closeWindow(); 6415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.documentClick = function(event) 6445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var anchor = event.target.enclosingNodeOrSelfWithNodeName("a"); 646926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (!anchor || (anchor.target === "_blank")) 6475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Prevent the link from navigating, since we don't do any navigation by following links normally. 6505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 6515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function followLink() 6535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 6545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (WebInspector.isBeingEdited(event.target)) 6555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 6565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (WebInspector.openAnchorLocationRegistry.dispatch({ url: anchor.href, lineNumber: anchor.lineNumber})) 6575267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) return; 6585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) if (WebInspector.showAnchorLocation(anchor)) 6595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 661926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) const profileMatch = WebInspector.ProfilesPanelDescriptor.ProfileURLRegExp.exec(anchor.href); 6625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (profileMatch) { 663926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.showPanel("profiles").showProfile(profileMatch[1], profileMatch[2]); 6645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parsedURL = anchor.href.asParsedURL(); 6685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (parsedURL && parsedURL.scheme === "webkit-link-action") { 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (parsedURL.host === "show-panel") { 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var panel = parsedURL.path.substring(1); 6715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.panel(panel)) 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel(panel); 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.openInNewTab(anchor.href); 6785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.followLinkTimeout) 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearTimeout(WebInspector.followLinkTimeout); 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (anchor.preventFollowOnDoubleClick) { 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Start a timeout if this is the first click, if the timeout is canceled 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // before it fires, then a double clicked happened or another link was clicked. 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.detail === 1) 6875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.followLinkTimeout = setTimeout(followLink, 333); 6885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 6895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 6905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) followLink(); 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.openResource = function(resourceURL, inResourcesPanel) 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resource = WebInspector.resourceForURL(resourceURL); 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (inResourcesPanel && resource) 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("resources").showResource(resource); 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 7005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.openInNewTab(resourceURL); 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector._registerShortcuts = function() 7045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var shortcut = WebInspector.KeyboardShortcut; 7065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("All Panels")); 7075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var keys = [ 708926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("[", shortcut.Modifiers.CtrlOrMeta), 709926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("]", shortcut.Modifiers.CtrlOrMeta) 7105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ]; 7115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) section.addRelatedKeys(keys, WebInspector.UIString("Go to the panel to the left/right")); 7125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 713926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) keys = [ 714926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("[", shortcut.Modifiers.CtrlOrMeta | shortcut.Modifiers.Alt), 715926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("]", shortcut.Modifiers.CtrlOrMeta | shortcut.Modifiers.Alt) 7165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ]; 7175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) section.addRelatedKeys(keys, WebInspector.UIString("Go back/forward in panel history")); 7185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 719926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.addKey(shortcut.makeDescriptor(shortcut.Keys.Esc), WebInspector.UIString("Toggle console")); 720926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.addKey(shortcut.makeDescriptor("f", shortcut.Modifiers.CtrlOrMeta), WebInspector.UIString("Search")); 7215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var advancedSearchShortcut = WebInspector.AdvancedSearchController.createShortcut(); 723926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.addKey(advancedSearchShortcut, WebInspector.UIString("Search across all sources")); 7245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 72553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var inspectElementModeShortcut = WebInspector.InspectElementModeController.createShortcut(); 72653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) section.addKey(inspectElementModeShortcut, WebInspector.UIString("Select node to inspect")); 72753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 7285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var openResourceShortcut = WebInspector.KeyboardShortcut.makeDescriptor("o", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta); 729926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.addKey(openResourceShortcut, WebInspector.UIString("Go to source")); 7305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.isMac()) { 7325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) keys = [ 733926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("g", shortcut.Modifiers.Meta), 734926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("g", shortcut.Modifiers.Meta | shortcut.Modifiers.Shift) 7355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ]; 7365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) section.addRelatedKeys(keys, WebInspector.UIString("Find next/previous")); 7375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var goToShortcut = WebInspector.GoToLineDialog.createShortcut(); 740926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) section.addKey(goToShortcut, WebInspector.UIString("Go to line")); 741926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 742926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) keys = [ 743926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.Keys.F1, 744926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) shortcut.makeDescriptor("?") 745926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ]; 746521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) section.addAlternateKeys(keys, WebInspector.UIString("Show general settings")); 7475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 7485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 749926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/** 750926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {KeyboardEvent} event 751926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 7525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.documentKeyDown = function(event) 7535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 7545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const helpKey = WebInspector.isMac() ? "U+003F" : "U+00BF"; // "?" for both platforms 7555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.keyIdentifier === "F1" || 7575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (event.keyIdentifier === helpKey && event.shiftKey && (!WebInspector.isBeingEdited(event.target) || event.metaKey))) { 75853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) this.settingsController.showSettingsScreen(WebInspector.SettingsScreen.Tabs.General); 7595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 7605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.currentFocusElement() && WebInspector.currentFocusElement().handleKeyEvent) { 7645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.currentFocusElement().handleKeyEvent(event); 7655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.handled) { 7665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 7675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.inspectorView.currentPanel()) { 7725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.currentPanel().handleShortcut(event); 7735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.handled) { 7745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 7755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.searchController.handleShortcut(event)) 7805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 7815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.advancedSearchController.handleShortcut(event)) 7825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 78353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (WebInspector.inspectElementModeController && WebInspector.inspectElementModeController.handleShortcut(event)) 78453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return; 7855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (event.keyIdentifier) { 7875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "U+004F": // O key 7885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) case "U+0050": // P key 7895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!event.shiftKey && !event.altKey && WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event)) { 7905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("scripts").showGoToSourceDialog(); 7915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 7925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 7935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 7945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "U+0052": // R key 7955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event)) { 7965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PageAgent.reload(event.shiftKey); 7975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 7985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 799926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (window.DEBUG && event.altKey) { 800926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.reload(); 801926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 802926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 8035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 8045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "F5": 8055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.isMac()) { 8065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PageAgent.reload(event.ctrlKey || event.shiftKey); 8075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 8085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 8105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var isValidZoomShortcut = WebInspector.KeyboardShortcut.eventHasCtrlOrMeta(event) && 8135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !event.altKey && 8145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) !InspectorFrontendHost.isStub; 8155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch (event.keyCode) { 8165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 107: // + 8175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 187: // + 8185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isValidZoomShortcut) { 8195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector._zoomIn(); 8205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 8215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 8235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 109: // - 8245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 189: // - 8255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isValidZoomShortcut) { 8265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector._zoomOut(); 8275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 8285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 8305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case 48: // 0 8315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Zoom reset shortcut does not allow "Shift" when handled by the browser. 8325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (isValidZoomShortcut && !event.shiftKey) { 8335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector._resetZoom(); 8345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.consume(true); 8355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 8375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.postDocumentKeyDown = function(event) 8415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 842e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch var Esc = "U+001B"; 843e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 8445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.handled) 8455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 8465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 847e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch if (event.keyIdentifier === Esc) { 848591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch if (WebInspector.searchController.isSearchVisible()) { 849591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch WebInspector.searchController.closeSearch(); 850591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch return; 851591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch } 8525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If drawer is open with some view other than console then close it. 8535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._toggleConsoleButton.toggled && WebInspector.drawer.visible) 8545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.closeViewInDrawer(); 8555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 8565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._toggleConsoleButtonClicked(); 8575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 8585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.documentCanCopy = function(event) 8615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.inspectorView.currentPanel() && WebInspector.inspectorView.currentPanel().handleCopyEvent) 8635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 8645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.documentCopy = function(event) 8675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector.inspectorView.currentPanel() && WebInspector.inspectorView.currentPanel().handleCopyEvent) 8695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.inspectorView.currentPanel().handleCopyEvent(event); 8705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.documentCopyEventFired(event); 8715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.documentCopyEventFired = function(event) 8745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.contextMenuEventFired = function(event) 8785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (event.handled || event.target.hasStyleClass("popup-glasspane")) 8805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) event.preventDefault(); 8815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.showPanel = function(panel) 8845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.inspectorView.showPanel(panel); 8865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.panel = function(panel) 8895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.inspectorView.panel(panel); 8915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.bringToFront = function() 8945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 8955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.bringToFront(); 8965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 8975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 8985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 8995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} messageLevel 9005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} showConsole 9015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 9025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.log = function(message, messageLevel, showConsole) 9035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // remember 'this' for setInterval() callback 9055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var self = this; 9065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // return indication if we can actually log a message 9085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function isLogAvailable() 9095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.ConsoleMessage && WebInspector.RemoteObject && self.console; 9115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flush the queue of pending messages 9145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function flushQueue() 9155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var queued = WebInspector.log.queued; 9175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!queued) 9185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < queued.length; ++i) 9215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) logMessage(queued[i]); 9225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete WebInspector.log.queued; 9245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flush the queue if it console is available 9275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // - this function is run on an interval 9285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function flushQueueIfAvailable() 9295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!isLogAvailable()) 9315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval(WebInspector.log.interval); 9345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete WebInspector.log.interval; 9355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) flushQueue(); 9375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // actually log the message 9405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function logMessage(message) 9415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // post the message 9435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var msg = WebInspector.ConsoleMessage.create( 9445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.ConsoleMessage.MessageSource.Other, 9455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) messageLevel || WebInspector.ConsoleMessage.MessageLevel.Debug, 9465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) message); 9475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.console.addMessage(msg); 9495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (showConsole) 9505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showConsole(); 9515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if we can't log the message, queue it 9545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!isLogAvailable()) { 9555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.log.queued) 9565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.log.queued = []; 9575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.log.queued.push(message); 9595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!WebInspector.log.interval) 9615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.log.interval = setInterval(flushQueueIfAvailable, 1000); 9625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // flush the pending queue if any 9675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) flushQueue(); 9685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // log the message 9705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) logMessage(message); 9715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.showErrorMessage = function(error) 9745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.log(error, WebInspector.ConsoleMessage.MessageLevel.Error, true); 9765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 9775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Inspector.inspect protocol event 9795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.inspect = function(payload, hints) 9805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 9815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var object = WebInspector.RemoteObject.fromPayload(payload); 9825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (object.subtype === "node") { 9835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callback(nodeId) 9845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 9855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector._updateFocusedNode(nodeId); 9865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) object.release(); 9875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) object.pushNodeToFrontend(callback); 9895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 9905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 9915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 9925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (hints.databaseId) 9935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("resources").selectDatabase(WebInspector.databaseModel.databaseForId(hints.databaseId)); 9945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else if (hints.domStorageId) 9955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("resources").selectDOMStorage(WebInspector.domStorageModel.storageForId(hints.domStorageId)); 996fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch else if (hints.copyToClipboard) 997fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch InspectorFrontendHost.copyText(object.value); 9985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) object.release(); 9995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Inspector.detached protocol event 10025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.detached = function(reason) 10035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.socket._detachReason = reason; 10055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) (new WebInspector.RemoteDebuggingTerminatedScreen(reason)).showModal(); 10065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1008926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)WebInspector.targetCrashed = function() 1009926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){ 1010926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) (new WebInspector.HelpScreenUntilReload( 1011926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.UIString("Inspected target crashed"), 1012926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) WebInspector.UIString("Inspected target has crashed. Once it reloads we will attach to it automatically."))).showModal(); 1013926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)} 1014926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 101553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector._inspectNodeRequested = function(event) 101653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 101753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector._updateFocusedNode(event.data); 101853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 101953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 10205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector._updateFocusedNode = function(nodeId) 10215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 102253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (WebInspector.inspectElementModeController && WebInspector.inspectElementModeController.enabled()) { 10235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontendHost.bringToFront(); 102453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.inspectElementModeController.disable(); 10255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.showPanel("elements").revealAndSelectNode(nodeId); 10275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)WebInspector.showAnchorLocation = function(anchor) 10305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var preferredPanel = this.panels[anchor.preferredPanel]; 10325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (preferredPanel && WebInspector._showAnchorLocationInPanel(anchor, preferredPanel)) 10335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 10345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("scripts"))) 10355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 10365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("resources"))) 10375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 10385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (WebInspector._showAnchorLocationInPanel(anchor, this.panel("network"))) 10395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 10405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 10415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector._showAnchorLocationInPanel = function(anchor, panel) 10445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!panel || !panel.canShowAnchorLocation(anchor)) 10465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return false; 10475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: support webkit-html-external-link links here. 10495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (anchor.hasStyleClass("webkit-html-external-link")) { 10505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anchor.removeStyleClass("webkit-html-external-link"); 10515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) anchor.addStyleClass("webkit-html-resource-link"); 10525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 10535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1054591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch WebInspector.inspectorView.setCurrentPanel(panel); 10555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) panel.showAnchorLocation(anchor); 10565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 10575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.evaluateInConsole = function(expression, showResultOnly) 10605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.showConsole(); 10625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.consoleView.evaluateUsingTextPrompt(expression, showResultOnly); 10635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.addMainEventListeners = function(doc) 10665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 10675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc.addEventListener("keydown", this.documentKeyDown.bind(this), true); 10685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc.addEventListener("keydown", this.postDocumentKeyDown.bind(this), false); 10695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc.addEventListener("beforecopy", this.documentCanCopy.bind(this), true); 107053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) doc.addEventListener("copy", this.documentCopy.bind(this), false); 10715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc.addEventListener("contextmenu", this.contextMenuEventFired.bind(this), true); 10725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doc.addEventListener("click", this.documentClick.bind(this), true); 10735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 10745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 10755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.Zoom = { 10765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Table: [0.25, 0.33, 0.5, 0.66, 0.75, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5], 10775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DefaultOffset: 6 10785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 107953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 108053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 108153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)// Ex-DevTools.js content 108253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 108353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)/** 108453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @param {ExtensionDescriptor} extensionInfo 108553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @return {string} 108653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 108753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)function buildPlatformExtensionAPI(extensionInfo) 108853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 108953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return "var extensionInfo = " + JSON.stringify(extensionInfo) + ";" + 109053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) "var tabId = " + WebInspector._inspectedTabId + ";" + 109153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) platformExtensionAPI.toString(); 109253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 109353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 109453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.setInspectedTabId = function(tabId) 109553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 109653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector._inspectedTabId = tabId; 109753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 109853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 109953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)/** 110053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @return {string} 110153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 110253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.getSelectionBackgroundColor = function() 110353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 110453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return InspectorFrontendHost.getSelectionBackgroundColor(); 110553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 110653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 110753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)/** 110853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) * @return {string} 110953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) */ 111053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.getSelectionForegroundColor = function() 111153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles){ 111253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) return InspectorFrontendHost.getSelectionForegroundColor(); 111353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)} 111453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 111553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)window.DEBUG = true; 1116