blob: 304e40fca14bf66682a2f5a4d9b9210684f7fdbe [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/signin/fake_gaia_cookie_manager_service.h"
#include "base/strings/stringprintf.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
#include "components/signin/core/browser/profile_oauth2_token_service.h"
#include "google_apis/gaia/gaia_constants.h"
#include "google_apis/gaia/gaia_urls.h"
FakeGaiaCookieManagerService::FakeGaiaCookieManagerService(
OAuth2TokenService* token_service,
const std::string& source,
SigninClient* client) :
GaiaCookieManagerService(token_service, source, client),
url_fetcher_factory_(NULL) {}
void FakeGaiaCookieManagerService::Init(
net::FakeURLFetcherFactory* url_fetcher_factory) {
url_fetcher_factory_ = url_fetcher_factory;
}
void FakeGaiaCookieManagerService::SetListAccountsResponseHttpNotFound() {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
"",
net::HTTP_NOT_FOUND,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseWebLoginRequired() {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
"Info=WebLoginRequired",
net::HTTP_OK,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseNoAccounts() {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
"[\"f\", []]",
net::HTTP_OK,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseOneAccount(
const char* email, const char* gaia_id) {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
base::StringPrintf(
"[\"f\", [[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, 1, \"%s\"]]]",
email, gaia_id),
net::HTTP_OK,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseOneAccountWithExpiry(
const char* email, const char* gaia_id, bool expired) {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
base::StringPrintf(
"[\"f\", [[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, %d, \"%s\"]]]",
email, expired ? 0 : 1, gaia_id),
net::HTTP_OK,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseTwoAccounts(
const char* email1, const char* gaia_id1,
const char* email2, const char* gaia_id2) {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
base::StringPrintf(
"[\"f\", [[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, 1, \"%s\"], "
"[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, 1, \"%s\"]]]",
email1, gaia_id1, email2, gaia_id2),
net::HTTP_OK,
net::URLRequestStatus::SUCCESS);
}
void FakeGaiaCookieManagerService::SetListAccountsResponseTwoAccountsWithExpiry(
const char* email1,
const char* gaia_id1,
bool account1_expired,
const char* email2,
const char* gaia_id2,
bool account2_expired) {
DCHECK(url_fetcher_factory_);
url_fetcher_factory_->SetFakeResponse(
GaiaUrls::GetInstance()->ListAccountsURLWithSource(
GaiaConstants::kChromeSource),
base::StringPrintf(
"[\"f\", [[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, %d, \"%s\"], "
"[\"b\", 0, \"n\", \"%s\", \"p\", 0, 0, 0, 0, %d, \"%s\"]]]",
email1, account1_expired ? 0 : 1, gaia_id1, email2,
account2_expired ? 0 : 1, gaia_id2),
net::HTTP_OK, net::URLRequestStatus::SUCCESS);
}
// static
scoped_ptr<KeyedService> FakeGaiaCookieManagerService::Build(
content::BrowserContext* context) {
Profile* profile = Profile::FromBrowserContext(context);
return make_scoped_ptr(new FakeGaiaCookieManagerService(
ProfileOAuth2TokenServiceFactory::GetForProfile(profile),
GaiaConstants::kChromeSource,
ChromeSigninClientFactory::GetForProfile(profile)));
}