summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/login/webui_login_display.cc5
-rw-r--r--chrome/browser/chromeos/login/webui_login_display.h1
-rw-r--r--chrome/browser/resources/chromeos/login/screen_offline_message.css4
-rw-r--r--chrome/browser/resources/chromeos/login/screen_offline_message.html10
-rw-r--r--chrome/browser/resources/chromeos/login/screen_offline_message.js3
-rw-r--r--chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc8
-rw-r--r--chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h7
7 files changed, 36 insertions, 2 deletions
diff --git a/chrome/browser/chromeos/login/webui_login_display.cc b/chrome/browser/chromeos/login/webui_login_display.cc
index 8eaf3ed..b5c5379 100644
--- a/chrome/browser/chromeos/login/webui_login_display.cc
+++ b/chrome/browser/chromeos/login/webui_login_display.cc
@@ -159,6 +159,11 @@ void WebUILoginDisplay::LoginAsGuest() {
delegate_->LoginAsGuest();
}
+void WebUILoginDisplay::FixCaptivePortal() {
+ DCHECK(delegate_);
+ delegate_->FixCaptivePortal();
+}
+
void WebUILoginDisplay::CreateAccount() {
DCHECK(delegate_);
delegate_->CreateAccount();
diff --git a/chrome/browser/chromeos/login/webui_login_display.h b/chrome/browser/chromeos/login/webui_login_display.h
index d3f8f9d..6996972 100644
--- a/chrome/browser/chromeos/login/webui_login_display.h
+++ b/chrome/browser/chromeos/login/webui_login_display.h
@@ -75,6 +75,7 @@ class WebUILoginDisplay : public LoginDisplay,
virtual void Login(const std::string& username,
const std::string& password) OVERRIDE;
virtual void LoginAsGuest() OVERRIDE;
+ virtual void FixCaptivePortal() OVERRIDE;
virtual void CreateAccount() OVERRIDE;
virtual void RemoveUser(const std::string& username) OVERRIDE;
virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE;
diff --git a/chrome/browser/resources/chromeos/login/screen_offline_message.css b/chrome/browser/resources/chromeos/login/screen_offline_message.css
index 82269a8..21a5380 100644
--- a/chrome/browser/resources/chromeos/login/screen_offline_message.css
+++ b/chrome/browser/resources/chromeos/login/screen_offline_message.css
@@ -16,3 +16,7 @@
-webkit-margin-end: 60px;
display: block;
}
+
+#captive-portal-start-guest-session-holder {
+ margin-top: 20px;
+}
diff --git a/chrome/browser/resources/chromeos/login/screen_offline_message.html b/chrome/browser/resources/chromeos/login/screen_offline_message.html
index 9b3de90..463deea 100644
--- a/chrome/browser/resources/chromeos/login/screen_offline_message.html
+++ b/chrome/browser/resources/chromeos/login/screen_offline_message.html
@@ -2,8 +2,14 @@
<span id="offline-message-title" i18n-content="offlineMessageTitle"></span>
<div id="offline-message-body">
<span id="offline-message-text" i18n-content="offlineMessageBody"></span>
- <span id="captive-portal-message-text" hidden
- i18n-content="captivePortalMessage"></span>
+ <div id="captive-portal-message-text" hidden>
+ <span i18n-content="captivePortalMessage"></span>
+ <div id="captive-portal-start-guest-session-holder">
+ <a id="captive-portal-start-guest-session"
+ i18n-content="captivePortalStartGuestSession"
+ class="signin-link" href="#"></a>
+ </div>
+ </div>
</div>
<div id="offline-network-control" class="control-with-label">
<label for="offline-networks-list-dropdown" i18n-content="selectNetwork"
diff --git a/chrome/browser/resources/chromeos/login/screen_offline_message.js b/chrome/browser/resources/chromeos/login/screen_offline_message.js
index 7bb6c7d..c00c91a 100644
--- a/chrome/browser/resources/chromeos/login/screen_offline_message.js
+++ b/chrome/browser/resources/chromeos/login/screen_offline_message.js
@@ -37,6 +37,9 @@ cr.define('login', function() {
this.handleNetworkStateChange_.bind(this));
window.addEventListener('offline',
this.handleNetworkStateChange_.bind(this));
+ $('captive-portal-start-guest-session').onclick = function() {
+ chrome.send('fixCaptivePortal');
+ }
cr.ui.DropDown.decorate($('offline-networks-list'));
},
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index ae09608..28cfe67 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -138,6 +138,8 @@ void SigninScreenHandler::GetLocalizedStrings(
l10n_util::GetStringUTF16(IDS_LOGIN_OFFLINE_MESSAGE));
localized_strings->SetString("captivePortalMessage",
l10n_util::GetStringUTF16(IDS_LOGIN_MAYBE_CAPTIVE_PORTAL));
+ localized_strings->SetString("captivePortalStartGuestSession",
+ l10n_util::GetStringUTF16(IDS_LOGIN_FIX_CAPTIVE_PORTAL));
localized_strings->SetString("createAccount",
l10n_util::GetStringUTF16(IDS_CREATE_ACCOUNT_HTML));
localized_strings->SetString("guestSignin",
@@ -188,6 +190,8 @@ void SigninScreenHandler::RegisterMessages() {
NewCallback(this, &SigninScreenHandler::HandleGetUsers));
web_ui_->RegisterMessageCallback("launchIncognito",
NewCallback(this, &SigninScreenHandler::HandleLaunchIncognito));
+ web_ui_->RegisterMessageCallback("fixCaptivePortal",
+ NewCallback(this, &SigninScreenHandler::HandleFixCaptivePortal));
web_ui_->RegisterMessageCallback("showAddUser",
NewCallback(this, &SigninScreenHandler::HandleShowAddUser));
web_ui_->RegisterMessageCallback("shutdownSystem",
@@ -325,6 +329,10 @@ void SigninScreenHandler::HandleLaunchIncognito(const base::ListValue* args) {
delegate_->LoginAsGuest();
}
+void SigninScreenHandler::HandleFixCaptivePortal(const base::ListValue* args) {
+ delegate_->FixCaptivePortal();
+}
+
void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
DCHECK(CrosLibrary::Get()->EnsureLoaded());
CrosLibrary::Get()->GetPowerLibrary()->RequestShutdown();
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
index fe9afdc..e3d674b 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h
@@ -57,6 +57,9 @@ class SigninScreenHandlerDelegate {
// Sign in into Guest session.
virtual void LoginAsGuest() = 0;
+ // Sign in into Guest session for fixing captive portal issues.
+ virtual void FixCaptivePortal() = 0;
+
// Create a new Google account.
virtual void CreateAccount() = 0;
@@ -127,6 +130,10 @@ class SigninScreenHandler : public BaseScreenHandler,
// Handles entering bwsi mode request.
void HandleLaunchIncognito(const base::ListValue* args);
+ // Handles fix captive portal request (starts guest session with specific
+ // start URL).
+ void HandleFixCaptivePortal(const base::ListValue* args);
+
// Handles system shutdown request.
void HandleShutdownSystem(const base::ListValue* args);