diff options
author | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-06 04:49:53 +0000 |
---|---|---|
committer | aa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-06 04:49:53 +0000 |
commit | 4488e65fb39ce4ed0ccd40dd89615acb2de1d9f3 (patch) | |
tree | 84ce3e4d06b8ba2fc5db3f9aa0952a91c1836b70 /chrome/browser/extensions | |
parent | 8066b15a2e4235319cd051337626e1c731306209 (diff) | |
download | chromium_src-4488e65fb39ce4ed0ccd40dd89615acb2de1d9f3.zip chromium_src-4488e65fb39ce4ed0ccd40dd89615acb2de1d9f3.tar.gz chromium_src-4488e65fb39ce4ed0ccd40dd89615acb2de1d9f3.tar.bz2 |
Add a context menu item to toggle app tab toolbars.
Review URL: http://codereview.chromium.org/2690001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@49016 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions')
-rw-r--r-- | chrome/browser/extensions/extension_prefs.cc | 37 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_prefs.h | 6 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_prefs_unittest.cc | 35 |
3 files changed, 72 insertions, 6 deletions
diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc index bfa5c7c..e73b2f6 100644 --- a/chrome/browser/extensions/extension_prefs.cc +++ b/chrome/browser/extensions/extension_prefs.cc @@ -35,6 +35,9 @@ const wchar_t kPrefVersion[] = L"manifest.version"; // Indicates if an extension is blacklisted: const wchar_t kPrefBlacklist[] = L"blacklist"; +// Indicates whether the toolbar should be shown on app tabs. +const wchar_t kPrefAppTabToolbars[] = L"app_tab_toolbars"; + // Indicates whether to show an install warning when the user enables. const wchar_t kExtensionDidEscalatePermissions[] = L"install_warning_on_enable"; @@ -589,8 +592,8 @@ static ExtensionInfo* GetInstalledExtensionInfoImpl( } int state_value; if (!ext->GetInteger(kPrefState, &state_value)) { - LOG(WARNING) << "Missing state pref for extension " << *extension_id; - NOTREACHED(); + // This can legitimately happen if we store preferences for component + // extensions. return NULL; } if (state_value == Extension::KILLBIT) { @@ -600,14 +603,10 @@ static ExtensionInfo* GetInstalledExtensionInfoImpl( } FilePath::StringType path; if (!ext->GetString(kPrefPath, &path)) { - LOG(WARNING) << "Missing path pref for extension " << *extension_id; - NOTREACHED(); return NULL; } int location_value; if (!ext->GetInteger(kPrefLocation, &location_value)) { - LOG(WARNING) << "Missing location pref for extension " << *extension_id; - NOTREACHED(); return NULL; } @@ -765,6 +764,32 @@ std::set<std::string> ExtensionPrefs::GetIdleInstallInfoIds() { return result; } +bool ExtensionPrefs::AreAppTabToolbarsVisible( + const std::string& extension_id) { + // Default to hiding toolbars. + bool show_toolbars = false; + DictionaryValue* pref = GetExtensionPref(extension_id); + if (!pref) + return show_toolbars; + + pref->GetBoolean( + ASCIIToWide(extension_id) + L"." + kPrefAppTabToolbars, &show_toolbars); + return show_toolbars; +} + +void ExtensionPrefs::SetAppTabToolbarVisibility( + const std::string& extension_id, bool value) { + DictionaryValue* pref = GetOrCreateExtensionPref(extension_id); + std::wstring key = ASCIIToWide(extension_id) + L"." + kPrefAppTabToolbars; + + if (value) + pref->SetBoolean(key, true); + else + pref->Remove(key, NULL); // False is the default value. + + prefs_->ScheduleSavePersistentPrefs(); +} + // static void ExtensionPrefs::RegisterUserPrefs(PrefService* prefs) { diff --git a/chrome/browser/extensions/extension_prefs.h b/chrome/browser/extensions/extension_prefs.h index deba0ee..3f352e7ad 100644 --- a/chrome/browser/extensions/extension_prefs.h +++ b/chrome/browser/extensions/extension_prefs.h @@ -136,6 +136,12 @@ class ExtensionPrefs { // Returns the extension id's that have idle install information. std::set<std::string> GetIdleInstallInfoIds(); + // Returns whether app toolbars are visible for the specified extension. + bool AreAppTabToolbarsVisible(const std::string& extension_id); + + // Set whether app toolbars are visible for the specified extension. + void SetAppTabToolbarVisibility(const std::string& extension_id, bool value); + static void RegisterUserPrefs(PrefService* prefs); // The underlying PrefService. diff --git a/chrome/browser/extensions/extension_prefs_unittest.cc b/chrome/browser/extensions/extension_prefs_unittest.cc index 15e0bc9..5f45ad5 100644 --- a/chrome/browser/extensions/extension_prefs_unittest.cc +++ b/chrome/browser/extensions/extension_prefs_unittest.cc @@ -310,3 +310,38 @@ class ExtensionPrefsIdleInstallInfo : public ExtensionPrefsTest { std::string id4_; }; TEST_F(ExtensionPrefsIdleInstallInfo, IdleInstallInfo) {} + +class ExtensionPrefsAppToolbars : public ExtensionPrefsTest { + public: + virtual void Initialize() { + // We test three different configurations -- the default value, and being + // overrridden set to on or off. + extension_id_default_ = + prefs_.AddExtensionAndReturnId("app_toolbars_default"); + + extension_id_overridden_on_ = + prefs_.AddExtensionAndReturnId("app_toolbars_overridden_on"); + prefs()->SetAppTabToolbarVisibility(extension_id_overridden_on_, true); + + extension_id_overridden_off_ = + prefs_.AddExtensionAndReturnId("app_toolbars_overridden_off"); + prefs()->SetAppTabToolbarVisibility(extension_id_overridden_off_, false); + } + + virtual void Verify() { + // Toolbars default to hidden. + EXPECT_FALSE(prefs()->AreAppTabToolbarsVisible(extension_id_default_)); + + EXPECT_TRUE(prefs()->AreAppTabToolbarsVisible( + extension_id_overridden_on_)); + EXPECT_FALSE(prefs()->AreAppTabToolbarsVisible( + extension_id_overridden_off_)); + } + + private: + // The ids of our three test extensions. + std::string extension_id_default_; + std::string extension_id_overridden_on_; + std::string extension_id_overridden_off_; +}; +TEST_F(ExtensionPrefsAppToolbars, ExtensionPrefsAppToolbars) {} |