Index: chrome/browser/extensions/extension_prefs.cc |
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc |
index e2ed4ea0e9b6caf7dfc7ddb998348ab0974e2f88..425fdd5e7cde2714a3906af99dc8e3c52a74e624 100644 |
--- a/chrome/browser/extensions/extension_prefs.cc |
+++ b/chrome/browser/extensions/extension_prefs.cc |
@@ -71,6 +71,15 @@ const char kPrefDisableReason[] = "disable_reason"; |
// object stored in the Preferences file. The extensions are stored by ID. |
const char kExtensionToolbar[] = "extensions.toolbar"; |
+// A preference that tracks the order of extensions in an action box |
+// (list of extension ids). |
+const char kExtensionActionBox[] = "extensions.action_box_order"; |
+ |
+// A preference that tracks the order of extensions in a toolbar when |
+// action box is enabled (list of extension ids). |
+const char kExtensionActionBoxBar[] = |
+ "extensions.toolbar_order_with_action_box"; |
+ |
// The key for a serialized Time value indicating the start of the day (from the |
// server's perspective) an extension last included a "ping" parameter during |
// its update check. |
@@ -710,7 +719,7 @@ void ExtensionPrefs::RemoveDisableReason(const std::string& extension_id) { |
void ExtensionPrefs::UpdateBlacklist( |
const std::set<std::string>& blacklist_set) { |
- std::vector<std::string> remove_pref_ids; |
+ ExtensionIdSet remove_pref_ids; |
std::set<std::string> used_id_set; |
const DictionaryValue* extensions = prefs_->GetDictionary(kExtensionsPref); |
@@ -757,7 +766,7 @@ void ExtensionPrefs::UpdateBlacklist( |
Value::CreateBooleanValue(true)); |
} |
} |
- for (unsigned int i = 0; i < remove_pref_ids.size(); ++i) { |
+ for (size_t i = 0; i < remove_pref_ids.size(); ++i) { |
DeleteExtensionPrefs(remove_pref_ids[i]); |
} |
} |
@@ -1300,28 +1309,23 @@ bool ExtensionPrefs::IsExtensionDisabled( |
return DoesExtensionHaveState(id, Extension::DISABLED); |
} |
-std::vector<std::string> ExtensionPrefs::GetToolbarOrder() { |
- ExtensionIdSet extension_ids; |
- const ListValue* toolbar_order = prefs_->GetList(kExtensionToolbar); |
- if (toolbar_order) { |
- for (size_t i = 0; i < toolbar_order->GetSize(); ++i) { |
- std::string extension_id; |
- if (toolbar_order->GetString(i, &extension_id)) |
- extension_ids.push_back(extension_id); |
- } |
- } |
- return extension_ids; |
+ExtensionPrefs::ExtensionIdSet ExtensionPrefs::GetToolbarOrder() { |
+ bool action_box_enabled = extensions::switch_utils::IsActionBoxEnabled(); |
+ return GetExtensionPrefAsVector( |
+ action_box_enabled ? kExtensionActionBoxBar : kExtensionToolbar); |
} |
-void ExtensionPrefs::SetToolbarOrder( |
- const std::vector<std::string>& extension_ids) { |
- ListPrefUpdate update(prefs_, kExtensionToolbar); |
- ListValue* toolbar_order = update.Get(); |
- toolbar_order->Clear(); |
- for (std::vector<std::string>::const_iterator iter = extension_ids.begin(); |
- iter != extension_ids.end(); ++iter) { |
- toolbar_order->Append(new StringValue(*iter)); |
- } |
+void ExtensionPrefs::SetToolbarOrder(const ExtensionIdSet& extension_ids) { |
+ SetExtensionPrefFromVector(extensions::switch_utils::IsActionBoxEnabled() ? |
+ kExtensionActionBoxBar : kExtensionToolbar, extension_ids); |
+} |
+ |
+ExtensionPrefs::ExtensionIdSet ExtensionPrefs::GetActionBoxOrder() { |
+ return GetExtensionPrefAsVector(kExtensionActionBox); |
+} |
+ |
+void ExtensionPrefs::SetActionBoxOrder(const ExtensionIdSet& extension_ids) { |
+ SetExtensionPrefFromVector(kExtensionActionBox, extension_ids); |
} |
void ExtensionPrefs::OnExtensionInstalled( |
@@ -2038,6 +2042,8 @@ URLPatternSet ExtensionPrefs::GetAllowedInstallSites() { |
void ExtensionPrefs::RegisterUserPrefs(PrefService* prefs) { |
prefs->RegisterDictionaryPref(kExtensionsPref, PrefService::UNSYNCABLE_PREF); |
prefs->RegisterListPref(kExtensionToolbar, PrefService::UNSYNCABLE_PREF); |
+ prefs->RegisterListPref(kExtensionActionBox, PrefService::UNSYNCABLE_PREF); |
+ prefs->RegisterListPref(kExtensionActionBoxBar, PrefService::UNSYNCABLE_PREF); |
prefs->RegisterIntegerPref(prefs::kExtensionToolbarSize, |
-1, // default value |
PrefService::UNSYNCABLE_PREF); |
@@ -2065,4 +2071,29 @@ void ExtensionPrefs::RegisterUserPrefs(PrefService* prefs) { |
PrefService::UNSYNCABLE_PREF); |
} |
+ExtensionPrefs::ExtensionIdSet ExtensionPrefs::GetExtensionPrefAsVector( |
+ const char* pref) { |
+ ExtensionIdSet extension_ids; |
+ const ListValue* list_of_values = prefs_->GetList(pref); |
+ if (!list_of_values) |
+ return extension_ids; |
+ |
+ std::string extension_id; |
+ for (size_t i = 0; i < list_of_values->GetSize(); ++i) { |
+ if (list_of_values->GetString(i, &extension_id)) |
+ extension_ids.push_back(extension_id); |
+ } |
+ return extension_ids; |
+} |
+ |
+void ExtensionPrefs::SetExtensionPrefFromVector(const char* pref, |
+ const ExtensionIdSet& strings) { |
+ ListPrefUpdate update(prefs_, pref); |
+ ListValue* list_of_values = update.Get(); |
+ list_of_values->Clear(); |
+ for (ExtensionIdSet::const_iterator iter = strings.begin(); |
+ iter != strings.end(); ++iter) |
+ list_of_values->Append(new StringValue(*iter)); |
+} |
+ |
} // namespace extensions |