Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2015)

Unified Diff: chrome_linux/resources/inspector/inspector.js

Issue 14690006: Update reference builds to r197396. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/reference_builds/
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome_linux/resources/inspector/inspector.js
===================================================================
--- chrome_linux/resources/inspector/inspector.js (revision 197568)
+++ chrome_linux/resources/inspector/inspector.js (working copy)
@@ -1797,12 +1797,9 @@
this.selected = false;
this.treeOutline = this;
this.comparator = null;
-this.searchable = false;
-this.searchInputElement = null;
this.setFocusable(!nonFocusable);
this._childrenListNode.addEventListener("keydown", this._treeKeyDown.bind(this), true);
-this._childrenListNode.addEventListener("keypress", this._treeKeyPress.bind(this), true);
this._treeElementsMap = new Map();
this._expandedStateMap = new Map();
@@ -2028,20 +2025,6 @@
return null;
}
-TreeOutline.prototype._treeKeyPress = function(event)
-{
-if (!this.searchable || WebInspector.isBeingEdited(this._childrenListNode))
-return;
-
-var searchText = String.fromCharCode(event.charCode);
-
-if (searchText.trim() !== searchText)
-return;
-
-this._startSearch(searchText);
-event.consume(true);
-}
-
TreeOutline.prototype._treeKeyDown = function(event)
{
if (event.target !== this._childrenListNode)
@@ -2145,156 +2128,6 @@
}
-TreeOutline.prototype._startSearch = function(searchText)
-{
-if (!this.searchInputElement || !this.searchable)
-return;
-
-this._searching = true;
-
-if (this.searchStarted)
-this.searchStarted();
-
-this.searchInputElement.value = searchText;
-
-function focusSearchInput()
-{
-this.searchInputElement.focus();
-}
-window.setTimeout(focusSearchInput.bind(this), 0);
-this._searchTextChanged();
-this._boundSearchTextChanged = this._searchTextChanged.bind(this);
-this.searchInputElement.addEventListener("paste", this._boundSearchTextChanged);
-this.searchInputElement.addEventListener("cut", this._boundSearchTextChanged);
-this.searchInputElement.addEventListener("keypress", this._boundSearchTextChanged);
-this._boundSearchInputKeyDown = this._searchInputKeyDown.bind(this);
-this.searchInputElement.addEventListener("keydown", this._boundSearchInputKeyDown);
-this._boundSearchInputBlur = this._searchInputBlur.bind(this);
-this.searchInputElement.addEventListener("blur", this._boundSearchInputBlur);
-}
-
-TreeOutline.prototype._searchTextChanged = function()
-{
-function updateSearch()
-{
-var nextSelectedElement = this._nextSearchMatch(this.searchInputElement.value, this.selectedTreeElement, false);
-if (!nextSelectedElement)
-nextSelectedElement = this._nextSearchMatch(this.searchInputElement.value, this.children[0], false);
-this._showSearchMatchElement(nextSelectedElement);
-}
-
-window.setTimeout(updateSearch.bind(this), 0);
-}
-
-TreeOutline.prototype._showSearchMatchElement = function(treeElement)
-{
-this._currentSearchMatchElement = treeElement;
-if (treeElement) {
-this._childrenListNode.classList.add("search-match-found");
-this._childrenListNode.classList.remove("search-match-not-found");
-treeElement.revealAndSelect(true);
-} else {
-this._childrenListNode.classList.remove("search-match-found");
-this._childrenListNode.classList.add("search-match-not-found");
-}
-}
-
-TreeOutline.prototype._searchInputKeyDown = function(event)
-{
-if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey)
-return;
-
-var handled = false;
-var nextSelectedElement;
-if (event.keyIdentifier === "Down") {
-nextSelectedElement = this._nextSearchMatch(this.searchInputElement.value, this.selectedTreeElement, true);
-handled = true;
-} else if (event.keyIdentifier === "Up") {
-nextSelectedElement = this._previousSearchMatch(this.searchInputElement.value, this.selectedTreeElement);
-handled = true;
-} else if (event.keyCode === 27 ) {
-this._searchFinished();
-handled = true;
-} else if (isEnterKey(event)) {
-var lastSearchMatchElement = this._currentSearchMatchElement;
-this._searchFinished();
-lastSearchMatchElement.onenter();
-handled = true;
-}
-
-if (nextSelectedElement)
-this._showSearchMatchElement(nextSelectedElement);
-
-if (handled)
-event.consume(true);
-else
-window.setTimeout(this._boundSearchTextChanged, 0);
-}
-
-
-TreeOutline.prototype._nextSearchMatch = function(searchText, startTreeElement, skipStartTreeElement)
-{
-var currentTreeElement = startTreeElement;
-var skipCurrentTreeElement = skipStartTreeElement;
-while (currentTreeElement && (skipCurrentTreeElement || !currentTreeElement.matchesSearchText || !currentTreeElement.matchesSearchText(searchText))) {
-currentTreeElement = currentTreeElement.traverseNextTreeElement(true, null, true);
-skipCurrentTreeElement = false;
-}
-
-return currentTreeElement;
-}
-
-
-TreeOutline.prototype._previousSearchMatch = function(searchText, startTreeElement)
-{
-var currentTreeElement = startTreeElement;
-var skipCurrentTreeElement = true;
-while (currentTreeElement && (skipCurrentTreeElement || !currentTreeElement.matchesSearchText || !currentTreeElement.matchesSearchText(searchText))) {
-currentTreeElement = currentTreeElement.traversePreviousTreeElement(true, true);
-skipCurrentTreeElement = false;
-}
-
-return currentTreeElement;
-}
-
-TreeOutline.prototype._searchInputBlur = function(event)
-{
-this._searchFinished();
-}
-
-TreeOutline.prototype._searchFinished = function()
-{
-if (!this._searching)
-return;
-
-delete this._searching;
-this._childrenListNode.classList.remove("search-match-found");
-this._childrenListNode.classList.remove("search-match-not-found");
-delete this._currentSearchMatchElement;
-
-this.searchInputElement.value = "";
-this.searchInputElement.removeEventListener("paste", this._boundSearchTextChanged);
-this.searchInputElement.removeEventListener("cut", this._boundSearchTextChanged);
-delete this._boundSearchTextChanged;
-
-this.searchInputElement.removeEventListener("keydown", this._boundSearchInputKeyDown);
-delete this._boundSearchInputKeyDown;
-
-this.searchInputElement.removeEventListener("blur", this._boundSearchInputBlur);
-delete this._boundSearchInputBlur;
-
-if (this.searchFinished)
-this.searchFinished();
-
-this.treeOutline._childrenListNode.focus();
-}
-
-TreeOutline.prototype.stopSearch = function()
-{
-this._searchFinished();
-}
-
-
function TreeElement(title, representedObject, hasChildren)
{
this._title = title;
@@ -2861,35 +2694,27 @@
if (!this._toggleConsoleButton.enabled())
return;
-this._toggleConsoleButton.toggled = !this._toggleConsoleButton.toggled;
+var animationType = window.event && window.event.shiftKey ? WebInspector.Drawer.AnimationType.Slow : WebInspector.Drawer.AnimationType.Normal;
-var animationType = window.event && window.event.shiftKey ? WebInspector.Drawer.AnimationType.Slow : WebInspector.Drawer.AnimationType.Normal;
-if (this._toggleConsoleButton.toggled) {
-this._toggleConsoleButton.title = WebInspector.UIString("Hide console.");
-this.drawer.show(this.consoleView, animationType);
-this._consoleWasShown = true;
-} else {
-this._toggleConsoleButton.title = WebInspector.UIString("Show console.");
-this.drawer.hide(animationType);
-delete this._consoleWasShown;
-}
+if (this._toggleConsoleButton.toggled)
+this.closeConsole(animationType);
+else
+this.showConsole(animationType);
},
showViewInDrawer: function(statusBarElement, view, onclose)
{
-this._toggleConsoleButton.title = WebInspector.UIString("Hide console.");
+this._toggleConsoleButton.title = WebInspector.UIString("Show console.");
this._toggleConsoleButton.toggled = false;
-this._closePreviousDrawerView();
+this._removeDrawerView();
var drawerStatusBarHeader = document.createElement("div");
drawerStatusBarHeader.className = "drawer-header status-bar-item";
drawerStatusBarHeader.appendChild(statusBarElement);
drawerStatusBarHeader.onclose = onclose;
-var closeButton = drawerStatusBarHeader.createChild("span");
-closeButton.textContent = WebInspector.UIString("\u00D7");
-closeButton.addStyleClass("drawer-header-close-button");
+var closeButton = drawerStatusBarHeader.createChild("div", "close-button");
closeButton.addEventListener("click", this.closeViewInDrawer.bind(this), false);
var panelStatusBar = document.getElementById("panel-status-bar");
@@ -2902,26 +2727,58 @@
closeViewInDrawer: function()
{
if (this._drawerStatusBarHeader) {
-this._closePreviousDrawerView();
+this._removeDrawerView();
-if (!this._consoleWasShown)
+if (this._consoleWasShown)
+this.showConsole();
+else
this.drawer.hide(WebInspector.Drawer.AnimationType.Immediately);
-else
-this._toggleConsoleButtonClicked();
}
},
-_closePreviousDrawerView: function()
+_removeDrawerView: function()
{
if (this._drawerStatusBarHeader) {
-this._drawerStatusBarHeader.parentElement.removeChild(this._drawerStatusBarHeader);
+this._drawerStatusBarHeader.removeSelf();
if (this._drawerStatusBarHeader.onclose)
this._drawerStatusBarHeader.onclose();
delete this._drawerStatusBarHeader;
}
},
+
+showConsole: function(animationType)
+{
+animationType = animationType || WebInspector.Drawer.AnimationType.Normal;
+
+if (this.consoleView.isShowing())
+return;
+
+if (WebInspector.drawer.visible)
+this._removeDrawerView();
+
+this._toggleConsoleButton.toggled = true;
+this._toggleConsoleButton.title = WebInspector.UIString("Hide console.");
+this.drawer.show(this.consoleView, animationType);
+this._consoleWasShown = true;
+},
+
+
+closeConsole: function(animationType)
+{
+animationType = animationType || WebInspector.Drawer.AnimationType.Normal;
+
+if (!this.consoleView.isShowing() || !WebInspector.drawer.visible)
+return;
+
+this._toggleConsoleButton.toggled = false;
+this._toggleConsoleButton.title = WebInspector.UIString("Show console.");
+this.drawer.hide(animationType);
+this._consoleWasShown = false;
+},
+
+
_updateErrorAndWarningCounts: function()
{
var errorWarningElement = document.getElementById("error-warning-count");
@@ -2940,23 +2797,17 @@
errorWarningElement.removeChildren();
if (errors) {
-var errorImageElement = document.createElement("img");
-errorImageElement.id = "error-count-img";
-errorWarningElement.appendChild(errorImageElement);
-var errorElement = document.createElement("span");
+var errorImageElement = errorWarningElement.createChild("div", "error-icon-small");
+var errorElement = errorWarningElement.createChild("span");
errorElement.id = "error-count";
errorElement.textContent = errors;
-errorWarningElement.appendChild(errorElement);
}
if (warnings) {
-var warningsImageElement = document.createElement("img");
-warningsImageElement.id = "warning-count-img";
-errorWarningElement.appendChild(warningsImageElement);
-var warningsElement = document.createElement("span");
+var warningsImageElement = errorWarningElement.createChild("div", "warning-icon-small");
+var warningsElement = errorWarningElement.createChild("span");
warningsElement.id = "warning-count";
warningsElement.textContent = warnings;
-errorWarningElement.appendChild(warningsElement);
}
if (errors) {
@@ -3027,9 +2878,49 @@
{
WebInspector.panel("scripts");
+},
+
+_setupTethering: function()
+{
+if (!this._portForwardings) {
+this._portForwardings = {};
+WebInspector.settings.portForwardings.addChangeListener(this._setupTethering.bind(this));
}
+var entries = WebInspector.settings.portForwardings.get();
+var newForwardings = {};
+for (var i = 0; i < entries.length; ++i)
+newForwardings[entries[i].port] = entries[i].location;
+
+for (var port in this._portForwardings) {
+if (!newForwardings[port])
+unbind(port);
}
+for (var port in newForwardings) {
+if (this._portForwardings[port] && newForwardings[port] === this._portForwardings[port])
+continue;
+if (this._portForwardings[port])
+unbind(port);
+bind(port, newForwardings[port]);
+}
+this._portForwardings = newForwardings;
+
+
+function bind(port, location)
+{
+var command = { method: "Tethering.bind", params: { port: parseInt(port, 10), location: location }, id: InspectorBackend.nextCallbackId() };
+InspectorBackend.sendMessageObjectToBackend(command);
+}
+
+
+function unbind(port)
+{
+var command = { method: "Tethering.unbind", params: { port: parseInt(port, 10) }, id: InspectorBackend.nextCallbackId() };
+InspectorBackend.sendMessageObjectToBackend(command);
+}
+}
+}
+
WebInspector.Events = {
InspectorLoaded: "InspectorLoaded",
InspectorClosing: "InspectorClosing"
@@ -3163,6 +3054,7 @@
this.debuggerModel.addEventListener(WebInspector.DebuggerModel.Events.DebuggerPaused, this._debuggerPaused, this);
this.networkLog = new WebInspector.NetworkLog();
this.domAgent = new WebInspector.DOMAgent();
+this.domAgent.addEventListener(WebInspector.DOMAgent.Events.InspectNodeRequested, this._inspectNodeRequested, this);
this.runtimeModel = new WebInspector.RuntimeModel(this.resourceTreeModel);
this.consoleView = new WebInspector.ConsoleView(WebInspector.WorkerManager.isWorkerFrontend());
@@ -3257,9 +3149,6 @@
if (WebInspector.settings.continuousPainting.get())
PageAgent.setContinuousPaintingEnabled(true);
-if (WebInspector.settings.javaScriptDisabled.get())
-PageAgent.setScriptExecutionDisabled(true);
-
if (WebInspector.settings.showFPSCounter.get())
PageAgent.setShowFPSCounter(true);
@@ -3268,6 +3157,9 @@
WebInspector.WorkerManager.loadCompleted();
InspectorFrontendAPI.loadCompleted();
+if (WebInspector.experimentsSettings.tethering.isEnabled())
+this._setupTethering();
+
WebInspector.notifications.dispatchEventToListeners(WebInspector.Events.InspectorLoaded);
}
@@ -3435,7 +3327,7 @@
if (event.keyIdentifier === "F1" ||
(event.keyIdentifier === helpKey && event.shiftKey && (!WebInspector.isBeingEdited(event.target) || event.metaKey))) {
-this.settingsController.showSettingsScreen(WebInspector.SettingsScreen.Tabs.Shortcuts);
+this.settingsController.showSettingsScreen(WebInspector.SettingsScreen.Tabs.General);
event.consume(true);
return;
}
@@ -3553,15 +3445,6 @@
event.preventDefault();
}
-WebInspector.showConsole = function()
-{
-if (WebInspector._toggleConsoleButton && !WebInspector._toggleConsoleButton.toggled) {
-if (WebInspector.drawer.visible)
-this._closePreviousDrawerView();
-WebInspector._toggleConsoleButtonClicked();
-}
-}
-
WebInspector.showPanel = function(panel)
{
return WebInspector.inspectorView.showPanel(panel);
@@ -3690,6 +3573,11 @@
WebInspector.UIString("Inspected target has crashed. Once it reloads we will attach to it automatically."))).showModal();
}
+WebInspector._inspectNodeRequested = function(event)
+{
+WebInspector._updateFocusedNode(event.data);
+}
+
WebInspector._updateFocusedNode = function(nodeId)
{
if (WebInspector.inspectElementModeController && WebInspector.inspectElementModeController.enabled()) {
@@ -3812,9 +3700,15 @@
}
InspectorBackendClass.prototype = {
+
+nextCallbackId: function()
+{
+return this._lastCallbackId++;
+},
+
_wrap: function(callback, method)
{
-var callbackId = this._lastCallbackId++;
+var callbackId = this.nextCallbackId();
if (!callback)
callback = function() {};
@@ -4245,7 +4139,7 @@
InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console");
-InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", Css: "css", Security: "security", Other: "other"});
+InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", Css: "css", Security: "security", Other: "other", Deprecation: "deprecation"});
InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Warning: "warning", Error: "error", Debug: "debug"});
InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"});
InspectorBackend.registerEvent("Console.messageAdded", ["message"]);
@@ -4340,6 +4234,7 @@
InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM");
InspectorBackend.registerEvent("DOM.documentUpdated", []);
+InspectorBackend.registerEvent("DOM.inspectNodeRequested", ["nodeId"]);
InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]);
InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]);
InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]);
@@ -4393,6 +4288,8 @@
InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"});
InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []);
InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]);
+InspectorBackend.registerEvent("CSS.styleSheetAdded", ["header"]);
+InspectorBackend.registerEvent("CSS.styleSheetRemoved", ["styleSheetId"]);
InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]);
InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]);
InspectorBackend.registerEvent("CSS.regionLayoutUpdated", ["namedFlow"]);
@@ -4490,7 +4387,11 @@
InspectorBackend.registerEvent("HeapProfiler.finishHeapSnapshot", ["uid"]);
InspectorBackend.registerEvent("HeapProfiler.resetProfiles", []);
InspectorBackend.registerEvent("HeapProfiler.reportHeapSnapshotProgress", ["done", "total"]);
+InspectorBackend.registerEvent("HeapProfiler.lastSeenObjectId", ["lastSeenObjectId", "timestamp"]);
+InspectorBackend.registerEvent("HeapProfiler.heapStatsUpdate", ["statsUpdate"]);
InspectorBackend.registerCommand("HeapProfiler.getProfileHeaders", [], ["headers"]);
+InspectorBackend.registerCommand("HeapProfiler.startTrackingHeapObjects", [], []);
+InspectorBackend.registerCommand("HeapProfiler.stopTrackingHeapObjects", [], []);
InspectorBackend.registerCommand("HeapProfiler.getHeapSnapshot", [{"name": "uid", "type": "number", "optional": false}], []);
InspectorBackend.registerCommand("HeapProfiler.removeProfile", [{"name": "uid", "type": "number", "optional": false}], []);
InspectorBackend.registerCommand("HeapProfiler.clearProfiles", [], []);
@@ -4877,7 +4778,7 @@
this.eventListenerBreakpoints = this.createSetting("eventListenerBreakpoints", []);
this.domBreakpoints = this.createSetting("domBreakpoints", []);
this.xhrBreakpoints = this.createSetting("xhrBreakpoints", []);
-this.sourceMapsEnabled = this.createSetting("sourceMapsEnabled", false);
+this.sourceMapsEnabled = this.createSetting("sourceMapsEnabled", true);
this.cacheDisabled = this.createSetting("cacheDisabled", false);
this.overrideUserAgent = this.createSetting("overrideUserAgent", "");
this.userAgent = this.createSetting("userAgent", "");
@@ -4912,6 +4813,8 @@
this.messageURLFilters = this.createSetting("messageURLFilters", {});
this.splitVerticallyWhenDockedToRight = this.createSetting("splitVerticallyWhenDockedToRight", true);
this.visiblePanels = this.createSetting("visiblePanels", {});
+this.shortcutPanelSwitch = this.createSetting("shortcutPanelSwitch", false);
+this.portForwardings = this.createSetting("portForwardings", []);
}
WebInspector.Settings.prototype = {
@@ -4987,21 +4890,20 @@
this._enabledForTest = {};
-this.snippetsSupport = this._createExperiment("snippetsSupport", "Snippets support");
this.nativeMemorySnapshots = this._createExperiment("nativeMemorySnapshots", "Native memory profiling");
this.nativeMemoryTimeline = this._createExperiment("nativeMemoryTimeline", "Native memory timeline");
this.fileSystemInspection = this._createExperiment("fileSystemInspection", "FileSystem inspection");
this.canvasInspection = this._createExperiment("canvasInspection ", "Canvas inspection");
this.sass = this._createExperiment("sass", "Support for Sass");
-this.codemirror = this._createExperiment("codemirror", "Use CodeMirror editor");
this.cssRegions = this._createExperiment("cssRegions", "CSS Regions Support");
this.showOverridesInDrawer = this._createExperiment("showOverridesInDrawer", "Show Overrides in drawer");
this.fileSystemProject = this._createExperiment("fileSystemProject", "File system folders in Sources Panel");
this.showWhitespaceInEditor = this._createExperiment("showWhitespaceInEditor", "Show whitespace characters in editor");
-this.textEditorSmartBraces = this._createExperiment("textEditorSmartBraces", "Enable smart braces in text editor");
this.customizableToolbar = this._createExperiment("customizableToolbar", "Enable toolbar customization");
this.cpuFlameChart = this._createExperiment("cpuFlameChart", "Show Flame Chart in CPU Profiler");
-this.shortcutPanelSwitch = this._createExperiment("shortcutPanelSwitch", "Enable Ctrl/Cmd + 1-9 shortcut to switch panels");
+this.tethering = this._createExperiment("tethering", "Enable reverse port forwarding");
+this.drawerOverlay = this._createExperiment("drawerOverlay", "Open console as overlay");
+this.heapObjectsTracking = this._createExperiment("heapObjectsTracking", "Enable heap objects tracking profile type");
this._cleanUpSetting();
}
@@ -5732,7 +5634,7 @@
WebInspector.isBeingEdited = function(element)
{
-if (element.hasStyleClass("text-prompt") || element.nodeName === "INPUT")
+if (element.hasStyleClass("text-prompt") || element.nodeName === "INPUT" || element.nodeName === "TEXTAREA")
return true;
if (!WebInspector.__editingCount)
@@ -5751,11 +5653,13 @@
if (value) {
if (element.__editing)
return false;
+element.addStyleClass("being-edited");
element.__editing = true;
WebInspector.__editingCount = (WebInspector.__editingCount || 0) + 1;
} else {
if (!element.__editing)
return false;
+element.removeStyleClass("being-edited");
delete element.__editing;
--WebInspector.__editingCount;
}
@@ -6009,6 +5913,7 @@
theme: config.theme,
value: oldText
});
+codeMirror.getWrapperElement().addStyleClass("source-code");
} else {
element.addStyleClass("editing");
@@ -6627,9 +6532,8 @@
WebInspector.HelpScreen.prototype = {
_createCloseButton: function()
{
-var closeButton = document.createElement("button");
-closeButton.className = "help-close-button";
-closeButton.textContent = "\u2716";
+var closeButton = document.createElement("div");
+closeButton.className = "help-close-button close-button-gray";
closeButton.addEventListener("click", this.hide.bind(this), false);
return closeButton;
},
@@ -6769,10 +6673,6 @@
{
},
-setAttachedWindowWidth: function(width)
-{
-},
-
moveWindowBy: function(x, y)
{
},
@@ -9472,7 +9372,7 @@
this._tabs = [];
this._tabsHistory = [];
this._tabsById = {};
-this.element.addEventListener("click", this.focus.bind(this), false);
+this.element.addEventListener("click", this.focus.bind(this), true);
this.element.addEventListener("mouseup", this.onMouseUp.bind(this), false);
this._dropDownButton = this._createDropDownButton();
@@ -10041,10 +9941,8 @@
if (!measuring)
this._titleElement = titleElement;
-if (this._closeable) {
-var closeButtonSpan = tabElement.createChild("span", "tabbed-pane-header-tab-close-button");
-closeButtonSpan.textContent = "\u00D7";
-}
+if (this._closeable)
+tabElement.createChild("div", "close-button-gray");
if (measuring)
tabElement.addStyleClass("measuring");
@@ -10064,14 +9962,14 @@
_tabClicked: function(event)
{
-if (this._closeable && (event.button === 1 || event.target.hasStyleClass("tabbed-pane-header-tab-close-button")))
+if (this._closeable && (event.button === 1 || event.target.hasStyleClass("close-button-gray")))
this._closeTabs([this.id]);
},
_tabMouseDown: function(event)
{
-if (event.target.hasStyleClass("tabbed-pane-header-tab-close-button") || event.button === 1)
+if (event.target.hasStyleClass("close-button-gray") || event.button === 1)
return;
this._tabbedPane.selectTab(this.id, true);
},
@@ -10113,7 +10011,7 @@
_startTabDragging: function(event)
{
-if (event.target.hasStyleClass("tabbed-pane-header-tab-close-button"))
+if (event.target.hasStyleClass("close-button-gray"))
return false;
this._dragStartX = event.pageX;
return true;
@@ -10224,9 +10122,13 @@
if (!this.element.clientHeight)
return;
+this._contentElement.removeChildren();
var itemCount = this._provider.itemCount();
-if (!itemCount)
+if (!itemCount) {
+this._firstVisibleIndex = -1;
+this._lastVisibleIndex = -1;
return;
+}
if (!this._rowHeight) {
var firstElement = this._provider.itemElement(0);
@@ -10242,7 +10144,6 @@
this._topGapElement.style.height = (this._rowHeight * this._firstVisibleIndex) + "px";
this._bottomGapElement.style.height = (this._rowHeight * (itemCount - this._lastVisibleIndex - 1)) + "px";
-this._contentElement.removeChildren();
for (var i = this._firstVisibleIndex; i <= this._lastVisibleIndex; ++i)
this._contentElement.appendChild(this._provider.itemElement(i));
},
@@ -10302,6 +10203,8 @@
WebInspector.Drawer = function()
{
this.element = document.getElementById("drawer");
+this.element.style.height = 0;
+
this._savedHeight = 200;
this._mainElement = document.getElementById("main");
this._toolbarElement = document.getElementById("toolbar");
@@ -10317,6 +10220,11 @@
this._viewStatusBar.addEventListener("webkitTransitionEnd", this.immediatelyFinishAnimation.bind(this), false);
this._viewStatusBar.style.opacity = 0;
this._bottomStatusBar = document.getElementById("bottom-status-bar-container");
+
+var drawerIsOverlay = WebInspector.experimentsSettings.drawerOverlay.isEnabled();
+this._elementToAdjust = drawerIsOverlay ? this._floatingStatusBarContainer : this._mainElement;
+
+document.body.enableStyleClass("drawer-overlay", drawerIsOverlay);
}
WebInspector.Drawer.AnimationType = {
@@ -10368,8 +10276,6 @@
this._floatingStatusBarContainer.style.paddingLeft = this._bottomStatusBar.offsetLeft + "px";
-this._getAnimationStyles(animationType).forEach(document.body.addStyleClass, document.body);
-
function animationFinished()
{
WebInspector.inspectorView.currentPanel().doResize();
@@ -10382,13 +10288,21 @@
console.assert(this._viewStatusBar.style.opacity === "0");
-if (animationType === WebInspector.Drawer.AnimationType.Immediately)
-this.immediatelyFinishAnimation();
+function adjustStyles()
+{
+this._animationStyles(animationType).forEach(document.body.addStyleClass, document.body);
this.element.style.height = height + "px";
-this._mainElement.style.bottom = height + "px";
+this._elementToAdjust.style.bottom = height + "px";
this._floatingStatusBarContainer.style.paddingLeft = 0;
this._viewStatusBar.style.opacity = 1;
+}
+
+if (animationType === WebInspector.Drawer.AnimationType.Immediately) {
+adjustStyles.call(this);
+this.immediatelyFinishAnimation();
+} else
+setTimeout(adjustStyles.bind(this), 0);
},
hide: function(animationType)
@@ -10407,8 +10321,6 @@
WebInspector.inspectorView.currentPanel().statusBarResized();
document.body.addStyleClass("drawer-visible");
-this._getAnimationStyles(animationType).forEach(document.body.addStyleClass, document.body);
-
function animationFinished()
{
WebInspector.inspectorView.currentPanel().doResize();
@@ -10425,13 +10337,21 @@
console.assert(this._viewStatusBar.style.opacity === "1");
-if (animationType === WebInspector.Drawer.AnimationType.Immediately)
-this.immediatelyFinishAnimation();
+function adjustStyles()
+{
+this._animationStyles(animationType).forEach(document.body.addStyleClass, document.body);
this.element.style.height = 0;
-this._mainElement.style.bottom = 0;
+this._elementToAdjust.style.bottom = 0;
this._floatingStatusBarContainer.style.paddingLeft = this._bottomStatusBar.offsetLeft + "px";
this._viewStatusBar.style.opacity = 0;
+}
+
+if (animationType === WebInspector.Drawer.AnimationType.Immediately) {
+adjustStyles.call(this);
+this.immediatelyFinishAnimation();
+} else
+setTimeout(adjustStyles.bind(this), 0);
},
resize: function()
@@ -10441,7 +10361,7 @@
this._view.storeScrollPositions();
var height = this._constrainHeight(parseInt(this.element.style.height, 10));
-this._mainElement.style.bottom = height + "px";
+this._elementToAdjust.style.bottom = height + "px";
this.element.style.height = height + "px";
this._view.doResize();
},
@@ -10456,7 +10376,7 @@
}
},
-_getAnimationStyles: function(animationType)
+_animationStyles: function(animationType)
{
switch (animationType) {
case WebInspector.Drawer.AnimationType.Slow:
@@ -10484,7 +10404,7 @@
var height = window.innerHeight - event.pageY + this._statusBarDragOffset;
height = Number.constrain(height, Preferences.minConsoleHeight, window.innerHeight - this._mainElement.totalOffsetTop() - Preferences.minConsoleHeight);
-this._mainElement.style.bottom = height + "px";
+this._elementToAdjust.style.bottom = height + "px";
this.element.style.height = height + "px";
if (WebInspector.inspectorView.currentPanel())
WebInspector.inspectorView.currentPanel().doResize();
@@ -10675,7 +10595,8 @@
Rendering: "rendering",
CSS: "css",
Security: "security",
-Other: "other"
+Other: "other",
+Deprecation: "deprecation"
}
WebInspector.ConsoleMessage.MessageType = {
@@ -12791,7 +12712,7 @@
return;
-var panelShortcutEnabled = WebInspector.experimentsSettings.shortcutPanelSwitch.isEnabled();
+var panelShortcutEnabled = WebInspector.settings.shortcutPanelSwitch.get();
if (panelShortcutEnabled && !event.shiftKey && !event.altKey && event.keyCode > 0x30 && event.keyCode < 0x3A) {
var panelName = this._panelOrder[event.keyCode - 0x31];
if (panelName) {
@@ -13943,41 +13864,42 @@
},
-_setWindow: function(left, right)
+_setWindow: function(windowLeft, windowRight)
{
var clientWidth = this._parentElement.clientWidth;
-this._setWindowPosition(left * clientWidth, right * clientWidth);
-},
+const rulerAdjustment = 1 / clientWidth;
+this.windowLeft = windowLeft;
+this._leftResizeElement.style.left = this.windowLeft * 100 + "%";
+this.windowRight = windowRight;
+this._rightResizeElement.style.left = this.windowRight * 100 + "%";
-_setWindowPosition: function(start, end)
-{
-var clientWidth = this._parentElement.clientWidth;
-const rulerAdjustment = 1 / clientWidth;
-if (typeof start === "number") {
-this.windowLeft = start / clientWidth;
-this._leftResizeElement.style.left = this.windowLeft * 100 + "%";
this._overviewWindowElement.style.left = this.windowLeft * 100 + "%";
this._overviewWindowBordersElement.style.left = (this.windowLeft - rulerAdjustment) * 100 + "%";
-}
-if (typeof end === "number") {
-this.windowRight = end / clientWidth;
-this._rightResizeElement.style.left = this.windowRight * 100 + "%";
-}
this._overviewWindowElement.style.width = (this.windowRight - this.windowLeft) * 100 + "%";
this._overviewWindowBordersElement.style.right = (1 - this.windowRight + 2 * rulerAdjustment) * 100 + "%";
+
this.dispatchEventToListeners(WebInspector.OverviewGrid.Events.WindowChanged);
},
+_setWindowPosition: function(start, end)
+{
+var clientWidth = this._parentElement.clientWidth;
+var windowLeft = typeof start === "number" ? start / clientWidth : this.windowLeft;
+var windowRight = typeof end === "number" ? end / clientWidth : this.windowRight;
+this._setWindow(windowLeft, windowRight);
+},
+
+
_onMouseWheel: function(event)
{
+if (typeof event.wheelDeltaY === "number" && event.wheelDeltaY) {
const zoomFactor = 1.1;
const mouseWheelZoomSpeed = 1 / 120;
-if (typeof event.wheelDeltaY === "number" && event.wheelDeltaY) {
-var referencePoint = event.offsetX;
-this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed), referencePoint);
+var reference = event.offsetX / event.target.clientWidth;
+this._zoom(Math.pow(zoomFactor, -event.wheelDeltaY * mouseWheelZoomSpeed), reference);
}
if (typeof event.wheelDeltaX === "number" && event.wheelDeltaX) {
var offset = Math.round(event.wheelDeltaX * WebInspector.OverviewGrid.WindowScrollSpeedFactor);
@@ -13997,20 +13919,23 @@
},
-_zoom: function(factor, referencePoint)
+_zoom: function(factor, reference)
{
-var left = this._leftResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
-var right = this._rightResizeElement.offsetLeft + WebInspector.OverviewGrid.ResizerOffset;
+var left = this.windowLeft;
+var right = this.windowRight;
+var windowSize = right - left;
+var newWindowSize = factor * windowSize;
+var minWindowSize = WebInspector.OverviewGrid.MinSelectableSize / this._parentElement.clientWidth;
-var delta = factor * (right - left);
-if (factor < 1 && delta < WebInspector.OverviewGrid.MinSelectableSize)
-return;
-var max = this._parentElement.clientWidth;
-if (typeof referencePoint !== "number")
-referencePoint = (right + left) / 2;
-left = Math.max(0, Math.min(max - delta, referencePoint + (left - referencePoint) * factor));
-right = Math.min(max, left + delta);
-this._setWindowPosition(left, right);
+newWindowSize = Number.constrain(newWindowSize, minWindowSize, 1);
+factor = newWindowSize / windowSize;
+
+left = reference + (left - reference) * factor;
+left = Number.constrain(left, 0, 1 - newWindowSize);
+
+right = reference + (right - reference) * factor;
+right = Number.constrain(right, newWindowSize, 1);
+this._setWindow(left, right);
},
__proto__: WebInspector.Object.prototype
@@ -14102,6 +14027,7 @@
if (lineContent.length > 0 && lineContent.charAt(lineContent.length - 1) === "\r")
lineContent = lineContent.substring(0, lineContent.length - 1)
+regex.lastIndex = 0;
if (regex.exec(lineContent))
result.push(new WebInspector.ContentProvider.SearchMatch(i, lineContent));
}
@@ -15006,7 +14932,7 @@
return;
}
if (typeof this._content !== "undefined") {
-callback(this.content || null, this._contentEncoded, this.type.canonicalMimeType());
+callback(this.content || null, this._contentEncoded, this.type.canonicalMimeType() || this._mimeType);
return;
}
this._pendingContentCallbacks.push(callback);
@@ -15365,9 +15291,8 @@
revision._persist();
}
-var oldWorkingCopy = this._workingCopy;
-delete this._workingCopy;
-this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyCommitted, {oldWorkingCopy: oldWorkingCopy, workingCopy: this.workingCopy()});
+this._innerResetWorkingCopy();
+this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyCommitted);
if (this._url && WebInspector.fileManager.isURLSaved(this._url)) {
WebInspector.fileManager.save(this._url, this._content, false);
WebInspector.fileManager.close(this._url);
@@ -15476,6 +15401,10 @@
workingCopy: function()
{
+if (this._workingCopyGetter) {
+this._workingCopy = this._workingCopyGetter();
+delete this._workingCopyGetter;
+}
if (this.isDirty())
return this._workingCopy;
return this._content;
@@ -15483,23 +15412,40 @@
resetWorkingCopy: function()
{
-this.setWorkingCopy(this._content);
+this._innerResetWorkingCopy();
+this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
},
+_innerResetWorkingCopy: function()
+{
+delete this._workingCopy;
+delete this._workingCopyGetter;
+},
+
setWorkingCopy: function(newWorkingCopy)
{
-var wasDirty = this.isDirty();
this._mimeType = this.canonicalMimeType();
-var oldWorkingCopy = this._workingCopy;
-if (this._content === newWorkingCopy)
-delete this._workingCopy;
-else
this._workingCopy = newWorkingCopy;
-this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged, {oldWorkingCopy: oldWorkingCopy, workingCopy: this.workingCopy(), wasDirty: wasDirty});
+delete this._workingCopyGetter;
+this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
},
+setWorkingCopyGetter: function(workingCopyGetter)
+{
+this._workingCopyGetter = workingCopyGetter;
+this.dispatchEventToListeners(WebInspector.UISourceCode.Events.WorkingCopyChanged);
+},
+removeWorkingCopyGetter: function()
+{
+if (!this._workingCopyGetter)
+return;
+this._workingCopy = this._workingCopyGetter();
+delete this._workingCopyGetter;
+},
+
+
commitWorkingCopy: function(callback)
{
if (!this.isDirty()) {
@@ -15507,7 +15453,7 @@
return;
}
-this._commitContent(this._workingCopy, true);
+this._commitContent(this.workingCopy(), true);
callback(null);
WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMetrics.UserAction, {
@@ -15519,7 +15465,7 @@
isDirty: function()
{
-return typeof this._workingCopy !== "undefined" && this._workingCopy !== this._content;
+return typeof this._workingCopy !== "undefined" || typeof this._workingCopyGetter !== "undefined";
},
@@ -15678,7 +15624,7 @@
function formattedChanged(content, formatterMapping)
{
this._content = content;
-delete this._workingCopy;
+this._innerResetWorkingCopy();
this._formatterMapping = formatterMapping;
this.dispatchEventToListeners(WebInspector.UISourceCode.Events.FormattedChanged, {content: content});
this.updateLiveLocations();
@@ -15983,7 +15929,9 @@
}
WebInspector.CSSStyleModel.Events = {
+StyleSheetAdded: "StyleSheetAdded",
StyleSheetChanged: "StyleSheetChanged",
+StyleSheetRemoved: "StyleSheetRemoved",
MediaQueryResultChanged: "MediaQueryResultChanged",
NamedFlowCreated: "NamedFlowCreated",
NamedFlowRemoved: "NamedFlowRemoved",
@@ -16192,6 +16140,12 @@
},
+styleSheetHeaders: function()
+{
+return Object.values(this._resourceBinding._styleSheetIdToHeader);
+},
+
+
_ownerDocumentId: function(nodeId)
{
var node = WebInspector.domAgent.nodeForId(nodeId);
@@ -16215,6 +16169,22 @@
},
+_styleSheetAdded: function(header)
+{
+this._resourceBinding._setHeaderForStyleSheetId(header.styleSheetId, header);
+this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetAdded, header);
+},
+
+
+_styleSheetRemoved: function(id)
+{
+var header = this._resourceBinding._styleSheetIdToHeader[id];
+console.assert(header);
+this._resourceBinding._setHeaderForStyleSheetId(id, null);
+this.dispatchEventToListeners(WebInspector.CSSStyleModel.Events.StyleSheetRemoved, header);
+},
+
+
_namedFlowCreated: function(namedFlowPayload)
{
var namedFlow = WebInspector.NamedFlow.parsePayload(namedFlowPayload);
@@ -16279,13 +16249,11 @@
},
-getViaInspectorResourceForRule: function(rule, callback)
+viaInspectorResourceForRule: function(rule)
{
-if (!rule.id) {
-callback(null);
-return;
-}
-this._resourceBinding._requestViaInspectorResource(rule.id.styleSheetId, callback);
+if (!rule.id)
+return null;
+return this._resourceBinding._inspectorResource(rule.id.styleSheetId);
},
@@ -16847,6 +16815,42 @@
}
+WebInspector.CSSStyleSheetHeader = function(payload)
+{
+this.id = payload.styleSheetId;
+this.frameId = payload.frameId;
+this.sourceURL = payload.sourceURL;
+this.origin = payload.origin;
+this.title = payload.title;
+this.disabled = payload.disabled;
+}
+
+WebInspector.CSSStyleSheetHeader.prototype = {
+
+resourceURL: function()
+{
+return this.origin === "inspector" ? this._viaInspectorResourceURL() : this.sourceURL;
+},
+
+
+_key: function()
+{
+return this.frameId + ":" + this.resourceURL();
+},
+
+
+_viaInspectorResourceURL: function()
+{
+var parsedURL = new WebInspector.ParsedURL(this.sourceURL);
+var fakeURL = "inspector://" + parsedURL.host + parsedURL.folderPathComponents;
+if (!fakeURL.endsWith("/"))
+fakeURL += "/";
+fakeURL += "inspector-stylesheet";
+return fakeURL;
+}
+}
+
+
WebInspector.CSSStyleSheet = function(payload)
{
this.id = payload.styleSheetId;
@@ -16910,145 +16914,93 @@
WebInspector.CSSStyleModelResourceBinding.prototype = {
-requestStyleSheetIdForResource: function(resource, callback)
+_setHeaderForStyleSheetId: function(styleSheetId, header)
{
-function innerCallback()
-{
-callback(this._styleSheetIdForResource(resource));
+var oldHeader = this._styleSheetIdToHeader[styleSheetId];
+if (oldHeader) {
+delete this._styleSheetIdToHeader[styleSheetId];
+delete this._frameAndURLToStyleSheetId[oldHeader._key()];
}
-
-if (this._styleSheetIdForResource(resource))
-innerCallback.call(this);
+if (header) {
+var styleSheetHeader = new WebInspector.CSSStyleSheetHeader(header);
+this._styleSheetIdToHeader[styleSheetId] = styleSheetHeader;
+if (styleSheetHeader.origin === "inspector")
+this._createInspectorResource(styleSheetHeader);
else
-this._loadStyleSheetHeaders(innerCallback.bind(this));
+this._frameAndURLToStyleSheetId[styleSheetHeader._key()] = styleSheetHeader.id;
+}
},
-requestResourceURLForStyleSheetId: function(styleSheetId, callback)
+resourceURLForStyleSheetId: function(styleSheetId)
{
-function innerCallback()
-{
var header = this._styleSheetIdToHeader[styleSheetId];
-if (!header) {
-callback(null);
-return;
-}
+if (!header)
+return null;
var frame = WebInspector.resourceTreeModel.frameForId(header.frameId);
-if (!frame) {
-callback(null);
-return;
-}
+if (!frame)
+return null;
-var styleSheetURL = header.origin === "inspector" ? this._viaInspectorResourceURL(header.sourceURL) : header.sourceURL;
-callback(styleSheetURL);
-}
-
-if (this._styleSheetIdToHeader[styleSheetId])
-innerCallback.call(this);
-else
-this._loadStyleSheetHeaders(innerCallback.bind(this));
+return header.resourceURL();
},
-_styleSheetIdForResource: function(resource)
+styleSheetIdForResource: function(resource)
{
-return this._frameAndURLToStyleSheetId[resource.frameId + ":" + resource.url];
+return this._frameAndURLToStyleSheetId[resource.frameId + ":" + resource.url] || null;
},
-_loadStyleSheetHeaders: function(callback)
+_createInspectorResource: function(header)
{
-
-function didGetAllStyleSheets(error, infos)
-{
-if (error) {
-callback(error);
-return;
-}
-
-for (var i = 0; i < infos.length; ++i) {
-var info = infos[i];
-if (info.origin === "inspector") {
-this._getOrCreateInspectorResource(info);
-continue;
-}
-this._frameAndURLToStyleSheetId[info.frameId + ":" + info.sourceURL] = info.styleSheetId;
-this._styleSheetIdToHeader[info.styleSheetId] = info;
-}
-callback(null);
-}
-CSSAgent.getAllStyleSheets(didGetAllStyleSheets.bind(this));
-},
-
-
-_requestViaInspectorResource: function(styleSheetId, callback)
-{
-var header = this._styleSheetIdToHeader[styleSheetId];
-if (header) {
-callback(this._getOrCreateInspectorResource(header));
-return;
-}
-
-function headersLoaded()
-{
-var header = this._styleSheetIdToHeader[styleSheetId];
-if (header)
-callback(this._getOrCreateInspectorResource(header));
-else
-callback(null);
-}
-this._loadStyleSheetHeaders(headersLoaded.bind(this));
-},
-
-
-_getOrCreateInspectorResource: function(header)
-{
var frame = WebInspector.resourceTreeModel.frameForId(header.frameId);
if (!frame)
-return null;
+return;
-var viaInspectorURL = this._viaInspectorResourceURL(header.sourceURL);
-var inspectorResource = frame.resourceForURL(viaInspectorURL);
-if (inspectorResource)
-return inspectorResource;
+var viaInspectorURL = header._viaInspectorResourceURL();
+console.assert(!frame.resourceForURL(viaInspectorURL));
var resource = frame.resourceForURL(header.sourceURL);
if (!resource)
-return null;
+return;
-this._frameAndURLToStyleSheetId[header.frameId + ":" + viaInspectorURL] = header.styleSheetId;
-this._styleSheetIdToHeader[header.styleSheetId] = header;
-inspectorResource = new WebInspector.Resource(null, viaInspectorURL, resource.documentURL, resource.frameId, resource.loaderId, WebInspector.resourceTypes.Stylesheet, "text/css", true);
+this._frameAndURLToStyleSheetId[header._key()] = header.id;
+var inspectorResource = new WebInspector.Resource(null, viaInspectorURL, resource.documentURL, resource.frameId, resource.loaderId, WebInspector.resourceTypes.Stylesheet, "text/css", true);
+
function overrideRequestContent(callback)
{
function callbackWrapper(error, content)
{
callback(error ? "" : content, false, "text/css");
}
-CSSAgent.getStyleSheetText(header.styleSheetId, callbackWrapper);
+CSSAgent.getStyleSheetText(header.id, callbackWrapper);
}
inspectorResource.requestContent = overrideRequestContent;
frame.addResource(inspectorResource);
-return inspectorResource;
},
-_viaInspectorResourceURL: function(documentURL)
+_inspectorResource: function(styleSheetId)
{
-var parsedURL = new WebInspector.ParsedURL(documentURL);
-var fakeURL = "inspector://" + parsedURL.host + parsedURL.folderPathComponents;
-if (!fakeURL.endsWith("/"))
-fakeURL += "/";
-fakeURL += "inspector-stylesheet";
-return fakeURL;
+var header = this._styleSheetIdToHeader[styleSheetId];
+if (!header)
+return null;
+var frame = WebInspector.resourceTreeModel.frameForId(header.frameId);
+if (!frame)
+return null;
+
+var viaInspectorURL = header._viaInspectorResourceURL();
+return frame.resourceForURL(viaInspectorURL);
},
_reset: function()
{
+
this._frameAndURLToStyleSheetId = {};
+
this._styleSheetIdToHeader = {};
}
}
@@ -17072,6 +17024,18 @@
},
+styleSheetAdded: function(header)
+{
+this._cssModel._styleSheetAdded(header);
+},
+
+
+styleSheetRemoved: function(id)
+{
+this._cssModel._styleSheetRemoved(id);
+},
+
+
namedFlowCreated: function(namedFlowPayload)
{
this._cssModel._namedFlowCreated(namedFlowPayload);
@@ -22746,29 +22710,30 @@
color: function()
{
-return WebInspector.Color.fromHSVA(this._hsv, this._outputColorFormat());
+return WebInspector.Color.fromHSVA(this._hsv);
},
-_outputColorFormat: function()
+_colorString: function()
{
var cf = WebInspector.Color.Format;
var format = this._originalFormat;
+var color = this.color();
+var originalFormatString = color.toString(this._originalFormat);
+if (originalFormatString)
+return originalFormatString;
-if (this._hsv[3] === 1) {
+if (color.hasAlpha()) {
-if (format === cf.RGBA)
-format = cf.RGB;
-else if (format === cf.HSLA)
-format = cf.HSL;
-} else {
-
-if (format === cf.HSL || format === cf.HSLA)
-format = cf.HSLA;
+if (format === cf.HSLA || format === cf.HSL)
+return color.toString(cf.HSLA);
else
-format = cf.RGBA;
+return color.toString(cf.RGBA);
}
-return format;
+if (format === cf.ShortHEX)
+return color.toString(cf.HEX);
+console.assert(format === cf.Nickname);
+return color.toString(cf.RGB);
},
@@ -22780,7 +22745,7 @@
_onchange: function()
{
this._updateUI();
-this.dispatchEventToListeners(WebInspector.Spectrum.Events.ColorChanged, this.color());
+this.dispatchEventToListeners(WebInspector.Spectrum.Events.ColorChanged, this._colorString());
},
_updateHelperLocations: function()
@@ -23146,6 +23111,7 @@
"\u2002": "ensp",
"\u2003": "emsp",
"\u2009": "thinsp",
+"\u200a": "#8202",
"\u200b": "#8203",
"\u200c": "zwnj",
"\u200d": "zwj",
@@ -27677,8 +27643,8 @@
WebInspector.Color = function(rgba, format, originalText)
{
this._rgba = rgba;
-this._originalText = originalText;
-this._format = format;
+this._originalText = originalText || null;
+this._format = format || null;
if (typeof this._rgba[3] === "undefined")
this._rgba[3] = 1;
for (var i = 0; i < 4; ++i) {
@@ -27777,17 +27743,20 @@
}
-WebInspector.Color.fromHSVA = function(hsva, format)
+WebInspector.Color.fromHSVA = function(hsva)
{
var h = hsva[0];
var s = hsva[1];
var v = hsva[2];
var t = (2 - s) * v;
+if (v === 0 || s === 0)
+s = 0;
+else
s *= v / (t < 1 ? t : 2 - t);
var hsla = [h, s, t / 2, hsva[3]];
-return new WebInspector.Color(WebInspector.Color._hsl2rgb(hsla), format);
+return new WebInspector.Color(WebInspector.Color._hsl2rgb(hsla), WebInspector.Color.Format.HSLA);
}
WebInspector.Color.prototype = {
@@ -27843,24 +27812,23 @@
var l = hsla[2];
s *= l < 0.5 ? l : 1 - l;
-return [h, s, (l + s), hsla[3]];
+return [h, s !== 0 ? 2 * s / (l + s) : 0, (l + s), hsla[3]];
},
hasAlpha: function()
{
-if (this._rgba[3] !== 1)
-return true;
-return this._format === WebInspector.Color.Format.RGBA ||
-this._format === WebInspector.Color.Format.HSLA;
+return this._rgba[3] !== 1;
},
canBeShortHex: function()
{
+if (this.hasAlpha())
+return false;
for (var i = 0; i < 3; ++i) {
var c = Math.round(this._rgba[i] * 255);
-if ((c >> 4) !== (c & 0xF))
+if (c % 17)
return false;
}
return true;
@@ -27888,25 +27856,33 @@
function toShortHexValue(value)
{
-return (Math.round(value * 255) >> 4).toString(16);
+return (Math.round(value * 255) / 17).toString(16);
}
switch (format) {
case WebInspector.Color.Format.Original:
return this._originalText;
case WebInspector.Color.Format.RGB:
+if (this.hasAlpha())
+return null;
return String.sprintf("rgb(%d, %d, %d)", toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]));
case WebInspector.Color.Format.RGBA:
return String.sprintf("rgba(%d, %d, %d, %f)", toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]), this._rgba[3]);
case WebInspector.Color.Format.HSL:
+if (this.hasAlpha())
+return null;
var hsl = this.hsla();
return String.sprintf("hsl(%d, %d%, %d%)", Math.round(hsl[0] * 360), Math.round(hsl[1] * 100), Math.round(hsl[2] * 100));
case WebInspector.Color.Format.HSLA:
var hsla = this.hsla();
return String.sprintf("hsla(%d, %d%, %d%, %f)", Math.round(hsla[0] * 360), Math.round(hsla[1] * 100), Math.round(hsla[2] * 100), hsla[3]);
case WebInspector.Color.Format.HEX:
+if (this.hasAlpha())
+return null;
return String.sprintf("#%s%s%s", toHexValue(this._rgba[0]), toHexValue(this._rgba[1]), toHexValue(this._rgba[2])).toUpperCase();
case WebInspector.Color.Format.ShortHEX:
+if (!this.canBeShortHex())
+return null;
return String.sprintf("#%s%s%s", toShortHexValue(this._rgba[0]), toShortHexValue(this._rgba[1]), toShortHexValue(this._rgba[2])).toUpperCase();
case WebInspector.Color.Format.Nickname:
return this.nickname();
@@ -27937,7 +27913,7 @@
}
}
-return WebInspector.Color._rgbaToNickname[this._canonicalRGBA()];
+return WebInspector.Color._rgbaToNickname[this._canonicalRGBA()] || null;
},
@@ -28175,7 +28151,8 @@
Border: WebInspector.Color.fromRGBA([255, 229, 153, .66]),
BorderLight: WebInspector.Color.fromRGBA([255, 229, 153, .5]),
Margin: WebInspector.Color.fromRGBA([246, 178, 107, .66]),
-MarginLight: WebInspector.Color.fromRGBA([246, 178, 107, .5])
+MarginLight: WebInspector.Color.fromRGBA([246, 178, 107, .5]),
+EventTarget: WebInspector.Color.fromRGBA([255, 196, 196, .66])
}
WebInspector.Color.Format = {
@@ -29132,6 +29109,27 @@
}
+WebInspector.StatusBarText = function(text, className)
+{
+WebInspector.StatusBarItem.call(this, document.createElement("span"));
+this.element.className = "status-bar-item status-bar-text";
+if (className)
+this.element.addStyleClass(className);
+this.element.textContent = text;
+}
+
+WebInspector.StatusBarText.prototype = {
+
+setText: function(text)
+{
+this.element.textContent = text;
+},
+
+__proto__: WebInspector.StatusBarItem.prototype
+}
+
+
+
WebInspector.StatusBarButton = function(title, className, states)
{
WebInspector.StatusBarItem.call(this, document.createElement("button"));
@@ -29164,8 +29162,8 @@
_clicked: function()
{
this.dispatchEventToListeners("click");
-if (this._showOptionsTimer)
-clearTimeout(this._showOptionsTimer);
+if (this._longClickInterval)
+clearInterval(this._longClickInterval);
},
@@ -29235,38 +29233,54 @@
this._visible = x;
},
-
-makeLongClickEnabled: function(buttonsProvider)
+makeLongClickEnabled: function()
{
-this.longClickGlyph = document.createElement("div");
-this.longClickGlyph.className = "fill long-click-glyph";
-this.element.appendChild(this.longClickGlyph);
-
-this.longClickGlyphShadow = document.createElement("div");
-this.longClickGlyphShadow.className = "fill long-click-glyph shadow";
-this.element.appendChild(this.longClickGlyphShadow);
-
this.element.addEventListener("mousedown", mouseDown.bind(this), false);
this.element.addEventListener("mouseout", mouseUp.bind(this), false);
this.element.addEventListener("mouseup", mouseUp.bind(this), false);
+var longClicks = 0;
+
function mouseDown(e)
{
if (e.which !== 1)
return;
-this._showOptionsTimer = setTimeout(this._showOptions.bind(this, buttonsProvider), 200);
+longClicks = 0;
+this._longClickInterval = setInterval(longClicked.bind(this), 200);
}
function mouseUp(e)
{
if (e.which !== 1)
return;
-if (this._showOptionsTimer)
-clearTimeout(this._showOptionsTimer);
+if (this._longClickInterval)
+clearInterval(this._longClickInterval);
}
+
+function longClicked()
+{
+++longClicks;
+this.dispatchEventToListeners(longClicks === 1 ? "longClickDown" : "longClickPress");
+}
},
+makeLongClickOptionsEnabled: function(buttonsProvider)
+{
+this.makeLongClickEnabled();
+
+this.longClickGlyph = document.createElement("div");
+this.longClickGlyph.className = "fill long-click-glyph";
+this.element.appendChild(this.longClickGlyph);
+
+this.longClickGlyphShadow = document.createElement("div");
+this.longClickGlyphShadow.className = "fill long-click-glyph shadow";
+this.element.appendChild(this.longClickGlyphShadow);
+
+this.addEventListener("longClickDown", this._showOptions.bind(this, buttonsProvider), this);
+},
+
+
_showOptions: function(buttonsProvider)
{
var buttons = buttonsProvider();
@@ -29317,10 +29331,13 @@
document.documentElement.removeEventListener("mouseup", mouseUpListener, false);
for (var i = 0; i < buttons.length; ++i) {
-if (buttons[i].element.hasStyleClass("emulate-active"))
+if (buttons[i].element.hasStyleClass("emulate-active")) {
+buttons[i].element.removeStyleClass("emulate-active");
buttons[i]._clicked();
+break;
}
}
+}
},
__proto__: WebInspector.StatusBarItem.prototype
@@ -29333,6 +29350,7 @@
this.element.className = "status-bar-select-container";
this._selectElement = this.element.createChild("select", "status-bar-item");
+this.element.createChild("div", "status-bar-select-arrow");
if (changeHandler)
this._selectElement.addEventListener("change", changeHandler, false);
if (className)
@@ -29395,6 +29413,18 @@
this._selectElement.selectedIndex = Array.prototype.indexOf.call(this._selectElement, option);
},
+
+setSelectedIndex: function(index)
+{
+this._selectElement.selectedIndex = index;
+},
+
+
+selectedIndex: function()
+{
+return this._selectElement.selectedIndex;
+},
+
__proto__: WebInspector.StatusBarItem.prototype
}
@@ -29414,6 +29444,11 @@
WebInspector.TextEditor.prototype = {
+undo: function() { },
+
+redo: function() { },
+
+
isClean: function() { },
markClean: function() { },
@@ -29636,6 +29671,17 @@
WebInspector.DefaultTextEditor.prototype = {
+undo: function()
+{
+this._mainPanel.undo();
+},
+
+redo: function()
+{
+this._mainPanel.redo();
+},
+
+
isClean: function()
{
return this._textModel.isClean();
@@ -30877,6 +30923,9 @@
_handleKeyPress: function(event)
{
+if (event.target.enclosingNodeOrSelfWithClass("webkit-line-decorations"))
+return;
+
var char = String.fromCharCode(event.which);
var handler = this._charOverrides[char];
if (handler && handler()) {
@@ -31160,7 +31209,17 @@
this._cachedRows = [];
},
+undo: function()
+{
+this._handleUndoRedo(false);
+},
+redo: function()
+{
+this._handleUndoRedo(true);
+},
+
+
_handleUndoRedo: function(redo)
{
if (this.readOnly())
@@ -32682,9 +32741,6 @@
registerShortcuts: function(shortcuts)
{
-if (!WebInspector.experimentsSettings.textEditorSmartBraces.isEnabled())
-return;
-
var keys = WebInspector.KeyboardShortcut.Keys;
var modifiers = WebInspector.KeyboardShortcut.Modifiers;
@@ -32694,8 +32750,6 @@
registerCharOverrides: function(charOverrides)
{
-if (!WebInspector.experimentsSettings.textEditorSmartBraces.isEnabled())
-return;
charOverrides["("] = this._handleBracePairInsertion.bind(this, "()");
charOverrides[")"] = this._handleClosingBraceOverride.bind(this, ")");
charOverrides["{"] = this._handleBracePairInsertion.bind(this, "{}");
@@ -32785,11 +32839,8 @@
var textEditorDelegate = new WebInspector.TextEditorDelegateForSourceFrame(this);
-if (WebInspector.experimentsSettings.codemirror.isEnabled()) {
loadScript("CodeMirrorTextEditor.js");
this._textEditor = new WebInspector.CodeMirrorTextEditor(this._url, textEditorDelegate);
-} else
-this._textEditor = new WebInspector.DefaultTextEditor(this._url, textEditorDelegate);
this._currentSearchResultIndex = -1;
this._searchResults = [];
@@ -32804,8 +32855,7 @@
this._shortcuts[WebInspector.KeyboardShortcut.makeKey("s", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)] = this._commitEditing.bind(this);
this.element.addEventListener("keydown", this._handleKeyDown.bind(this), false);
-this._sourcePositionElement = document.createElement("div");
-this._sourcePositionElement.className = "source-frame-cursor-position";
+this._sourcePosition = new WebInspector.StatusBarText("", "source-frame-cursor-position");
}
@@ -32860,7 +32910,7 @@
statusBarText: function()
{
-return this._sourcePositionElement;
+return this._sourcePosition.element;
},
@@ -33027,14 +33077,26 @@
this.clearMessages();
},
+_simplifyMimeType: function(mimeType)
+{
+if (!mimeType)
+return "";
+if (mimeType.indexOf("javascript") >= 0 ||
+mimeType.indexOf("jscript") >= 0 ||
+mimeType.indexOf("ecmascript") >= 0)
+return "text/javascript";
+return mimeType;
+},
+
setContent: function(content, contentEncoded, mimeType)
{
-this._textEditor.mimeType = mimeType;
+this._textEditor.mimeType = this._simplifyMimeType(mimeType);
if (!this._loaded) {
this._loaded = true;
this._textEditor.setText(content || "");
+this._textEditor.markClean();
} else
this._textEditor.editRange(this._textEditor.range(), content || "");
@@ -33252,15 +33314,15 @@
this._textEditor.addDecoration(lineNumber, messageBubbleElement);
}
-var imageURL;
+var imageElement = document.createElement("div");
switch (msg.level) {
case WebInspector.ConsoleMessage.MessageLevel.Error:
messageBubbleElement.addStyleClass("webkit-html-error-message");
-imageURL = "Images/errorIcon.png";
+imageElement.className = "error-icon-small";
break;
case WebInspector.ConsoleMessage.MessageLevel.Warning:
messageBubbleElement.addStyleClass("webkit-html-warning-message");
-imageURL = "Images/warningIcon.png";
+imageElement.className = "warning-icon-small";
break;
}
@@ -33269,10 +33331,7 @@
messageBubbleElement.appendChild(messageLineElement);
-var image = document.createElement("img");
-image.src = imageURL;
-image.className = "webkit-html-message-icon";
-messageLineElement.appendChild(image);
+messageLineElement.appendChild(imageElement);
messageLineElement.appendChild(document.createTextNode(msg.message));
rowMessage.element = messageLineElement;
@@ -33361,16 +33420,16 @@
return;
if (textRange.isEmpty()) {
-this._sourcePositionElement.textContent = WebInspector.UIString("Line %d, Column %d", textRange.endLine + 1, textRange.endColumn + 1);
+this._sourcePosition.setText(WebInspector.UIString("Line %d, Column %d", textRange.endLine + 1, textRange.endColumn + 1));
return;
}
textRange = textRange.normalize();
var selectedText = this._textEditor.copyRange(textRange);
if (textRange.startLine === textRange.endLine)
-this._sourcePositionElement.textContent = WebInspector.UIString("%d characters selected", selectedText.length);
+this._sourcePosition.setText(WebInspector.UIString("%d characters selected", selectedText.length));
else
-this._sourcePositionElement.textContent = WebInspector.UIString("%d lines, %d characters selected", textRange.endLine - textRange.startLine + 1, selectedText.length);
+this._sourcePosition.setText(WebInspector.UIString("%d lines, %d characters selected", textRange.endLine - textRange.startLine + 1, selectedText.length));
},
@@ -33515,10 +33574,37 @@
}
+WebInspector.ResourceSourceFrameFallback = function(resource)
+{
+WebInspector.View.call(this);
+this._resource = resource;
+this.element.addStyleClass("fill");
+this.element.addStyleClass("script-view");
+this._content = this.element.createChild("div", "script-view-fallback monospace");
+}
+WebInspector.ResourceSourceFrameFallback.prototype = {
+wasShown: function()
+{
+if (!this._contentRequested) {
+this._contentRequested = true;
+this._resource.requestContent(this._contentLoaded.bind(this));
+}
+},
+_contentLoaded: function(content, contentEncoded, mimeType)
+{
+this._content.textContent = content;
+},
+__proto__: WebInspector.View.prototype
+}
+
+
+
+
+
WebInspector.FontView = function(resource)
{
WebInspector.ResourceView.call(this, resource);
@@ -36777,12 +36863,14 @@
WebInspector.TextEditorModel.prototype = {
-isClean: function() {
-return !this._undoStack.length;
+isClean: function()
+{
+return this._cleanState === this._undoStack.length;
},
-markClean: function() {
-this._resetUndoStack();
+markClean: function()
+{
+this._cleanState = this._undoStack.length;
},
@@ -37037,8 +37125,11 @@
if (this._inUndo)
this._redoStack.push(command);
else {
-if (!this._inRedo)
+if (!this._inRedo) {
this._redoStack = [];
+if (typeof this._cleanState === "number" && this._cleanState > this._undoStack.length)
+delete this._cleanState;
+}
this._undoStack.push(command);
}
return command;
@@ -37102,7 +37193,9 @@
_resetUndoStack: function()
{
+delete this._cleanState;
this._undoStack = [];
+this._redoStack = [];
},
@@ -43940,7 +44033,10 @@
var originalToCanonicalURLMap = {};
for (var i = 0; i < map.sources.length; ++i) {
var originalSourceURL = map.sources[i];
-var href = (map.sourceRoot ? map.sourceRoot + "/" : "") + originalSourceURL;
+var sourceRoot = map.sourceRoot || "";
+if (sourceRoot && !sourceRoot.endsWith("/"))
+sourceRoot += "/";
+var href = sourceRoot + originalSourceURL;
var url = WebInspector.ParsedURL.completeURL(this._sourceMappingURL, href) || href;
originalToCanonicalURLMap[originalSourceURL] = url;
sources.push(url);
@@ -44426,7 +44522,7 @@
var script = (event.data);
this._defaultMapping.addScript(script);
-if (WebInspector.experimentsSettings.snippetsSupport.isEnabled() && script.isSnippet()) {
+if (script.isSnippet()) {
this._snippetMapping.addScript(script);
return;
}
@@ -44573,6 +44669,7 @@
}
WebInspector.FileSystemProjectDelegate._scriptExtensions = ["js", "java", "cc", "cpp", "h", "cs", "py", "php"].keySet();
+WebInspector.FileSystemProjectDelegate._styleSheetExtensions = ["css", "scss", "sass"].keySet();
WebInspector.FileSystemProjectDelegate.projectId = function(fileSystemPath)
{
@@ -44660,13 +44757,13 @@
var extensionIndex = fileName.lastIndexOf(".");
var extension = "";
if (extensionIndex !== -1)
-extension = fileName.substring(extensionIndex + 1);
+extension = fileName.substring(extensionIndex + 1).toLowerCase();
var contentType = WebInspector.resourceTypes.Other;
if (WebInspector.FileSystemProjectDelegate._scriptExtensions[extension])
return WebInspector.resourceTypes.Script;
-if (extension === "css")
+if (WebInspector.FileSystemProjectDelegate._styleSheetExtensions[extension])
return WebInspector.resourceTypes.Stylesheet;
-if (extension === "html")
+if (extension === "html" || extension === "htm")
return WebInspector.resourceTypes.Document;
return WebInspector.resourceTypes.Other;
},
@@ -46169,7 +46266,6 @@
for (var j = 0; j < breakpoints.length; ++j) {
var breakpoint = breakpoints[j];
this._breakpoints.remove(breakpoint);
-delete breakpoint._primaryUILocation;
}
var sourceFileId = WebInspector.BreakpointManager.sourceFileId(uiSourceCode);
@@ -47435,14 +47531,10 @@
if (isAddingRevision)
return;
-this._cssModel.resourceBinding().requestResourceURLForStyleSheetId(event.data.styleSheetId, callback.bind(this));
-
-function callback(url)
-{
+var url = this._cssModel.resourceBinding().resourceURLForStyleSheetId(event.data.styleSheetId);
if (!url)
return;
this._cssModel.setSourceMapping(url, null);
-}
},
@@ -48296,7 +48388,8 @@
ChildNodeCountUpdated: "ChildNodeCountUpdated",
InspectElementRequested: "InspectElementRequested",
UndoRedoRequested: "UndoRedoRequested",
-UndoRedoCompleted: "UndoRedoCompleted"
+UndoRedoCompleted: "UndoRedoCompleted",
+InspectNodeRequested: "InspectNodeRequested"
}
WebInspector.DOMAgent.prototype = {
@@ -48540,6 +48633,12 @@
},
+_inspectNodeRequested: function(nodeId)
+{
+this.dispatchEventToListeners(WebInspector.DOMAgent.Events.InspectNodeRequested, nodeId);
+},
+
+
performSearch: function(query, searchCallback)
{
this.cancelSearch();
@@ -48626,7 +48725,8 @@
setInspectModeEnabled: function(enabled, callback)
{
-DOMAgent.setInspectModeEnabled(enabled, this._buildHighlightConfig(), callback);
+var callbackCast = (callback);
+this._dispatchWhenDocumentAvailable(DOMAgent.setInspectModeEnabled.bind(DOMAgent, enabled, this._buildHighlightConfig()), callbackCast);
},
@@ -48646,6 +48746,9 @@
if (mode === "all" || mode === "margin")
highlightConfig.marginColor = WebInspector.Color.PageHighlight.Margin.toProtocolRGBA();
+if (mode === "all")
+highlightConfig.eventTargetColor = WebInspector.Color.PageHighlight.EventTarget.toProtocolRGBA();
+
return highlightConfig;
},
@@ -48745,6 +48848,12 @@
},
+inspectNodeRequested: function(nodeId)
+{
+this._domAgent._inspectNodeRequested(nodeId);
+},
+
+
attributeModified: function(nodeId, name, value)
{
this._domAgent._attributeModified(nodeId, name, value);
@@ -49207,6 +49316,8 @@
this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Overrides, WebInspector.UIString("Overrides"), new WebInspector.OverridesSettingsTab());
if (WebInspector.experimentsSettings.fileSystemProject.isEnabled())
this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Workspace, WebInspector.UIString("Workspace"), new WebInspector.WorkspaceSettingsTab());
+if (WebInspector.experimentsSettings.tethering.isEnabled())
+this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Tethering, WebInspector.UIString("Port forwarding"), new WebInspector.TetheringSettingsTab());
if (WebInspector.experimentsSettings.experimentsEnabled)
this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Experiments, WebInspector.UIString("Experiments"), new WebInspector.ExperimentsSettingsTab());
this._tabbedPane.appendTab(WebInspector.SettingsScreen.Tabs.Shortcuts, WebInspector.UIString("Shortcuts"), WebInspector.shortcutsScreen.createShortcutsTabView());
@@ -49222,6 +49333,7 @@
General: "general",
Overrides: "overrides",
Workspace: "workspace",
+Tethering: "tethering",
Experiments: "experiments",
Shortcuts: "shortcuts"
}
@@ -49422,7 +49534,7 @@
WebInspector.GenericSettingsTab = function()
{
-WebInspector.SettingsTab.call(this, WebInspector.UIString("General"));
+WebInspector.SettingsTab.call(this, WebInspector.UIString("General"), "general-tab-content");
var p = this._appendSection();
p.appendChild(this._createCheckboxSetting(WebInspector.UIString("Disable cache (while DevTools is open)"), WebInspector.settings.cacheDisabled));
@@ -49501,6 +49613,10 @@
p = this._appendSection(WebInspector.UIString("Extensions"));
p.appendChild(this._createCustomSetting(WebInspector.UIString("Open links in"), handlerSelector.element));
}
+
+p = this._appendSection();
+var panelShortcutTitle = WebInspector.UIString("Enable %s + 1-9 shortcut to switch panels", WebInspector.isMac() ? "Cmd" : "Ctrl");
+p.appendChild(this._createCheckboxSetting(panelShortcutTitle, WebInspector.settings.shortcutPanelSwitch));
}
WebInspector.GenericSettingsTab.prototype = {
@@ -49791,6 +49907,127 @@
}
+WebInspector.TetheringSettingsTab = function()
+{
+WebInspector.SettingsTab.call(this, WebInspector.UIString("Port Forwarding"), "workspace-tab-content");
+}
+
+WebInspector.TetheringSettingsTab.prototype = {
+wasShown: function()
+{
+if (this._paragraphElement)
+return;
+
+this._paragraphElement = this._appendSection(WebInspector.UIString("Mappings"));
+WebInspector.SettingsTab.prototype.wasShown.call(this);
+var mappingEntries = WebInspector.settings.portForwardings.get();
+for (var i = 0; i < mappingEntries.length; ++i)
+this._addMappingRow(mappingEntries[i].port, mappingEntries[i].location, false);
+if (!mappingEntries.length)
+this._addMappingRow("", "", true);
+this._save();
+},
+
+
+_addMappingRow: function(port, location, focus)
+{
+var mappingRow = this._paragraphElement.createChild("div", "workspace-settings-row");
+var portElement = mappingRow.createChild("input");
+portElement.type = "text";
+portElement.value = port || "";
+if (!port)
+portElement.placeholder = "8080";
+portElement.addEventListener("keydown", this._editTextInputKey.bind(this, true), true);
+portElement.addEventListener("blur", this._save.bind(this), true);
+portElement.addEventListener("input", this._validatePort.bind(this, portElement), true);
+
+var locationElement = mappingRow.createChild("input");
+locationElement.type = "text";
+locationElement.value = location || "127.0.0.1:";
+locationElement.addEventListener("keydown", this._editTextInputKey.bind(this, false), true);
+locationElement.addEventListener("blur", this._save.bind(this), true);
+locationElement.addEventListener("input", this._validateLocation.bind(this, locationElement), true);
+
+var removeButton = mappingRow.createChild("button", "button remove-button");
+removeButton.value = WebInspector.UIString("Remove");
+removeButton.tabIndex = -1;
+removeButton.addEventListener("click", removeMappingClicked.bind(this), false);
+
+function removeMappingClicked()
+{
+mappingRow.removeSelf();
+if (!this._paragraphElement.querySelector(".workspace-settings-row"))
+this._addMappingRow();
+this._save();
+}
+if (focus)
+setTimeout(function() { portElement.focus(); }, 0);
+return mappingRow;
+},
+
+_save: function()
+{
+var portForwardings = [];
+for (var rowElement = this._paragraphElement.firstChild.nextSibling; rowElement; rowElement = rowElement.nextSibling) {
+var portElement = rowElement.firstChild;
+var locationElement = portElement.nextSibling;
+var port = this._validatePort(portElement);
+var location = this._validateLocation(locationElement);
+if (!port || !location)
+continue;
+portForwardings.push({ port : parseInt(port, 10), location : location });
+}
+WebInspector.settings.portForwardings.set(portForwardings);
+},
+
+
+_editTextInputKey: function(isPort, event)
+{
+if (!WebInspector.KeyboardShortcut.hasNoModifiers( (event)))
+return;
+
+if (event.keyCode === WebInspector.KeyboardShortcut.Keys.Enter.code ||
+event.keyCode === WebInspector.KeyboardShortcut.Keys.Tab.code) {
+if (isPort)
+event.target.nextElementSibling.focus();
+else {
+if (event.target.parentElement.nextSibling)
+event.target.parentElement.nextSibling.firstChild.focus();
+else
+this._addMappingRow("", "", true);
+}
+event.consume(true);
+}
+},
+
+
+_validatePort: function(element, event)
+{
+var port = element.value;
+if (isNaN(port) || port < 5000 || port > 10000) {
+element.addStyleClass("workspace-settings-error");
+return 0;
+}
+element.removeStyleClass("workspace-settings-error");
+return parseInt(port, 10);
+},
+
+
+_validateLocation: function(element, event)
+{
+var location = element.value;
+if (!/.*:\d+/.test(location)) {
+element.addStyleClass("workspace-settings-error");
+return "";
+}
+element.removeStyleClass("workspace-settings-error");
+return location;
+},
+
+__proto__: WebInspector.SettingsTab.prototype
+}
+
+
WebInspector.ExperimentsSettingsTab = function()
{
WebInspector.SettingsTab.call(this, WebInspector.UIString("Experiments"), "experiments-tab-content");
@@ -51346,23 +51583,22 @@
panelDescriptor._toolbarElement = this._createPanelToolbarItem(panelDescriptor);
if (!this._isToolbarCustomizable() || this._isPanelVisible(panelDescriptor.name()))
this.element.insertBefore(panelDescriptor._toolbarElement, this._panelInsertLocation(panelDescriptor));
-this._updateAddPanelState();
+this._updatePanelsMenuState();
this.resize();
},
_panelInsertLocation: function(panelDescriptor)
{
-var newPanelElement = document.getElementById("toolbar-panels-menu").parentElement;
if (!this._isToolbarCustomizable())
-return newPanelElement;
+return null;
if (this._isDefaultPanel(panelDescriptor.name()))
-return this._firstNonDefaultPanel || newPanelElement;
+return this._firstNonDefaultPanel || null;
if (!this._firstNonDefaultPanel)
this._firstNonDefaultPanel = panelDescriptor._toolbarElement;
-return newPanelElement;
+return null;
},
@@ -51441,27 +51677,34 @@
}
}
}
-document.getElementById("toolbar-panels-menu").removeStyleClass("disabled");
+this._updatePanelsMenuState();
this.resize();
},
-_updateAddPanelState: function()
+_updatePanelsMenuState: function()
{
-if (this._panelDescriptors.every(function (descr) { return this._isPanelVisible(descr.name()); }, this))
+if (this._panelDescriptors.every(function (descr) { return this._isPanelVisible(descr.name()); }, this) && this._allItemsFitOntoToolbar())
document.getElementById("toolbar-panels-menu").addStyleClass("disabled");
else
document.getElementById("toolbar-panels-menu").removeStyleClass("disabled");
},
+_allItemsFitOntoToolbar: function()
+{
+var toolbarItems = this.element.querySelectorAll(".toolbar-item.toggleable");
+return toolbarItems.length === 0 || this.element.scrollHeight < toolbarItems[0].offsetHeight * 2;
+},
+
+
_showPanel: function(panelDescriptor)
{
if (this._isPanelVisible(panelDescriptor.name()))
return;
-this.element.insertBefore(panelDescriptor._toolbarElement, document.getElementById("toolbar-panels-menu").parentElement);
+this.element.appendChild(panelDescriptor._toolbarElement);
panelDescriptor._toolbarElement.removeStyleClass("hidden");
this._setPanelVisible(panelDescriptor.name(), true);
-this._updateAddPanelState();
+this._updatePanelsMenuState();
this.resize();
},
@@ -51509,8 +51752,7 @@
var iconElement = toolbarItem.createChild("div", "toolbar-icon");
toolbarItem.createChild("div", "toolbar-label").textContent = panelDescriptor.title();
if (this._isToolbarCustomizable() && !this._isDefaultPanel(panelDescriptor.name()) && !noCloseButton) {
-var closeButton = toolbarItem.createChild("div", "toolbar-item-close-button");
-closeButton.textContent = "\u00d7";
+var closeButton = toolbarItem.createChild("div", "close-button");
closeButton.addEventListener("click", onToolbarItemCloseButtonClicked.bind(this), false);
}
if (panelDescriptor.iconURL()) {
@@ -51634,6 +51876,18 @@
}
var contextMenu = new WebInspector.ContextMenu(event);
+var currentPanelName = WebInspector.inspectorView.currentPanel().name;
+var toolbarItems = this.element.querySelectorAll(".toolbar-item.toggleable");
+for (var i = 0; i < toolbarItems.length; ++i) {
+if (toolbarItems[i].offsetTop >= toolbarItems[0].offsetHeight) {
+var descr = toolbarItems[i].panelDescriptor;
+if (descr.name() === currentPanelName)
+contextMenu.appendCheckboxItem(descr.title(), activatePanel.bind(this, descr), true);
+else
+contextMenu.appendItem(descr.title(), activatePanel.bind(this, descr));
+}
+}
+contextMenu.appendSeparator();
for (var i = 0; i < this._panelDescriptors.length; ++i) {
var descr = this._panelDescriptors[i];
if (this._isPanelVisible(descr.name()))
@@ -51651,6 +51905,10 @@
_innerUpdateDropdownButtonAndHideDropdown: function()
{
+if (this._isToolbarCustomizable()) {
+this._updatePanelsMenuState();
+return;
+}
this._setDropdownVisible(false);
if (this.element.scrollHeight > this.element.offsetHeight)
@@ -54083,23 +54341,12 @@
return;
}
-this._cssModel.resourceBinding().requestStyleSheetIdForResource(resource, callback.bind(this));
-
-
-function callback(styleSheetId)
-{
+var styleSheetId = this._cssModel.resourceBinding().styleSheetIdForResource(resource);
if (!styleSheetId) {
userCallback("No stylesheet found: " + resource.frameId + ":" + resource.url);
return;
}
-this._innerSetContent(styleSheetId, content, majorChange, userCallback, null);
-}
-},
-
-
-_innerSetContent: function(styleSheetId, content, majorChange, userCallback)
-{
this._isSettingContent = true;
function callback(error)
{
@@ -54130,22 +54377,17 @@
_innerStyleSheetChanged: function(styleSheetId, content)
{
-
-function callback(styleSheetURL)
-{
+var styleSheetURL = this._cssModel.resourceBinding().resourceURLForStyleSheetId(styleSheetId);
if (typeof styleSheetURL !== "string")
return;
-var uiSourceCode = this._workspace.uiSourceCodeForURL(styleSheetURL);
+var uiSourceCode = this._workspace.uiSourceCodeForURL(styleSheetURL)
if (!uiSourceCode)
return;
if (uiSourceCode.styleFile())
uiSourceCode.styleFile().addRevision(content);
}
-
-this._cssModel.resourceBinding().requestResourceURLForStyleSheetId(styleSheetId, callback.bind(this));
-},
}
@@ -54188,10 +54430,8 @@
_parsedScriptSource: function(event)
{
var script = (event.data);
-if (!script.sourceURL || script.isInlineScript())
+if (!script.sourceURL || script.isInlineScript() || script.isSnippet())
return;
-if (WebInspector.experimentsSettings.snippetsSupport.isEnabled() && script.isSnippet())
-return;
var isDynamicAnonymousScript;
@@ -54417,9 +54657,21 @@
}
WebInspector.ProfilesPanelDescriptor.prototype = {
+registerShortcuts: function()
+{
+var section = WebInspector.shortcutsScreen.section(WebInspector.UIString("Profiles Panel"));
+section.addAlternateKeys(WebInspector.ProfilesPanelDescriptor.ShortcutKeys.StartStopRecording, WebInspector.UIString("Start/stop recording"));
+},
+
__proto__: WebInspector.PanelDescriptor.prototype
}
+WebInspector.ProfilesPanelDescriptor.ShortcutKeys = {
+StartStopRecording: [
+WebInspector.KeyboardShortcut.makeDescriptor("e", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+]
+}
+
WebInspector.ProfilesPanelDescriptor.ProfileURLRegExp = /webkit-profile:\/\/(.+)\/(.+)/;
WebInspector.ProfilesPanelDescriptor.UserInitiatedProfileName = "org.webkit.profiles.user-initiated";
@@ -54523,6 +54775,10 @@
}
WebInspector.ScriptsPanelDescriptor.ShortcutKeys = {
+RunSnippet: [
+WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Enter, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
+],
+
PauseContinue: [
WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.F8),
WebInspector.KeyboardShortcut.makeDescriptor(WebInspector.KeyboardShortcut.Keys.Slash, WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta)
@@ -54611,7 +54867,7 @@
this._dockToggleButtonOption = new WebInspector.StatusBarButton("", "dock-status-bar-item", 3);
this._dockToggleButton.addEventListener("click", this._toggleDockState, this);
this._dockToggleButtonOption.addEventListener("click", this._toggleDockState, this);
-this._dockToggleButton.makeLongClickEnabled(this._createDockOptions.bind(this));
+this._dockToggleButton.makeLongClickOptionsEnabled(this._createDockOptions.bind(this));
this.setDockSide(WebInspector.queryParamsObject["dockSide"] || "bottom");
WebInspector.settings.showToolbarIcons.addChangeListener(this._updateUI.bind(this));
« no previous file with comments | « chrome_linux/resources/inspector/inspector.css ('k') | chrome_linux/resources/inspector/inspectorCommon.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698