172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be 3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file. 4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 5dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/browser/ui/webui/ntp_login_handler.h" 6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include <string> 8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/values.h" 10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/prefs/pref_notifier.h" 11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/prefs/pref_service.h" 1221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/profiles/profile.h" 13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/sync/profile_sync_service.h" 14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/sync/sync_setup_flow.h" 15dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/common/pref_names.h" 16ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "content/common/notification_details.h" 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 18731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickNTPLoginHandler::NTPLoginHandler() { 19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 21731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickNTPLoginHandler::~NTPLoginHandler() { 22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenWebUIMessageHandler* NTPLoginHandler::Attach(WebUI* web_ui) { 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen PrefService* pref_service = web_ui->GetProfile()->GetPrefs(); 26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick username_pref_.Init(prefs::kGoogleServicesUsername, pref_service, this); 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen return WebUIMessageHandler::Attach(web_ui); 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid NTPLoginHandler::RegisterMessages() { 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->RegisterMessageCallback("initializeLogin", 33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick NewCallback(this, &NTPLoginHandler::HandleInitializeLogin)); 34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid NTPLoginHandler::Observe(NotificationType type, 37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const NotificationSource& source, 38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const NotificationDetails& details) { 39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick DCHECK(type == NotificationType::PREF_CHANGED); 40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick std::string* name = Details<std::string>(details).ptr(); 41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick if (prefs::kGoogleServicesUsername == *name) 42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UpdateLogin(); 43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid NTPLoginHandler::HandleInitializeLogin(const ListValue* args) { 46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick UpdateLogin(); 47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid NTPLoginHandler::UpdateLogin() { 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::string username = web_ui_->GetProfile()->GetPrefs()->GetString( 51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick prefs::kGoogleServicesUsername); 52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick StringValue string_value(username); 53ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction("updateLogin", string_value); 54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 55