1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/ui/webui/ntp_login_handler.h" 6 7 #include <string> 8 9 #include "base/values.h" 10 #include "chrome/browser/prefs/pref_notifier.h" 11 #include "chrome/browser/prefs/pref_service.h" 12 #include "chrome/browser/profiles/profile.h" 13 #include "chrome/browser/sync/profile_sync_service.h" 14 #include "chrome/browser/sync/sync_setup_flow.h" 15 #include "chrome/common/pref_names.h" 16 #include "content/common/notification_details.h" 17 18 NTPLoginHandler::NTPLoginHandler() { 19 } 20 21 NTPLoginHandler::~NTPLoginHandler() { 22 } 23 24 WebUIMessageHandler* NTPLoginHandler::Attach(WebUI* web_ui) { 25 PrefService* pref_service = web_ui->GetProfile()->GetPrefs(); 26 username_pref_.Init(prefs::kGoogleServicesUsername, pref_service, this); 27 28 return WebUIMessageHandler::Attach(web_ui); 29 } 30 31 void NTPLoginHandler::RegisterMessages() { 32 web_ui_->RegisterMessageCallback("initializeLogin", 33 NewCallback(this, &NTPLoginHandler::HandleInitializeLogin)); 34 } 35 36 void NTPLoginHandler::Observe(NotificationType type, 37 const NotificationSource& source, 38 const NotificationDetails& details) { 39 DCHECK(type == NotificationType::PREF_CHANGED); 40 std::string* name = Details<std::string>(details).ptr(); 41 if (prefs::kGoogleServicesUsername == *name) 42 UpdateLogin(); 43 } 44 45 void NTPLoginHandler::HandleInitializeLogin(const ListValue* args) { 46 UpdateLogin(); 47 } 48 49 void NTPLoginHandler::UpdateLogin() { 50 std::string username = web_ui_->GetProfile()->GetPrefs()->GetString( 51 prefs::kGoogleServicesUsername); 52 StringValue string_value(username); 53 web_ui_->CallJavascriptFunction("updateLogin", string_value); 54 } 55