1// Copyright 2013 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/first_run/first_run_ui.h" 6 7#include "ash/shell.h" 8#include "base/command_line.h" 9#include "chrome/browser/profiles/profile.h" 10#include "chrome/browser/ui/webui/chromeos/first_run/first_run_handler.h" 11#include "chrome/common/url_constants.h" 12#include "chrome/grit/chromium_strings.h" 13#include "chrome/grit/generated_resources.h" 14#include "chromeos/chromeos_switches.h" 15#include "content/public/browser/web_ui.h" 16#include "content/public/browser/web_ui_data_source.h" 17#include "grit/browser_resources.h" 18#include "ui/base/l10n/l10n_util.h" 19#include "ui/base/webui/web_ui_util.h" 20 21namespace { 22 23const char kFirstRunJSPath[] = "first_run.js"; 24const char kShelfAlignmentBottom[] = "bottom"; 25const char kShelfAlignmentLeft[] = "left"; 26const char kShelfAlignmentRight[] = "right"; 27 28void SetLocalizedStrings(base::DictionaryValue* localized_strings) { 29 localized_strings->SetString( 30 "appListHeader", 31 l10n_util::GetStringUTF16(IDS_FIRST_RUN_APP_LIST_STEP_HEADER)); 32 localized_strings->SetString( 33 "appListText1", 34 l10n_util::GetStringUTF16(IDS_FIRST_RUN_APP_LIST_STEP_TEXT_1)); 35 localized_strings->SetString( 36 "appListText2", 37 l10n_util::GetStringUTF16(IDS_FIRST_RUN_APP_LIST_STEP_TEXT_2)); 38 localized_strings->SetString( 39 "trayHeader", l10n_util::GetStringUTF16(IDS_FIRST_RUN_TRAY_STEP_HEADER)); 40 localized_strings->SetString( 41 "trayText", l10n_util::GetStringUTF16(IDS_FIRST_RUN_TRAY_STEP_TEXT)); 42 localized_strings->SetString( 43 "helpHeader", l10n_util::GetStringUTF16(IDS_FIRST_RUN_HELP_STEP_HEADER)); 44 base::string16 product_name = 45 l10n_util::GetStringUTF16(IDS_SHORT_PRODUCT_NAME); 46 localized_strings->SetString( 47 "helpText1", l10n_util::GetStringFUTF16(IDS_FIRST_RUN_HELP_STEP_TEXT_1, 48 product_name)); 49 localized_strings->SetString( 50 "helpText2", l10n_util::GetStringUTF16(IDS_FIRST_RUN_HELP_STEP_TEXT_2)); 51 localized_strings->SetString( 52 "helpKeepExploringButton", 53 l10n_util::GetStringUTF16(IDS_FIRST_RUN_HELP_STEP_KEEP_EXPLORING_BUTTON)); 54 localized_strings->SetString( 55 "helpFinishButton", 56 l10n_util::GetStringUTF16(IDS_FIRST_RUN_HELP_STEP_FINISH_BUTTON)); 57 localized_strings->SetString( 58 "nextButton", l10n_util::GetStringUTF16(IDS_FIRST_RUN_NEXT_BUTTON)); 59 localized_strings->SetBoolean( 60 "transitionsEnabled", 61 CommandLine::ForCurrentProcess()->HasSwitch( 62 chromeos::switches::kEnableFirstRunUITransitions)); 63 std::string shelf_alignment; 64 ash::Shell* shell = ash::Shell::GetInstance(); 65 switch (shell->GetShelfAlignment(shell->GetPrimaryRootWindow())) { 66 case ash::SHELF_ALIGNMENT_BOTTOM: 67 shelf_alignment = kShelfAlignmentBottom; 68 break; 69 case ash::SHELF_ALIGNMENT_LEFT: 70 shelf_alignment = kShelfAlignmentLeft; 71 break; 72 case ash::SHELF_ALIGNMENT_RIGHT: 73 shelf_alignment = kShelfAlignmentRight; 74 break; 75 default: 76 NOTREACHED() << "Unsupported shelf alignment"; 77 } 78 localized_strings->SetString("shelfAlignment", shelf_alignment); 79} 80 81content::WebUIDataSource* CreateDataSource() { 82 content::WebUIDataSource* source = 83 content::WebUIDataSource::Create(chrome::kChromeUIFirstRunHost); 84 source->SetUseJsonJSFormatV2(); 85 source->SetJsonPath("strings.js"); 86 source->SetDefaultResource(IDR_FIRST_RUN_HTML); 87 source->AddResourcePath(kFirstRunJSPath, IDR_FIRST_RUN_JS); 88 base::DictionaryValue localized_strings; 89 webui::SetFontAndTextDirection(&localized_strings); 90 SetLocalizedStrings(&localized_strings); 91 source->AddLocalizedStrings(localized_strings); 92 return source; 93} 94 95} // anonymous namespace 96 97namespace chromeos { 98 99FirstRunUI::FirstRunUI(content::WebUI* web_ui) 100 : WebUIController(web_ui), 101 actor_(NULL) { 102 FirstRunHandler* handler = new FirstRunHandler(); 103 actor_ = handler; 104 web_ui->AddMessageHandler(handler); 105 content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), CreateDataSource()); 106} 107 108} // namespace chromeos 109 110