summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/extension_prefs.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-14 20:51:29 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-14 20:51:29 +0000
commit216e0bc0a053fe5939f829c877959f9a26a91e11 (patch)
tree3c9036938d87ee68ba69acc7ca0a9529a19202dd /chrome/browser/extensions/extension_prefs.cc
parenta4ed6281fe6d6aad1366a8f6b03e35f6e1eadaa6 (diff)
downloadchromium_src-216e0bc0a053fe5939f829c877959f9a26a91e11.zip
chromium_src-216e0bc0a053fe5939f829c877959f9a26a91e11.tar.gz
chromium_src-216e0bc0a053fe5939f829c877959f9a26a91e11.tar.bz2
Persist the order of extensions in the browser action toolbar across sessions.
Very similar to what we did with the extension shelf. BUG=26990 Review URL: http://codereview.chromium.org/487021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@34490 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_prefs.cc')
-rw-r--r--chrome/browser/extensions/extension_prefs.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc
index c793fb3b..aef47ac 100644
--- a/chrome/browser/extensions/extension_prefs.cc
+++ b/chrome/browser/extensions/extension_prefs.cc
@@ -36,6 +36,11 @@ const wchar_t kPrefBlacklist[] = L"blacklist";
// A preference that tracks extension shelf configuration. This is a list
// object read from the Preferences file, containing a list of toolstrip URLs.
const wchar_t kExtensionShelf[] = L"extensions.shelf";
+
+// A preference that tracks browser action toolbar configuration. This is a list
+// object stored in the Preferences file. The extensions are stored by ID.
+const wchar_t kExtensionToolbar[] = L"extensions.toolbar";
+
}
////////////////////////////////////////////////////////////////////////////////
@@ -105,6 +110,8 @@ ExtensionPrefs::ExtensionPrefs(PrefService* prefs, const FilePath& root_dir)
prefs_->RegisterDictionaryPref(kExtensionsPref);
if (!prefs->FindPreference(kExtensionShelf))
prefs->RegisterListPref(kExtensionShelf);
+ if (!prefs->FindPreference(kExtensionToolbar))
+ prefs->RegisterListPref(kExtensionToolbar);
MakePathsRelative();
}
@@ -314,6 +321,30 @@ void ExtensionPrefs::SetShelfToolstripOrder(const URLList& urls) {
prefs_->ScheduleSavePersistentPrefs();
}
+std::vector<std::string> ExtensionPrefs::GetToolbarOrder() {
+ std::vector<std::string> 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;
+}
+
+void ExtensionPrefs::SetToolbarOrder(
+ const std::vector<std::string>& extension_ids) {
+ ListValue* toolbar_order = prefs_->GetMutableList(kExtensionToolbar);
+ 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));
+ }
+ prefs_->ScheduleSavePersistentPrefs();
+}
+
void ExtensionPrefs::OnExtensionInstalled(Extension* extension) {
const std::string& id = extension->id();
// Make sure we don't enable a disabled extension.