Chromium Code Reviews| 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) { |