1// Copyright 2014 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/options/supervised_user_create_confirm_handler.h" 6 7#include "base/bind.h" 8#include "base/files/file_path.h" 9#include "base/value_conversions.h" 10#include "base/values.h" 11#include "chrome/browser/browser_process.h" 12#include "chrome/browser/profiles/profile.h" 13#include "chrome/browser/profiles/profile_manager.h" 14#include "chrome/browser/profiles/profile_window.h" 15#include "chrome/browser/signin/signin_manager_factory.h" 16#include "chrome/browser/ui/browser_finder.h" 17#include "chrome/browser/ui/host_desktop.h" 18#include "chrome/browser/ui/startup/startup_types.h" 19#include "chrome/grit/generated_resources.h" 20#include "components/signin/core/browser/signin_manager.h" 21#include "components/signin/core/browser/signin_manager_base.h" 22#include "content/public/browser/web_ui.h" 23 24namespace options { 25 26SupervisedUserCreateConfirmHandler::SupervisedUserCreateConfirmHandler() { 27} 28 29SupervisedUserCreateConfirmHandler::~SupervisedUserCreateConfirmHandler() { 30} 31 32void SupervisedUserCreateConfirmHandler::GetLocalizedValues( 33 base::DictionaryValue* localized_strings) { 34 DCHECK(localized_strings); 35 36 static OptionsStringResource resources[] = { 37 { "supervisedUserCreatedTitle", IDS_SUPERVISED_USER_CREATED_TITLE }, 38 { "supervisedUserCreatedText", IDS_SUPERVISED_USER_CREATED_TEXT }, 39 { "supervisedUserCreatedDone", IDS_SUPERVISED_USER_CREATED_DONE_BUTTON }, 40 { "supervisedUserCreatedSwitch", 41 IDS_SUPERVISED_USER_CREATED_SWITCH_BUTTON }, 42 }; 43 44 SigninManagerBase* signin = 45 SigninManagerFactory::GetForProfile(Profile::FromWebUI(web_ui())); 46 if (signin) { 47 localized_strings->SetString("custodianEmail", 48 signin->GetAuthenticatedUsername()); 49 } else { 50 localized_strings->SetString("custodianEmail", std::string()); 51 } 52 53 RegisterStrings(localized_strings, resources, arraysize(resources)); 54} 55 56void SupervisedUserCreateConfirmHandler::RegisterMessages() { 57 web_ui()->RegisterMessageCallback("switchToProfile", 58 base::Bind(&SupervisedUserCreateConfirmHandler::SwitchToProfile, 59 base::Unretained(this))); 60} 61 62void SupervisedUserCreateConfirmHandler::SwitchToProfile( 63 const base::ListValue* args) { 64 DCHECK(args); 65 const base::Value* file_path_value; 66 if (!args->Get(0, &file_path_value)) 67 return; 68 69 base::FilePath profile_file_path; 70 if (!base::GetValueAsFilePath(*file_path_value, &profile_file_path)) 71 return; 72 73 Profile* profile = g_browser_process->profile_manager()-> 74 GetProfileByPath(profile_file_path); 75 DCHECK(profile); 76 77 Browser* browser = 78 chrome::FindBrowserWithWebContents(web_ui()->GetWebContents()); 79 chrome::HostDesktopType desktop_type = chrome::HOST_DESKTOP_TYPE_NATIVE; 80 if (browser) 81 desktop_type = browser->host_desktop_type(); 82 83 profiles::FindOrCreateNewWindowForProfile( 84 profile, 85 chrome::startup::IS_PROCESS_STARTUP, 86 chrome::startup::IS_FIRST_RUN, 87 desktop_type, 88 false); 89} 90 91} // namespace options 92