summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/login/registration_screen.cc2
-rw-r--r--chrome/browser/chromeos/login/web_page_view.cc7
-rw-r--r--chrome/browser/chromeos/login/wizard_controller.cc1
-rw-r--r--chrome/browser/dom_ui/register_page_ui.cc10
-rw-r--r--chrome/browser/resources/host_registration_page.html56
-rw-r--r--chrome/test/data/register_form.html81
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