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

Unified Diff: Source/devtools/front_end/components/ExecutionContextSelector.js

Issue 338283004: DevTools: Use TargetsToolbar instead of ThreadToolbar (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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: Source/devtools/front_end/components/ExecutionContextSelector.js
diff --git a/Source/devtools/front_end/components/ExecutionContextSelector.js b/Source/devtools/front_end/components/ExecutionContextSelector.js
index 51967919cd27f3a9b6ae3fd44ade4f099ae3f0a4..745e389bddf2fda01553c4ffe2e80ad2a87d1c32 100644
--- a/Source/devtools/front_end/components/ExecutionContextSelector.js
+++ b/Source/devtools/front_end/components/ExecutionContextSelector.js
@@ -17,6 +17,9 @@ WebInspector.ExecutionContextSelector.prototype = {
*/
targetAdded: function(target)
{
+ if (!WebInspector.context.flavor(WebInspector.Target))
+ WebInspector.context.setFlavor(WebInspector.Target, target);
+
target.runtimeModel.addEventListener(WebInspector.RuntimeModel.Events.ExecutionContextCreated, this._onExecutionContextCreated, this);
target.runtimeModel.addEventListener(WebInspector.RuntimeModel.Events.ExecutionContextDestroyed, this._onExecutionContextDestroyed, this);
},
@@ -28,7 +31,8 @@ WebInspector.ExecutionContextSelector.prototype = {
{
target.runtimeModel.removeEventListener(WebInspector.RuntimeModel.Events.ExecutionContextCreated, this._onExecutionContextCreated, this);
target.runtimeModel.removeEventListener(WebInspector.RuntimeModel.Events.ExecutionContextDestroyed, this._onExecutionContextDestroyed, this);
- if (WebInspector.context.flavor(WebInspector.ExecutionContext).target() === target)
+ var currentExecutionContext = this.currentExecutionContext();
+ if (currentExecutionContext && currentExecutionContext.target() === target || this.currentTarget() === target)
this._currentExecutionContextGone();
},
@@ -39,7 +43,7 @@ WebInspector.ExecutionContextSelector.prototype = {
{
var executionContext = /** @type {!WebInspector.ExecutionContext}*/ (event.data);
if (!WebInspector.context.flavor(WebInspector.ExecutionContext))
- WebInspector.context.setFlavor(WebInspector.ExecutionContext, executionContext);
+ this.setCurrentExecutionContext(executionContext);
},
/**
@@ -59,13 +63,95 @@ WebInspector.ExecutionContextSelector.prototype = {
for (var i = 0; i < targets.length; ++i) {
var executionContexts = targets[i].runtimeModel.executionContexts();
if (executionContexts.length) {
- newContext = executionContexts[0];
- break;
+ this.setCurrentExecutionContext(executionContexts[0]);
+ return;
}
}
+ WebInspector.context.setFlavor(WebInspector.ExecutionContext, null);
+ WebInspector.context.setFlavor(WebInspector.Target, targets.length ? targets[0] : null);
+ },
+
+ /**
+ * @param {?WebInspector.ExecutionContext} executionContext
+ */
+ setCurrentExecutionContext: function(executionContext)
+ {
+ if (executionContext)
+ WebInspector.context.setFlavor(WebInspector.Target, executionContext.target());
+ WebInspector.context.setFlavor(WebInspector.ExecutionContext, executionContext);
+ },
+
+ /**
+ * @param {?WebInspector.Target} target
+ */
+ setCurrentTarget: function(target)
+ {
+ WebInspector.context.setFlavor(WebInspector.Target, target);
+ var executionContexts = target ? target.runtimeModel.executionContexts() : [];
+ if (!executionContexts.length)
+ return;
+
+ var newContext = executionContexts[0];
+ for (var i = 1; i < executionContexts.length; ++i) {
+ if (executionContexts[i].isMainWorldContext)
+ newContext = executionContexts[i];
+ }
WebInspector.context.setFlavor(WebInspector.ExecutionContext, newContext);
- }
+ },
+
+ /**
+ * @return {?WebInspector.ExecutionContext}
+ */
+ currentExecutionContext: function()
+ {
+ return WebInspector.context.flavor(WebInspector.ExecutionContext);
+ },
+
+ /**
+ * @return {?WebInspector.Target}
+ */
+ currentTarget: function()
+ {
+ return WebInspector.context.flavor(WebInspector.Target);
+ },
+
+ /**
+ * @param {function(new:T, ...)} flavorType
+ * @param {function(?T)} listener
+ * @param {!Object=} thisObject
+ * @template T
+ */
+ _addChangeListener: function(flavorType, listener, thisObject)
+ {
+ WebInspector.context.addFlavorChangeListener(flavorType, callback);
+ /**
+ * @param {!WebInspector.Event} event
+ */
+ function callback(event)
+ {
+ listener.call(thisObject, event.data);
+ }
+
+ },
+
+ /**
+ * @param {function(?WebInspector.ExecutionContext)} listener
+ * @param {!Object=} thisObject
+ */
+ addExecutionContextChangeListener: function(listener, thisObject)
+ {
+ this._addChangeListener(WebInspector.ExecutionContext, listener, thisObject);
+ },
+
+ /**
+ * @param {function(?WebInspector.Target)} listener
+ * @param {!Object=} thisObject
+ */
+ addTargetChangeListener: function(listener, thisObject)
+ {
+ this._addChangeListener(WebInspector.Target, listener, thisObject);
+ }
}
/**
@@ -87,4 +173,9 @@ WebInspector.ExecutionContextSelector.completionsForTextPromptInCurrentContext =
var expressionString = expressionRange.toString();
var prefix = wordRange.toString();
executionContext.completionsForExpression(expressionString, prefix, force, completionsReadyCallback);
-}
+}
+
+/**
+ * @type {!WebInspector.ExecutionContextSelector}
+ */
+WebInspector.executionContextSelector;

Powered by Google App Engine
This is Rietveld 408576698