Index: Source/devtools/front_end/settings/SettingsScreen.js |
diff --git a/Source/devtools/front_end/settings/SettingsScreen.js b/Source/devtools/front_end/settings/SettingsScreen.js |
index 800320b99bcf8015a986320a37d0e9f77b7b0e85..86d4eed7ac9478100a07e3590ed6f20c1a6c86be 100644 |
--- a/Source/devtools/front_end/settings/SettingsScreen.js |
+++ b/Source/devtools/front_end/settings/SettingsScreen.js |
@@ -201,18 +201,29 @@ WebInspector.GenericSettingsTab = function() |
} |
} |
+/** |
+ * @param {!Runtime.Extension} extension |
+ * @return {boolean} |
+ */ |
+WebInspector.GenericSettingsTab.isSettingVisible = function(extension) |
+{ |
+ var descriptor = extension.descriptor(); |
+ if (!("title" in descriptor)) |
+ return false; |
+ if (!(("category" in descriptor) || ("parentSettingName" in descriptor))) |
+ return false; |
+ return true; |
+} |
+ |
WebInspector.GenericSettingsTab.prototype = { |
/** |
* @param {!Runtime.Extension} extension |
*/ |
_addSetting: function(extension) |
{ |
- var descriptor = extension.descriptor(); |
- if (!("title" in descriptor)) |
- return; |
- if (!(("category" in descriptor) || ("parentSettingName" in descriptor))) |
+ if (!WebInspector.GenericSettingsTab.isSettingVisible(extension)) |
return; |
- |
+ var descriptor = extension.descriptor(); |
var sectionName = descriptor["category"]; |
var settingName = descriptor["settingName"]; |
var setting = WebInspector.moduleSetting(settingName); |
@@ -608,6 +619,70 @@ WebInspector.SettingsController.ActionDelegate.prototype = { |
/** |
* @constructor |
+ * @implements {WebInspector.Revealer} |
+ */ |
+WebInspector.SettingsController.Revealer = function() { } |
+ |
+WebInspector.SettingsController.Revealer.prototype = { |
+ /** |
+ * @override |
+ * @param {!Object} object |
+ * @param {number=} lineNumber |
+ * @return {!Promise} |
+ */ |
+ reveal: function(object, lineNumber) |
+ { |
+ console.assert(object instanceof WebInspector.Setting); |
+ var setting = /** @type {!WebInspector.Setting} */ (object); |
+ var success = false; |
+ |
+ self.runtime.extensions("setting").forEach(revealModuleSetting); |
+ self.runtime.extensions(WebInspector.SettingUI).forEach(revealSettingUI); |
+ self.runtime.extensions("settings-view").forEach(revealSettingsView); |
+ |
+ return success ? Promise.resolve() : Promise.reject(); |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ */ |
+ function revealModuleSetting(extension) |
+ { |
+ if (!WebInspector.GenericSettingsTab.isSettingVisible(extension)) |
+ return; |
+ if (extension.descriptor()["settingName"] === setting.name) { |
+ WebInspector._settingsController.showSettingsScreen("general"); |
+ success = true; |
+ } |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ */ |
+ function revealSettingUI(extension) |
+ { |
+ var settings = extension.descriptor()["settings"]; |
+ if (settings && settings.indexOf(setting.name) !== -1) { |
+ WebInspector._settingsController.showSettingsScreen("general"); |
+ success = true; |
+ } |
+ } |
+ |
+ /** |
+ * @param {!Runtime.Extension} extension |
+ */ |
+ function revealSettingsView(extension) |
+ { |
+ var settings = extension.descriptor()["settings"]; |
+ if (settings && settings.indexOf(setting.name) !== -1) { |
+ WebInspector._settingsController.showSettingsScreen(extension.descriptor()["name"]); |
+ success = true; |
+ } |
+ } |
+ } |
+} |
+ |
+/** |
+ * @constructor |
* @extends {WebInspector.Object} |
* @param {!Array.<{id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}>} columns |
* @param {function(!Element, {id: string, placeholder: (string|undefined), options: (!Array.<string>|undefined)}, ?string)} itemRenderer |