Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5035)

Unified Diff: chrome/browser/extensions/extension_prefs.cc

Issue 10378117: With enable-action-box add extensions to BrowserActionContainer only if they have preference kBrows… (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | chrome/browser/extensions/extension_service.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/extension_prefs.cc
===================================================================
--- chrome/browser/extensions/extension_prefs.cc (revision 136343)
+++ chrome/browser/extensions/extension_prefs.cc (working copy)
@@ -4,6 +4,7 @@
#include "chrome/browser/extensions/extension_prefs.h"
+#include "base/command_line.h"
#include "base/string_number_conversions.h"
#include "base/string_util.h"
#include "base/utf_string_conversions.h"
@@ -15,6 +16,7 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/chrome_switches.h"
#include "chrome/common/extensions/manifest.h"
#include "chrome/common/extensions/url_pattern.h"
#include "chrome/common/pref_names.h"
@@ -113,6 +115,10 @@
// Whether the browser action is visible in the toolbar.
const char kBrowserActionVisible[] = "browser_action_visible";
+// Whether the browser action is visible in the toolbar.
Aaron Boodman 2012/05/14 18:36:17 Change this to: Whether the browser action is pin
yefimt 2012/05/14 18:50:45 Done.
+// It is replacing kBrowserActionVisible, an old one eventualy will be gone.
+const char kBrowserActionPined[] = "browser_action_pined";
Aaron Boodman 2012/05/14 18:36:17 Spelling here and elsewhere: pinned (two 'n's).
yefimt 2012/05/14 18:50:45 Done.
+
// Preferences that hold which permissions the user has granted the extension.
// We explicitly keep track of these so that extensions can contain unknown
// permissions, for backwards compatibility reasons, and we can still prompt
@@ -1268,10 +1274,50 @@
content_settings_store_->SetExtensionState(extension_id, enabled);
}
+bool ExtensionPrefs::GetBrowserActionPined(const Extension* extension) {
+ const DictionaryValue* extension_prefs = GetExtensionPref(extension->id());
+ if (!extension_prefs)
+ return true;
Aaron Boodman 2012/05/14 18:36:17 return false. Default to not-pinned.
yefimt 2012/05/14 18:50:45 Done.
+
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ if (command_line.HasSwitch(switches::kEnableActionBox)) {
Aaron Boodman 2012/05/14 18:36:17 Do we expect this method to be called when the swi
yefimt 2012/05/14 18:50:45 We do, could be call from ExtensionToolbarModel wh
+ bool pined = false;
+ bool pref_exists = extension_prefs->GetBoolean(kBrowserActionPined,
+ &pined);
+ if (pref_exists && pined)
+ return true;
+ } else {
+ return GetBrowserActionVisibility(extension);
+ }
+
+ return false;
+}
+
+void ExtensionPrefs::SetBrowserActionPined(const Extension* extension,
+ bool pined) {
+ const CommandLine& command_line = *CommandLine::ForCurrentProcess();
+ bool enable_action_box = command_line.HasSwitch(switches::kEnableActionBox);
+
+ if (enable_action_box) {
+ if (GetBrowserActionPined(extension) == pined)
+ return;
+
+ UpdateExtensionPref(extension->id(), kBrowserActionPined,
+ Value::CreateBooleanValue(pined));
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_EXTENSION_BROWSER_ACTION_PINED_CHANGED,
+ content::Source<ExtensionPrefs>(this),
+ content::Details<const Extension>(extension));
+ } else {
+ SetBrowserActionVisibility(extension, pined);
+ }
+}
+
bool ExtensionPrefs::GetBrowserActionVisibility(const Extension* extension) {
const DictionaryValue* extension_prefs = GetExtensionPref(extension->id());
if (!extension_prefs)
return true;
+
bool visible = false;
if (!extension_prefs->GetBoolean(kBrowserActionVisible, &visible) || visible)
return true;
« no previous file with comments | « chrome/browser/extensions/extension_prefs.h ('k') | chrome/browser/extensions/extension_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698