Index: Source/devtools/front_end/common/ModuleManager.js |
diff --git a/Source/devtools/front_end/common/ModuleManager.js b/Source/devtools/front_end/common/ModuleManager.js |
index 933c2e85e593a71221dd19db2a2e860acd46f72f..c33477326f056d673f3082440355fa4e28b1f573 100644 |
--- a/Source/devtools/front_end/common/ModuleManager.js |
+++ b/Source/devtools/front_end/common/ModuleManager.js |
@@ -60,69 +60,6 @@ WebInspector.ModuleManager = function(descriptors) |
this._descriptorsMap[descriptors[i]["name"]] = descriptors[i]; |
} |
-/** |
- * @param {!WebInspector.ModuleManager.Extension} extension |
- * @param {?function(!Function):boolean} predicate |
- */ |
-WebInspector.ModuleManager._checkExtensionApplicability = function(extension, predicate) |
-{ |
- if (!predicate) |
- return false; |
- var contextTypes = /** @type {!Array.<string>|undefined} */ (extension.descriptor().contextTypes); |
- if (!contextTypes) |
- return true; |
- for (var i = 0; i < contextTypes.length; ++i) { |
- var contextType = /** @type {!Function} */ (window.eval(contextTypes[i])); |
- var isMatching = predicate(contextType); |
- if (isMatching) |
- return true; |
- } |
- return false; |
-} |
- |
-/** |
- * @param {!WebInspector.ModuleManager.Extension} extension |
- * @param {?Object} context |
- * @return {boolean} |
- */ |
-WebInspector.ModuleManager.isExtensionApplicableToContext = function(extension, context) |
-{ |
- if (!context) |
- return true; |
- return WebInspector.ModuleManager._checkExtensionApplicability(extension, isInstanceOf); |
- |
- /** |
- * @param {!Function} targetType |
- * @return {boolean} |
- */ |
- function isInstanceOf(targetType) |
- { |
- return context instanceof targetType; |
- } |
-} |
- |
-/** |
- * @param {!WebInspector.ModuleManager.Extension} extension |
- * @param {!Set.<!Function>=} currentContextTypes |
- * @return {boolean} |
- */ |
-WebInspector.ModuleManager.isExtensionApplicableToContextTypes = function(extension, currentContextTypes) |
-{ |
- if (!extension.descriptor().contextTypes) |
- return true; |
- |
- return WebInspector.ModuleManager._checkExtensionApplicability(extension, currentContextTypes ? isContextTypeKnown : null); |
- |
- /** |
- * @param {!Function} targetType |
- * @return {boolean} |
- */ |
- function isContextTypeKnown(targetType) |
- { |
- return currentContextTypes.contains(targetType); |
- } |
-} |
- |
WebInspector.ModuleManager.prototype = { |
/** |
* @param {!Array.<string>} configuration |
@@ -160,6 +97,70 @@ WebInspector.ModuleManager.prototype = { |
}, |
/** |
+ * @param {!WebInspector.ModuleManager.Extension} extension |
+ * @param {?function(function(new:Object)):boolean} predicate |
+ * @return {boolean} |
+ */ |
+ _checkExtensionApplicability: function(extension, predicate) |
+ { |
+ if (!predicate) |
+ return false; |
+ var contextTypes = /** @type {!Array.<string>|undefined} */ (extension.descriptor().contextTypes); |
+ if (!contextTypes) |
+ return true; |
+ for (var i = 0; i < contextTypes.length; ++i) { |
+ var contextType = this._resolve(contextTypes[i]); |
+ var isMatching = !!contextType && predicate(contextType); |
+ if (isMatching) |
+ return true; |
+ } |
+ return false; |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.ModuleManager.Extension} extension |
+ * @param {?Object} context |
+ * @return {boolean} |
+ */ |
+ isExtensionApplicableToContext: function(extension, context) |
+ { |
+ if (!context) |
+ return true; |
+ return this._checkExtensionApplicability(extension, isInstanceOf); |
+ |
+ /** |
+ * @param {!Function} targetType |
+ * @return {boolean} |
+ */ |
+ function isInstanceOf(targetType) |
+ { |
+ return context instanceof targetType; |
+ } |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.ModuleManager.Extension} extension |
+ * @param {!Set.<!Function>=} currentContextTypes |
+ * @return {boolean} |
+ */ |
+ isExtensionApplicableToContextTypes: function(extension, currentContextTypes) |
+ { |
+ if (!extension.descriptor().contextTypes) |
+ return true; |
+ |
+ return this._checkExtensionApplicability(extension, currentContextTypes ? isContextTypeKnown : null); |
+ |
+ /** |
+ * @param {!Function} targetType |
+ * @return {boolean} |
+ */ |
+ function isContextTypeKnown(targetType) |
+ { |
+ return currentContextTypes.contains(targetType); |
+ } |
+ }, |
+ |
+ /** |
* @param {string|!Function} type |
* @param {?Object=} context |
* @return {!Array.<!WebInspector.ModuleManager.Extension>} |
@@ -253,10 +254,10 @@ WebInspector.ModuleManager.prototype = { |
/** |
* @return {?function(new:Object)} |
*/ |
- resolve: function(typeName) |
+ _resolve: function(typeName) |
{ |
if (!this._cachedTypeClasses[typeName]) { |
- var path = typeName.substring(1).split("."); |
+ var path = typeName.split("."); |
var object = window; |
for (var i = 0; object && (i < path.length); ++i) |
object = object[path[i]]; |
@@ -265,7 +266,6 @@ WebInspector.ModuleManager.prototype = { |
} |
return this._cachedTypeClasses[typeName]; |
} |
- |
} |
/** |
@@ -408,7 +408,7 @@ WebInspector.ModuleManager.Extension.prototype = { |
{ |
if (!this._hasTypeClass) |
return null; |
- return this._module._manager.resolve(this._type); |
+ return this._module._manager._resolve(this._type.substring(1)); |
}, |
/** |
@@ -417,7 +417,7 @@ WebInspector.ModuleManager.Extension.prototype = { |
*/ |
isApplicable: function(context) |
{ |
- return WebInspector.ModuleManager.isExtensionApplicableToContext(this, context); |
+ return this._module._manager.isExtensionApplicableToContext(this, context); |
}, |
/** |