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

Unified Diff: chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc

Issue 12088040: Add a SigninAllowed policy. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add tests and link UpdateLogin to kSigninAllowed pref. Created 7 years, 10 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
Index: chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc
diff --git a/chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc b/chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc
index 1639456ab7727a0d564b74bfd1efda5697a3aec4..049481be7c659ecc48de0735b367704667b47d29 100644
--- a/chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc
+++ b/chrome/browser/ui/webui/ntp/new_tab_page_sync_handler.cc
@@ -46,6 +46,7 @@ NewTabPageSyncHandler::NewTabPageSyncHandler() : sync_service_(NULL),
NewTabPageSyncHandler::~NewTabPageSyncHandler() {
if (sync_service_)
sync_service_->RemoveObserver(this);
+ profile_pref_registrar_.RemoveAll();
}
// static
@@ -69,6 +70,11 @@ void NewTabPageSyncHandler::RegisterMessages() {
Profile::FromWebUI(web_ui()));
DCHECK(sync_service_); // This shouldn't get called by an incognito NTP.
sync_service_->AddObserver(this);
+ profile_pref_registrar_.Init(Profile::FromWebUI(web_ui())->GetPrefs());
+ profile_pref_registrar_.Add(
+ prefs::kSigninAllowed,
+ base::Bind(&NewTabPageSyncHandler::OnSigninAllowedPrefChange,
+ base::Unretained(this)));
web_ui()->RegisterMessageCallback("GetSyncMessage",
base::Bind(&NewTabPageSyncHandler::HandleGetSyncMessage,
@@ -89,9 +95,14 @@ void NewTabPageSyncHandler::HideSyncStatusSection() {
void NewTabPageSyncHandler::BuildAndSendSyncStatus() {
DCHECK(!waiting_for_initial_page_load_);
+ SigninManager* signin = SigninManagerFactory::GetForProfile(
+ Profile::FromWebUI(web_ui()));
// Hide the sync status section if sync is managed or disabled entirely.
- if (!sync_service_ || sync_service_->IsManaged()) {
+ if (!sync_service_ ||
+ sync_service_->IsManaged() ||
+ !signin ||
+ !signin->IsSigninAllowed()) {
HideSyncStatusSection();
return;
}
@@ -109,8 +120,6 @@ void NewTabPageSyncHandler::BuildAndSendSyncStatus() {
// message).
string16 status_msg;
string16 link_text;
- SigninManager* signin = SigninManagerFactory::GetForProfile(
- Profile::FromWebUI(web_ui()));
sync_ui_util::MessageType type =
sync_ui_util::GetStatusLabelsForNewTabPage(sync_service_,
@@ -152,6 +161,13 @@ void NewTabPageSyncHandler::OnStateChanged() {
BuildAndSendSyncStatus();
}
+void NewTabPageSyncHandler::OnSigninAllowedPrefChange() {
+ // Don't do anything if the page has not yet loaded.
+ if (waiting_for_initial_page_load_)
+ return;
+ BuildAndSendSyncStatus();
+}
+
void NewTabPageSyncHandler::SendSyncMessageToPage(
MessageType type, std::string msg,
std::string linktext) {

Powered by Google App Engine
This is Rietveld 408576698