15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_TEST_BASE_TESTING_PROFILE_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_TEST_BASE_TESTING_PROFILE_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/scoped_temp_dir.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/profiles/profile.h" 14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "components/domain_reliability/clear_mode.h" 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockResourceContext; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TopSites; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CookieMonster; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestContextGetter; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace policy { 31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)class PolicyService; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ProfilePolicyConnector; 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SchemaRegistryService; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace quota { 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpecialStoragePolicy; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class BrowserContextDependencyManager; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ExtensionSpecialStoragePolicy; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostContentSettingsMap; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class PrefServiceSyncable; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class TestingPrefServiceSyncable; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestingProfile : public Profile { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Profile directory name for the test user. This is "Default" on most 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // platforms but must be different on ChromeOS because a logged-in user cannot 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use "Default" as profile directory. 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Browser- and UI tests should always use this to get to the user's profile 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // directory. Unit-tests, though, should use |kInitialProfile|, which is 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // always "Default", because they are runnining without logged-in user. 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kTestUserProfileDir[]; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Default constructor that cannot be used with multi-profiles. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile(); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) typedef std::vector<std::pair< 60a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BrowserContextKeyedServiceFactory*, 61a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BrowserContextKeyedServiceFactory::TestingFactoryFunction> > 62a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) TestingFactories; 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper class for building an instance of TestingProfile (allows injecting 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // mocks for various services prior to profile initialization). 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(atwilson): Remove non-default constructors and various setters in 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // favor of using the Builder API. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Builder { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Builder(); 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Builder(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Sets a Delegate to be called back during profile init. This causes the 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // final initialization to be performed via a task so the caller must run 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // a MessageLoop. Caller maintains ownership of the Delegate 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and must manage its lifetime so it continues to exist until profile 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialization is complete. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetDelegate(Delegate* delegate); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 803551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Adds a testing factory to the TestingProfile. These testing factories 813551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // are applied before the ProfileKeyedServices are created. 823551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void AddTestingFactory( 833551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) BrowserContextKeyedServiceFactory* service_factory, 84a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) BrowserContextKeyedServiceFactory::TestingFactoryFunction callback); 853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the ExtensionSpecialStoragePolicy to be returned by 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GetExtensionSpecialStoragePolicy(). 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetExtensionSpecialStoragePolicy( 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> policy); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the path to the directory to be used to hold profile data. 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetPath(const base::FilePath& path); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the PrefService to be used by this profile. 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetPrefService(scoped_ptr<PrefServiceSyncable> prefs); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Makes the Profile being built an incognito profile. 983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void SetIncognito(); 993551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Makes the Profile being built a guest profile. 101a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetGuestSession(); 102a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // Sets the supervised user ID (which is empty by default). If it is set to 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) // a non-empty string, the profile is supervised. 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) void SetSupervisedUserId(const std::string& supervised_user_id); 1068bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 107a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // Sets the PolicyService to be used by this profile. 108a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void SetPolicyService(scoped_ptr<policy::PolicyService> policy_service); 109a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the TestingProfile using previously-set settings. 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<TestingProfile> Build(); 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // If true, Build() has already been called. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool build_called_; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Various staging variables where values are held until Build() is invoked. 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> pref_service_; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy_; 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path_; 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate_; 1223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool incognito_; 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool guest_session_; 124f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string supervised_user_id_; 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<policy::PolicyService> policy_service_; 1263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) TestingFactories testing_factories_; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Builder); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Multi-profile aware constructor that takes the path to a directory managed 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for this profile. This constructor is meant to be used by 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestingProfileManager::CreateTestingProfile. If you need to create multi- 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile profiles, use that factory method instead of this directly. 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exception: if you need to create multi-profile profiles for testing the 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ProfileManager, then use the constructor below instead. 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TestingProfile(const base::FilePath& path); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Multi-profile aware constructor that takes the path to a directory managed 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for this profile and a delegate. This constructor is meant to be used 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for unittesting the ProfileManager. 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfile(const base::FilePath& path, Delegate* delegate); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Full constructor allowing the setting of all possible instance data. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callers should use Builder::Build() instead of invoking this constructor. 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingProfile(const base::FilePath& path, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, 1493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs, 1503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool incognito, 151a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool guest_session, 152f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) const std::string& supervised_user_id, 153a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<policy::PolicyService> policy_service, 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const TestingFactories& factories); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestingProfile(); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the favicon service. Consequent calls would recreate the service. 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateFaviconService(); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the history service. If |delete_file| is true, the history file is 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deleted first, then the HistoryService is created. As TestingProfile 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deletes the directory containing the files used by HistoryService, this 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // only matters if you're recreating the HistoryService. If |no_db| is true, 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the history backend will fail to initialize its database; this is useful 166bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch // for testing error conditions. Returns true on success. 167bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch bool CreateHistoryService(bool delete_file, bool no_db) WARN_UNUSED_RESULT; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shuts down and nulls out the reference to HistoryService. 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DestroyHistoryService(); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates TopSites. This returns immediately, and top sites may not be 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // loaded. Use BlockUntilTopSitesLoaded to ensure TopSites has finished 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // loading. 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTopSites(); 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shuts down and nulls out the reference to TopSites. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DestroyTopSites(); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 180cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) // Creates the BookmarkBarModel. If not invoked the bookmark bar model is 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NULL. If |delete_file| is true, the bookmarks file is deleted first, then 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the model is created. As TestingProfile deletes the directory containing 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the files used by HistoryService, the boolean only matters if you're 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // recreating the BookmarkModel. 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NOTE: this does not block until the bookmarks are loaded. For that use 18758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) // WaitForBookmarkModelToLoad(). 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateBookmarkModel(bool delete_file); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a WebDataService. If not invoked, the web data service is NULL. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateWebDataService(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Blocks until the HistoryService finishes restoring its in-memory cache. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // This is NOT invoked from CreateHistoryService. 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilHistoryIndexIsRefreshed(); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Blocks until TopSites finishes loading. 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilTopSitesLoaded(); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2000529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch // Allow setting a profile as Guest after-the-fact to simplify some tests. 2010529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch void SetGuestSession(bool guest); 2020529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch 2032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* GetTestingPrefService(); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // content::BrowserContext 2067dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual base::FilePath GetPath() const OVERRIDE; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() OVERRIDE; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsOffTheRecord() const OVERRIDE; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::DownloadManagerDelegate* 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDownloadManagerDelegate() OVERRIDE; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContext( 213a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 214cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::ResourceContext* GetResourceContext() OVERRIDE; 218cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual content::BrowserPluginGuestManager* GetGuestManager() OVERRIDE; 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; 220f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual content::PushMessagingService* GetPushMessagingService() OVERRIDE; 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual TestingProfile* AsTestingProfile() OVERRIDE; 223a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 224a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Profile 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetProfileName() OVERRIDE; 226a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ProfileType GetProfileType() const OVERRIDE; 2273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // DEPRECATED, because it's fragile to change a profile from non-incognito 2293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // to incognito after the ProfileKeyedServices have been created (some 2303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // ProfileKeyedServices either should not exist in incognito mode, or will 2313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // crash when they try to get references to other services they depend on, 2323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // but do not exist in incognito mode). 2333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // TODO(atwilson): Remove this API (http://crbug.com/277296). 2343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // 2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Changes a profile's to/from incognito mode temporarily - profile will be 2363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // returned to non-incognito before destruction to allow services to 2373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // properly shutdown. This is only supported for legacy tests - new tests 2383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // should create a true incognito profile using Builder::SetIncognito() or 2393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // by using the TestingProfile constructor that allows setting the incognito 2403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // flag. 2413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) void ForceIncognito(bool force_incognito) { 2423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) force_incognito_ = force_incognito; 2433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) } 2443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Assumes ownership. 2463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void SetOffTheRecordProfile(scoped_ptr<Profile> profile); 2472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetOriginalProfile(Profile* profile); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOffTheRecordProfile() OVERRIDE; 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyOffTheRecordProfile() OVERRIDE {} 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasOffTheRecordProfile() OVERRIDE; 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOriginalProfile() OVERRIDE; 252f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) virtual bool IsSupervised() OVERRIDE; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionService* GetExtensionService() OVERRIDE; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetExtensionSpecialStoragePolicy( 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExtensionSpecialStoragePolicy* extension_special_storage_policy); 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionSpecialStoragePolicy* 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExtensionSpecialStoragePolicy() OVERRIDE; 258a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // TODO(ajwong): Remove this API in favor of directly retrieving the 259a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // CookieStore from the StoragePartition after ExtensionURLRequestContext 260a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // has been removed. 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::CookieMonster* GetCookieMonster(); 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetPrefs() OVERRIDE; 2642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSites() OVERRIDE; 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSitesWithoutCreating() OVERRIDE; 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE; 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess( 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRequestContextForExtensions() OVERRIDE; 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMediaRequestContextForStoragePartition( 2752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory) OVERRIDE; 2772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( 2782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::FilePath& partition_path, 2792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool in_memory, 280a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers, 281cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::SSLConfigService* GetSSLConfigService() OVERRIDE; 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual HostContentSettingsMap* GetHostContentSettingsMap() OVERRIDE; 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_last_session_exited_cleanly(bool value) { 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) last_session_exited_cleanly_ = value; 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsSameProfile(Profile *p) OVERRIDE; 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::Time GetStartTime() const OVERRIDE; 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual base::FilePath last_selected_directory() OVERRIDE; 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void set_last_selected_directory(const base::FilePath& path) OVERRIDE; 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WasCreatedByVersionOrLater(const std::string& version) OVERRIDE; 2927dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch virtual bool IsGuestSession() const OVERRIDE; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetExitType(ExitType exit_type) OVERRIDE {} 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExitType GetLastSessionExitType() OVERRIDE; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ChangeAppLocale(const std::string&, 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppLocaleChangedVia) OVERRIDE { 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnLogin() OVERRIDE { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void InitChromeOSPreferences() OVERRIDE { 3024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) } 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefProxyConfigTracker* GetProxyConfigTracker() OVERRIDE; 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Schedules a task on the history backend and runs a nested loop until the 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // task is processed. This has the effect of blocking the caller until the 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // history service processes all pending requests. 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilHistoryProcessesPendingRequests(); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual chrome_browser_net::Predictor* GetNetworkPredictor() OVERRIDE; 31346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) virtual DevToolsNetworkController* GetDevToolsNetworkController() OVERRIDE; 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearNetworkingHistorySince( 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time time, 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion) OVERRIDE; 317cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) virtual void ClearDomainReliabilityMonitor( 318cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) domain_reliability::DomainReliabilityClearMode mode, 319cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const base::Closure& completion) OVERRIDE; 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual GURL GetHomePage() OVERRIDE; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetOffTheRecordPrefs() OVERRIDE; 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 32468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) void set_profile_name(const std::string& profile_name) { 32568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) profile_name_ = profile_name; 32668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) } 32768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time start_time_; 3302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs_; 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ref only for right type, lifecycle is managed by prefs_ 3322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingPrefServiceSyncable* testing_prefs_; 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a temporary directory for use by this profile. 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTempProfileDir(); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Common initialization between the two constructors. 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Init(); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Finishes initialization when a profile is created asynchronously. 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FinishInit(); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a TestingPrefService and associates it with the TestingProfile. 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTestingPrefService(); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates a ProfilePolicyConnector that the ProfilePolicyConnectorFactory 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // maps to this profile. 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CreateProfilePolicyConnector(); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Internally, this is a TestURLRequestContextGetter that creates a dummy 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // request context. Currently, only the CookieMonster is hooked up. 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<net::URLRequestContextGetter> extensions_request_context_; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool incognito_; 3563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool force_incognito_; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<Profile> incognito_profile_; 3582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Profile* original_profile_; 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 360a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) bool guest_session_; 361a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 362f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) std::string supervised_user_id_; 3638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Did the last session exit cleanly? Default is true. 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool last_session_exited_cleanly_; 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<HostContentSettingsMap> host_content_settings_map_; 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath last_selected_directory_; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_special_storage_policy_; 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The proxy prefs tracker. 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_; 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We use a temporary directory to store testing profile data. In a multi- 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile environment, this is invalid and the directory is managed by the 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestingProfileManager. 3812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::ScopedTempDir temp_dir_; 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The path to this profile. This will be valid in either of the two above 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cases. 3842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath profile_path_; 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We keep a weak pointer to the dependency manager we want to notify on our 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // death. Defaults to the Singleton implementation but overridable for 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // testing. 38990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) BrowserContextDependencyManager* browser_context_dependency_manager_; 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 391a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // Owned, but must be deleted on the IO thread so not placing in a 392a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch // scoped_ptr<>. 393a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch content::MockResourceContext* resource_context_; 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#if defined(ENABLE_CONFIGURATION_POLICY) 396f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) scoped_ptr<policy::SchemaRegistryService> schema_registry_service_; 397f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif 398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; 399c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Weak pointer to a delegate for indicating that a profile was created. 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate_; 40268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 40368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) std::string profile_name_; 404a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 405a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) scoped_ptr<policy::PolicyService> policy_service_; 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_TEST_BASE_TESTING_PROFILE_H_ 409