1// Copyright (c) 2012 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/chromeos/login/base_screen_handler.h" 6 7#include "base/logging.h" 8#include "base/values.h" 9#include "chrome/browser/chromeos/login/ui/login_display_host_impl.h" 10#include "content/public/browser/web_ui.h" 11#include "ui/base/l10n/l10n_util.h" 12 13namespace chromeos { 14 15LocalizedValuesBuilder::LocalizedValuesBuilder(base::DictionaryValue* dict) 16 : dict_(dict) { 17} 18 19void LocalizedValuesBuilder::Add(const std::string& key, 20 const std::string& message) { 21 dict_->SetString(key, message); 22} 23 24void LocalizedValuesBuilder::Add(const std::string& key, 25 const base::string16& message) { 26 dict_->SetString(key, message); 27} 28 29void LocalizedValuesBuilder::Add(const std::string& key, int message_id) { 30 dict_->SetString(key, 31 l10n_util::GetStringUTF16(message_id)); 32} 33 34void LocalizedValuesBuilder::AddF(const std::string& key, 35 int message_id, 36 const base::string16& a) { 37 dict_->SetString(key, 38 l10n_util::GetStringFUTF16(message_id, a)); 39} 40 41void LocalizedValuesBuilder::AddF(const std::string& key, 42 int message_id, 43 const base::string16& a, 44 const base::string16& b) { 45 dict_->SetString(key, 46 l10n_util::GetStringFUTF16(message_id, a, b)); 47} 48 49void LocalizedValuesBuilder::AddF(const std::string& key, 50 int message_id, 51 int message_id_a) { 52 AddF(key, message_id, l10n_util::GetStringUTF16(message_id_a)); 53} 54 55void LocalizedValuesBuilder::AddF(const std::string& key, 56 int message_id, 57 int message_id_a, 58 int message_id_b) { 59 AddF(key, message_id, 60 l10n_util::GetStringUTF16(message_id_a), 61 l10n_util::GetStringUTF16(message_id_b)); 62} 63 64BaseScreenHandler::BaseScreenHandler() 65 : page_is_ready_(false) { 66} 67 68BaseScreenHandler::BaseScreenHandler(const std::string& js_screen_path) 69 : page_is_ready_(false), 70 js_screen_path_prefix_(js_screen_path + ".") { 71 CHECK(!js_screen_path.empty()); 72} 73 74BaseScreenHandler::~BaseScreenHandler() { 75} 76 77void BaseScreenHandler::InitializeBase() { 78 page_is_ready_ = true; 79 Initialize(); 80} 81 82void BaseScreenHandler::GetLocalizedStrings(base::DictionaryValue* dict) { 83 scoped_ptr<LocalizedValuesBuilder> builder(new LocalizedValuesBuilder(dict)); 84 DeclareLocalizedValues(builder.get()); 85 GetAdditionalParameters(dict); 86} 87 88void BaseScreenHandler::GetAdditionalParameters(base::DictionaryValue* dict) { 89} 90 91void BaseScreenHandler::CallJS(const std::string& method) { 92 web_ui()->CallJavascriptFunction(FullMethodPath(method)); 93} 94 95void BaseScreenHandler::ShowScreen(const char* screen_name, 96 const base::DictionaryValue* data) { 97 if (!web_ui()) 98 return; 99 base::DictionaryValue screen_params; 100 screen_params.SetString("id", screen_name); 101 if (data) 102 screen_params.SetWithoutPathExpansion("data", data->DeepCopy()); 103 web_ui()->CallJavascriptFunction("cr.ui.Oobe.showScreen", screen_params); 104} 105 106gfx::NativeWindow BaseScreenHandler::GetNativeWindow() { 107 return LoginDisplayHostImpl::default_host()->GetNativeWindow(); 108} 109 110std::string BaseScreenHandler::FullMethodPath(const std::string& method) const { 111 DCHECK(!method.empty()); 112 return js_screen_path_prefix_ + method; 113} 114 115} // namespace chromeos 116