| Index: chrome/browser/remoting/setup_flow_login_step.cc
|
| diff --git a/chrome/browser/remoting/setup_flow_login_step.cc b/chrome/browser/remoting/setup_flow_login_step.cc
|
| index 71ee79be700f0e26861002d7675fc4f0e515a846..ada7d2f5d5ff4be7bb42bc486ab5d2c76cf0eb1c 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());
|
|
|