summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 14:14:03 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-08 14:14:03 +0000
commit4ddd4abd5b6a72c5dd157a552a99a850b8d7524e (patch)
tree887d39837a84e64b4da55439064b1ec567c1ea41
parent3709d206cd2345fd32613849d28ff1d12061d09d (diff)
downloadchromium_src-4ddd4abd5b6a72c5dd157a552a99a850b8d7524e.zip
chromium_src-4ddd4abd5b6a72c5dd157a552a99a850b8d7524e.tar.gz
chromium_src-4ddd4abd5b6a72c5dd157a552a99a850b8d7524e.tar.bz2
Move ManagedMode into a separate class.
BUG=117169 TEST=none Review URL: http://codereview.chromium.org/9624008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125611 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/extensions/extension_managed_mode_api.cc15
-rw-r--r--chrome/browser/extensions/extension_managed_mode_apitest.cc9
-rw-r--r--chrome/browser/managed_mode.cc53
-rw-r--r--chrome/browser/managed_mode.h23
-rw-r--r--chrome/browser/prefs/browser_prefs.cc2
-rw-r--r--chrome/browser/prefs/command_line_pref_store.cc1
-rw-r--r--chrome/browser/profiles/profile_manager.cc7
-rw-r--r--chrome/chrome_browser.gypi2
8 files changed, 89 insertions, 23 deletions
diff --git a/chrome/browser/extensions/extension_managed_mode_api.cc b/chrome/browser/extensions/extension_managed_mode_api.cc
index 12da93d..d0258ef 100644
--- a/chrome/browser/extensions/extension_managed_mode_api.cc
+++ b/chrome/browser/extensions/extension_managed_mode_api.cc
@@ -8,10 +8,8 @@
#include <string>
-#include "chrome/browser/browser_process.h"
+#include "chrome/browser/managed_mode.h"
#include "chrome/browser/extensions/extension_preference_api_constants.h"
-#include "chrome/browser/prefs/pref_service.h"
-#include "chrome/common/pref_names.h"
namespace {
@@ -25,8 +23,7 @@ namespace keys = extension_preference_api_constants;
GetManagedModeFunction::~GetManagedModeFunction() { }
bool GetManagedModeFunction::RunImpl() {
- PrefService* local_state = g_browser_process->local_state();
- bool in_managed_mode = local_state->GetBoolean(prefs::kInManagedMode);
+ bool in_managed_mode = ManagedMode::IsInManagedMode();
scoped_ptr<DictionaryValue> result(new DictionaryValue);
result->SetBoolean(keys::kValue, in_managed_mode);
@@ -37,16 +34,12 @@ bool GetManagedModeFunction::RunImpl() {
EnterManagedModeFunction::~EnterManagedModeFunction() { }
bool EnterManagedModeFunction::RunImpl() {
- PrefService* local_state = g_browser_process->local_state();
- bool in_managed_mode = local_state->GetBoolean(prefs::kInManagedMode);
-
bool confirmed = true;
- if (!in_managed_mode) {
+ if (!ManagedMode::IsInManagedMode()) {
// TODO(pamg): WIP. Show modal password dialog and save hashed password. Set
// |confirmed| to false if user cancels dialog.
- if (confirmed)
- local_state->SetBoolean(prefs::kInManagedMode, true);
+ confirmed = ManagedMode::EnterManagedMode();
}
scoped_ptr<DictionaryValue> result(new DictionaryValue);
diff --git a/chrome/browser/extensions/extension_managed_mode_apitest.cc b/chrome/browser/extensions/extension_managed_mode_apitest.cc
index 54970e5..da9fa32 100644
--- a/chrome/browser/extensions/extension_managed_mode_apitest.cc
+++ b/chrome/browser/extensions/extension_managed_mode_apitest.cc
@@ -2,23 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/browser_process.h"
+#include "chrome/browser/managed_mode.h"
#include "chrome/browser/extensions/extension_apitest.h"
-#include "chrome/browser/prefs/pref_service.h"
#include "chrome/common/chrome_switches.h"
-#include "chrome/common/pref_names.h"
// Tests enabling and querying managed mode.
IN_PROC_BROWSER_TEST_F(ExtensionApiTest, ManagedModeGetAndEnable) {
CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kEnableExperimentalExtensionApis);
- PrefService* local_state = g_browser_process->local_state();
- ASSERT_FALSE(local_state->GetBoolean(prefs::kInManagedMode));
+ ASSERT_FALSE(ManagedMode::IsInManagedMode());
ASSERT_TRUE(RunExtensionTest("managedMode")) << message_;
const Extension* extension = GetSingleLoadedExtension();
ASSERT_TRUE(extension);
- EXPECT_TRUE(local_state->GetBoolean(prefs::kInManagedMode));
+ EXPECT_TRUE(ManagedMode::IsInManagedMode());
}
diff --git a/chrome/browser/managed_mode.cc b/chrome/browser/managed_mode.cc
new file mode 100644
index 0000000..edd13b0
--- /dev/null
+++ b/chrome/browser/managed_mode.cc
@@ -0,0 +1,53 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/managed_mode.h"
+
+#include "base/command_line.h"
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/prefs/pref_service.h"
+#include "chrome/common/chrome_notification_types.h"
+#include "chrome/common/chrome_switches.h"
+#include "chrome/common/pref_names.h"
+#include "content/public/browser/notification_service.h"
+
+// static
+void ManagedMode::RegisterPrefs(PrefService* prefs) {
+ prefs->RegisterBooleanPref(prefs::kInManagedMode, false);
+ // Set the value directly in the PrefService instead of using
+ // CommandLinePrefStore so we can change it at runtime.
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kManaged))
+ SetInManagedMode(true);
+}
+
+// static
+bool ManagedMode::IsInManagedMode() {
+ // |g_browser_process| can be NULL during startup.
+ if (!g_browser_process)
+ return true;
+ return g_browser_process->local_state()->GetBoolean(prefs::kInManagedMode);
+}
+
+// static
+bool ManagedMode::EnterManagedMode() {
+ SetInManagedMode(true);
+ return true;
+}
+
+// static
+void ManagedMode::LeaveManagedMode() {
+ SetInManagedMode(false);
+}
+
+// static
+void ManagedMode::SetInManagedMode(bool in_managed_mode) {
+ g_browser_process->local_state()->SetBoolean(prefs::kInManagedMode,
+ in_managed_mode);
+ // This causes the avatar and the profile menu to get updated.
+ content::NotificationService::current()->Notify(
+ chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED,
+ content::NotificationService::AllBrowserContextsAndSources(),
+ content::NotificationService::NoDetails());
+}
+
diff --git a/chrome/browser/managed_mode.h b/chrome/browser/managed_mode.h
new file mode 100644
index 0000000..93cc9ad
--- /dev/null
+++ b/chrome/browser/managed_mode.h
@@ -0,0 +1,23 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_MANAGED_MODE_H_
+#define CHROME_BROWSER_MANAGED_MODE_H_
+
+class PrefService;
+
+class ManagedMode {
+ public:
+ static void RegisterPrefs(PrefService* prefs);
+ static bool IsInManagedMode();
+
+ // Returns true iff managed mode was entered sucessfully.
+ static bool EnterManagedMode();
+ static void LeaveManagedMode();
+
+ private:
+ static void SetInManagedMode(bool in_managed_mode);
+};
+
+#endif // CHROME_BROWSER_MANAGED_MODE_H_
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index 90fcd30..431a927 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -24,6 +24,7 @@
#include "chrome/browser/instant/instant_controller.h"
#include "chrome/browser/intents/web_intents_util.h"
#include "chrome/browser/intranet_redirect_detector.h"
+#include "chrome/browser/managed_mode.h"
#include "chrome/browser/metrics/metrics_log.h"
#include "chrome/browser/metrics/metrics_service.h"
#include "chrome/browser/net/http_server_properties_manager.h"
@@ -115,6 +116,7 @@ void RegisterLocalState(PrefService* local_state) {
GoogleURLTracker::RegisterPrefs(local_state);
IntranetRedirectDetector::RegisterPrefs(local_state);
KeywordEditorController::RegisterPrefs(local_state);
+ ManagedMode::RegisterPrefs(local_state);
MetricsLog::RegisterPrefs(local_state);
MetricsService::RegisterPrefs(local_state);
NotificationUIManager::RegisterPrefs(local_state);
diff --git a/chrome/browser/prefs/command_line_pref_store.cc b/chrome/browser/prefs/command_line_pref_store.cc
index 2a65235..3cbe76f 100644
--- a/chrome/browser/prefs/command_line_pref_store.cc
+++ b/chrome/browser/prefs/command_line_pref_store.cc
@@ -59,7 +59,6 @@ const CommandLinePrefStore::BooleanSwitchToPreferenceMapEntry
#else
{ switches::kEnablePrintPreview, prefs::kPrintPreviewDisabled, false },
#endif
- { switches::kManaged, prefs::kInManagedMode, true },
};
const CommandLinePrefStore::IntegerSwitchToPreferenceMapEntry
diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc
index 7307ee0..a646cbd 100644
--- a/chrome/browser/profiles/profile_manager.cc
+++ b/chrome/browser/profiles/profile_manager.cc
@@ -18,6 +18,7 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/extensions/default_apps_trial.h"
#include "chrome/browser/extensions/extension_service.h"
+#include "chrome/browser/managed_mode.h"
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prefs/scoped_user_pref_update.h"
#include "chrome/browser/profiles/profile_info_cache.h"
@@ -718,7 +719,6 @@ void ProfileManager::RegisterPrefs(PrefService* prefs) {
prefs->RegisterStringPref(prefs::kProfileLastUsed, "");
prefs->RegisterIntegerPref(prefs::kProfilesNumCreated, 1);
prefs->RegisterListPref(prefs::kProfilesLastActive);
- prefs->RegisterBooleanPref(prefs::kInManagedMode, false);
}
size_t ProfileManager::GetNumberOfProfiles() {
@@ -899,10 +899,7 @@ bool ProfileManager::IsMultipleProfilesEnabled() {
if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kMultiProfiles))
return false;
#endif
- // |g_browser_process| can be NULL during startup.
- if (!g_browser_process)
- return true;
- return !g_browser_process->local_state()->GetBoolean(prefs::kInManagedMode);
+ return !ManagedMode::IsInManagedMode();
}
void ProfileManager::AutoloadProfiles() {
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index a3185ca..098345e 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1699,6 +1699,8 @@
'browser/mac/scoped_authorizationref.h',
'browser/mac/scoped_ioobject.h',
'browser/mac/scoped_launch_data.h',
+ 'browser/managed_mode.cc',
+ 'browser/managed_mode.h',
'browser/media/media_internals.cc',
'browser/media/media_internals.h',
'browser/media/media_stream_devices_menu_model.cc',