| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync/sync_setup_flow.h" | 5 #include "chrome/browser/sync/sync_setup_flow.h" |
| 6 | 6 |
| 7 #include "app/gfx/font.h" | 7 #include "app/gfx/font.h" |
| 8 #include "app/gfx/font_util.h" | 8 #include "app/gfx/font_util.h" |
| 9 #include "base/histogram.h" | 9 #include "base/histogram.h" |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 48 return result; | 48 return result; |
| 49 } | 49 } |
| 50 | 50 |
| 51 void FlowHandler::RegisterMessages() { | 51 void FlowHandler::RegisterMessages() { |
| 52 dom_ui_->RegisterMessageCallback("SubmitAuth", | 52 dom_ui_->RegisterMessageCallback("SubmitAuth", |
| 53 NewCallback(this, &FlowHandler::HandleSubmitAuth)); | 53 NewCallback(this, &FlowHandler::HandleSubmitAuth)); |
| 54 dom_ui_->RegisterMessageCallback("SubmitMergeAndSync", | 54 dom_ui_->RegisterMessageCallback("SubmitMergeAndSync", |
| 55 NewCallback(this, &FlowHandler::HandleSubmitMergeAndSync)); | 55 NewCallback(this, &FlowHandler::HandleSubmitMergeAndSync)); |
| 56 } | 56 } |
| 57 | 57 |
| 58 static bool GetUsernameAndPassword(const std::string& json, | 58 static bool GetAuthData(const std::string& json, |
| 59 std::string* username, std::string* password) { | 59 std::string* username, std::string* password, std::string* captcha) { |
| 60 scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); | 60 scoped_ptr<Value> parsed_value(base::JSONReader::Read(json, false)); |
| 61 if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) | 61 if (!parsed_value.get() || !parsed_value->IsType(Value::TYPE_DICTIONARY)) |
| 62 return false; | 62 return false; |
| 63 | 63 |
| 64 DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); | 64 DictionaryValue* result = static_cast<DictionaryValue*>(parsed_value.get()); |
| 65 if (!result->GetString(L"user", username) || | 65 if (!result->GetString(L"user", username) || |
| 66 !result->GetString(L"pass", password)) { | 66 !result->GetString(L"pass", password) || |
| 67 !result->GetString(L"captcha", captcha)) { |
| 67 return false; | 68 return false; |
| 68 } | 69 } |
| 69 return true; | 70 return true; |
| 70 } | 71 } |
| 71 | 72 |
| 72 void FlowHandler::HandleSubmitAuth(const Value* value) { | 73 void FlowHandler::HandleSubmitAuth(const Value* value) { |
| 73 std::string json(GetJsonResponse(value)); | 74 std::string json(GetJsonResponse(value)); |
| 74 std::string username, password; | 75 std::string username, password, captcha; |
| 75 if (json.empty()) | 76 if (json.empty()) |
| 76 return; | 77 return; |
| 77 | 78 |
| 78 if (!GetUsernameAndPassword(json, &username, &password)) { | 79 if (!GetAuthData(json, &username, &password, &captcha)) { |
| 79 // The page sent us something that we didn't understand. | 80 // The page sent us something that we didn't understand. |
| 80 // This probably indicates a programming error. | 81 // This probably indicates a programming error. |
| 81 NOTREACHED(); | 82 NOTREACHED(); |
| 82 return; | 83 return; |
| 83 } | 84 } |
| 84 | 85 |
| 85 if (flow_) | 86 if (flow_) |
| 86 flow_->OnUserSubmittedAuth(username, password); | 87 flow_->OnUserSubmittedAuth(username, password, captcha); |
| 87 } | 88 } |
| 88 | 89 |
| 89 void FlowHandler::HandleSubmitMergeAndSync(const Value* value) { | 90 void FlowHandler::HandleSubmitMergeAndSync(const Value* value) { |
| 90 if (flow_) | 91 if (flow_) |
| 91 flow_->OnUserAcceptedMergeAndSync(); | 92 flow_->OnUserAcceptedMergeAndSync(); |
| 92 } | 93 } |
| 93 | 94 |
| 94 // Called by SyncSetupFlow::Advance. | 95 // Called by SyncSetupFlow::Advance. |
| 95 void FlowHandler::ShowGaiaLogin(const DictionaryValue& args) { | 96 void FlowHandler::ShowGaiaLogin(const DictionaryValue& args) { |
| 96 std::string json; | 97 std::string json; |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 216 DictionaryValue* args) { | 217 DictionaryValue* args) { |
| 217 const GoogleServiceAuthError& error = service->GetAuthError(); | 218 const GoogleServiceAuthError& error = service->GetAuthError(); |
| 218 if (!service->last_attempted_user_email().empty()) { | 219 if (!service->last_attempted_user_email().empty()) { |
| 219 args->SetString(L"user", service->last_attempted_user_email()); | 220 args->SetString(L"user", service->last_attempted_user_email()); |
| 220 args->SetInteger(L"error", error.state()); | 221 args->SetInteger(L"error", error.state()); |
| 221 } else { | 222 } else { |
| 222 std::wstring user(UTF16ToWide(service->GetAuthenticatedUsername())); | 223 std::wstring user(UTF16ToWide(service->GetAuthenticatedUsername())); |
| 223 args->SetString(L"user", user); | 224 args->SetString(L"user", user); |
| 224 args->SetInteger(L"error", user.empty() ? 0 : error.state()); | 225 args->SetInteger(L"error", user.empty() ? 0 : error.state()); |
| 225 } | 226 } |
| 227 |
| 228 args->SetString(L"captchaUrl", error.captcha().image_url.spec()); |
| 226 } | 229 } |
| 227 | 230 |
| 228 void SyncSetupFlow::GetDOMMessageHandlers( | 231 void SyncSetupFlow::GetDOMMessageHandlers( |
| 229 std::vector<DOMMessageHandler*>* handlers) const { | 232 std::vector<DOMMessageHandler*>* handlers) const { |
| 230 handlers->push_back(flow_handler_); | 233 handlers->push_back(flow_handler_); |
| 231 } | 234 } |
| 232 | 235 |
| 233 bool SyncSetupFlow::ShouldAdvance(SyncSetupWizard::State state) { | 236 bool SyncSetupFlow::ShouldAdvance(SyncSetupWizard::State state) { |
| 234 switch (state) { | 237 switch (state) { |
| 235 case SyncSetupWizard::GAIA_LOGIN: | 238 case SyncSetupWizard::GAIA_LOGIN: |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 if (!b) | 305 if (!b) |
| 303 return NULL; | 306 return NULL; |
| 304 | 307 |
| 305 FlowHandler* handler = new FlowHandler(); | 308 FlowHandler* handler = new FlowHandler(); |
| 306 SyncSetupFlow* flow = new SyncSetupFlow(start, end, json_args, | 309 SyncSetupFlow* flow = new SyncSetupFlow(start, end, json_args, |
| 307 container, handler, service); | 310 container, handler, service); |
| 308 handler->set_flow(flow); | 311 handler->set_flow(flow); |
| 309 b->BrowserShowHtmlDialog(flow, NULL); | 312 b->BrowserShowHtmlDialog(flow, NULL); |
| 310 return flow; | 313 return flow; |
| 311 } | 314 } |
| OLD | NEW |