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

Unified Diff: chrome/browser/browser_process_impl.cc

Issue 8438020: Cloud print connector policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Move the code to the browser process Created 9 years, 1 month 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/browser_process_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browser_process_impl.cc
diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc
index 55cdd5b33901b5209c1aa9614e8e6d5df25ad4aa..66a164c4574152d4593f17804a3d6dc6bf936e28 100644
--- a/chrome/browser/browser_process_impl.cc
+++ b/chrome/browser/browser_process_impl.cc
@@ -45,6 +45,8 @@
#include "chrome/browser/prefs/pref_service.h"
#include "chrome/browser/prerender/prerender_tracker.h"
#include "chrome/browser/printing/background_printing_manager.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service.h"
+#include "chrome/browser/printing/cloud_print/cloud_print_proxy_service_factory.h"
#include "chrome/browser/printing/print_job_manager.h"
#include "chrome/browser/printing/print_preview_tab_controller.h"
#include "chrome/browser/profiles/profile_manager.h"
@@ -84,6 +86,7 @@
#include "content/browser/renderer_host/resource_dispatcher_host.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_details.h"
+#include "content/public/browser/notification_service.h"
#include "content/public/common/url_fetcher.h"
#include "ipc/ipc_logging.h"
#include "net/socket/client_socket_pool_manager.h"
@@ -690,6 +693,14 @@ void BrowserProcessImpl::Observe(int type,
ApplyDisabledSchemesPolicy();
} else if (*pref == prefs::kAllowCrossOriginAuthPrompt) {
ApplyAllowCrossOriginAuthPromptPolicy();
+ } else if (*pref == prefs::kCloudPrintProxyEnabled) {
+ ApplyCloudPrintConnectorPolicy();
+ }
+ } else if (type == chrome::NOTIFICATION_PROFILE_CREATED) {
Peter Kasting 2011/11/02 22:09:59 Nit: I would either do: if (type == chrome::NOTIF
+ if (local_state()->IsManagedPreference(prefs::kCloudPrintProxyEnabled)) {
+ Profile* profile = content::Source<Profile>(source).ptr();
+ if (profile)
Peter Kasting 2011/11/02 22:09:59 Can this ever be NULL? If not then don't add a co
+ ApplyCloudPrintConnectorPolicyToProfile(profile);
}
} else {
NOTREACHED();
@@ -971,6 +982,12 @@ void BrowserProcessImpl::CreateLocalState() {
local_state_->RegisterListPref(prefs::kDisabledSchemes);
pref_change_registrar_.Add(prefs::kDisabledSchemes, this);
ApplyDisabledSchemesPolicy();
+
+ local_state_->RegisterBooleanPref(prefs::kCloudPrintProxyEnabled, true);
+ pref_change_registrar_.Add(prefs::kCloudPrintProxyEnabled, this);
+ notification_registrar_.Add(
+ this, chrome::NOTIFICATION_PROFILE_CREATED,
Peter Kasting 2011/11/02 22:09:59 Nit: These args can go on the prior line
+ content::NotificationService::AllBrowserContextsAndSources());
}
void BrowserProcessImpl::CreateIconManager() {
@@ -1073,6 +1090,29 @@ void BrowserProcessImpl::ApplyAllowCrossOriginAuthPromptPolicy() {
resource_dispatcher_host()->set_allow_cross_origin_auth_prompt(value);
}
+void BrowserProcessImpl::ApplyCloudPrintConnectorPolicy() {
+ // Search the profiles for any enabled connectors and shut them down.
+ ProfileManager* pm = profile_manager();
Peter Kasting 2011/11/02 22:09:59 Nit: Could just roll this into the next line
+ std::vector<Profile*> profiles(pm->GetLoadedProfiles());
+ for (size_t i = 0; i < profiles.size(); ++i)
Peter Kasting 2011/11/02 22:09:59 Nit: I suggest using an iterator (rest of this fil
+ ApplyCloudPrintConnectorPolicyToProfile(profiles[i]);
+}
+
+void BrowserProcessImpl::ApplyCloudPrintConnectorPolicyToProfile(
+ Profile* profile) {
+ if (!local_state()->GetBoolean(prefs::kCloudPrintProxyEnabled)) {
+ std::string email;
+ if (profile->GetPrefs()->HasPrefPath(prefs::kCloudPrintEmail)) {
+ email = profile->GetPrefs()->GetString(prefs::kCloudPrintEmail);
+ if (!email.empty()) {
+ CloudPrintProxyServiceFactory::GetForProfile(profile)->
+ DisableForUser();
+ profile->GetPrefs()->SetString(prefs::kCloudPrintEmail, std::string());
+ }
+ }
+ }
+}
+
// The BrowserProcess object must outlive the file thread so we use traits
// which don't do any management.
DISABLE_RUNNABLE_METHOD_REFCOUNT(BrowserProcessImpl);
« no previous file with comments | « chrome/browser/browser_process_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698