summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions
diff options
context:
space:
mode:
authoraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-06 04:49:53 +0000
committeraa@chromium.org <aa@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-06 04:49:53 +0000
commit4488e65fb39ce4ed0ccd40dd89615acb2de1d9f3 (patch)
tree84ce3e4d06b8ba2fc5db3f9aa0952a91c1836b70 /chrome/browser/extensions
parent8066b15a2e4235319cd051337626e1c731306209 (diff)
downloadchromium_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.cc37
-rw-r--r--chrome/browser/extensions/extension_prefs.h6
-rw-r--r--chrome/browser/extensions/extension_prefs_unittest.cc35
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) {}