diff options
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); |