Index: third_party/WebKit/Source/devtools/front_end/devtools.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/devtools.js b/third_party/WebKit/Source/devtools/front_end/devtools.js |
index 05c2b25a3800a9cd76bba88af007f8f8a9264b7d..643f939599b0c78a11b2dc0fff8fd561c8e07ede 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/devtools.js |
+++ b/third_party/WebKit/Source/devtools/front_end/devtools.js |
@@ -867,6 +867,105 @@ window.InspectorFrontendHost = new InspectorFrontendHostImpl(); |
// DevToolsApp --------------------------------------------------------------- |
+function installObjectObserve() |
+{ |
+ var properties = [ |
+ "advancedSearchConfig", "auditsPanelSplitViewState", "auditsSidebarWidth", "blockedURLs", "breakpoints", "cacheDisabled", "colorFormat", "consoleHistory", |
+ "consoleTimestampsEnabled", "cpuProfilerView", "cssSourceMapsEnabled", "currentDockState", "customColorPalette", "customDevicePresets", "customEmulatedDeviceList", |
+ "customFormatters", "customUserAgent", "databaseTableViewVisibleColumns", "dataGrid-cookiesTable", "dataGrid-DOMStorageItemsView", "debuggerSidebarHidden", "disableDataSaverInfobar", |
+ "disablePausedStateOverlay", "domBreakpoints", "domWordWrap", "elementsPanelSplitViewState", "elementsSidebarWidth", "emulation.deviceHeight", "emulation.deviceModeValue", |
+ "emulation.deviceOrientationOverride", "emulation.deviceScale", "emulation.deviceScaleFactor", "emulation.deviceUA", "emulation.deviceWidth", "emulation.geolocationOverride", |
+ "emulation.showDeviceMode", "emulation.showRulers", "enableAsyncStackTraces", "eventListenerBreakpoints", "fileMappingEntries", "fileSystemMapping", "FileSystemViewSidebarWidth", |
+ "fileSystemViewSplitViewState", "filterBar-consoleView", "filterBar-networkPanel", "filterBar-promisePane", "filterBar-timelinePanel", "frameViewerHideChromeWindow", |
+ "heapSnapshotRetainersViewSize", "heapSnapshotSplitViewState", "hideCollectedPromises", "hideNetworkMessages", "highlightNodeOnHoverInOverlay", "highResolutionCpuProfiling", |
+ "inlineVariableValues", "Inspector.drawerSplitView", "Inspector.drawerSplitViewState", "InspectorView.panelOrder", "InspectorView.screencastSplitView", |
+ "InspectorView.screencastSplitViewState", "InspectorView.splitView", "InspectorView.splitViewState", "javaScriptDisabled", "jsSourceMapsEnabled", "lastActivePanel", "lastDockState", |
+ "lastSelectedSourcesSidebarPaneTab", "lastSnippetEvaluationIndex", "layerDetailsSplitView", "layerDetailsSplitViewState", "layersPanelSplitViewState", "layersShowInternalLayers", |
+ "layersSidebarWidth", "messageLevelFilters", "messageURLFilters", "monitoringXHREnabled", "navigatorGroupByFolder", "navigatorHidden", "networkColorCodeResourceTypes", |
+ "networkConditions", "networkConditionsCustomProfiles", "networkHideDataURL", "networkLogColumnsVisibility", "networkLogLargeRows", "networkLogShowOverview", |
+ "networkPanelSplitViewState", "networkRecordFilmStripSetting", "networkResourceTypeFilters", "networkShowPrimaryLoadWaterfall", "networkSidebarWidth", "openLinkHandler", |
+ "pauseOnCaughtException", "pauseOnExceptionEnabled", "preserveConsoleLog", "prettyPrintInfobarDisabled", "previouslyViewedFiles", "profilesPanelSplitViewState", |
+ "profilesSidebarWidth", "promiseStatusFilters", "recordAllocationStacks", "requestHeaderFilterSetting", "request-info-formData-category-expanded", |
+ "request-info-general-category-expanded", "request-info-queryString-category-expanded", "request-info-requestHeaders-category-expanded", |
+ "request-info-requestPayload-category-expanded", "request-info-responseHeaders-category-expanded", "resources", "resourcesLastSelectedItem", "resourcesPanelSplitViewState", |
+ "resourcesSidebarWidth", "resourceViewTab", "savedURLs", "screencastEnabled", "scriptsPanelNavigatorSidebarWidth", "searchInContentScripts", "selectedAuditCategories", |
+ "selectedColorPalette", "selectedProfileType", "shortcutPanelSwitch", "showAdvancedHeapSnapshotProperties", "showEventListenersForAncestors", "showFrameowkrListeners", |
+ "showHeaSnapshotObjectsHiddenProperties", "showInheritedComputedStyleProperties", "showMediaQueryInspector", "showNativeFunctionsInJSProfile", "showUAShadowDOM", |
+ "showWhitespacesInEditor", "sidebarPosition", "skipContentScripts", "skipStackFramesPattern", "sourceMapInfobarDisabled", "sourcesPanelDebuggerSidebarSplitViewState", |
+ "sourcesPanelNavigatorSplitViewState", "sourcesPanelSplitSidebarRatio", "sourcesPanelSplitViewState", "sourcesSidebarWidth", "standardEmulatedDeviceList", |
+ "StylesPaneSplitRatio", "stylesPaneSplitViewState", "textEditorAutocompletion", "textEditorAutoDetectIndent", "textEditorBracketMatching", "textEditorIndent", |
+ "timelineCaptureFilmStrip", "timelineCaptureLayersAndPictures", "timelineCaptureMemory", "timelineCaptureNetwork", "timeline-details", "timelineEnableJSSampling", |
+ "timelineOverviewMode", "timelinePanelDetailsSplitViewState", "timelinePanelRecorsSplitViewState", "timelinePanelTimelineStackSplitViewState", "timelinePerspective", |
+ "timeline-split", "timelineTreeGroupBy", "timeline-view", "timelineViewMode", "uiTheme", "watchExpressions", "WebInspector.Drawer.lastSelectedView", "WebInspector.Drawer.showOnLoad", |
+ "workspaceExcludedFolders", "workspaceFolderExcludePattern", "workspaceInfobarDisabled", "workspaceMappingInfobarDisabled", "xhrBreakpoints"]; |
+ |
+ /** |
+ * @this {!{_storage: Object, _name: string}} |
+ */ |
+ function settingRemove() |
+ { |
+ this._storage[this._name] = undefined; |
+ } |
+ |
+ function objectObserve(object, observer) |
+ { |
+ if (window["WebInspector"]) { |
+ var settingPrototype = window["WebInspector"]["Setting"]["prototype"]; |
+ if (typeof settingPrototype["remove"] === "function") |
+ settingPrototype["remove"] = settingRemove; |
+ } |
+ |
+ var changedProperties = new Set(); |
+ var scheduled = false; |
+ |
+ function scheduleObserver() |
+ { |
+ if (!scheduled) { |
+ scheduled = true; |
+ setImmediate(callObserver); |
+ } |
+ } |
+ |
+ function callObserver() |
+ { |
+ scheduled = false; |
+ var changes = []; |
+ changedProperties.forEach(function(name) { changes.push({name: name}); }); |
+ changedProperties.clear(); |
+ observer.call(null, changes); |
+ } |
+ |
+ var storage = new Map(); |
+ |
+ function defineProperty(property) |
+ { |
+ if (property in object) { |
+ storage.set(property, object[property]); |
+ delete object[property]; |
+ } |
+ |
+ Object.defineProperty(object, property, { |
+ get: function() |
+ { |
+ return storage.get(property); |
+ }, |
+ |
+ set: function(value) |
+ { |
+ storage.set(property, value); |
+ changedProperties.add(property); |
+ scheduleObserver(); |
+ } |
+ }); |
+ } |
+ |
+ for (var i = 0; i < properties.length; ++i) |
+ defineProperty(properties[i]); |
+ } |
+ |
+ window.Object.observe = objectObserve; |
+} |
+ |
/** |
* @suppressGlobalPropertiesCheck |
*/ |
@@ -875,6 +974,9 @@ function installBackwardsCompatibility() |
if (window.location.search.indexOf("remoteFrontend") === -1) |
return; |
+ // Support for legacy (<M50) frontends. |
+ installObjectObserve(); |
+ |
/** |
* @this {CSSStyleDeclaration} |
*/ |