diff options
-rw-r--r-- | chrome/browser/chromeos/login/registration_screen.cc | 2 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/web_page_view.cc | 7 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/wizard_controller.cc | 1 | ||||
-rw-r--r-- | chrome/browser/dom_ui/register_page_ui.cc | 10 | ||||
-rw-r--r-- | chrome/browser/resources/host_registration_page.html | 56 | ||||
-rw-r--r-- | chrome/test/data/register_form.html | 81 |
6 files changed, 136 insertions, 21 deletions
diff --git a/chrome/browser/chromeos/login/registration_screen.cc b/chrome/browser/chromeos/login/registration_screen.cc index 40348d7..79d2b45 100644 --- a/chrome/browser/chromeos/login/registration_screen.cc +++ b/chrome/browser/chromeos/login/registration_screen.cc @@ -106,9 +106,11 @@ void RegistrationScreen::OnPageLoadFailed(const std::string& url) { PageTransition::Type transition) { if (url.spec() == kRegistrationSuccessUrl) { source->Stop(); + LOG(INFO) << "Registration form completed."; CloseScreen(ScreenObserver::REGISTRATION_SUCCESS); } else if (url.spec() == kRegistrationSkippedUrl) { source->Stop(); + LOG(INFO) << "Registration form skipped."; CloseScreen(ScreenObserver::REGISTRATION_SKIPPED); } else { source->Stop(); diff --git a/chrome/browser/chromeos/login/web_page_view.cc b/chrome/browser/chromeos/login/web_page_view.cc index daac923..89e57e0 100644 --- a/chrome/browser/chromeos/login/web_page_view.cc +++ b/chrome/browser/chromeos/login/web_page_view.cc @@ -7,6 +7,7 @@ #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/callback.h" +#include "base/logging.h" #include "base/string_util.h" #include "base/time.h" #include "base/values.h" @@ -63,15 +64,18 @@ void WizardWebPageViewTabContents::DidFailProvisionalLoadWithError( int error_code, const GURL& url, bool showing_repost_interstitial) { + LOG(ERROR) << "Page load failed. URL = " << url << ", error: " << error_code; page_delegate_->OnPageLoadFailed(url.spec()); } void WizardWebPageViewTabContents::DidDisplayInsecureContent() { - page_delegate_->OnPageLoadFailed(""); + LOG(ERROR) << "Page load failed: did display insecure content"; + page_delegate_->OnPageLoadFailed("Displayed insecure content"); } void WizardWebPageViewTabContents::DidRunInsecureContent( const std::string& security_origin) { + LOG(ERROR) << "Page load failed: did run insecure content"; page_delegate_->OnPageLoadFailed(security_origin); } @@ -80,6 +84,7 @@ void WizardWebPageViewTabContents::DocumentLoadedInFrame() { } void WizardWebPageViewTabContents::OnContentBlocked(ContentSettingsType type) { + LOG(ERROR) << "Page load failed: content blocked. Type: " << type; page_delegate_->OnPageLoadFailed(""); } diff --git a/chrome/browser/chromeos/login/wizard_controller.cc b/chrome/browser/chromeos/login/wizard_controller.cc index 8e676fe..41bcfbe 100644 --- a/chrome/browser/chromeos/login/wizard_controller.cc +++ b/chrome/browser/chromeos/login/wizard_controller.cc @@ -574,6 +574,7 @@ void WizardController::MarkOobeCompleted() { /////////////////////////////////////////////////////////////////////////////// // WizardController, chromeos::ScreenObserver overrides: void WizardController::OnExit(ExitCodes exit_code) { + LOG(INFO) << "Wizard screen exit code: " << exit_code; switch (exit_code) { case LOGIN_SIGN_IN_SELECTED: OnLoginSignInSelected(); diff --git a/chrome/browser/dom_ui/register_page_ui.cc b/chrome/browser/dom_ui/register_page_ui.cc index 3cffc7a..7f6f196 100644 --- a/chrome/browser/dom_ui/register_page_ui.cc +++ b/chrome/browser/dom_ui/register_page_ui.cc @@ -119,9 +119,6 @@ void RegisterPageUIHTMLSource::StartDataRequest(const std::string& path, ResourceBundle::GetSharedInstance().GetRawDataResource( IDR_HOST_REGISTRATION_PAGE_HTML)); - // TODO(nkostylev): Embed registration form URL from startup manifest. - // http://crosbug.com/4645. - scoped_refptr<RefCountedBytes> html_bytes(new RefCountedBytes); html_bytes->data.resize(register_html.size()); std::copy(register_html.begin(), @@ -166,8 +163,10 @@ void RegisterPageHandler::HandleGetRegistrationUrl(const Value* value) { #if defined(OS_CHROMEOS) if (WizardController::default_controller() && WizardController::default_controller()->GetCustomization()) { - StringValue url_value(WizardController::default_controller()-> - GetCustomization()->registration_url()); + const std::string& url = WizardController::default_controller()-> + GetCustomization()->registration_url(); + LOG(INFO) << "Loading registration form with URL: " << url; + StringValue url_value(url); dom_ui_->CallJavascriptFunction(L"setRegistrationUrl", url_value); } else { LOG(ERROR) << "Startup manifest not defined."; @@ -225,6 +224,7 @@ void RegisterPageHandler::SendUserInfo() { value.SetString(L"user_first_name", L""); value.SetString(L"user_last_name", L""); + LOG(INFO) << "Sending user info to host page"; dom_ui_->CallJavascriptFunction(L"setUserInfo", value); #endif } diff --git a/chrome/browser/resources/host_registration_page.html b/chrome/browser/resources/host_registration_page.html index 101e812..3df0f95 100644 --- a/chrome/browser/resources/host_registration_page.html +++ b/chrome/browser/resources/host_registration_page.html @@ -1,37 +1,63 @@ <!DOCTYPE HTML> -<html id="t"> +<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Register your computer with Google</title> -<script> +<style> +#form { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + overflow: hidden; + width: 100%; + height: 100%; + background: -webkit-gradient(linear, left top, left bottom, from(#FAFBFB), to(#CCD1D4)); +} +</style> +<script> document.addEventListener('DOMContentLoaded', load); +window.addEventListener('message', processMessage); +var hostPageDomain = 'chrome://register'; +var registerDoneUrl = 'cros://register/success'; +var registerSkipUrl = 'cros://register/skipped'; +var registrationUrl = ''; function load() { chrome.send('getRegistrationUrl', []); } - function $(o) { return document.getElementById(o); } -function setRegistrationUrl(url) { - // TODO(nkostylev): Load URL in iframe. +function processMessage(e) { + if (e.data.domain != registrationUrl) + return; + + if (e.data.type == 'get_user_info') { + chrome.send('getUserInfo', []); + } else if (e.data.type == 'complete_registration') { + location.replace(e.data.payload.registration_status ? registerDoneUrl : + registerSkipUrl); + } } -// Called when document has been loaded in an iframe. -function onFormLoaded() { - chrome.send('getUserInfo', []); +function setRegistrationUrl(url) { + registrationUrl = url; + $('form').contentWindow.location.href = url; } -function setUserInfo(data) { - // TODO(nkostylev): Pass system/user data to registration iframe. +function setUserInfo(userInfo) { + var msg = { + type: 'set_user_info', + domain: hostPageDomain, + payload: userInfo + }; + $('form').contentWindow.postMessage(msg, registrationUrl); } - </script> </head> -<body> - <!-- TODO(nkostylev): Redirect to cros://register/[success|skipped]. --> - <!-- TODO(nkostylev): Add an iframe with an actual registration page. --> -</body> +<body><iframe id="form" frameborder="0"></iframe></body> </html> diff --git a/chrome/test/data/register_form.html b/chrome/test/data/register_form.html new file mode 100644 index 0000000..5793a94 --- /dev/null +++ b/chrome/test/data/register_form.html @@ -0,0 +1,81 @@ +<!DOCTYPE html> +<!-- Test page for Chrome OS register form that is hosted at OEM partner site + and is loaded in chrome://register host page --> +<html><head> +<title>Registration test form</title> +<style> + +#main { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + padding: 10px; + overflow: hidden; + background: -webkit-gradient(linear, left top, left bottom, from(#FAFBFB), to(#CCD1D4)); +} +</style> +<script> +document.addEventListener('DOMContentLoaded', load); +var hostUrl = 'chrome://register'; + +window.addEventListener('message', processMessage); + +function $(o) { + return document.getElementById(o); +} + +function load() { + var msg = { + type: 'get_user_info', + domain: location.href, + payload: {} + }; + window.parent.postMessage(msg, hostUrl); + $('url').textContent = location.href; +} + +function processMessage(e) { + // TODO(nkostylev): e.origin is passed as null and not checked. + // Probably because it's served from chrome:// scheme. + if (e.data.domain != hostUrl) + return; + + if (e.data.type == 'set_user_info') { + // TODO(nkostylev): Extract all available system/user info. + // http://crosbug.com/4813 + var info = e.data.payload; + $('info').textContent = 'OS: ' + info.os_name + ', ' + + info.os_version + ' SKU:' + info.system_sku; + } + + $('messageInfo').textContent = 'e.origin: ' + e.origin + + ', e.data.domain: ' + e.data.domain; +} + +function registration(result) { + var msg = { + type: 'complete_registration', + domain: location.href, + payload: { + registration_status: result + } + }; + var parent = window.parent; + parent.postMessage(msg, hostUrl); +} +</script> +</head> +<body> +<div id="main"> + <h3>Register your computer with Google</h3> + <i>This registration form is hosted at </i><div id="url"></div><br> + <i>User info received from host page:</i><br> + <div id="info"></div><br> + <i>Message info:</i><br> + <div id="messageInfo"></div><br> + <input type="button" value="Skip" onclick="registration(false);"> + <input type="button" value="Register" onclick="registration(true);"> +</div> +</body></html>
\ No newline at end of file |