Index: chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc |
diff --git a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc |
index 8e37a38263361cb3fef51e28b62ee094161a65af..5f4c1716a4234f3027f86a96f6fbd1a31cb5e63b 100644 |
--- a/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc |
+++ b/chrome/browser/ui/webui/chromeos/login/eula_screen_handler.cc |
@@ -6,20 +6,75 @@ |
#include <string> |
+#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/chromeos/login/help_app_launcher.h" |
+#include "chrome/browser/chromeos/login/helper.h" |
+#include "chrome/browser/chromeos/login/login_web_dialog.h" |
#include "chrome/browser/chromeos/login/screens/core_oobe_actor.h" |
#include "chrome/browser/chromeos/login/webui_login_display.h" |
#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
#include "chrome/common/url_constants.h" |
+#include "content/public/browser/web_contents.h" |
#include "grit/browser_resources.h" |
#include "grit/chromium_strings.h" |
#include "grit/generated_resources.h" |
+#include "grit/locale_settings.h" |
+#include "ui/base/l10n/l10n_util.h" |
#include "ui/views/widget/widget.h" |
+#include "url/gurl.h" |
namespace { |
const char kJsScreenPath[] = "login.EulaScreen"; |
+// Helper class to tweak display details of credits pages in the context |
+// of OOBE/EULA step. |
+class CreditsWebDialog : public chromeos::LoginWebDialog { |
+ public: |
+ CreditsWebDialog(Profile* profile, |
+ gfx::NativeWindow parent_window, |
+ int title_id, |
+ const GURL& url) |
+ : chromeos::LoginWebDialog(profile, NULL, parent_window, |
+ l10n_util::GetStringUTF16(title_id), |
+ url, |
+ chromeos::LoginWebDialog::STYLE_BUBBLE) { |
+ } |
+ |
+ virtual void OnLoadingStateChanged(content::WebContents* source) OVERRIDE { |
+ chromeos::LoginWebDialog::OnLoadingStateChanged(source); |
+ // Remove visual elements that we can handle in EULA page. |
+ bool is_loading = source->IsLoading(); |
+ if (!is_loading && source->GetWebUI()) { |
+ source->GetWebUI()->CallJavascriptFunction( |
+ "(function () {" |
+ " document.body.classList.toggle('dialog', true);" |
+ " keyboard.initializeKeyboardFlow();" |
+ "})"); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(CreditsWebDialog); |
+}; |
+ |
+void ShowCreditsDialog(Profile* profile, |
+ gfx::NativeWindow parent_window, |
+ int title_id, |
+ const GURL& credits_url) { |
+ CreditsWebDialog* dialog = new CreditsWebDialog(profile, |
+ parent_window, |
+ title_id, |
+ credits_url); |
+ gfx::Rect screen_bounds(chromeos::CalculateScreenBounds(gfx::Size())); |
+ dialog->SetDialogSize(l10n_util::GetLocalizedContentsWidthInPixels( |
+ IDS_CREDITS_APP_DIALOG_WIDTH_PIXELS), |
+ l10n_util::GetLocalizedContentsWidthInPixels( |
+ IDS_CREDITS_APP_DIALOG_HEIGHT_PIXELS)); |
+ dialog->Show(); |
+ // The dialog object will be deleted on dialog close. |
+} |
+ |
} // namespace |
namespace chromeos { |
@@ -82,6 +137,9 @@ void EulaScreenHandler::DeclareLocalizedValues( |
IDS_EULA_RLZ_ENABLE, |
IDS_SHORT_PRODUCT_OS_NAME); |
#endif |
+ |
+ builder->Add("chromeCreditsLink", IDS_ABOUT_VERSION_LICENSE_EULA); |
+ builder->Add("chromeosCreditsLink", IDS_ABOUT_CROS_VERSION_LICENSE_EULA); |
} |
void EulaScreenHandler::GetAdditionalParameters(base::DictionaryValue* dict) { |
@@ -112,6 +170,11 @@ void EulaScreenHandler::Initialize() { |
void EulaScreenHandler::RegisterMessages() { |
AddCallback("eulaOnExit", &EulaScreenHandler::HandleOnExit); |
AddCallback("eulaOnLearnMore", &EulaScreenHandler::HandleOnLearnMore); |
+ AddCallback("eulaOnChromeOSCredits", |
+ &EulaScreenHandler::HandleOnChromeOSCredits); |
+ AddCallback("eulaOnChromeCredits", |
+ &EulaScreenHandler::HandleOnChromeCredits); |
+ AddCallback("eulaOnLearnMore", &EulaScreenHandler::HandleOnLearnMore); |
AddCallback("eulaOnInstallationSettingsPopupOpened", |
&EulaScreenHandler::HandleOnInstallationSettingsPopupOpened); |
} |
@@ -131,6 +194,24 @@ void EulaScreenHandler::HandleOnLearnMore() { |
help_app_->ShowHelpTopic(HelpAppLauncher::HELP_STATS_USAGE); |
} |
+void EulaScreenHandler::HandleOnChromeOSCredits() { |
+ ShowCreditsDialog( |
+ Profile::FromBrowserContext( |
+ web_ui()->GetWebContents()->GetBrowserContext()), |
+ GetNativeWindow(), |
+ IDS_ABOUT_CROS_VERSION_LICENSE_EULA, |
+ GURL(chrome::kChromeUIOSCreditsURL)); |
+} |
+ |
+void EulaScreenHandler::HandleOnChromeCredits() { |
+ ShowCreditsDialog( |
+ Profile::FromBrowserContext( |
+ web_ui()->GetWebContents()->GetBrowserContext()), |
+ GetNativeWindow(), |
+ IDS_ABOUT_VERSION_LICENSE_EULA, |
+ GURL(chrome::kChromeUICreditsURL)); |
+} |
+ |
void EulaScreenHandler::HandleOnInstallationSettingsPopupOpened() { |
if (delegate_) |
delegate_->InitiatePasswordFetch(); |