OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h" | 5 #include "chrome/browser/ui/webui/chromeos/login/eula_screen_handler.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/strings/utf_string_conversions.h" | |
9 #include "chrome/browser/chromeos/login/help_app_launcher.h" | 10 #include "chrome/browser/chromeos/login/help_app_launcher.h" |
11 #include "chrome/browser/chromeos/login/helper.h" | |
12 #include "chrome/browser/chromeos/login/login_web_dialog.h" | |
10 #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" | 13 #include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
11 #include "chrome/browser/chromeos/login/webui_login_display.h" | 14 #include "chrome/browser/chromeos/login/webui_login_display.h" |
12 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" | 15 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
13 #include "chrome/common/url_constants.h" | 16 #include "chrome/common/url_constants.h" |
17 #include "content/public/browser/web_contents.h" | |
14 #include "grit/browser_resources.h" | 18 #include "grit/browser_resources.h" |
15 #include "grit/chromium_strings.h" | 19 #include "grit/chromium_strings.h" |
16 #include "grit/generated_resources.h" | 20 #include "grit/generated_resources.h" |
21 #include "grit/locale_settings.h" | |
22 #include "ui/base/l10n/l10n_util.h" | |
17 #include "ui/views/widget/widget.h" | 23 #include "ui/views/widget/widget.h" |
24 #include "url/gurl.h" | |
18 | 25 |
19 namespace { | 26 namespace { |
20 | 27 |
21 const char kJsScreenPath[] = "login.EulaScreen"; | 28 const char kJsScreenPath[] = "login.EulaScreen"; |
22 | 29 |
30 // Helper class to tweak display details of credits pages in the context | |
31 // of OOBE/EULA step. | |
32 class CreditsWebDialog : public chromeos::LoginWebDialog { | |
33 public: | |
34 CreditsWebDialog(Profile* profile, | |
35 gfx::NativeWindow parent_window, | |
36 int title_id, | |
37 const GURL& url) | |
38 : chromeos::LoginWebDialog(profile, NULL, parent_window, | |
39 l10n_util::GetStringUTF16(title_id), | |
40 url, | |
41 chromeos::LoginWebDialog::STYLE_BUBBLE) { | |
42 } | |
43 | |
44 virtual void OnLoadingStateChanged(content::WebContents* source) OVERRIDE { | |
45 chromeos::LoginWebDialog::OnLoadingStateChanged(source); | |
46 // Remove visual elements that we can handle in EULA page. | |
47 bool is_loading = source->IsLoading(); | |
48 if (!is_loading && source->GetWebUI()) { | |
49 source->GetWebUI()->CallJavascriptFunction( | |
50 "(function HideElements() {\n" | |
xiyuan
2014/05/13 00:28:41
nit: "\n" is not needed here and other places.
xiyuan
2014/05/13 00:28:41
nit: HideElement -> hideElement. Actually, we don
zel
2014/05/13 20:19:23
Done.
| |
51 " function injectStyles(rule) {\n" | |
52 " var css = rule,\n" | |
xiyuan
2014/05/13 00:28:41
, -> ;
zel
2014/05/13 20:19:23
Done.
| |
53 " head = document.head ||\n" | |
xiyuan
2014/05/13 00:28:41
nit: var head = ...
zel
2014/05/13 20:19:23
Done.
| |
54 " document.getElementsByTagName('head')[0],\n" | |
55 " style = document.createElement('style');\n" | |
xiyuan
2014/05/13 00:28:41
nit: var style = ...
zel
2014/05/13 20:19:23
Done.
| |
56 " style.type = 'text/css';\n" | |
57 " if (style.styleSheet){\n" | |
58 " style.styleSheet.cssText = css;\n" | |
59 " } else {\n" | |
60 " style.appendChild(document.createTextNode(css));\n" | |
61 " }\n" | |
62 " head.appendChild(style);\n" | |
63 " }\n" | |
64 " injectStyles('#print-link { display: none; }');\n" | |
65 " injectStyles('.homepage { display: none; }');\n" | |
xiyuan
2014/05/13 00:28:41
Since we are modifying about_os_credits.html to ad
zel
2014/05/13 20:19:23
Done.
| |
66 "})"); | |
67 } | |
68 } | |
69 | |
70 private: | |
71 DISALLOW_COPY_AND_ASSIGN(CreditsWebDialog); | |
72 }; | |
73 | |
74 | |
75 void ShowCreditsDialog(Profile* profile, | |
76 gfx::NativeWindow parent_window, | |
77 int title_id, | |
78 const GURL& credits_url) { | |
79 CreditsWebDialog* dialog = new CreditsWebDialog(profile, | |
80 parent_window, | |
81 title_id, | |
82 credits_url); | |
83 gfx::Rect screen_bounds(chromeos::CalculateScreenBounds(gfx::Size())); | |
84 dialog->SetDialogSize(l10n_util::GetLocalizedContentsWidthInPixels( | |
85 IDS_CREDITS_APP_DIALOG_WIDTH_PIXELS), | |
86 l10n_util::GetLocalizedContentsWidthInPixels( | |
87 IDS_CREDITS_APP_DIALOG_HEIGHT_PIXELS)); | |
88 dialog->Show(); | |
89 // The dialog object will be deleted on dialog close. | |
90 } | |
91 | |
23 } // namespace | 92 } // namespace |
24 | 93 |
25 namespace chromeos { | 94 namespace chromeos { |
26 | 95 |
27 EulaScreenHandler::EulaScreenHandler(CoreOobeActor* core_oobe_actor) | 96 EulaScreenHandler::EulaScreenHandler(CoreOobeActor* core_oobe_actor) |
28 : BaseScreenHandler(kJsScreenPath), | 97 : BaseScreenHandler(kJsScreenPath), |
29 delegate_(NULL), | 98 delegate_(NULL), |
30 core_oobe_actor_(core_oobe_actor), | 99 core_oobe_actor_(core_oobe_actor), |
31 show_on_init_(false) { | 100 show_on_init_(false) { |
32 } | 101 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
75 builder->Add("termsOfServiceLoading", IDS_TERMS_OF_SERVICE_SCREEN_LOADING); | 144 builder->Add("termsOfServiceLoading", IDS_TERMS_OF_SERVICE_SCREEN_LOADING); |
76 #if defined(ENABLE_RLZ) | 145 #if defined(ENABLE_RLZ) |
77 builder->AddF("eulaRlzDesc", | 146 builder->AddF("eulaRlzDesc", |
78 IDS_EULA_RLZ_DESCRIPTION, | 147 IDS_EULA_RLZ_DESCRIPTION, |
79 IDS_SHORT_PRODUCT_NAME, | 148 IDS_SHORT_PRODUCT_NAME, |
80 IDS_PRODUCT_NAME); | 149 IDS_PRODUCT_NAME); |
81 builder->AddF("eulaRlzEnable", | 150 builder->AddF("eulaRlzEnable", |
82 IDS_EULA_RLZ_ENABLE, | 151 IDS_EULA_RLZ_ENABLE, |
83 IDS_SHORT_PRODUCT_OS_NAME); | 152 IDS_SHORT_PRODUCT_OS_NAME); |
84 #endif | 153 #endif |
154 | |
155 | |
xiyuan
2014/05/13 00:28:41
nit: keep only one empty line.
zel
2014/05/13 20:19:23
Done.
| |
156 builder->Add("chromeCreditsLink", IDS_ABOUT_VERSION_LICENSE_EULA); | |
157 builder->Add("chromeosCreditsLink", IDS_ABOUT_CROS_VERSION_LICENSE_EULA); | |
85 } | 158 } |
86 | 159 |
87 void EulaScreenHandler::GetAdditionalParameters(base::DictionaryValue* dict) { | 160 void EulaScreenHandler::GetAdditionalParameters(base::DictionaryValue* dict) { |
88 #if defined(ENABLE_RLZ) | 161 #if defined(ENABLE_RLZ) |
89 dict->SetString("rlzEnabled", "enabled"); | 162 dict->SetString("rlzEnabled", "enabled"); |
90 #else | 163 #else |
91 dict->SetString("rlzEnabled", "disabled"); | 164 dict->SetString("rlzEnabled", "disabled"); |
92 #endif | 165 #endif |
93 } | 166 } |
94 | 167 |
(...skipping 10 matching lines...) Expand all Loading... | |
105 | 178 |
106 if (show_on_init_) { | 179 if (show_on_init_) { |
107 Show(); | 180 Show(); |
108 show_on_init_ = false; | 181 show_on_init_ = false; |
109 } | 182 } |
110 } | 183 } |
111 | 184 |
112 void EulaScreenHandler::RegisterMessages() { | 185 void EulaScreenHandler::RegisterMessages() { |
113 AddCallback("eulaOnExit", &EulaScreenHandler::HandleOnExit); | 186 AddCallback("eulaOnExit", &EulaScreenHandler::HandleOnExit); |
114 AddCallback("eulaOnLearnMore", &EulaScreenHandler::HandleOnLearnMore); | 187 AddCallback("eulaOnLearnMore", &EulaScreenHandler::HandleOnLearnMore); |
188 AddCallback("eulaOnChromeOSCredits", | |
189 &EulaScreenHandler::HandleOnChromeOSCredits); | |
190 AddCallback("eulaOnChromeCredits", | |
191 &EulaScreenHandler::HandleOnChromeCredits); | |
192 AddCallback("eulaOnLearnMore", &EulaScreenHandler::HandleOnLearnMore); | |
115 AddCallback("eulaOnInstallationSettingsPopupOpened", | 193 AddCallback("eulaOnInstallationSettingsPopupOpened", |
116 &EulaScreenHandler::HandleOnInstallationSettingsPopupOpened); | 194 &EulaScreenHandler::HandleOnInstallationSettingsPopupOpened); |
117 } | 195 } |
118 | 196 |
119 void EulaScreenHandler::OnPasswordFetched(const std::string& tpm_password) { | 197 void EulaScreenHandler::OnPasswordFetched(const std::string& tpm_password) { |
120 core_oobe_actor_->SetTpmPassword(tpm_password); | 198 core_oobe_actor_->SetTpmPassword(tpm_password); |
121 } | 199 } |
122 | 200 |
123 void EulaScreenHandler::HandleOnExit(bool accepted, bool usage_stats_enabled) { | 201 void EulaScreenHandler::HandleOnExit(bool accepted, bool usage_stats_enabled) { |
124 if (delegate_) | 202 if (delegate_) |
125 delegate_->OnExit(accepted, usage_stats_enabled); | 203 delegate_->OnExit(accepted, usage_stats_enabled); |
126 } | 204 } |
127 | 205 |
128 void EulaScreenHandler::HandleOnLearnMore() { | 206 void EulaScreenHandler::HandleOnLearnMore() { |
129 if (!help_app_.get()) | 207 if (!help_app_.get()) |
130 help_app_ = new HelpAppLauncher(GetNativeWindow()); | 208 help_app_ = new HelpAppLauncher(GetNativeWindow()); |
131 help_app_->ShowHelpTopic(HelpAppLauncher::HELP_STATS_USAGE); | 209 help_app_->ShowHelpTopic(HelpAppLauncher::HELP_STATS_USAGE); |
132 } | 210 } |
133 | 211 |
212 void EulaScreenHandler::HandleOnChromeOSCredits() { | |
213 ShowCreditsDialog( | |
214 Profile::FromBrowserContext( | |
215 web_ui()->GetWebContents()->GetBrowserContext()), | |
216 GetNativeWindow(), | |
217 IDS_ABOUT_CROS_VERSION_LICENSE_EULA, | |
218 GURL(chrome::kChromeUIOSCreditsURL)); | |
219 } | |
220 | |
221 void EulaScreenHandler::HandleOnChromeCredits() { | |
222 ShowCreditsDialog( | |
223 Profile::FromBrowserContext( | |
224 web_ui()->GetWebContents()->GetBrowserContext()), | |
225 GetNativeWindow(), | |
226 IDS_ABOUT_VERSION_LICENSE_EULA, | |
227 GURL(chrome::kChromeUICreditsURL)); | |
228 } | |
229 | |
134 void EulaScreenHandler::HandleOnInstallationSettingsPopupOpened() { | 230 void EulaScreenHandler::HandleOnInstallationSettingsPopupOpened() { |
135 if (delegate_) | 231 if (delegate_) |
136 delegate_->InitiatePasswordFetch(); | 232 delegate_->InitiatePasswordFetch(); |
137 } | 233 } |
138 | 234 |
139 } // namespace chromeos | 235 } // namespace chromeos |
OLD | NEW |