14ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
24ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
34ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// found in the LICENSE file.
44ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
54ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/logging.h"
64ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "components/signin/core/browser/test_signin_client.h"
74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "components/signin/core/browser/webdata/token_service_table.h"
84ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "components/webdata/common/web_data_service_base.h"
94ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "components/webdata/common/web_database_service.h"
104ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "testing/gtest/include/gtest/gtest.h"
114ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS)
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ios/public/test/fake_profile_oauth2_token_service_ios_provider.h"
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace {
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Helper for testing.
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const int kInvalidProcessId = -1;
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
224ad1aa43a48567659193a298fad74f55e00b3dd9Ben MurdochTestSigninClient::TestSigninClient()
234ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch    : request_context_(new net::TestURLRequestContextGetter(
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)          base::MessageLoopProxy::current())),
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      pref_service_(NULL) {
264ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  LoadDatabase();
274ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}
284ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TestSigninClient::TestSigninClient(PrefService* pref_service)
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    : pref_service_(pref_service) {}
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
324ad1aa43a48567659193a298fad74f55e00b3dd9Ben MurdochTestSigninClient::~TestSigninClient() {}
334ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)PrefService* TestSigninClient::GetPrefs() {
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return pref_service_;
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
374ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
384ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochscoped_refptr<TokenWebData> TestSigninClient::GetDatabase() {
394ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  return database_;
404ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}
414ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
424ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochbool TestSigninClient::CanRevokeCredentials() { return true; }
434ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochstd::string TestSigninClient::GetSigninScopedDeviceId() {
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return std::string();
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid TestSigninClient::ClearSigninScopedDeviceId() {
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
514ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochnet::URLRequestContextGetter* TestSigninClient::GetURLRequestContext() {
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return request_context_.get();
534ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}
544ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch
5503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)void TestSigninClient::SetURLRequestContext(
5603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    net::URLRequestContextGetter* request_context) {
5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  request_context_ = request_context;
5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
60e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochstd::string TestSigninClient::GetProductVersion() { return ""; }
61e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
624ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochvoid TestSigninClient::LoadDatabase() {
634ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
644ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  base::FilePath path = temp_dir_.path().AppendASCII("TestWebDB");
654ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  scoped_refptr<WebDatabaseService> web_database =
664ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch      new WebDatabaseService(path,
674ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch                             base::MessageLoopProxy::current(),
684ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch                             base::MessageLoopProxy::current());
694ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  web_database->AddTable(scoped_ptr<WebDatabaseTable>(new TokenServiceTable()));
704ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  web_database->LoadDatabase();
714ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  database_ = new TokenWebData(web_database,
724ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch                               base::MessageLoopProxy::current(),
734ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch                               base::MessageLoopProxy::current(),
744ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch                               WebDataServiceBase::ProfileErrorCallback());
754ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch  database_->Init();
764ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}
77e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
78e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochbool TestSigninClient::ShouldMergeSigninCredentialsIntoCookieJar() {
79e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch  return true;
80e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch}
81e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch
826e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)scoped_ptr<SigninClient::CookieChangedCallbackList::Subscription>
836e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TestSigninClient::AddCookieChangedCallback(
846e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)    const SigninClient::CookieChangedCallback& callback) {
856e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)  return cookie_callbacks_.Add(callback);
866e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}
87a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
88a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS)
89a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochios::ProfileOAuth2TokenServiceIOSProvider* TestSigninClient::GetIOSProvider() {
90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  return GetIOSProviderAsFake();
91a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
93a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochios::FakeProfileOAuth2TokenServiceIOSProvider*
94a02191e04bc25c4935f804f2c080ae28663d096dBen MurdochTestSigninClient::GetIOSProviderAsFake() {
95a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  if (!iosProvider_) {
96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    iosProvider_.reset(new ios::FakeProfileOAuth2TokenServiceIOSProvider());
97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  }
98a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  return iosProvider_.get();
99a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
100a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif
101cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
102cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void TestSigninClient::SetSigninProcess(int process_id) {
103cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (process_id == signin_host_id_)
104cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return;
105cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DLOG_IF(WARNING, signin_host_id_ != kInvalidProcessId)
106cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      << "Replacing in-use signin process.";
107cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  signin_host_id_ = process_id;
108cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
109cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
110cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void TestSigninClient::ClearSigninProcess() {
111cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  signin_host_id_ = kInvalidProcessId;
112cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
113cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
114cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool TestSigninClient::IsSigninProcess(int process_id) const {
115cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return process_id == signin_host_id_;
116cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
117cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
118cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool TestSigninClient::HasSigninProcess() const {
119cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  return signin_host_id_ != kInvalidProcessId;
120cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
12103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
12203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)bool TestSigninClient::IsFirstRun() const {
12303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return false;
12403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
12503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
12603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)base::Time TestSigninClient::GetInstallDate() {
12703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  return base::Time::Now();
12803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}
129