testing_profile.h revision 1e9bf3e0803691d0a228da41fc608347b6db4340
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) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (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" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "components/browser_context_keyed_service/browser_context_keyed_service_factory.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockResourceContext; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions { 212385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochclass ExtensionPrefs; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace history { 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class TopSites; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 279ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class CookieMonster; 30bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdochclass URLRequestContextGetter; 31bbcdd45c55eb7c4641ab97aef9889b0fc828e7d3Ben Murdoch} 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace policy { 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochclass ProfilePolicyConnector; 35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace quota { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SpecialStoragePolicy; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)class BrowserContextDependencyManager; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandLine; 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class ExtensionSpecialStoragePolicy; 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass HostContentSettingsMap; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PrefServiceSyncable; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ProfileSyncService; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TemplateURLService; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestingPrefServiceSyncable; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class TestingProfile : public Profile { 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Profile directory name for the test user. This is "Default" on most 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // platforms but must be different on ChromeOS because a logged-in user cannot 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // use "Default" as profile directory. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Browser- and UI tests should always use this to get to the user's profile 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // directory. Unit-tests, though, should use |kInitialProfile|, which is 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // always "Default", because they are runnining without logged-in user. 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static const char kTestUserProfileDir[]; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Default constructor that cannot be used with multi-profiles. 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef std::vector<std::pair< 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserContextKeyedServiceFactory*, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserContextKeyedServiceFactory::FactoryFunction> > TestingFactories; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Helper class for building an instance of TestingProfile (allows injecting 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // mocks for various services prior to profile initialization). 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(atwilson): Remove non-default constructors and various setters in 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // favor of using the Builder API. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Builder { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Builder(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~Builder(); 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets a Delegate to be called back during profile init. This causes the 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // final initialization to be performed via a task so the caller must run 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // a MessageLoop. Caller maintains ownership of the Delegate 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and must manage its lifetime so it continues to exist until profile 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // initialization is complete. 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void SetDelegate(Delegate* delegate); 82c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds a testing factory to the TestingProfile. These testing factories 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // are applied before the ProfileKeyedServices are created. 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddTestingFactory( 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserContextKeyedServiceFactory* service_factory, 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserContextKeyedServiceFactory::FactoryFunction callback); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets the ExtensionSpecialStoragePolicy to be returned by 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // GetExtensionSpecialStoragePolicy(). 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetExtensionSpecialStoragePolicy( 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> policy); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 94c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Sets the path to the directory to be used to hold profile data. 95c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetPath(const base::FilePath& path); 96c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 97c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Sets the PrefService to be used by this profile. 98c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetPrefService(scoped_ptr<PrefServiceSyncable> prefs); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Makes the Profile being built an incognito profile. 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetIncognito(); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Sets the managed user ID (which is empty by default). If it is set to a 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // non-empty string, the profile is managed. 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void SetManagedUserId(const std::string& managed_user_id); 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates the TestingProfile using previously-set settings. 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<TestingProfile> Build(); 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // If true, Build() has already been called. 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool build_called_; 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Various staging variables where values are held until Build() is invoked. 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefServiceSyncable> pref_service_; 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy_; 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::FilePath path_; 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Delegate* delegate_; 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) bool incognito_; 120c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string managed_user_id_; 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) TestingFactories testing_factories_; 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(Builder); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Multi-profile aware constructor that takes the path to a directory managed 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // for this profile. This constructor is meant to be used by 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TestingProfileManager::CreateTestingProfile. If you need to create multi- 1292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // profile profiles, use that factory method instead of this directly. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Exception: if you need to create multi-profile profiles for testing the 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ProfileManager, then use the constructor below instead. 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit TestingProfile(const base::FilePath& path); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Multi-profile aware constructor that takes the path to a directory managed 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for this profile and a delegate. This constructor is meant to be used 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for unittesting the ProfileManager. 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile(const base::FilePath& path, Delegate* delegate); 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Full constructor allowing the setting of all possible instance data. 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Callers should use Builder::Build() instead of invoking this constructor. 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile(const base::FilePath& path, 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate, 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> extension_policy, 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool incognito, 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& managed_user_id, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const TestingFactories& factories); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TestingProfile(); 150a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the favicon service. Consequent calls would recreate the service. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateFaviconService(); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the history service. If |delete_file| is true, the history file is 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deleted first, then the HistoryService is created. As TestingProfile 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // deletes the directory containing the files used by HistoryService, this 157a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) // only matters if you're recreating the HistoryService. If |no_db| is true, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the history backend will fail to initialize its database; this is useful 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // for testing error conditions. Returns true on success. 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool CreateHistoryService(bool delete_file, bool no_db) WARN_UNUSED_RESULT; 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shuts down and nulls out the reference to HistoryService. 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DestroyHistoryService(); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates TopSites. This returns immediately, and top sites may not be 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // loaded. Use BlockUntilTopSitesLoaded to ensure TopSites has finished 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // loading. 168a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) void CreateTopSites(); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shuts down and nulls out the reference to TopSites. 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void DestroyTopSites(); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates the BookmkarBarModel. If not invoked the bookmark bar model is 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // NULL. If |delete_file| is true, the bookmarks file is deleted first, then 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // the model is created. As TestingProfile deletes the directory containing 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the files used by HistoryService, the boolean only matters if you're 1777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // recreating the BookmarkModel. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // NOTE: this does not block until the bookmarks are loaded. For that use 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // WaitForBookmarkModelToLoad(). 181c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) void CreateBookmarkModel(bool delete_file); 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Creates a WebDataService. If not invoked, the web data service is NULL. 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void CreateWebDataService(); 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Blocks until the HistoryService finishes restoring its in-memory cache. 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This is NOT invoked from CreateHistoryService. 1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) void BlockUntilHistoryIndexIsRefreshed(); 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Blocks until TopSites finishes loading. 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilTopSitesLoaded(); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) TestingPrefServiceSyncable* GetTestingPrefService(); 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // content::BrowserContext 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual base::FilePath GetPath() const OVERRIDE; 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual scoped_refptr<base::SequencedTaskRunner> GetIOTaskRunner() OVERRIDE; 198c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual bool IsOffTheRecord() const OVERRIDE; 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual content::DownloadManagerDelegate* 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetDownloadManagerDelegate() OVERRIDE; 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContext() OVERRIDE; 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContext( 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers) OVERRIDE; 2042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual net::URLRequestContextGetter* GetRequestContextForRenderProcess( 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::ResourceContext* GetResourceContext() OVERRIDE; 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual content::GeolocationPermissionContext* 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetGeolocationPermissionContext() OVERRIDE; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual quota::SpecialStoragePolicy* GetSpecialStoragePolicy() OVERRIDE; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual TestingProfile* AsTestingProfile() OVERRIDE; 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::string GetProfileName() OVERRIDE; 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // DEPRECATED, because it's fragile to change a profile from non-incognito 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to incognito after the ProfileKeyedServices have been created (some 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ProfileKeyedServices either should not exist in incognito mode, or will 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // crash when they try to get references to other services they depend on, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // but do not exist in incognito mode). 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(atwilson): Remove this API (http://crbug.com/277296). 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Changes a profile's to/from incognito mode temporarily - profile will be 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // returned to non-incognito before destruction to allow services to 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // properly shutdown. This is only supported for legacy tests - new tests 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // should create a true incognito profile using Builder::SetIncognito() or 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // by using the TestingProfile constructor that allows setting the incognito 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // flag. 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void ForceIncognito(bool force_incognito) { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) force_incognito_ = force_incognito; 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Assumes ownership. 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) virtual void SetOffTheRecordProfile(scoped_ptr<Profile> profile); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetOriginalProfile(Profile* profile); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOffTheRecordProfile() OVERRIDE; 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyOffTheRecordProfile() OVERRIDE {} 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool HasOffTheRecordProfile() OVERRIDE; 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual Profile* GetOriginalProfile() OVERRIDE; 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsManaged() OVERRIDE; 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionService* GetExtensionService() OVERRIDE; 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void SetExtensionSpecialStoragePolicy( 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExtensionSpecialStoragePolicy* extension_special_storage_policy); 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExtensionSpecialStoragePolicy* 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetExtensionSpecialStoragePolicy() OVERRIDE; 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO(ajwong): Remove this API in favor of directly retrieving the 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // CookieStore from the StoragePartition after ExtensionURLRequestContext 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // has been removed. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) net::CookieMonster* GetCookieMonster(); 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetPrefs() OVERRIDE; 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSites() OVERRIDE; 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual history::TopSites* GetTopSitesWithoutCreating() OVERRIDE; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContext() OVERRIDE; 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* GetMediaRequestContextForRenderProcess( 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int renderer_child_id) OVERRIDE; 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetRequestContextForExtensions() OVERRIDE; 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetMediaRequestContextForStoragePartition( 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::FilePath& partition_path, 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory) OVERRIDE; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestMIDISysExPermission( 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_view_id, 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int bridge_id, 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& requesting_frame, 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const MIDISysExPermissionCallback& callback) OVERRIDE; 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void CancelMIDISysExPermissionRequest( 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_process_id, 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int render_view_id, 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int bridge_id, 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& requesting_frame) OVERRIDE; 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition( 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::FilePath& partition_path, 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool in_memory, 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::ProtocolHandlerMap* protocol_handlers) OVERRIDE; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual net::SSLConfigService* GetSSLConfigService() OVERRIDE; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual HostContentSettingsMap* GetHostContentSettingsMap() OVERRIDE; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::wstring GetName(); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetName(const std::wstring& name) {} 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual std::wstring GetID(); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetID(const std::wstring& id); 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 void MergeResourceString(int message_id, 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::wstring* output_string) {} 2892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void MergeResourceInteger(int message_id, int* output_value) {} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void MergeResourceBoolean(int message_id, bool* output_value) {} 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsSameProfile(Profile *p) OVERRIDE; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::Time GetStartTime() const OVERRIDE; 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual base::FilePath last_selected_directory() OVERRIDE; 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void set_last_selected_directory(const base::FilePath& path) OVERRIDE; 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool WasCreatedByVersionOrLater(const std::string& version) OVERRIDE; 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsGuestSession() const OVERRIDE; 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetExitType(ExitType exit_type) OVERRIDE {} 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ExitType GetLastSessionExitType() OVERRIDE; 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_CHROMEOS) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ChangeAppLocale(const std::string&, 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppLocaleChangedVia) OVERRIDE { 3022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnLogin() OVERRIDE { 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void InitChromeOSPreferences() OVERRIDE { 3062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual bool IsLoginProfile() OVERRIDE; 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // defined(OS_CHROMEOS) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefProxyConfigTracker* GetProxyConfigTracker() OVERRIDE; 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Schedules a task on the history backend and runs a nested loop until the 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // task is processed. This has the effect of blocking the caller until the 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // history service processes all pending requests. 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void BlockUntilHistoryProcessesPendingRequests(); 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual chrome_browser_net::Predictor* GetNetworkPredictor() OVERRIDE; 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ClearNetworkingHistorySince( 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time time, 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const base::Closure& completion) OVERRIDE; 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual GURL GetHomePage() OVERRIDE; 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual PrefService* GetOffTheRecordPrefs() OVERRIDE; 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void set_profile_name(const std::string& profile_name) { 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) profile_name_ = profile_name; 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Time start_time_; 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PrefServiceSyncable> prefs_; 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // ref only for right type, lifecycle is managed by prefs_ 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingPrefServiceSyncable* testing_prefs_; 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a temporary directory for use by this profile. 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTempProfileDir(); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Common initialization between the two constructors. 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void Init(); 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Finishes initialization when a profile is created asynchronously. 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void FinishInit(); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a TestingPrefService and associates it with the TestingProfile. 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateTestingPrefService(); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Creates a ProfilePolicyConnector that the ProfilePolicyConnectorFactory 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // maps to this profile. 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void CreateProfilePolicyConnector(); 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Internally, this is a TestURLRequestContextGetter that creates a dummy 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // request context. Currently, only the CookieMonster is hooked up. 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<net::URLRequestContextGetter> extensions_request_context_; 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::wstring id_; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool incognito_; 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool force_incognito_; 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<Profile> incognito_profile_; 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Profile* original_profile_; 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string managed_user_id_; 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Did the last session exit cleanly? Default is true. 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool last_session_exited_cleanly_; 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<HostContentSettingsMap> host_content_settings_map_; 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FilePath last_selected_directory_; 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<history::TopSites> top_sites_; // For history and thumbnails. 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<ExtensionSpecialStoragePolicy> 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) extension_special_storage_policy_; 37568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The proxy prefs tracker. 3772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) scoped_ptr<PrefProxyConfigTracker> pref_proxy_config_tracker_; 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We use a temporary directory to store testing profile data. In a multi- 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // profile environment, this is invalid and the directory is managed by the 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TestingProfileManager. 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::ScopedTempDir temp_dir_; 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The path to this profile. This will be valid in either of the two above 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // cases. 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::FilePath profile_path_; 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // We keep a weak pointer to the dependency manager we want to notify on our 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // death. Defaults to the Singleton implementation but overridable for 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // testing. 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserContextDependencyManager* browser_context_dependency_manager_; 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Owned, but must be deleted on the IO thread so not placing in a 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // scoped_ptr<>. 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::MockResourceContext* resource_context_; 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<policy::ProfilePolicyConnector> profile_policy_connector_; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Weak pointer to a delegate for indicating that a profile was created. 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate_; 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string profile_name_; 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROME_TEST_BASE_TESTING_PROFILE_H_ 4052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)