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

Unified Diff: third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js

Issue 2849583006: [DevTools] Disable contexts in console selector on pause (Closed)
Patch Set: tests Created 3 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: third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js
diff --git a/third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js b/third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js
index 70494e5acedb5330ce3145addb85873f57e7e752..127d7cee01d324c80b26e766a40696f8690f824c 100644
--- a/third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js
+++ b/third_party/WebKit/Source/devtools/front_end/console/ConsoleContextSelector.js
@@ -25,7 +25,10 @@ Console.ConsoleContextSelector = class {
this._selectElement.addEventListener('change', this._executionContextChanged.bind(this), false);
UI.context.addFlavorChangeListener(SDK.ExecutionContext, this._executionContextChangedExternally, this);
+ UI.context.addFlavorChangeListener(SDK.DebuggerModel.CallFrame, this._callFrameSelectedInUI, this);
SDK.targetManager.observeModels(SDK.RuntimeModel, this);
+ SDK.targetManager.addModelListener(
+ SDK.DebuggerModel, SDK.DebuggerModel.Events.CallFrameSelected, this._callFrameSelectedInModel, this);
}
/**
@@ -88,6 +91,7 @@ Console.ConsoleContextSelector = class {
if (executionContext === UI.context.flavor(SDK.ExecutionContext))
this._select(newOption);
+ this._updateOptionDisabledState(newOption);
/**
* @param {!Element} option
@@ -225,4 +229,33 @@ Console.ConsoleContextSelector = class {
return this._selectElement[this._selectElement.selectedIndex];
return null;
}
+
+ /**
+ * @param {!Common.Event} event
+ */
+ _callFrameSelectedInModel(event) {
+ var debuggerModel = /** @type {!SDK.DebuggerModel} */ (event.data);
+ var options = this._selectElement.options;
+ for (var i = 0; i < options.length; i++) {
+ if (options[i].__executionContext.debuggerModel === debuggerModel)
+ this._updateOptionDisabledState(options[i]);
+ }
+ }
+
+ /**
+ * @param {!Element} option
+ */
+ _updateOptionDisabledState(option) {
+ var executionContext = option.__executionContext;
+ var callFrame = executionContext.debuggerModel.selectedCallFrame();
+ var callFrameContext = callFrame && callFrame.script.executionContext();
+ option.disabled = callFrameContext && executionContext !== callFrameContext;
+ }
+
+ _callFrameSelectedInUI() {
+ var callFrame = UI.context.flavor(SDK.DebuggerModel.CallFrame);
+ var callFrameContext = callFrame && callFrame.script.executionContext();
+ if (callFrameContext)
+ UI.context.setFlavor(SDK.ExecutionContext, callFrameContext);
+ }
};

Powered by Google App Engine
This is Rietveld 408576698