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 6c6bf366a4c7450a2ad91016347c9da34e0ca196..c795f98e75163ffdc148dced2137d059c8ea6e07 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(); |
Dan Beam
2013/02/25 17:35:08
probably isn't necessary. https://code.google.com/
|
} |
// static |
@@ -69,6 +70,11 @@ void NewTabPageSyncHandler::RegisterMessages() { |
Profile::FromWebUI(web_ui())); |
if (sync_service_) |
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_, |
@@ -151,6 +160,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) { |