diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-16 13:35:30 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-16 13:35:30 +0000 |
commit | 8a4cf8405155ff5065efb6cdc3233da762678872 (patch) | |
tree | a12084f433de9f3864ee0e5e0968670fa93fcd96 /chrome/browser/extensions/extension_managed_mode_api.cc | |
parent | 6af47ec57a2b5eb0836beafeb1805e65dd6ca96d (diff) | |
download | chromium_src-8a4cf8405155ff5065efb6cdc3233da762678872.zip chromium_src-8a4cf8405155ff5065efb6cdc3233da762678872.tar.gz chromium_src-8a4cf8405155ff5065efb6cdc3233da762678872.tar.bz2 |
Add managedModePrivate.onChange event
BUG=120635
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10391011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@137412 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_managed_mode_api.cc')
-rw-r--r-- | chrome/browser/extensions/extension_managed_mode_api.cc | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/chrome/browser/extensions/extension_managed_mode_api.cc b/chrome/browser/extensions/extension_managed_mode_api.cc index 2cd834b2..44ac940 100644 --- a/chrome/browser/extensions/extension_managed_mode_api.cc +++ b/chrome/browser/extensions/extension_managed_mode_api.cc @@ -9,11 +9,22 @@ #include <string> #include "base/bind.h" -#include "chrome/browser/managed_mode.h" +#include "base/json/json_writer.h" +#include "chrome/browser/browser_process.h" +#include "chrome/browser/extensions/extension_event_router.h" #include "chrome/browser/extensions/extension_preference_api_constants.h" +#include "chrome/browser/managed_mode.h" +#include "chrome/browser/prefs/pref_service.h" +#include "chrome/browser/profiles/profile.h" +#include "chrome/common/chrome_notification_types.h" +#include "chrome/common/pref_names.h" +#include "content/public/browser/notification_details.h" namespace { +// Event that is fired when we enter or leave managed mode. +const char kChangeEventName[] = "experimental.managedMode.onChange"; + // Key to report whether the attempt to enter managed mode succeeded. const char kEnterSuccessKey[] = "success"; @@ -21,6 +32,39 @@ const char kEnterSuccessKey[] = "success"; namespace keys = extension_preference_api_constants; +ExtensionManagedModeEventRouter::ExtensionManagedModeEventRouter( + Profile* profile) : profile_(profile) { +} + +void ExtensionManagedModeEventRouter::Init() { + registrar_.Init(g_browser_process->local_state()); + registrar_.Add(prefs::kInManagedMode, this); +} + +ExtensionManagedModeEventRouter::~ExtensionManagedModeEventRouter() { +} + +void ExtensionManagedModeEventRouter::Observe( + int type, + const content::NotificationSource& source, + const content::NotificationDetails& details) { + DCHECK_EQ(chrome::NOTIFICATION_PREF_CHANGED, type); + const std::string& pref_name = + *content::Details<std::string>(details).ptr(); + DCHECK_EQ(std::string(prefs::kInManagedMode), pref_name); + + ListValue args; + DictionaryValue* dict = new DictionaryValue(); + args.Append(dict); + dict->SetBoolean(extension_preference_api_constants::kValue, + g_browser_process->local_state()->GetBoolean(prefs::kInManagedMode)); + std::string json_args; + base::JSONWriter::Write(&args, &json_args); + ExtensionEventRouter* event_router = profile_->GetExtensionEventRouter(); + event_router->DispatchEventToRenderers(kChangeEventName, json_args, + NULL, GURL()); +} + GetManagedModeFunction::~GetManagedModeFunction() { } bool GetManagedModeFunction::RunImpl() { |