diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-14 20:51:29 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-14 20:51:29 +0000 |
commit | 216e0bc0a053fe5939f829c877959f9a26a91e11 (patch) | |
tree | 3c9036938d87ee68ba69acc7ca0a9529a19202dd /chrome/browser/extensions/extension_prefs.cc | |
parent | a4ed6281fe6d6aad1366a8f6b03e35f6e1eadaa6 (diff) | |
download | chromium_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.cc | 31 |
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. |