diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-08 14:14:03 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-08 14:14:03 +0000 |
commit | 4ddd4abd5b6a72c5dd157a552a99a850b8d7524e (patch) | |
tree | 887d39837a84e64b4da55439064b1ec567c1ea41 | |
parent | 3709d206cd2345fd32613849d28ff1d12061d09d (diff) | |
download | chromium_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.cc | 15 | ||||
-rw-r--r-- | chrome/browser/extensions/extension_managed_mode_apitest.cc | 9 | ||||
-rw-r--r-- | chrome/browser/managed_mode.cc | 53 | ||||
-rw-r--r-- | chrome/browser/managed_mode.h | 23 | ||||
-rw-r--r-- | chrome/browser/prefs/browser_prefs.cc | 2 | ||||
-rw-r--r-- | chrome/browser/prefs/command_line_pref_store.cc | 1 | ||||
-rw-r--r-- | chrome/browser/profiles/profile_manager.cc | 7 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 |
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', |