Home | History | Annotate | Download | only in webui
      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