diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-13 00:47:19 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-01-13 00:47:19 +0000 |
commit | 6fd024b93e4a708a767c1892e5091e3585a5c72f (patch) | |
tree | b0add200ec27e58d517d820602ea61c75db0da71 /chrome/browser/remoting | |
parent | 346fb30b0ee89a94ea203b8e60307e10c5466a56 (diff) | |
download | chromium_src-6fd024b93e4a708a767c1892e5091e3585a5c72f.zip chromium_src-6fd024b93e4a708a767c1892e5091e3585a5c72f.tar.gz chromium_src-6fd024b93e4a708a767c1892e5091e3585a5c72f.tar.bz2 |
Bugfixes for the remoting setup wizard:
1. Proper error message when directory rejects request - this requires changes in gaia_login.html to support custom error messages.
2. Fixed login OTP-enabled account.
BUG=67218
TEST=None
Review URL: http://codereview.chromium.org/6178012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@71277 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/remoting')
4 files changed, 42 insertions, 12 deletions
diff --git a/chrome/browser/remoting/remoting_resources_source.cc b/chrome/browser/remoting/remoting_resources_source.cc index 776db3e..5c8d869 100644 --- a/chrome/browser/remoting/remoting_resources_source.cc +++ b/chrome/browser/remoting/remoting_resources_source.cc @@ -20,6 +20,7 @@ #include "grit/browser_resources.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" +#include "grit/locale_settings.h" // Define the values of standard URLs. const char RemotingResourcesSource::kInvalidPasswordHelpUrl[] = @@ -87,6 +88,15 @@ void RemotingResourcesSource::StartDataRequest(const std::string& path_raw, l10n_util::GetStringUTF16(IDS_SYNC_ERROR_SIGNING_IN)); localized_strings.SetString("captchainstructions", l10n_util::GetStringUTF16(IDS_SYNC_GAIA_CAPTCHA_INSTRUCTIONS)); + localized_strings.SetString("invalidaccesscode", + l10n_util::GetStringUTF16(IDS_SYNC_INVALID_ACCESS_CODE_LABEL)); + localized_strings.SetString("enteraccesscode", + l10n_util::GetStringUTF16(IDS_SYNC_ENTER_ACCESS_CODE_LABEL)); + localized_strings.SetString("getaccesscodehelp", + l10n_util::GetStringUTF16(IDS_SYNC_ACCESS_CODE_HELP_LABEL)); + localized_strings.SetString("getaccesscodeurl", + l10n_util::GetStringUTF16(IDS_SYNC_GET_ACCESS_CODE_URL)); + static const base::StringPiece html(ResourceBundle::GetSharedInstance() .GetRawDataResource(IDR_GAIA_LOGIN_HTML)); SetFontAndTextDirection(&localized_strings); diff --git a/chrome/browser/remoting/setup_flow_login_step.cc b/chrome/browser/remoting/setup_flow_login_step.cc index 71ee79b..ada7d2f 100644 --- a/chrome/browser/remoting/setup_flow_login_step.cc +++ b/chrome/browser/remoting/setup_flow_login_step.cc @@ -20,6 +20,11 @@ namespace remoting { static const wchar_t kLoginIFrameXPath[] = L"//iframe[@id='login']"; SetupFlowLoginStep::SetupFlowLoginStep() { } + +SetupFlowLoginStep::SetupFlowLoginStep(const string16& error_message) + : error_message_(error_message) { +} + SetupFlowLoginStep::~SetupFlowLoginStep() { } void SetupFlowLoginStep::HandleMessage(const std::string& message, @@ -41,17 +46,18 @@ void SetupFlowLoginStep::HandleMessage(const std::string& message, CHECK(parsed_value->IsType(Value::TYPE_DICTIONARY)); - std::string username, password, captcha; + std::string username, password, captcha, access_code; const DictionaryValue* result = static_cast<const DictionaryValue*>(parsed_value.get()); if (!result->GetString("user", &username) || !result->GetString("pass", &password) || - !result->GetString("captcha", &captcha)) { + !result->GetString("captcha", &captcha) || + !result->GetString("access_code", &access_code)) { NOTREACHED() << "Unable to parse auth data"; return; } - OnUserSubmittedAuth(username, password, captcha); + OnUserSubmittedAuth(username, password, captcha, access_code); } } @@ -62,14 +68,22 @@ void SetupFlowLoginStep::Cancel() { void SetupFlowLoginStep::OnUserSubmittedAuth(const std::string& user, const std::string& password, - const std::string& captcha) { + const std::string& captcha, + const std::string& access_code) { flow()->context()->login = user; // Start the authenticator. authenticator_.reset( new GaiaAuthFetcher(this, GaiaConstants::kChromeSource, flow()->profile()->GetRequestContext())); - authenticator_->StartClientLogin(user, password, + + std::string remoting_password; + if (!access_code.empty()) + remoting_password = access_code; + else + remoting_password = password; + + authenticator_->StartClientLogin(user, remoting_password, GaiaConstants::kRemotingService, "", captcha, GaiaAuthFetcher::HostedAccountsAllowed); @@ -112,6 +126,8 @@ void SetupFlowLoginStep::DoStart() { // TODO(sergeyu): Supply current login name if the service was started before. args.SetString("user", ""); args.SetBoolean("editable_user", true); + if (!error_message_.empty()) + args.SetString("error_message", error_message_); ShowGaiaLogin(args); } @@ -123,14 +139,13 @@ void SetupFlowLoginStep::ShowGaiaLogin(const DictionaryValue& args) { std::string json; base::JSONWriter::Write(&args, false, &json); - std::wstring javascript = std::wstring(L"showGaiaLogin") + - L"(" + UTF8ToWide(json) + L");"; + std::wstring javascript = std::wstring(L"showGaiaLogin(") + + UTF8ToWide(json) + L");"; ExecuteJavascriptInIFrame(kLoginIFrameXPath, javascript); } void SetupFlowLoginStep::ShowGaiaFailed(const GoogleServiceAuthError& error) { DictionaryValue args; - args.SetString("user", ""); args.SetInteger("error", error.state()); args.SetBoolean("editable_user", true); args.SetString("captchaUrl", error.captcha().image_url.spec()); diff --git a/chrome/browser/remoting/setup_flow_login_step.h b/chrome/browser/remoting/setup_flow_login_step.h index a7d8911..6a41d99 100644 --- a/chrome/browser/remoting/setup_flow_login_step.h +++ b/chrome/browser/remoting/setup_flow_login_step.h @@ -15,6 +15,7 @@ namespace remoting { class SetupFlowLoginStep : public SetupFlowStepBase, public GaiaAuthConsumer { public: SetupFlowLoginStep(); + SetupFlowLoginStep(const string16& error_message); virtual ~SetupFlowLoginStep(); // SetupFlowStep implementation. @@ -36,12 +37,15 @@ class SetupFlowLoginStep : public SetupFlowStepBase, public GaiaAuthConsumer { private: void OnUserSubmittedAuth(const std::string& user, const std::string& password, - const std::string& captcha); + const std::string& captcha, + const std::string& access_code); void ShowGaiaLogin(const DictionaryValue& args); void ShowGaiaSuccessAndSettingUp(); void ShowGaiaFailed(const GoogleServiceAuthError& error); + string16 error_message_; + // Fetcher to obtain the Chromoting Directory token. scoped_ptr<GaiaAuthFetcher> authenticator_; diff --git a/chrome/browser/remoting/setup_flow_register_step.cc b/chrome/browser/remoting/setup_flow_register_step.cc index 3adcad2..1e85388 100644 --- a/chrome/browser/remoting/setup_flow_register_step.cc +++ b/chrome/browser/remoting/setup_flow_register_step.cc @@ -41,12 +41,13 @@ void SetupFlowRegisterStep::OnRequestDone(DirectoryAddRequest::Result result, FinishStep(new SetupFlowStartHostStep()); break; case DirectoryAddRequest::ERROR_EXISTS: - LOG(INFO) << "Chromoting host is already reagistered."; + LOG(INFO) << "Chromoting host is already registered."; FinishStep(new SetupFlowStartHostStep()); break; case DirectoryAddRequest::ERROR_AUTH: - LOG(ERROR) << "Chromoting Directory didn't accept auth token."; - FinishStep(new SetupFlowLoginStep()); + LOG(ERROR) << "Access denied by Chromoting Directory."; + FinishStep(new SetupFlowLoginStep(l10n_util::GetStringUTF16( + IDS_REMOTING_REGISTRATION_ACCESS_DENIED))); break; default: LOG(ERROR) << "Chromoting Host registration failed: " |