Chromium Code Reviews| Index: google_apis/gaia/fake_gaia.cc |
| diff --git a/google_apis/gaia/fake_gaia.cc b/google_apis/gaia/fake_gaia.cc |
| index 1bf87ca7fbb5018ed7d9113a807dd26d67604b84..d2478c2f8c635399c213a64db53c8bd764c0ecbf 100644 |
| --- a/google_apis/gaia/fake_gaia.cc |
| +++ b/google_apis/gaia/fake_gaia.cc |
| @@ -136,6 +136,23 @@ FakeGaia::MergeSessionParams::MergeSessionParams() { |
| FakeGaia::MergeSessionParams::~MergeSessionParams() { |
| } |
| +void FakeGaia::MergeSessionParams::Update(const MergeSessionParams& update) { |
| + auto maybe_update_field = |
| + [this, &update](std::string MergeSessionParams::*field) { |
| + if (!(update.*field).empty()) |
| + this->*field = update.*field; |
| + }; |
| + maybe_update_field(&MergeSessionParams::auth_sid_cookie); |
| + maybe_update_field(&MergeSessionParams::auth_lsid_cookie); |
| + maybe_update_field(&MergeSessionParams::auth_code); |
| + maybe_update_field(&MergeSessionParams::refresh_token); |
| + maybe_update_field(&MergeSessionParams::access_token); |
| + maybe_update_field(&MergeSessionParams::gaia_uber_token); |
| + maybe_update_field(&MergeSessionParams::session_sid_cookie); |
| + maybe_update_field(&MergeSessionParams::session_lsid_cookie); |
| + maybe_update_field(&MergeSessionParams::email); |
| +} |
| + |
| FakeGaia::FakeGaia() : issue_oauth_code_cookie_(false) { |
| base::FilePath source_root_dir; |
| PathService::Get(base::DIR_SOURCE_ROOT, &source_root_dir); |
| @@ -171,6 +188,10 @@ void FakeGaia::SetMergeSessionParams( |
| merge_session_params_ = params; |
| } |
| +void FakeGaia::UpdateMergeSessionParams(const MergeSessionParams& params) { |
| + merge_session_params_.Update(params); |
| +} |
| + |
| void FakeGaia::MapEmailToGaiaId(const std::string& email, |
| const std::string& gaia_id) { |
| DCHECK(!email.empty()); |
| @@ -306,6 +327,18 @@ bool FakeGaia::GetQueryParameter(const std::string& query, |
| return net::GetValueForKeyInQuery(query_url, key, value); |
| } |
| +std::string FakeGaia::GetDeviceIdByRefreshToken( |
| + const std::string& refresh_token) const { |
| + auto it = refresh_token_to_device_id_map_.find(refresh_token); |
|
achuithb
2015/05/26 06:28:21
const? Not sure if it works
dzhioev (left Google)
2015/05/26 21:18:15
Done.
|
| + return it != refresh_token_to_device_id_map_.end() ? it->second |
| + : std::string(); |
| +} |
| + |
| +void FakeGaia::SetRefreshTokenToDeviceIdMap( |
|
achuithb
2015/05/26 06:28:21
Shouldn't this be set_refresh_token_to_device_id_m
dzhioev (left Google)
2015/05/26 21:18:15
Inline setters are only allowed for trivial types.
|
| + const RefreshTokenToDeviceIdMap& refresh_token_to_device_id_map) { |
| + refresh_token_to_device_id_map_ = refresh_token_to_device_id_map; |
| +} |
| + |
| void FakeGaia::HandleMergeSession(const HttpRequest& request, |
| BasicHttpResponse* http_response) { |
| http_response->set_code(net::HTTP_UNAUTHORIZED); |
| @@ -602,9 +635,27 @@ void FakeGaia::HandleAuthToken(const HttpRequest& request, |
| return; |
| } |
| + std::string device_id; |
| + if (GetQueryParameter(request.content, "device_id", &device_id)) { |
| + std::string device_type; |
| + if (!GetQueryParameter(request.content, "device_type", &device_type)) { |
| + http_response->set_code(net::HTTP_BAD_REQUEST); |
| + LOG(ERROR) << "'device_type' should be set if 'device_id' is set."; |
| + return; |
| + } |
| + if (device_type != "chrome") { |
| + http_response->set_code(net::HTTP_BAD_REQUEST); |
| + LOG(ERROR) << "'device_type' is not 'chrome'."; |
| + return; |
| + } |
| + } |
| + |
| base::DictionaryValue response_dict; |
| response_dict.SetString("refresh_token", |
| merge_session_params_.refresh_token); |
| + if (!device_id.empty()) |
| + refresh_token_to_device_id_map_[merge_session_params_.refresh_token] = |
| + device_id; |
| response_dict.SetString("access_token", |
| merge_session_params_.access_token); |
| response_dict.SetInteger("expires_in", 3600); |