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#ifndef COMPONENTS_SIGNIN_CORE_BROWSER_TEST_SIGNIN_CLIENT_H_ 64ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#define COMPONENTS_SIGNIN_CORE_BROWSER_TEST_SIGNIN_CLIENT_H_ 74ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 84ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/basictypes.h" 94ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/compiler_specific.h" 104ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/files/scoped_temp_dir.h" 114ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "base/memory/ref_counted.h" 12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "base/memory/scoped_ptr.h" 134ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "components/signin/core/browser/signin_client.h" 144ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#include "net/url_request/url_request_test_util.h" 154ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS) 17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include "ios/public/test/fake_profile_oauth2_token_service_ios_provider.h" 18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class PrefService; 21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 224ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// An implementation of SigninClient for use in unittests. Instantiates test 234ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// versions of the various objects that SigninClient is required to provide as 244ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch// part of its interface. 254ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdochclass TestSigninClient : public SigninClient { 264ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch public: 274ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch TestSigninClient(); 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) TestSigninClient(PrefService* pref_service); 294ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual ~TestSigninClient(); 304ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 314ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // SigninClient implementation that is specialized for unit tests. 324ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 334ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Returns NULL. 344ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // NOTE: This should be changed to return a properly-initalized PrefService 354ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // once there is a unit test that requires it. 364ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual PrefService* GetPrefs() OVERRIDE; 374ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 384ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Returns a pointer to a loaded database. 394ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual scoped_refptr<TokenWebData> GetDatabase() OVERRIDE; 404ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 414ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Returns true. 424ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual bool CanRevokeCredentials() OVERRIDE; 434ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns empty string. 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetSigninScopedDeviceId() OVERRIDE; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Does nothing. 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void ClearSigninScopedDeviceId() OVERRIDE; 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 50e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Returns the empty string. 51e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual std::string GetProductVersion() OVERRIDE; 52e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 5303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Returns a TestURLRequestContextGetter or an manually provided 5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // URLRequestContextGetter. 554ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch virtual net::URLRequestContextGetter* GetURLRequestContext() OVERRIDE; 564ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // For testing purposes, can override the TestURLRequestContextGetter created 5803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // in the default constructor. 5903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void SetURLRequestContext(net::URLRequestContextGetter* request_context); 6003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 61a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS) 62a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch virtual ios::ProfileOAuth2TokenServiceIOSProvider* GetIOSProvider() OVERRIDE; 63a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 64a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 65e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Returns true. 66e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual bool ShouldMergeSigninCredentialsIntoCookieJar() OVERRIDE; 67e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 68e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch // Does nothing. 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual scoped_ptr<CookieChangedCallbackList::Subscription> 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) AddCookieChangedCallback(const CookieChangedCallback& callback) OVERRIDE; 71e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 72a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS) 73a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ios::FakeProfileOAuth2TokenServiceIOSProvider* GetIOSProviderAsFake(); 74a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 75a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // SigninClient overrides: 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void SetSigninProcess(int host_id) OVERRIDE; 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void ClearSigninProcess() OVERRIDE; 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool IsSigninProcess(int host_id) const OVERRIDE; 80cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual bool HasSigninProcess() const OVERRIDE; 8103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual bool IsFirstRun() const OVERRIDE; 8203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) virtual base::Time GetInstallDate() OVERRIDE; 83cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 844ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch private: 854ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch // Loads the token database. 864ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch void LoadDatabase(); 874ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 884ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch base::ScopedTempDir temp_dir_; 8903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) scoped_refptr<net::URLRequestContextGetter> request_context_; 904ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch scoped_refptr<TokenWebData> database_; 91cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int signin_host_id_; 926e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) CookieChangedCallbackList cookie_callbacks_; 93cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 94cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) PrefService* pref_service_; 954ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 96a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#if defined(OS_IOS) 97a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch scoped_ptr<ios::FakeProfileOAuth2TokenServiceIOSProvider> iosProvider_; 98a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#endif 99a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 1004ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch DISALLOW_COPY_AND_ASSIGN(TestSigninClient); 1014ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch}; 1024ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch 1034ad1aa43a48567659193a298fad74f55e00b3dd9Ben Murdoch#endif // COMPONENTS_SIGNIN_CORE_BROWSER_TEST_SIGNIN_CLIENT_H_ 104