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