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