18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2007 Matt Lilek (pewtermoose@gmail.com). 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Joseph Pecoraro 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 11231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * notice, this list of conditions and the following disclaimer. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 14231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * documentation and/or other materials provided with the distribution. 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its contributors may be used to endorse or promote products derived 17231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block * from this software without specific prior written permission. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick// Keep this ; so that concatenated version of the script worked. 32f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick;(function preloadImages() 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/clearConsoleButtonGlyph.png"; 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/consoleButtonGlyph.png"; 36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/dockButtonGlyph.png"; 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/enableOutlineButtonGlyph.png"; 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/enableSolidButtonGlyph.png"; 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/excludeButtonGlyph.png"; 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/focusButtonGlyph.png"; 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/largerResourcesButtonGlyph.png"; 42643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/nodeSearchButtonGlyph.png"; 43643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/pauseOnExceptionButtonGlyph.png"; 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/percentButtonGlyph.png"; 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/recordButtonGlyph.png"; 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/recordToggledButtonGlyph.png"; 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/reloadButtonGlyph.png"; 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block (new Image()).src = "Images/undockButtonGlyph.png"; 49f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick})(); 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar WebInspector = { 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian resources: {}, 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project missingLocalizedStrings: {}, 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block pendingDispatches: 0, 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block get platform() 57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!("_platform" in this)) 595e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block this._platform = InspectorFrontendHost.platform(); 60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return this._platform; 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }, 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 645e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block get platformFlavor() 655e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block { 665e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (!("_platformFlavor" in this)) 675e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block this._platformFlavor = this._detectPlatformFlavor(); 685e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 695e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return this._platformFlavor; 705e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block }, 715e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 725e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block _detectPlatformFlavor: function() 73d0825bca7fe65beaee391d30da42e937db621564Steve Block { 74d0825bca7fe65beaee391d30da42e937db621564Steve Block const userAgent = navigator.userAgent; 75d0825bca7fe65beaee391d30da42e937db621564Steve Block 765e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (this.platform === "windows") { 77d0825bca7fe65beaee391d30da42e937db621564Steve Block var match = userAgent.match(/Windows NT (\d+)\.(?:\d+)/); 78d0825bca7fe65beaee391d30da42e937db621564Steve Block if (match && match[1] >= 6) 795e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return WebInspector.PlatformFlavor.WindowsVista; 805e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return null; 815e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block } else if (this.platform === "mac") { 82d0825bca7fe65beaee391d30da42e937db621564Steve Block var match = userAgent.match(/Mac OS X\s*(?:(\d+)_(\d+))?/); 83d0825bca7fe65beaee391d30da42e937db621564Steve Block if (!match || match[1] != 10) 845e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return WebInspector.PlatformFlavor.MacSnowLeopard; 85d0825bca7fe65beaee391d30da42e937db621564Steve Block switch (Number(match[2])) { 86d0825bca7fe65beaee391d30da42e937db621564Steve Block case 4: 875e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return WebInspector.PlatformFlavor.MacTiger; 88d0825bca7fe65beaee391d30da42e937db621564Steve Block case 5: 895e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return WebInspector.PlatformFlavor.MacLeopard; 90d0825bca7fe65beaee391d30da42e937db621564Steve Block case 6: 91d0825bca7fe65beaee391d30da42e937db621564Steve Block default: 925e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return WebInspector.PlatformFlavor.MacSnowLeopard; 93d0825bca7fe65beaee391d30da42e937db621564Steve Block } 94d0825bca7fe65beaee391d30da42e937db621564Steve Block } 95d0825bca7fe65beaee391d30da42e937db621564Steve Block 965e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return null; 97d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 98d0825bca7fe65beaee391d30da42e937db621564Steve Block 99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block get port() 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!("_port" in this)) 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block this._port = InspectorFrontendHost.port(); 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return this._port; 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }, 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get previousFocusElement() 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._previousFocusElement; 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get currentFocusElement() 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._currentFocusElement; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set currentFocusElement(x) 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._currentFocusElement !== x) 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._previousFocusElement = this._currentFocusElement; 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._currentFocusElement = x; 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._currentFocusElement) { 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._currentFocusElement.focus(); 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Make a caret selection inside the new element if there isn't a range selection and 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // there isn't already a caret selection inside. 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var selection = window.getSelection(); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (selection.isCollapsed && !this._currentFocusElement.isInsertionCaretInside()) { 130231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var selectionRange = this._currentFocusElement.ownerDocument.createRange(); 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project selectionRange.setStart(this._currentFocusElement, 0); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project selectionRange.setEnd(this._currentFocusElement, 0); 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project selection.removeAllRanges(); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project selection.addRange(selectionRange); 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else if (this._previousFocusElement) 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._previousFocusElement.blur(); 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch resetFocusElement: function() 14281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch { 14381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.currentFocusElement = null; 1442bde8e466a4451c7319e3a072d118917957d6554Steve Block this._previousFocusElement = null; 14581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch }, 14681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get currentPanel() 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._currentPanel; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set currentPanel(x) 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._currentPanel === x) 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._currentPanel) 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._currentPanel.hide(); 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._currentPanel = x; 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (x) { 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project x.show(); 16481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.searchController.activePanelChanged(); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (var panelName in WebInspector.panels) { 16721939df44de1705786c545cd1bf519d47250322dBen Murdoch if (WebInspector.panels[panelName] === x) { 16828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu WebInspector.settings.lastActivePanel = panelName; 16921939df44de1705786c545cd1bf519d47250322dBen Murdoch this._panelHistory.setPanel(panelName); 17021939df44de1705786c545cd1bf519d47250322dBen Murdoch } 1710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 1720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }, 173231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _createPanels: function() 1750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch { 176643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var hiddenPanels = (InspectorFrontendHost.hiddenPanels() || "").split(','); 1770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (hiddenPanels.indexOf("elements") === -1) 1780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.panels.elements = new WebInspector.ElementsPanel(); 1796b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (hiddenPanels.indexOf("resources") === -1) 1806b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner this.panels.resources = new WebInspector.ResourcesPanel(); 18128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu if (hiddenPanels.indexOf("network") === -1) 182bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen this.panels.network = new WebInspector.NetworkPanel(); 1830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (hiddenPanels.indexOf("scripts") === -1) 1840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.panels.scripts = new WebInspector.ScriptsPanel(); 185643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (hiddenPanels.indexOf("timeline") === -1) 186643ca7872b450ea4efacab6188849e5aac2ba161Steve Block this.panels.timeline = new WebInspector.TimelinePanel(); 1872bde8e466a4451c7319e3a072d118917957d6554Steve Block if (hiddenPanels.indexOf("profiles") === -1) 1880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.panels.profiles = new WebInspector.ProfilesPanel(); 189bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen if (hiddenPanels.indexOf("audits") === -1) 190dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this.panels.audits = new WebInspector.AuditsPanel(); 191d0825bca7fe65beaee391d30da42e937db621564Steve Block if (hiddenPanels.indexOf("console") === -1) 192d0825bca7fe65beaee391d30da42e937db621564Steve Block this.panels.console = new WebInspector.ConsolePanel(); 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get attached() 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._attached; 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set attached(x) 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._attached === x) 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._attached = x; 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var dockToggleButton = document.getElementById("dock-status-bar-item"); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var body = document.body; 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (x) { 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project body.removeStyleClass("detached"); 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project body.addStyleClass("attached"); 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dockToggleButton.title = WebInspector.UIString("Undock into separate window."); 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else { 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project body.removeStyleClass("attached"); 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project body.addStyleClass("detached"); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dockToggleButton.title = WebInspector.UIString("Dock to main window."); 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 21981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2202bde8e466a4451c7319e3a072d118917957d6554Steve Block // This may be called before onLoadedDone, hence the bulk of inspector objects may 22181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // not be created yet. 22281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (WebInspector.searchController) 22381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.searchController.updateSearchLabel(); 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get errors() 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._errors || 0; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set errors(x) 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project x = Math.max(x, 0); 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._errors === x) 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._errors = x; 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._updateErrorAndWarningCounts(); 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project get warnings() 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this._warnings || 0; 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project set warnings(x) 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project x = Math.max(x, 0); 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._warnings === x) 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._warnings = x; 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._updateErrorAndWarningCounts(); 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project _updateErrorAndWarningCounts: function() 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var errorWarningElement = document.getElementById("error-warning-count"); 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!errorWarningElement) 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!this.errors && !this.warnings) { 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.addStyleClass("hidden"); 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.removeStyleClass("hidden"); 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.removeChildren(); 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.errors) { 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var errorElement = document.createElement("span"); 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorElement.id = "error-count"; 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorElement.textContent = this.errors; 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.appendChild(errorElement); 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.warnings) { 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var warningsElement = document.createElement("span"); 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project warningsElement.id = "warning-count"; 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project warningsElement.textContent = this.warnings; 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.appendChild(warningsElement); 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.errors) { 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.warnings) { 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.errors == 1) { 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.warnings == 1) 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d error, %d warning", this.errors, this.warnings); 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d error, %d warnings", this.errors, this.warnings); 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else if (this.warnings == 1) 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d errors, %d warning", this.errors, this.warnings); 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d errors, %d warnings", this.errors, this.warnings); 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else if (this.errors == 1) 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d error", this.errors); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d errors", this.errors); 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else if (this.warnings == 1) 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d warning", this.warnings); 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (this.warnings) 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = WebInspector.UIString("%d warnings", this.warnings); 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project errorWarningElement.title = null; 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 30868513a70bcd92384395513322f1b801e7bf9c729Steve Block highlightDOMNode: function(nodeId) 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 31068513a70bcd92384395513322f1b801e7bf9c729Steve Block if ("_hideDOMNodeHighlightTimeout" in this) { 31168513a70bcd92384395513322f1b801e7bf9c729Steve Block clearTimeout(this._hideDOMNodeHighlightTimeout); 31268513a70bcd92384395513322f1b801e7bf9c729Steve Block delete this._hideDOMNodeHighlightTimeout; 31368513a70bcd92384395513322f1b801e7bf9c729Steve Block } 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31568513a70bcd92384395513322f1b801e7bf9c729Steve Block if (this._highlightedDOMNodeId === nodeId) 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 31868513a70bcd92384395513322f1b801e7bf9c729Steve Block this._highlightedDOMNodeId = nodeId; 31968513a70bcd92384395513322f1b801e7bf9c729Steve Block if (nodeId) 3202bde8e466a4451c7319e3a072d118917957d6554Steve Block DOMAgent.highlightDOMNode(nodeId); 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 3222bde8e466a4451c7319e3a072d118917957d6554Steve Block DOMAgent.hideDOMNodeHighlight(); 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 32568513a70bcd92384395513322f1b801e7bf9c729Steve Block highlightDOMNodeForTwoSeconds: function(nodeId) 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 32768513a70bcd92384395513322f1b801e7bf9c729Steve Block this.highlightDOMNode(nodeId); 32868513a70bcd92384395513322f1b801e7bf9c729Steve Block this._hideDOMNodeHighlightTimeout = setTimeout(this.highlightDOMNode.bind(this, 0), 2000); 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }, 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33168513a70bcd92384395513322f1b801e7bf9c729Steve Block wireElementWithDOMNode: function(element, nodeId) 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 33368513a70bcd92384395513322f1b801e7bf9c729Steve Block element.addEventListener("click", this._updateFocusedNode.bind(this, nodeId), false); 33468513a70bcd92384395513322f1b801e7bf9c729Steve Block element.addEventListener("mouseover", this.highlightDOMNode.bind(this, nodeId), false); 33568513a70bcd92384395513322f1b801e7bf9c729Steve Block element.addEventListener("mouseout", this.highlightDOMNode.bind(this, 0), false); 33668513a70bcd92384395513322f1b801e7bf9c729Steve Block }, 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 33868513a70bcd92384395513322f1b801e7bf9c729Steve Block _updateFocusedNode: function(nodeId) 33968513a70bcd92384395513322f1b801e7bf9c729Steve Block { 34068513a70bcd92384395513322f1b801e7bf9c729Steve Block this.currentPanel = this.panels.elements; 341bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen this.panels.elements.updateFocusedNode(nodeId); 342e14391e94c850b8bd03680c23b38978db68687a8John Reck }, 343e14391e94c850b8bd03680c23b38978db68687a8John Reck 344e14391e94c850b8bd03680c23b38978db68687a8John Reck get networkResources() 345e14391e94c850b8bd03680c23b38978db68687a8John Reck { 34628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu return this.panels.network.resources; 347e14391e94c850b8bd03680c23b38978db68687a8John Reck }, 348e14391e94c850b8bd03680c23b38978db68687a8John Reck 34965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch networkResourceById: function(id) 35065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch { 35165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch return this.panels.network.resourceById(id); 35265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch }, 35365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 354e14391e94c850b8bd03680c23b38978db68687a8John Reck forAllResources: function(callback) 355e14391e94c850b8bd03680c23b38978db68687a8John Reck { 356cad810f21b803229eb11403f9209855525a25d57Steve Block WebInspector.resourceTreeModel.forAllResources(callback); 357e14391e94c850b8bd03680c23b38978db68687a8John Reck }, 358e14391e94c850b8bd03680c23b38978db68687a8John Reck 359e14391e94c850b8bd03680c23b38978db68687a8John Reck resourceForURL: function(url) 360e14391e94c850b8bd03680c23b38978db68687a8John Reck { 361cad810f21b803229eb11403f9209855525a25d57Steve Block return this.resourceTreeModel.resourceForURL(url); 3622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block }, 3632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block openLinkExternallyLabel: function() 3652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 3662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return WebInspector.UIString("Open Link in New Window"); 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3705e2bc6953fe6923165b8a5d7679939693a1d58d6Steve BlockWebInspector.PlatformFlavor = { 3715e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block WindowsVista: "windows-vista", 372d0825bca7fe65beaee391d30da42e937db621564Steve Block MacTiger: "mac-tiger", 373d0825bca7fe65beaee391d30da42e937db621564Steve Block MacLeopard: "mac-leopard", 374d0825bca7fe65beaee391d30da42e937db621564Steve Block MacSnowLeopard: "mac-snowleopard" 375f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick}; 376f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 377f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick(function parseQueryParameters() 378f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 379f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.queryParamsObject = {}; 380f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick var queryParams = window.location.search; 381f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick if (!queryParams) 382f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return; 383f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick var params = queryParams.substring(1).split("&"); 384f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick for (var i = 0; i < params.length; ++i) { 385f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick var pair = params[i].split("="); 386f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.queryParamsObject[pair[0]] = pair[1]; 387f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick } 388f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick})(); 389d0825bca7fe65beaee391d30da42e937db621564Steve Block 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.loaded = function() 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 392f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick if ("page" in WebInspector.queryParamsObject) { 3932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block var page = WebInspector.queryParamsObject.page; 3942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block var host = "host" in WebInspector.queryParamsObject ? WebInspector.queryParamsObject.host : window.location.host; 3952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WebInspector.socket = new WebSocket("ws://" + host + "/devtools/page/" + page); 396f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch WebInspector.socket.onmessage = function(message) { InspectorBackend.dispatch(message.data); } 397f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.socket.onerror = function(error) { console.error(error); } 398f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.socket.onopen = function() { 399f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick InspectorFrontendHost.sendMessageToBackend = WebInspector.socket.send.bind(WebInspector.socket); 400f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick InspectorFrontendHost.loaded = WebInspector.socket.send.bind(WebInspector.socket, "loaded"); 401f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.doLoadedDone(); 402f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick } 403f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return; 404f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick } 405f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick WebInspector.doLoadedDone(); 406f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick} 407f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick 408f486d19d62f1bc33246748b14b14a9dfa617b57fIain MerrickWebInspector.doLoadedDone = function() 409f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick{ 41065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch InspectorFrontendHost.loaded(); 411d0825bca7fe65beaee391d30da42e937db621564Steve Block 412643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var platform = WebInspector.platform; 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.body.addStyleClass("platform-" + platform); 4145e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block var flavor = WebInspector.platformFlavor; 4155e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (flavor) 4165e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block document.body.addStyleClass("platform-" + flavor); 417643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var port = WebInspector.port; 418643ca7872b450ea4efacab6188849e5aac2ba161Steve Block document.body.addStyleClass("port-" + port); 4192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (WebInspector.socket) 4202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch document.body.addStyleClass("remote"); 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 42228040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu WebInspector.settings = new WebInspector.Settings(); 423e14391e94c850b8bd03680c23b38978db68687a8John Reck 4246c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen this._registerShortcuts(); 4256c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 4266c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen // set order of some sections explicitly 427e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block WebInspector.shortcutsHelp.section(WebInspector.UIString("Console")); 428e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block WebInspector.shortcutsHelp.section(WebInspector.UIString("Elements Panel")); 429231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 4300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.drawer = new WebInspector.Drawer(); 4310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.console = new WebInspector.ConsoleView(this.drawer); 4320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.drawer.visibleView = this.console; 4332bde8e466a4451c7319e3a072d118917957d6554Steve Block this.networkManager = new WebInspector.NetworkManager(); 434cad810f21b803229eb11403f9209855525a25d57Steve Block this.resourceTreeModel = new WebInspector.ResourceTreeModel(); 435231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block this.domAgent = new WebInspector.DOMAgent(); 4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 437f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch InspectorBackend.registerDomainDispatcher("Inspector", this); 4382bde8e466a4451c7319e3a072d118917957d6554Steve Block InspectorBackend.registerDomainDispatcher("Page", this); 439f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 4400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.resourceCategories = { 441cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block documents: new WebInspector.ResourceCategory("documents", WebInspector.UIString("Documents"), "rgb(47,102,236)"), 442cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block stylesheets: new WebInspector.ResourceCategory("stylesheets", WebInspector.UIString("Stylesheets"), "rgb(157,231,119)"), 443cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block images: new WebInspector.ResourceCategory("images", WebInspector.UIString("Images"), "rgb(164,60,255)"), 444cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block scripts: new WebInspector.ResourceCategory("scripts", WebInspector.UIString("Scripts"), "rgb(255,121,0)"), 445cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block xhr: new WebInspector.ResourceCategory("xhr", WebInspector.UIString("XHR"), "rgb(231,231,10)"), 446cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block fonts: new WebInspector.ResourceCategory("fonts", WebInspector.UIString("Fonts"), "rgb(255,82,62)"), 447ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch websockets: new WebInspector.ResourceCategory("websockets", WebInspector.UIString("WebSockets"), "rgb(186,186,186)"), // FIXME: Decide the color. 448cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block other: new WebInspector.ResourceCategory("other", WebInspector.UIString("Other"), "rgb(186,186,186)") 4490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch }; 4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 451545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch this.cssModel = new WebInspector.CSSStyleModel(); 452f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch this.debuggerModel = new WebInspector.DebuggerModel(); 453f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 45481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.searchController = new WebInspector.SearchController(); 4552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch this.domBreakpointsSidebarPane = new WebInspector.DOMBreakpointsSidebarPane(); 4565af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke 4575f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian this.panels = {}; 4580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this._createPanels(); 45921939df44de1705786c545cd1bf519d47250322dBen Murdoch this._panelHistory = new WebInspector.PanelHistory(); 46081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.toolbar = new WebInspector.Toolbar(); 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch this.panelOrder = []; 4638a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block for (var panelName in this.panels) 46481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.addPanel(this.panels[panelName]); 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.Tips = { 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ResourceNotCompressed: {id: 0, message: WebInspector.UIString("You could save bandwidth by having your web server compress this transfer with gzip or zlib.")} 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.Warnings = { 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project IncorrectMIMEType: {id: 0, message: WebInspector.UIString("Resource interpreted as %s but transferred with MIME type %s.")} 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project }; 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.addMainEventListeners(document); 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project window.addEventListener("resize", this.windowResize.bind(this), true); 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.addEventListener("focus", this.focusChanged.bind(this), true); 479d0825bca7fe65beaee391d30da42e937db621564Steve Block document.addEventListener("keydown", this.documentKeyDown.bind(this), false); 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.addEventListener("beforecopy", this.documentCanCopy.bind(this), true); 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.addEventListener("copy", this.documentCopy.bind(this), true); 482643ca7872b450ea4efacab6188849e5aac2ba161Steve Block document.addEventListener("contextmenu", this.contextMenuEventFired.bind(this), true); 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var dockToggleButton = document.getElementById("dock-status-bar-item"); 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dockToggleButton.addEventListener("click", this.toggleAttach.bind(this), false); 4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this.attached) 4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dockToggleButton.title = WebInspector.UIString("Undock into separate window."); 4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else 4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project dockToggleButton.title = WebInspector.UIString("Dock to main window."); 4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var errorWarningCount = document.getElementById("error-warning-count"); 4930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch errorWarningCount.addEventListener("click", this.showConsole.bind(this), false); 4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._updateErrorAndWarningCounts(); 4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 496db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block this.extensionServer.initExtensions(); 497db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block 4982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (WebInspector.settings.monitoringXHREnabled) 49981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch ConsoleAgent.setMonitoringXHREnabled(true); 5002bde8e466a4451c7319e3a072d118917957d6554Steve Block ConsoleAgent.enable(this.console.setConsoleMessageExpiredCount.bind(this.console)); 5012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 5022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch DatabaseAgent.enable(); 5032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 5042bde8e466a4451c7319e3a072d118917957d6554Steve Block WebInspector.showPanel(WebInspector.settings.lastActivePanel); 505e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 5062bde8e466a4451c7319e3a072d118917957d6554Steve Block function propertyNamesCallback(error, names) 507f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch { 5082bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!error) 5092bde8e466a4451c7319e3a072d118917957d6554Steve Block WebInspector.cssNameCompletions = new WebInspector.CSSCompletions(names); 510f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 511e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block // As a DOMAgent method, this needs to happen after the frontend has loaded and the agent is available. 51281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch CSSAgent.getSupportedCSSProperties(propertyNamesCallback); 5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 51581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen MurdochWebInspector.addPanel = function(panel) 5168a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block{ 5178a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block this.panelOrder.push(panel); 51881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.toolbar.addPanel(panel); 5198a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block} 5208a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar windowLoaded = function() 5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 523643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var localizedStringsURL = InspectorFrontendHost.localizedStringsURL(); 5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (localizedStringsURL) { 5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var localizedStringsScriptElement = document.createElement("script"); 5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project localizedStringsScriptElement.addEventListener("load", WebInspector.loaded.bind(WebInspector), false); 5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project localizedStringsScriptElement.type = "text/javascript"; 5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project localizedStringsScriptElement.src = localizedStringsURL; 529643ca7872b450ea4efacab6188849e5aac2ba161Steve Block document.head.appendChild(localizedStringsScriptElement); 5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } else 5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebInspector.loaded(); 5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5336b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner window.removeEventListener("DOMContentLoaded", windowLoaded, false); 5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete windowLoaded; 5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5376b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerwindow.addEventListener("DOMContentLoaded", windowLoaded, false); 5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 53981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch// We'd like to enforce asynchronous interaction between the inspector controller and the frontend. 54081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch// It is needed to prevent re-entering the backend code. 54181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch// Also, native dispatches do not guarantee setTimeouts to be serialized, so we 54281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch// enforce serialization using 'messagesToDispatch' queue. It is also important that JSC debugger 54381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch// tests require that each command was dispatch within individual timeout callback, so we don't batch them. 54481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 54581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvar messagesToDispatch = []; 54681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 547e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebInspector.dispatch = function(message) { 54881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch messagesToDispatch.push(message); 54981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch setTimeout(function() { 55081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorBackend.dispatch(messagesToDispatch.shift()); 55181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch }, 0); 5525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 5535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 554e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockWebInspector.dispatchMessageFromBackend = function(messageObject) 555545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch{ 556e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block WebInspector.dispatch(messageObject); 557545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch} 558545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch 5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.windowResize = function(event) 5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 561d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.currentPanel) 5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.currentPanel.resize(); 563643ca7872b450ea4efacab6188849e5aac2ba161Steve Block this.drawer.resize(); 56481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.toolbar.resize(); 5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.windowFocused = function(event) 5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 569cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Fires after blur, so when focusing on either the main inspector 570cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // or an <iframe> within the inspector we should always remove the 571cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // "inactive" class. 572cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (event.target.document.nodeType === Node.DOCUMENT_NODE) 5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.body.removeStyleClass("inactive"); 5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 576cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockWebInspector.windowBlurred = function(event) 5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 578cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // Leaving the main inspector or an <iframe> within the inspector. 579cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // We can add "inactive" now, and if we are moving the focus to another 580cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block // part of the inspector then windowFocused will correct this. 581cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block if (event.target.document.nodeType === Node.DOCUMENT_NODE) 5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.body.addStyleClass("inactive"); 5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.focusChanged = function(event) 5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.currentFocusElement = event.target; 5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.setAttachedWindow = function(attached) 5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.attached = attached; 5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.close = function(event) 5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 597dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (this._isClosing) 598dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 599dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._isClosing = true; 600643ca7872b450ea4efacab6188849e5aac2ba161Steve Block InspectorFrontendHost.closeWindow(); 6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6035abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain MerrickWebInspector.disconnectFromBackend = function() 604dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 6055abb8606fa57c3ebfc8b3c3dbc3fa4a25d2ae306Iain Merrick InspectorFrontendHost.disconnectFromBackend(); 606dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 607dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.documentClick = function(event) 6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var anchor = event.target.enclosingNodeOrSelfWithNodeName("a"); 61168513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!anchor || anchor.target === "_blank") 6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Prevent the link from navigating, since we don't do any navigation by following links normally. 6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 616dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block event.stopPropagation(); 6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project function followLink() 6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (WebInspector._showAnchorLocation(anchor)) 621dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 622dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 623dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block const profileMatch = WebInspector.ProfileType.URLRegExp.exec(anchor.href); 624dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (profileMatch) { 625dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block WebInspector.showProfileForURL(anchor.href); 626dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 627dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 628dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 629a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch var parsedURL = anchor.href.asParsedURL(); 630a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (parsedURL && parsedURL.scheme === "webkit-link-action") { 631a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (parsedURL.host === "show-panel") { 632a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch var panel = parsedURL.path.substring(1); 633dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (WebInspector.panels[panel]) 634e14391e94c850b8bd03680c23b38978db68687a8John Reck WebInspector.showPanel(panel); 635dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 636dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 637dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 638dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 639dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebInspector.showPanel("resources"); 6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (WebInspector.followLinkTimeout) 6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project clearTimeout(WebInspector.followLinkTimeout); 6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (anchor.preventFollowOnDoubleClick) { 6468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Start a timeout if this is the first click, if the timeout is canceled 6478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // before it fires, then a double clicked happened or another link was clicked. 6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (event.detail === 1) 6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebInspector.followLinkTimeout = setTimeout(followLink, 333); 6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project followLink(); 6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 65668513a70bcd92384395513322f1b801e7bf9c729Steve BlockWebInspector.openResource = function(resourceURL, inResourcesPanel) 65768513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 65868513a70bcd92384395513322f1b801e7bf9c729Steve Block var resource = WebInspector.resourceForURL(resourceURL); 65968513a70bcd92384395513322f1b801e7bf9c729Steve Block if (inResourcesPanel && resource) { 6606b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner WebInspector.panels.resources.showResource(resource); 6616b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner WebInspector.showPanel("resources"); 66268513a70bcd92384395513322f1b801e7bf9c729Steve Block } else 6632bde8e466a4451c7319e3a072d118917957d6554Steve Block PageAgent.openInInspectedWindow(resource ? resource.url : resourceURL); 66468513a70bcd92384395513322f1b801e7bf9c729Steve Block} 66568513a70bcd92384395513322f1b801e7bf9c729Steve Block 6666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian MonsenWebInspector._registerShortcuts = function() 6676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 6686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen var shortcut = WebInspector.KeyboardShortcut; 6696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen var section = WebInspector.shortcutsHelp.section(WebInspector.UIString("All Panels")); 6706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen var keys = [ 6716c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen shortcut.shortcutToString("]", shortcut.Modifiers.CtrlOrMeta), 6726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen shortcut.shortcutToString("[", shortcut.Modifiers.CtrlOrMeta) 6736c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen ]; 6746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen section.addRelatedKeys(keys, WebInspector.UIString("Next/previous panel")); 675545e470e52f0ac6a3a072bf559c796b42c6066b6Ben Murdoch section.addKey(shortcut.shortcutToString(shortcut.Keys.Esc), WebInspector.UIString("Toggle console")); 6766c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen section.addKey(shortcut.shortcutToString("f", shortcut.Modifiers.CtrlOrMeta), WebInspector.UIString("Search")); 6774a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch if (WebInspector.isMac()) { 6784a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch keys = [ 6794a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch shortcut.shortcutToString("g", shortcut.Modifiers.Meta), 6804a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch shortcut.shortcutToString("g", shortcut.Modifiers.Meta | shortcut.Modifiers.Shift) 6814a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch ]; 6824a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch section.addRelatedKeys(keys, WebInspector.UIString("Find next/previous")); 6834a156157940f51b91eadd76f6c86f862ec0a1da0Ben Murdoch } 6846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 6856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.documentKeyDown = function(event) 6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 688e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke var isInputElement = event.target.nodeName === "INPUT"; 6895af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke var isInEditMode = event.target.enclosingNodeOrSelfWithClass("text-prompt") || WebInspector.isEditingAnyField(); 6906c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen const helpKey = WebInspector.isMac() ? "U+003F" : "U+00BF"; // "?" for both platforms 6916c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 6926c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (event.keyIdentifier === "F1" || 693e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke (event.keyIdentifier === helpKey && event.shiftKey && (!isInEditMode && !isInputElement || event.metaKey))) { 6945af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke WebInspector.shortcutsHelp.show(); 6955af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke event.stopPropagation(); 6965af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke event.preventDefault(); 6975af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke return; 6986c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 6996c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 700dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (WebInspector.isEditingAnyField()) 701dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 702dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 703d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.currentFocusElement && this.currentFocusElement.handleKeyEvent) { 704d0825bca7fe65beaee391d30da42e937db621564Steve Block this.currentFocusElement.handleKeyEvent(event); 705d0825bca7fe65beaee391d30da42e937db621564Steve Block if (event.handled) { 706d0825bca7fe65beaee391d30da42e937db621564Steve Block event.preventDefault(); 707643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return; 708d0825bca7fe65beaee391d30da42e937db621564Steve Block } 709643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 710643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 711d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.currentPanel && this.currentPanel.handleShortcut) { 712d0825bca7fe65beaee391d30da42e937db621564Steve Block this.currentPanel.handleShortcut(event); 713d0825bca7fe65beaee391d30da42e937db621564Steve Block if (event.handled) { 714d0825bca7fe65beaee391d30da42e937db621564Steve Block event.preventDefault(); 715d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 716d0825bca7fe65beaee391d30da42e937db621564Steve Block } 717d0825bca7fe65beaee391d30da42e937db621564Steve Block } 7188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 71981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.searchController.handleShortcut(event); 72081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (event.handled) { 72181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch event.preventDefault(); 72281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch return; 72381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 72481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 725d0825bca7fe65beaee391d30da42e937db621564Steve Block var isMac = WebInspector.isMac(); 726d0825bca7fe65beaee391d30da42e937db621564Steve Block switch (event.keyIdentifier) { 72721939df44de1705786c545cd1bf519d47250322dBen Murdoch case "Left": 7285af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke var isBackKey = !isInEditMode && (isMac ? event.metaKey : event.ctrlKey); 72921939df44de1705786c545cd1bf519d47250322dBen Murdoch if (isBackKey && this._panelHistory.canGoBack()) { 73021939df44de1705786c545cd1bf519d47250322dBen Murdoch this._panelHistory.goBack(); 73121939df44de1705786c545cd1bf519d47250322dBen Murdoch event.preventDefault(); 73221939df44de1705786c545cd1bf519d47250322dBen Murdoch } 73321939df44de1705786c545cd1bf519d47250322dBen Murdoch break; 73421939df44de1705786c545cd1bf519d47250322dBen Murdoch 73521939df44de1705786c545cd1bf519d47250322dBen Murdoch case "Right": 7365af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke var isForwardKey = !isInEditMode && (isMac ? event.metaKey : event.ctrlKey); 73721939df44de1705786c545cd1bf519d47250322dBen Murdoch if (isForwardKey && this._panelHistory.canGoForward()) { 73821939df44de1705786c545cd1bf519d47250322dBen Murdoch this._panelHistory.goForward(); 73921939df44de1705786c545cd1bf519d47250322dBen Murdoch event.preventDefault(); 74021939df44de1705786c545cd1bf519d47250322dBen Murdoch } 74121939df44de1705786c545cd1bf519d47250322dBen Murdoch break; 74221939df44de1705786c545cd1bf519d47250322dBen Murdoch 743d0825bca7fe65beaee391d30da42e937db621564Steve Block case "U+001B": // Escape key 744d0825bca7fe65beaee391d30da42e937db621564Steve Block event.preventDefault(); 745d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.drawer.fullPanel) 746d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 747643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 748d0825bca7fe65beaee391d30da42e937db621564Steve Block this.drawer.visible = !this.drawer.visible; 749d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 7508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 751d0825bca7fe65beaee391d30da42e937db621564Steve Block // Windows and Mac have two different definitions of [, so accept both. 752d0825bca7fe65beaee391d30da42e937db621564Steve Block case "U+005B": 753d0825bca7fe65beaee391d30da42e937db621564Steve Block case "U+00DB": // [ key 754d0825bca7fe65beaee391d30da42e937db621564Steve Block if (isMac) 755d0825bca7fe65beaee391d30da42e937db621564Steve Block var isRotateLeft = event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey; 756d0825bca7fe65beaee391d30da42e937db621564Steve Block else 757d0825bca7fe65beaee391d30da42e937db621564Steve Block var isRotateLeft = event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey; 7580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 759d0825bca7fe65beaee391d30da42e937db621564Steve Block if (isRotateLeft) { 760d0825bca7fe65beaee391d30da42e937db621564Steve Block var index = this.panelOrder.indexOf(this.currentPanel); 761d0825bca7fe65beaee391d30da42e937db621564Steve Block index = (index === 0) ? this.panelOrder.length - 1 : index - 1; 762d0825bca7fe65beaee391d30da42e937db621564Steve Block this.panelOrder[index].toolbarItem.click(); 763d0825bca7fe65beaee391d30da42e937db621564Steve Block event.preventDefault(); 764d0825bca7fe65beaee391d30da42e937db621564Steve Block } 7650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 766d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 7670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 768d0825bca7fe65beaee391d30da42e937db621564Steve Block // Windows and Mac have two different definitions of ], so accept both. 769d0825bca7fe65beaee391d30da42e937db621564Steve Block case "U+005D": 770d0825bca7fe65beaee391d30da42e937db621564Steve Block case "U+00DD": // ] key 771d0825bca7fe65beaee391d30da42e937db621564Steve Block if (isMac) 772d0825bca7fe65beaee391d30da42e937db621564Steve Block var isRotateRight = event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey; 773d0825bca7fe65beaee391d30da42e937db621564Steve Block else 774d0825bca7fe65beaee391d30da42e937db621564Steve Block var isRotateRight = event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey; 7750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 776d0825bca7fe65beaee391d30da42e937db621564Steve Block if (isRotateRight) { 777d0825bca7fe65beaee391d30da42e937db621564Steve Block var index = this.panelOrder.indexOf(this.currentPanel); 778d0825bca7fe65beaee391d30da42e937db621564Steve Block index = (index + 1) % this.panelOrder.length; 779d0825bca7fe65beaee391d30da42e937db621564Steve Block this.panelOrder[index].toolbarItem.click(); 780d0825bca7fe65beaee391d30da42e937db621564Steve Block event.preventDefault(); 781d0825bca7fe65beaee391d30da42e937db621564Steve Block } 7820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 783d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 7848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 785dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block case "U+0052": // R key 786dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if ((event.metaKey && isMac) || (event.ctrlKey && !isMac)) { 7872bde8e466a4451c7319e3a072d118917957d6554Steve Block PageAgent.reloadPage(event.shiftKey); 788dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block event.preventDefault(); 789d0825bca7fe65beaee391d30da42e937db621564Steve Block } 790dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block break; 791dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block case "F5": 792dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!isMac) 7932bde8e466a4451c7319e3a072d118917957d6554Steve Block PageAgent.reloadPage(event.ctrlKey || event.shiftKey); 794d0825bca7fe65beaee391d30da42e937db621564Steve Block break; 795d0825bca7fe65beaee391d30da42e937db621564Steve Block } 7968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 7978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.documentCanCopy = function(event) 7998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 800d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.currentPanel && this.currentPanel.handleCopyEvent) 8018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 8028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.documentCopy = function(event) 8058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 806d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this.currentPanel && this.currentPanel.handleCopyEvent) 807d0825bca7fe65beaee391d30da42e937db621564Steve Block this.currentPanel.handleCopyEvent(event); 8088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 8098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 810643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.contextMenuEventFired = function(event) 811231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 812231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (event.handled || event.target.hasStyleClass("popup-glasspane")) 813231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block event.preventDefault(); 814231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 815231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 816643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.animateStyle = function(animations, duration, callback) 8178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 818643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var interval; 819643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var complete = 0; 8202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block var hasCompleted = false; 8218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 822643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const intervalDuration = (1000 / 30); // 30 frames per second. 823643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const animationsLength = animations.length; 824643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const propertyUnit = {opacity: ""}; 825643ca7872b450ea4efacab6188849e5aac2ba161Steve Block const defaultUnit = "px"; 8268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 827643ca7872b450ea4efacab6188849e5aac2ba161Steve Block function cubicInOut(t, b, c, d) 828643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 829643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if ((t/=d/2) < 1) return c/2*t*t*t + b; 830643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return c/2*((t-=2)*t*t + 2) + b; 831643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 832643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 833643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Pre-process animations. 834643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (var i = 0; i < animationsLength; ++i) { 8358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var animation = animations[i]; 836643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var element = null, start = null, end = null, key = null; 8378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (key in animation) { 8388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (key === "element") 8398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element = animation[key]; 8408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (key === "start") 8418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project start = animation[key]; 8428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else if (key === "end") 8438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project end = animation[key]; 8448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 8458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!element || !end) 8478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project continue; 8488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!start) { 850643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var computedStyle = element.ownerDocument.defaultView.getComputedStyle(element); 8518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project start = {}; 8528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (key in end) 8538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project start[key] = parseInt(computedStyle.getPropertyValue(key)); 8548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project animation.start = start; 855643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } else 8568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (key in start) 8578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element.style.setProperty(key, start[key] + (key in propertyUnit ? propertyUnit[key] : defaultUnit)); 858643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 8598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 860643ca7872b450ea4efacab6188849e5aac2ba161Steve Block function animateLoop() 861643ca7872b450ea4efacab6188849e5aac2ba161Steve Block { 862643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Advance forward. 863643ca7872b450ea4efacab6188849e5aac2ba161Steve Block complete += intervalDuration; 864643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var next = complete + intervalDuration; 865643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 866643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Make style changes. 867643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (var i = 0; i < animationsLength; ++i) { 868643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var animation = animations[i]; 869643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var element = animation.element; 870643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var start = animation.start; 871643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var end = animation.end; 872643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!element || !end) 873643ca7872b450ea4efacab6188849e5aac2ba161Steve Block continue; 874643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 875643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var style = element.style; 876643ca7872b450ea4efacab6188849e5aac2ba161Steve Block for (key in end) { 877643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var endValue = end[key]; 878643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (next < duration) { 879643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var startValue = start[key]; 880643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var newValue = cubicInOut(complete, startValue, endValue - startValue, duration); 881643ca7872b450ea4efacab6188849e5aac2ba161Steve Block style.setProperty(key, newValue + (key in propertyUnit ? propertyUnit[key] : defaultUnit)); 882643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } else 883643ca7872b450ea4efacab6188849e5aac2ba161Steve Block style.setProperty(key, endValue + (key in propertyUnit ? propertyUnit[key] : defaultUnit)); 884643ca7872b450ea4efacab6188849e5aac2ba161Steve Block } 8858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 8868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 887643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // End condition. 888643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (complete >= duration) { 8892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block hasCompleted = true; 890643ca7872b450ea4efacab6188849e5aac2ba161Steve Block clearInterval(interval); 891643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (callback) 892643ca7872b450ea4efacab6188849e5aac2ba161Steve Block callback(); 8938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 8948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 8958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 8962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block function forceComplete() 8972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 8982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!hasCompleted) { 8992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block complete = duration; 9002fc2651226baac27029e38c9d6ef883fa32084dbSteve Block animateLoop(); 9012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 9022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 9032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 9042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block function cancel() 9052fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 9062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block hasCompleted = true; 9072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block clearInterval(interval); 9082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 9092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 910643ca7872b450ea4efacab6188849e5aac2ba161Steve Block interval = setInterval(animateLoop, intervalDuration); 9112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return { 9122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block cancel: cancel, 9132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block forceComplete: forceComplete 9142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block }; 9158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.toggleAttach = function() 9188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 919dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!this.attached) 920dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendHost.requestAttachWindow(); 921dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block else 922dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendHost.requestDetachWindow(); 9238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 925231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockWebInspector.elementDragStart = function(element, dividerDrag, elementDragEnd, event, cursor) 9268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (this._elementDraggingEventListener || this._elementEndDraggingEventListener) 9288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.elementDragEnd(event); 9298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._elementDraggingEventListener = dividerDrag; 9318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this._elementEndDraggingEventListener = elementDragEnd; 9328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.addEventListener("mousemove", dividerDrag, true); 9348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.addEventListener("mouseup", elementDragEnd, true); 9358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.body.style.cursor = cursor; 9378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 9398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.elementDragEnd = function(event) 9428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 9438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.removeEventListener("mousemove", this._elementDraggingEventListener, true); 9448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.removeEventListener("mouseup", this._elementEndDraggingEventListener, true); 9458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project document.body.style.removeProperty("cursor"); 9478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete this._elementDraggingEventListener; 9498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete this._elementEndDraggingEventListener; 9508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 9528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 9538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 954967717af5423377c967781471ee106e2bb4e11c8Ben MurdochWebInspector.toggleSearchingForNode = function() 955967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch{ 956967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch if (this.panels.elements) { 957dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch this.showPanel("elements"); 958967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch this.panels.elements.toggleSearchingForNode(); 959967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch } 960967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch} 961967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch 9628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.showConsole = function() 9638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 964231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block this.drawer.showView(this.console); 9650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 9660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 967dd8bb3de4f353a81954234999f1fea748aee2ea9Ben MurdochWebInspector.showPanel = function(panel) 968dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 969dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch if (!(panel in this.panels)) 970dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch panel = "elements"; 971dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch this.currentPanel = this.panels[panel]; 972dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 973dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 9742bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebInspector.startUserInitiatedDebugging = function() 9752bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 9762bde8e466a4451c7319e3a072d118917957d6554Steve Block this.currentPanel = this.panels.scripts; 9772bde8e466a4451c7319e3a072d118917957d6554Steve Block WebInspector.debuggerModel.enableDebugger(); 9782bde8e466a4451c7319e3a072d118917957d6554Steve Block} 9792bde8e466a4451c7319e3a072d118917957d6554Steve Block 980a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochWebInspector.domContentEventFired = function(time) 981a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 982a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch this.panels.audits.mainResourceDOMContentTime = time; 983e14391e94c850b8bd03680c23b38978db68687a8John Reck this.mainResourceDOMContentTime = time; 984a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} 985a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 986a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochWebInspector.loadEventFired = function(time) 987a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{ 988a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch this.panels.audits.mainResourceLoadTime = time; 9892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block this.panels.resources.loadEventFired(); 990e14391e94c850b8bd03680c23b38978db68687a8John Reck this.mainResourceLoadTime = time; 9915f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 9925f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 993dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.searchingForNodeWasEnabled = function() 994dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 995dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this.panels.elements.searchingForNodeWasEnabled(); 996dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 997dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 998dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.searchingForNodeWasDisabled = function() 999dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 1000dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this.panels.elements.searchingForNodeWasDisabled(); 1001dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 1002dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 10038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.reset = function() 10048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1005f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch this.debuggerModel.reset(); 1006a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch 10078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (var panelName in this.panels) { 10088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var panel = this.panels[panelName]; 10098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ("reset" in panel) 10108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project panel.reset(); 10118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 10128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10135f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian this.resources = {}; 101468513a70bcd92384395513322f1b801e7bf9c729Steve Block this.highlightDOMNode(0); 10158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 10168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.console.clearMessages(); 1017db14019a23d96bc8a444b6576a5da8bd1cfbc8b0Steve Block this.extensionServer.notifyInspectorReset(); 101806ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen} 101906ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen 1020dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.bringToFront = function() 1021dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 1022dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendHost.bringToFront(); 1023dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 1024dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1025dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.inspectedURLChanged = function(url) 1026dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 1027dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block InspectorFrontendHost.inspectedURLChanged(url); 10282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch this.domBreakpointsSidebarPane.setInspectedURL(url); 10292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch this.extensionServer.notifyInspectedURLChanged(url); 1030231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 1031231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 10322bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebInspector.didCreateWorker = function() 10332bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 10342bde8e466a4451c7319e3a072d118917957d6554Steve Block var workersPane = WebInspector.panels.scripts.sidebarPanes.workers; 10352bde8e466a4451c7319e3a072d118917957d6554Steve Block workersPane.addWorker.apply(workersPane, arguments); 10362bde8e466a4451c7319e3a072d118917957d6554Steve Block} 10372bde8e466a4451c7319e3a072d118917957d6554Steve Block 10382bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebInspector.didDestroyWorker = function() 10392bde8e466a4451c7319e3a072d118917957d6554Steve Block{ 10402bde8e466a4451c7319e3a072d118917957d6554Steve Block var workersPane = WebInspector.panels.scripts.sidebarPanes.workers; 10412bde8e466a4451c7319e3a072d118917957d6554Steve Block workersPane.removeWorker.apply(workersPane, arguments); 10422bde8e466a4451c7319e3a072d118917957d6554Steve Block} 10432bde8e466a4451c7319e3a072d118917957d6554Steve Block 1044dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.log = function(message, messageLevel) 1045231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 1046231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // remember 'this' for setInterval() callback 1047231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var self = this; 1048643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1049231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // return indication if we can actually log a message 1050231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block function isLogAvailable() 1051231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 1052f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick return WebInspector.ConsoleMessage && WebInspector.RemoteObject && self.console; 1053231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1054643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1055231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // flush the queue of pending messages 1056231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block function flushQueue() 1057231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 1058231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var queued = WebInspector.log.queued; 1059643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!queued) 1060231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return; 1061643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1062231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (var i = 0; i < queued.length; ++i) 1063231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block logMessage(queued[i]); 1064643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1065231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block delete WebInspector.log.queued; 1066231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1067231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1068231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // flush the queue if it console is available 1069231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // - this function is run on an interval 1070231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block function flushQueueIfAvailable() 1071231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 1072231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!isLogAvailable()) 1073231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return; 1074643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1075231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block clearInterval(WebInspector.log.interval); 1076231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block delete WebInspector.log.interval; 1077643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1078231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block flushQueue(); 1079231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1080643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1081231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // actually log the message 1082231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block function logMessage(message) 1083231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block { 1084231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var repeatCount = 1; 1085231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (message == WebInspector.log.lastMessage) 1086231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block repeatCount = WebInspector.log.repeatCount + 1; 1087643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1088231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.log.lastMessage = message; 1089231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.log.repeatCount = repeatCount; 1090643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1091231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // ConsoleMessage expects a proxy object 1092f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick message = new WebInspector.RemoteObject.fromPrimitiveValue(message); 1093643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1094231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // post the message 1095231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var msg = new WebInspector.ConsoleMessage( 1096231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.ConsoleMessage.MessageSource.Other, 1097231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.ConsoleMessage.MessageType.Log, 1098dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block messageLevel || WebInspector.ConsoleMessage.MessageLevel.Debug, 1099231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block -1, 1100231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block null, 1101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block repeatCount, 1102967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch null, 1103967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch [message], 1104967717af5423377c967781471ee106e2bb4e11c8Ben Murdoch null); 1105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1106231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block self.console.addMessage(msg); 1107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // if we can't log the message, queue it 1110231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!isLogAvailable()) { 1111231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!WebInspector.log.queued) 1112231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.log.queued = []; 1113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1114231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.log.queued.push(message); 1115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1116231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!WebInspector.log.interval) 1117231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block WebInspector.log.interval = setInterval(flushQueueIfAvailable, 1000); 1118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1119231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return; 1120231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1121231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1122231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // flush the pending queue if any 1123231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block flushQueue(); 1124231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 1125231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // log the message 1126231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block logMessage(message); 1127231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 1128231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 11298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.drawLoadingPieChart = function(canvas, percent) { 11308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var g = canvas.getContext("2d"); 11318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var darkColor = "rgb(122, 168, 218)"; 11328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var lightColor = "rgb(228, 241, 251)"; 11338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var cx = 8; 11348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var cy = 8; 11358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var r = 7; 11368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.beginPath(); 1138231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g.arc(cx, cy, r, 0, Math.PI * 2, false); 11398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.closePath(); 11408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.lineWidth = 1; 11428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.strokeStyle = darkColor; 11438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.fillStyle = lightColor; 11448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.fill(); 11458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.stroke(); 11468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var startangle = -Math.PI / 2; 11488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var endangle = startangle + (percent * Math.PI * 2); 11498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.beginPath(); 11518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.moveTo(cx, cy); 1152231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block g.arc(cx, cy, r, startangle, endangle, false); 11538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.closePath(); 11548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.fillStyle = darkColor; 11568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g.fill(); 11578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11592bde8e466a4451c7319e3a072d118917957d6554Steve BlockWebInspector.inspect = function(payload, hints) 116081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 11612bde8e466a4451c7319e3a072d118917957d6554Steve Block var object = WebInspector.RemoteObject.fromPayload(payload); 116281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (object.type === "node") { 116381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // Request node from backend and focus it. 11642bde8e466a4451c7319e3a072d118917957d6554Steve Block object.pushNodeToFrontend(WebInspector.updateFocusedNode.bind(WebInspector), object.release.bind(object)); 11652bde8e466a4451c7319e3a072d118917957d6554Steve Block return; 11662bde8e466a4451c7319e3a072d118917957d6554Steve Block } 11672bde8e466a4451c7319e3a072d118917957d6554Steve Block 11682bde8e466a4451c7319e3a072d118917957d6554Steve Block if (hints.databaseId) { 116981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.currentPanel = WebInspector.panels.resources; 117081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.panels.resources.selectDatabase(hints.databaseId); 117181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } else if (hints.domStorageId) { 117281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.currentPanel = WebInspector.panels.resources; 117381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebInspector.panels.resources.selectDOMStorage(hints.domStorageId); 117481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 117581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 11762bde8e466a4451c7319e3a072d118917957d6554Steve Block object.release(); 117781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 117881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 1179231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockWebInspector.updateFocusedNode = function(nodeId) 11808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 118168513a70bcd92384395513322f1b801e7bf9c729Steve Block this._updateFocusedNode(nodeId); 118268513a70bcd92384395513322f1b801e7bf9c729Steve Block this.highlightDOMNodeForTwoSeconds(nodeId); 11838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 11848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.displayNameForURL = function(url) 11868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 11878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!url) 11888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return ""; 1189e14391e94c850b8bd03680c23b38978db68687a8John Reck 1190e14391e94c850b8bd03680c23b38978db68687a8John Reck var resource = this.resourceForURL(url); 11918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (resource) 11928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return resource.displayName; 1193dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1194dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!WebInspector.mainResource) 1195dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return url.trimURL(""); 1196dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1197dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var lastPathComponent = WebInspector.mainResource.lastPathComponent; 1198dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var index = WebInspector.mainResource.url.indexOf(lastPathComponent); 1199dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (index !== -1 && index + lastPathComponent.length === WebInspector.mainResource.url.length) { 1200dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var baseURL = WebInspector.mainResource.url.substring(0, index); 1201dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (url.indexOf(baseURL) === 0) 1202dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return url.substring(index); 1203dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block } 1204dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1205dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return url.trimURL(WebInspector.mainResource.domain); 12068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebInspector._showAnchorLocation = function(anchor) 1209d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 12102daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch var preferedPanel = this.panels[anchor.getAttribute("preferred_panel") || "resources"]; 12112daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (WebInspector._showAnchorLocationInPanel(anchor, preferedPanel)) 12122daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return true; 12132daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (preferedPanel !== this.panels.resources && WebInspector._showAnchorLocationInPanel(anchor, this.panels.resources)) 12142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return true; 12152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return false; 1216d0825bca7fe65beaee391d30da42e937db621564Steve Block} 12178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12182daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebInspector._showAnchorLocationInPanel = function(anchor, panel) 1219d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 12202daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!panel.canShowAnchorLocation(anchor)) 1221635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return false; 12222daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 12232daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // FIXME: support webkit-html-external-link links here. 12242daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (anchor.hasStyleClass("webkit-html-external-link")) { 12252daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch anchor.removeStyleClass("webkit-html-external-link"); 12262daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch anchor.addStyleClass("webkit-html-resource-link"); 12272daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 12282daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 12292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch this.currentPanel = panel; 12302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (this.drawer) 12312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block this.drawer.immediatelyFinishAnimation(); 12322daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch this.currentPanel.showAnchorLocation(anchor); 12338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 12348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.linkifyStringAsFragment = function(string) 12378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var container = document.createDocumentFragment(); 1239643ca7872b450ea4efacab6188849e5aac2ba161Steve Block var linkStringRegEx = /(?:[a-zA-Z][a-zA-Z0-9+.-]{2,}:\/\/|www\.)[\w$\-_+*'=\|\/\\(){}[\]%@&#~,:;.!?]{2,}[\w$\-_+*=\|\/\\({%@&#~]/; 124028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu var lineColumnRegEx = /:(\d+)(:(\d+))?$/; 12418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project while (string) { 12438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var linkString = linkStringRegEx.exec(string); 12448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!linkString) 12458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 12468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkString = linkString[0]; 12488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var title = linkString; 12498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var linkIndex = string.indexOf(linkString); 12508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var nonLink = string.substring(0, linkIndex); 12518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project container.appendChild(document.createTextNode(nonLink)); 12528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1253cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block var profileStringMatches = WebInspector.ProfileType.URLRegExp.exec(title); 12548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (profileStringMatches) 1255cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block title = WebInspector.panels.profiles.displayTitleForProfileLink(profileStringMatches[2], profileStringMatches[1]); 12568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var realURL = (linkString.indexOf("www.") === 0 ? "http://" + linkString : linkString); 125828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu var lineColumnMatch = lineColumnRegEx.exec(realURL); 125928040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu if (lineColumnMatch) 126028040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu realURL = realURL.substring(0, realURL.length - lineColumnMatch[0].length); 126128040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 1262e14391e94c850b8bd03680c23b38978db68687a8John Reck var hasResourceWithURL = !!WebInspector.resourceForURL(realURL); 126328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu var urlNode = WebInspector.linkifyURLAsNode(realURL, title, null, hasResourceWithURL); 126428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu container.appendChild(urlNode); 126528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu if (lineColumnMatch) { 126628040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu urlNode.setAttribute("line_number", lineColumnMatch[1]); 126728040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu urlNode.setAttribute("preferred_panel", "scripts"); 126828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu } 12698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project string = string.substring(linkIndex + linkString.length, string.length); 12708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 12718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (string) 12738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project container.appendChild(document.createTextNode(string)); 12748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return container; 12768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1278643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.showProfileForURL = function(url) 1279643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1280dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch WebInspector.showPanel("profiles"); 1281cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block WebInspector.panels.profiles.showProfileForURL(url); 12828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 12838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1284643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.linkifyURLAsNode = function(url, linkText, classes, isExternal, tooltipText) 12858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 12868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!linkText) 12878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project linkText = url; 12888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project classes = (classes ? classes + " " : ""); 12898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project classes += isExternal ? "webkit-html-external-link" : "webkit-html-resource-link"; 12908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 12918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var a = document.createElement("a"); 12928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a.href = url; 12938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a.className = classes; 12946c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen if (typeof tooltipText === "undefined") 12956c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen a.title = url; 12966c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen else if (typeof tooltipText !== "string" || tooltipText.length) 12976c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen a.title = tooltipText; 12988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project a.textContent = linkText; 12992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch a.style.maxWidth = "100%"; 1300231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 13018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return a; 13028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1304643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.linkifyURL = function(url, linkText, classes, isExternal, tooltipText) 13058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 13068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // Use the DOM version of this function so as to avoid needing to escape attributes. 13078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // FIXME: Get rid of linkifyURL entirely. 1308643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return WebInspector.linkifyURLAsNode(url, linkText, classes, isExternal, tooltipText).outerHTML; 13098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1311dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.linkifyResourceAsNode = function(url, preferredPanel, lineNumber, classes, tooltipText) 1312dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 1313dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var linkText = WebInspector.displayNameForURL(url); 1314dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (lineNumber) 1315dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block linkText += ":" + lineNumber; 1316dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var node = WebInspector.linkifyURLAsNode(url, linkText, classes, false, tooltipText); 1317e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block node.setAttribute("line_number", lineNumber); 1318e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block node.setAttribute("preferred_panel", preferredPanel); 1319dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return node; 1320dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 1321dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 132268513a70bcd92384395513322f1b801e7bf9c729Steve BlockWebInspector.resourceURLForRelatedNode = function(node, url) 132368513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 132468513a70bcd92384395513322f1b801e7bf9c729Steve Block if (!url || url.indexOf("://") > 0) 132568513a70bcd92384395513322f1b801e7bf9c729Steve Block return url; 132668513a70bcd92384395513322f1b801e7bf9c729Steve Block 132768513a70bcd92384395513322f1b801e7bf9c729Steve Block for (var frameOwnerCandidate = node; frameOwnerCandidate; frameOwnerCandidate = frameOwnerCandidate.parentNode) { 132868513a70bcd92384395513322f1b801e7bf9c729Steve Block if (frameOwnerCandidate.documentURL) { 132968513a70bcd92384395513322f1b801e7bf9c729Steve Block var result = WebInspector.completeURL(frameOwnerCandidate.documentURL, url); 133068513a70bcd92384395513322f1b801e7bf9c729Steve Block if (result) 133168513a70bcd92384395513322f1b801e7bf9c729Steve Block return result; 133268513a70bcd92384395513322f1b801e7bf9c729Steve Block break; 133368513a70bcd92384395513322f1b801e7bf9c729Steve Block } 133468513a70bcd92384395513322f1b801e7bf9c729Steve Block } 133568513a70bcd92384395513322f1b801e7bf9c729Steve Block 133668513a70bcd92384395513322f1b801e7bf9c729Steve Block // documentURL not found or has bad value 1337e14391e94c850b8bd03680c23b38978db68687a8John Reck var resourceURL = url; 1338e14391e94c850b8bd03680c23b38978db68687a8John Reck function callback(resource) 1339e14391e94c850b8bd03680c23b38978db68687a8John Reck { 1340e14391e94c850b8bd03680c23b38978db68687a8John Reck if (resource.path === url) { 1341e14391e94c850b8bd03680c23b38978db68687a8John Reck resourceURL = resource.url; 1342e14391e94c850b8bd03680c23b38978db68687a8John Reck return true; 1343e14391e94c850b8bd03680c23b38978db68687a8John Reck } 134468513a70bcd92384395513322f1b801e7bf9c729Steve Block } 1345e14391e94c850b8bd03680c23b38978db68687a8John Reck WebInspector.forAllResources(callback); 1346e14391e94c850b8bd03680c23b38978db68687a8John Reck return resourceURL; 1347e14391e94c850b8bd03680c23b38978db68687a8John Reck} 134868513a70bcd92384395513322f1b801e7bf9c729Steve Block 13495e2bc6953fe6923165b8a5d7679939693a1d58d6Steve BlockWebInspector.completeURL = function(baseURL, href) 13505e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block{ 1351cad810f21b803229eb11403f9209855525a25d57Steve Block if (href) { 1352cad810f21b803229eb11403f9209855525a25d57Steve Block // Return absolute URLs as-is. 1353cad810f21b803229eb11403f9209855525a25d57Steve Block var parsedHref = href.asParsedURL(); 1354cad810f21b803229eb11403f9209855525a25d57Steve Block if (parsedHref && parsedHref.scheme) 1355cad810f21b803229eb11403f9209855525a25d57Steve Block return href; 1356cad810f21b803229eb11403f9209855525a25d57Steve Block } 1357cad810f21b803229eb11403f9209855525a25d57Steve Block 1358a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch var parsedURL = baseURL.asParsedURL(); 1359a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch if (parsedURL) { 13605e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block var path = href; 13615e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block if (path.charAt(0) !== "/") { 1362a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch var basePath = parsedURL.path; 13632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // A href of "?foo=bar" implies "basePath?foo=bar". 13642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // With "basePath?a=b" and "?foo=bar" we should get "basePath?foo=bar". 13652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block var prefix; 13662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (path.charAt(0) === "?") { 13672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block var basePathCutIndex = basePath.indexOf("?"); 13682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (basePathCutIndex !== -1) 13692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block prefix = basePath.substring(0, basePathCutIndex); 13702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block else 13712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block prefix = basePath; 13722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } else 13732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block prefix = basePath.substring(0, basePath.lastIndexOf("/")) + "/"; 13742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 13752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block path = prefix + path; 1376dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch } else if (path.length > 1 && path.charAt(1) === "/") { 1377dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch // href starts with "//" which is a full URL with the protocol dropped (use the baseURL protocol). 1378a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return parsedURL.scheme + ":" + path; 13795e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block } 1380a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch return parsedURL.scheme + "://" + parsedURL.host + (parsedURL.port ? (":" + parsedURL.port) : "") + path; 13815e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block } 13825e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block return null; 13835e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block} 13845e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 13858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.addMainEventListeners = function(doc) 13868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1387cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block doc.defaultView.addEventListener("focus", this.windowFocused.bind(this), false); 1388cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block doc.defaultView.addEventListener("blur", this.windowBlurred.bind(this), false); 13898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project doc.addEventListener("click", this.documentClick.bind(this), true); 13908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 13918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 139265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben MurdochWebInspector.frontendReused = function() 139365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{ 139481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch this.networkManager.frontendReused(); 13952bde8e466a4451c7319e3a072d118917957d6554Steve Block this.resourceTreeModel.frontendReused(); 13962bde8e466a4451c7319e3a072d118917957d6554Steve Block WebInspector.panels.network.clear(); 139765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch this.reset(); 139865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} 139965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 14008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.UIString = function(string) 14018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (window.localizedStrings && string in window.localizedStrings) 14038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project string = window.localizedStrings[string]; 14048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project else { 1405e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block if (!(string in WebInspector.missingLocalizedStrings)) { 1406643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!WebInspector.InspectorBackendStub) 140781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch console.warn("Localized string \"" + string + "\" not found."); 1408e78cbe89e6f337f2f1fe40315be88f742b547151Steve Block WebInspector.missingLocalizedStrings[string] = true; 14098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (Preferences.showMissingLocalizedStrings) 14128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project string += " (not localized)"; 14138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return String.vsprintf(string, Array.prototype.slice.call(arguments, 1)); 14168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 141868513a70bcd92384395513322f1b801e7bf9c729Steve BlockWebInspector.formatLocalized = function(format, substitutions, formatters, initialValue, append) 141968513a70bcd92384395513322f1b801e7bf9c729Steve Block{ 142068513a70bcd92384395513322f1b801e7bf9c729Steve Block return String.format(WebInspector.UIString(format), substitutions, formatters, initialValue, append); 142168513a70bcd92384395513322f1b801e7bf9c729Steve Block} 142268513a70bcd92384395513322f1b801e7bf9c729Steve Block 1423643ca7872b450ea4efacab6188849e5aac2ba161Steve BlockWebInspector.isMac = function() 1424643ca7872b450ea4efacab6188849e5aac2ba161Steve Block{ 1425643ca7872b450ea4efacab6188849e5aac2ba161Steve Block if (!("_isMac" in this)) 14265e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block this._isMac = WebInspector.platform === "mac"; 1427643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1428643ca7872b450ea4efacab6188849e5aac2ba161Steve Block return this._isMac; 1429643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} 1430643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 14318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.isBeingEdited = function(element) 14328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return element.__editing; 14348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 14358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14362daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben MurdochWebInspector.markBeingEdited = function(element, value) 14372daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{ 14382daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (value) { 14392daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (element.__editing) 14402daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return false; 14412daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch element.__editing = true; 14422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebInspector.__editingCount = (WebInspector.__editingCount || 0) + 1; 14432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } else { 14442daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!element.__editing) 14452daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return false; 14462daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch delete element.__editing; 14472daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch --WebInspector.__editingCount; 14482daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch } 14492daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return true; 14502daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 14512daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1452dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve BlockWebInspector.isEditingAnyField = function() 1453dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 14542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch return !!WebInspector.__editingCount; 1455dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 1456dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 1457f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// Available config fields (all optional): 1458f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// context: Object - an arbitrary context object to be passed to the commit and cancel handlers 1459f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// commitHandler: Function - handles editing "commit" outcome 1460f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// cancelHandler: Function - handles editing "cancel" outcome 1461f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// customFinishHandler: Function - custom finish handler for the editing session (invoked on keydown) 1462cad810f21b803229eb11403f9209855525a25d57Steve Block// pasteHandler: Function - handles the "paste" event, return values are the same as those for customFinishHandler 1463f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch// multiline: Boolean - whether the edited element is multiline 1464f05b935882198ccf7d81675736e3aeb089c5113aBen MurdochWebInspector.startEditing = function(element, config) 14658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 14662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch if (!WebInspector.markBeingEdited(element, true)) 14678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 14688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1469f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch config = config || {}; 1470f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch var committedCallback = config.commitHandler; 1471f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch var cancelledCallback = config.cancelHandler; 1472cad810f21b803229eb11403f9209855525a25d57Steve Block var pasteCallback = config.pasteHandler; 1473f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch var context = config.context; 1474231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block var oldText = getContent(element); 14750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch var moveDirection = ""; 14768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element.addStyleClass("editing"); 14788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var oldTabIndex = element.tabIndex; 14808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (element.tabIndex < 0) 14818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element.tabIndex = 0; 14828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project function blurEventListener() { 14848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project editingCommitted.call(element); 14858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 14868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1487231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block function getContent(element) { 1488231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (element.tagName === "INPUT" && element.type === "text") 1489231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return element.value; 1490231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else 1491231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return element.textContent; 1492231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 1493231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 14948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project function cleanUpAfterEditing() { 14952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebInspector.markBeingEdited(element, false); 14968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 14978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.removeStyleClass("editing"); 14988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.tabIndex = oldTabIndex; 14998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.scrollTop = 0; 15008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.scrollLeft = 0; 15018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element.removeEventListener("blur", blurEventListener, false); 1503d0825bca7fe65beaee391d30da42e937db621564Steve Block element.removeEventListener("keydown", keyDownEventListener, true); 1504cad810f21b803229eb11403f9209855525a25d57Steve Block if (pasteCallback) 1505cad810f21b803229eb11403f9209855525a25d57Steve Block element.removeEventListener("paste", pasteEventListener, true); 15068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (element === WebInspector.currentFocusElement || element.isAncestor(WebInspector.currentFocusElement)) 15088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebInspector.currentFocusElement = WebInspector.previousFocusElement; 15098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project function editingCancelled() { 1512231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (this.tagName === "INPUT" && this.type === "text") 1513231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block this.value = oldText; 1514231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else 1515231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block this.textContent = oldText; 15168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project cleanUpAfterEditing.call(this); 15188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1519231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (cancelledCallback) 1520231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block cancelledCallback(this, context); 15218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project function editingCommitted() { 15248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project cleanUpAfterEditing.call(this); 15258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1526231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (committedCallback) 1527231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block committedCallback(this, getContent(this), oldText, context, moveDirection); 15288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1530f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch function defaultFinishHandler(event) 1531f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch { 1532d0825bca7fe65beaee391d30da42e937db621564Steve Block var isMetaOrCtrl = WebInspector.isMac() ? 1533d0825bca7fe65beaee391d30da42e937db621564Steve Block event.metaKey && !event.shiftKey && !event.ctrlKey && !event.altKey : 1534d0825bca7fe65beaee391d30da42e937db621564Steve Block event.ctrlKey && !event.shiftKey && !event.metaKey && !event.altKey; 15352bde8e466a4451c7319e3a072d118917957d6554Steve Block if (isEnterKey(event) && (event.isMetaOrCtrlForTest || !config.multiline || isMetaOrCtrl)) 1536f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return "commit"; 1537f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch else if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Esc.code) 1538f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return "cancel"; 1539f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch else if (event.keyIdentifier === "U+0009") // Tab key 1540f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return "move-" + (event.shiftKey ? "backward" : "forward"); 1541f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 1542f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 1543cad810f21b803229eb11403f9209855525a25d57Steve Block function handleEditingResult(result, event) 1544f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch { 1545f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (result === "commit") { 15468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project editingCommitted.call(element); 15478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 1548643ca7872b450ea4efacab6188849e5aac2ba161Steve Block event.stopPropagation(); 1549f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } else if (result === "cancel") { 15508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project editingCancelled.call(element); 15518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project event.preventDefault(); 1552d0825bca7fe65beaee391d30da42e937db621564Steve Block event.stopPropagation(); 1553f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } else if (result && result.indexOf("move-") === 0) { 1554f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch moveDirection = result.substring(5); 1555f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch if (event.keyIdentifier !== "U+0009") 1556f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch blurEventListener(); 1557f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 15588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 15598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1560cad810f21b803229eb11403f9209855525a25d57Steve Block function pasteEventListener(event) 1561cad810f21b803229eb11403f9209855525a25d57Steve Block { 1562cad810f21b803229eb11403f9209855525a25d57Steve Block var result = pasteCallback(event); 1563cad810f21b803229eb11403f9209855525a25d57Steve Block handleEditingResult(result, event); 1564cad810f21b803229eb11403f9209855525a25d57Steve Block } 1565cad810f21b803229eb11403f9209855525a25d57Steve Block 1566cad810f21b803229eb11403f9209855525a25d57Steve Block function keyDownEventListener(event) 1567cad810f21b803229eb11403f9209855525a25d57Steve Block { 1568cad810f21b803229eb11403f9209855525a25d57Steve Block var handler = config.customFinishHandler || defaultFinishHandler; 1569cad810f21b803229eb11403f9209855525a25d57Steve Block var result = handler(event); 1570cad810f21b803229eb11403f9209855525a25d57Steve Block handleEditingResult(result, event); 1571cad810f21b803229eb11403f9209855525a25d57Steve Block } 1572cad810f21b803229eb11403f9209855525a25d57Steve Block 15738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project element.addEventListener("blur", blurEventListener, false); 1574d0825bca7fe65beaee391d30da42e937db621564Steve Block element.addEventListener("keydown", keyDownEventListener, true); 1575cad810f21b803229eb11403f9209855525a25d57Steve Block if (pasteCallback) 1576cad810f21b803229eb11403f9209855525a25d57Steve Block element.addEventListener("paste", pasteEventListener, true); 15778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebInspector.currentFocusElement = element; 1579dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return { 1580dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block cancel: editingCancelled.bind(element), 1581dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block commit: editingCommitted.bind(element) 1582dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }; 15838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector._toolbarItemClicked = function(event) 15868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 15878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var toolbarItem = event.currentTarget; 15888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.currentPanel = toolbarItem.panel; 15898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 15908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 15918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// This table maps MIME types to the Resource.Types which are valid for them. 15928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// The following line: 15938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// "text/html": {0: 1}, 15948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// means that text/html is a valid MIME type for resources that have type 15958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// WebInspector.Resource.Type.Document (which has a value of 0). 15968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebInspector.MIMETypes = { 15978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/html": {0: true}, 15988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/xml": {0: true}, 15998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/plain": {0: true}, 16008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/xhtml+xml": {0: true}, 16018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/css": {1: true}, 16028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/xsl": {1: true}, 16038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/jpeg": {2: true}, 16048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/png": {2: true}, 16058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/gif": {2: true}, 16068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/bmp": {2: true}, 16075f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian "image/vnd.microsoft.icon": {2: true}, 16088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/x-icon": {2: true}, 16098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "image/x-xbitmap": {2: true}, 16108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "font/ttf": {3: true}, 16118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "font/opentype": {3: true}, 16128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/x-font-type1": {3: true}, 16138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/x-font-ttf": {3: true}, 16142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block "application/x-font-woff": {3: true}, 16158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/x-truetype-font": {3: true}, 16168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/javascript": {4: true}, 16178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/ecmascript": {4: true}, 16188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/javascript": {4: true}, 16198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/ecmascript": {4: true}, 16208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "application/x-javascript": {4: true}, 16218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/javascript1.1": {4: true}, 16228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/javascript1.2": {4: true}, 16238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/javascript1.3": {4: true}, 16248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/jscript": {4: true}, 16258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "text/livescript": {4: true}, 16268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 162721939df44de1705786c545cd1bf519d47250322dBen Murdoch 162821939df44de1705786c545cd1bf519d47250322dBen MurdochWebInspector.PanelHistory = function() 162921939df44de1705786c545cd1bf519d47250322dBen Murdoch{ 163021939df44de1705786c545cd1bf519d47250322dBen Murdoch this._history = []; 163121939df44de1705786c545cd1bf519d47250322dBen Murdoch this._historyIterator = -1; 163221939df44de1705786c545cd1bf519d47250322dBen Murdoch} 163321939df44de1705786c545cd1bf519d47250322dBen Murdoch 163421939df44de1705786c545cd1bf519d47250322dBen MurdochWebInspector.PanelHistory.prototype = { 163521939df44de1705786c545cd1bf519d47250322dBen Murdoch canGoBack: function() 163621939df44de1705786c545cd1bf519d47250322dBen Murdoch { 163721939df44de1705786c545cd1bf519d47250322dBen Murdoch return this._historyIterator > 0; 163821939df44de1705786c545cd1bf519d47250322dBen Murdoch }, 163921939df44de1705786c545cd1bf519d47250322dBen Murdoch 164021939df44de1705786c545cd1bf519d47250322dBen Murdoch goBack: function() 164121939df44de1705786c545cd1bf519d47250322dBen Murdoch { 164221939df44de1705786c545cd1bf519d47250322dBen Murdoch this._inHistory = true; 164321939df44de1705786c545cd1bf519d47250322dBen Murdoch WebInspector.currentPanel = WebInspector.panels[this._history[--this._historyIterator]]; 164421939df44de1705786c545cd1bf519d47250322dBen Murdoch delete this._inHistory; 164521939df44de1705786c545cd1bf519d47250322dBen Murdoch }, 164621939df44de1705786c545cd1bf519d47250322dBen Murdoch 164721939df44de1705786c545cd1bf519d47250322dBen Murdoch canGoForward: function() 164821939df44de1705786c545cd1bf519d47250322dBen Murdoch { 164921939df44de1705786c545cd1bf519d47250322dBen Murdoch return this._historyIterator < this._history.length - 1; 165021939df44de1705786c545cd1bf519d47250322dBen Murdoch }, 165121939df44de1705786c545cd1bf519d47250322dBen Murdoch 165221939df44de1705786c545cd1bf519d47250322dBen Murdoch goForward: function() 165321939df44de1705786c545cd1bf519d47250322dBen Murdoch { 165421939df44de1705786c545cd1bf519d47250322dBen Murdoch this._inHistory = true; 165521939df44de1705786c545cd1bf519d47250322dBen Murdoch WebInspector.currentPanel = WebInspector.panels[this._history[++this._historyIterator]]; 165621939df44de1705786c545cd1bf519d47250322dBen Murdoch delete this._inHistory; 165721939df44de1705786c545cd1bf519d47250322dBen Murdoch }, 165821939df44de1705786c545cd1bf519d47250322dBen Murdoch 165921939df44de1705786c545cd1bf519d47250322dBen Murdoch setPanel: function(panelName) 166021939df44de1705786c545cd1bf519d47250322dBen Murdoch { 166121939df44de1705786c545cd1bf519d47250322dBen Murdoch if (this._inHistory) 166221939df44de1705786c545cd1bf519d47250322dBen Murdoch return; 166321939df44de1705786c545cd1bf519d47250322dBen Murdoch 166421939df44de1705786c545cd1bf519d47250322dBen Murdoch this._history.splice(this._historyIterator + 1, this._history.length - this._historyIterator - 1); 166521939df44de1705786c545cd1bf519d47250322dBen Murdoch if (!this._history.length || this._history[this._history.length - 1] !== panelName) 166621939df44de1705786c545cd1bf519d47250322dBen Murdoch this._history.push(panelName); 166721939df44de1705786c545cd1bf519d47250322dBen Murdoch this._historyIterator = this._history.length - 1; 166821939df44de1705786c545cd1bf519d47250322dBen Murdoch } 166921939df44de1705786c545cd1bf519d47250322dBen Murdoch} 1670