12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/terms_of_service_screen_handler.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include <vector> 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind_helpers.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/prefs/pref_service.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/strings/string_split.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/values.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/browser_process.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/base/locale_util.h" 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/profiles/profile_helper.h" 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/profiles/profile.h" 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/browser/profiles/profile_manager.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/pref_names.h" 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/chromium_strings.h" 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chromeos/ime/input_method_manager.h" 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "components/user_manager/user.h" 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "components/user_manager/user_manager.h" 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "content/public/browser/web_ui.h" 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)namespace { 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)const char kJsScreenPath[] = "login.TermsOfServiceScreen"; 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} // namespace 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TermsOfServiceScreenHandler::TermsOfServiceScreenHandler( 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CoreOobeActor* core_oobe_actor) 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) : BaseScreenHandler(kJsScreenPath), 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) screen_(NULL), 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) core_oobe_actor_(core_oobe_actor), 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) show_on_init_(false), 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) load_error_(false) { 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TermsOfServiceScreenHandler::~TermsOfServiceScreenHandler() { 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (screen_) 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen_->OnActorDestroyed(this); 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::RegisterMessages() { 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("termsOfServiceBack", 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &TermsOfServiceScreenHandler::HandleBack); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) AddCallback("termsOfServiceAccept", 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) &TermsOfServiceScreenHandler::HandleAccept); 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TermsOfServiceScreenHandler::DeclareLocalizedValues( 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LocalizedValuesBuilder* builder) { 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceScreenHeading", 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_TERMS_OF_SERVICE_SCREEN_HEADING); 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceScreenSubheading", 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_TERMS_OF_SERVICE_SCREEN_SUBHEADING); 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceContentHeading", 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_TERMS_OF_SERVICE_SCREEN_CONTENT_HEADING); 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceLoading", IDS_TERMS_OF_SERVICE_SCREEN_LOADING); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceError", IDS_TERMS_OF_SERVICE_SCREEN_ERROR); 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceTryAgain", IDS_TERMS_OF_SERVICE_SCREEN_TRY_AGAIN); 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceBackButton", 71c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_TERMS_OF_SERVICE_SCREEN_BACK_BUTTON); 72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) builder->Add("termsOfServiceAcceptButton", 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) IDS_TERMS_OF_SERVICE_SCREEN_ACCEPT_BUTTON); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::SetDelegate(Delegate* screen) { 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen_ = screen; 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::Show() { 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!page_is_ready()) { 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) show_on_init_ = true; 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) const std::string locale = 876e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ProfileHelper::Get() 886e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetProfileByUserUnsafe( 896e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetActiveUser()) 906e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetPrefs() 916e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetString(prefs::kApplicationLocale); 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (locale.empty() || locale == g_browser_process->GetApplicationLocale()) { 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // If the user has not chosen a UI locale yet or the chosen locale matches 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // the current UI locale, show the screen immediately. 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DoShow(); 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return; 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Switch to the user's UI locale before showing the screen. 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<locale_util::SwitchLanguageCallback> callback( 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) new locale_util::SwitchLanguageCallback( 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&TermsOfServiceScreenHandler::OnLanguageChangedCallback, 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Unretained(this)))); 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) locale_util::SwitchLanguage(locale, 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) true, // enable_locale_keyboard_layouts 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) false, // login_layouts_only 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) callback.Pass()); 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::Hide() { 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::SetDomain(const std::string& domain) { 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) domain_ = domain; 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateDomainInUI(); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::OnLoadError() { 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) load_error_ = true; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) terms_of_service_ = ""; 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateTermsOfServiceInUI(); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::OnLoadSuccess( 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const std::string& terms_of_service) { 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) load_error_ = false; 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) terms_of_service_ = terms_of_service; 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateTermsOfServiceInUI(); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::Initialize() { 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (show_on_init_) { 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Show(); 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) show_on_init_ = false; 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void TermsOfServiceScreenHandler::OnLanguageChangedCallback( 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& requested_locale, 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& loaded_locale, 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const bool success) { 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Update the screen contents to the new locale. 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::DictionaryValue localized_strings; 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) static_cast<OobeUI*>(web_ui()->GetController()) 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ->GetLocalizedStrings(&localized_strings); 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) core_oobe_actor_->ReloadContent(localized_strings); 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DoShow(); 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void TermsOfServiceScreenHandler::DoShow() { 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Determine the user's most preferred input method. 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) std::vector<std::string> input_methods; 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::SplitString( 1566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ProfileHelper::Get() 1576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetProfileByUserUnsafe( 1586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) user_manager::UserManager::Get()->GetActiveUser()) 1596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetPrefs() 1606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ->GetString(prefs::kLanguagePreloadEngines), 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ',', 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &input_methods); 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!input_methods.empty()) { 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // If the user has a preferred input method, enable it and switch to it. 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chromeos::input_method::InputMethodManager* input_method_manager = 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) chromeos::input_method::InputMethodManager::Get(); 16803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_method_manager->GetActiveIMEState()->EnableInputMethod( 16903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_methods.front()); 17003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_method_manager->GetActiveIMEState()->ChangeInputMethod( 17103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) input_methods.front(), false /* show_message */); 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Updates the domain name shown in the UI. 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) UpdateDomainInUI(); 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Update the UI to show an error message or the Terms of Service. 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) UpdateTermsOfServiceInUI(); 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ShowScreen(OobeUI::kScreenTermsOfService, NULL); 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::UpdateDomainInUI() { 184c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (page_is_ready()) 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CallJS("setDomain", domain_); 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TermsOfServiceScreenHandler::UpdateTermsOfServiceInUI() { 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!page_is_ready()) 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 1912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // If either |load_error_| or |terms_of_service_| is set, the download of the 1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Terms of Service has completed and the UI should be updated. Otherwise, the 1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // download is still in progress and the UI will be updated when the 1952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // OnLoadError() or the OnLoadSuccess() callback is called. 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (load_error_) 1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CallJS("setTermsOfServiceLoadError"); 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) else if (!terms_of_service_.empty()) 1993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) CallJS("setTermsOfService", terms_of_service_); 2002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TermsOfServiceScreenHandler::HandleBack() { 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (screen_) 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen_->OnDecline(); 2052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void TermsOfServiceScreenHandler::HandleAccept() { 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!screen_) 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return; 2102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // If the Terms of Service have not been successfully downloaded, the "accept 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and continue" button should not be accessible. If the user managed to 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // activate it somehow anway, do not treat this as acceptance of the Terms 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // and Conditions and end the session instead, as if the user had declined. 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (terms_of_service_.empty()) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen_->OnDecline(); 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) else 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) screen_->OnAccept(); 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 222