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..c5eeaf110c778fc4ea7308265d76d8d31aa2e41c 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 |
@@ -89,9 +89,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 +114,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 +155,13 @@ void NewTabPageSyncHandler::OnStateChanged() { |
BuildAndSendSyncStatus(); |
} |
+void NewTabPageSyncHandler::OnSigninAllowedPrefChange(bool signin_allowed) { |
+ // 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) { |