| Index: chrome/browser/profiles/profile_io_data.h | 
| diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h | 
| index bb1e049bc83159c91f6742b00dc882099c4e3cba..6f921de87741d208be9cb609bfb683f417ea9840 100644 | 
| --- a/chrome/browser/profiles/profile_io_data.h | 
| +++ b/chrome/browser/profiles/profile_io_data.h | 
| @@ -6,23 +6,25 @@ | 
| #define CHROME_BROWSER_PROFILES_PROFILE_IO_DATA_H_ | 
| #pragma once | 
|  | 
| +#include <set> | 
| #include "base/basictypes.h" | 
| +#include "base/debug/stack_trace.h" | 
| #include "base/file_path.h" | 
| #include "base/memory/ref_counted.h" | 
| #include "base/memory/scoped_ptr.h" | 
| +#include "base/synchronization/lock.h" | 
| #include "chrome/browser/net/chrome_url_request_context.h" | 
| #include "chrome/browser/profiles/profile.h" | 
| +#include "content/browser/resource_context.h" | 
| #include "net/base/cookie_monster.h" | 
|  | 
| class CommandLine; | 
| class ChromeAppCacheService; | 
| class ChromeBlobStorageContext; | 
| -class ChromeURLRequestContext; | 
| -class ChromeURLRequestContextGetter; | 
| class ExtensionInfoMap; | 
| namespace fileapi { | 
| class FileSystemContext; | 
| -} | 
| +}  // namespace fileapi | 
| class HostContentSettingsMap; | 
| class HostZoomMap; | 
| class IOThread; | 
| @@ -66,6 +68,7 @@ class ProfileIOData : public base::RefCountedThreadSafe<ProfileIOData> { | 
| scoped_refptr<ChromeURLRequestContext> GetIsolatedAppRequestContext( | 
| scoped_refptr<ChromeURLRequestContext> main_context, | 
| const std::string& app_id) const; | 
| +  const content::ResourceContext& GetResourceContext() const; | 
|  | 
| protected: | 
| friend class base::RefCountedThreadSafe<ProfileIOData>; | 
| @@ -119,12 +122,20 @@ class ProfileIOData : public base::RefCountedThreadSafe<ProfileIOData> { | 
| explicit ProfileIOData(bool is_incognito); | 
| virtual ~ProfileIOData(); | 
|  | 
| -  // Static helper functions to assist in common operations executed by | 
| -  // subtypes. | 
| +  void InitializeProfileParams(Profile* profile); | 
| +  void ApplyProfileParamsToContext(ChromeURLRequestContext* context) const; | 
|  | 
| -  static void InitializeProfileParams(Profile* profile, ProfileParams* params); | 
| -  static void ApplyProfileParamsToContext(const ProfileParams& profile_params, | 
| -                                          ChromeURLRequestContext* context); | 
| + private: | 
| +  class ResourceContext : public content::ResourceContext { | 
| +   public: | 
| +    explicit ResourceContext(const ProfileIOData* io_data); | 
| +    virtual ~ResourceContext(); | 
| + | 
| +   private: | 
| +    virtual void EnsureInitialized() const; | 
| + | 
| +    const ProfileIOData* const io_data_; | 
| +  }; | 
|  | 
| // Lazy initializes the ProfileIOData object the first time a request context | 
| // is requested. The lazy logic is implemented here. The actual initialization | 
| @@ -138,7 +149,7 @@ class ProfileIOData : public base::RefCountedThreadSafe<ProfileIOData> { | 
|  | 
| // Does the actual initialization of the ProfileIOData subtype. Subtypes | 
| // should use the static helper functions above to implement this. | 
| -  virtual void LazyInitializeInternal() const = 0; | 
| +  virtual void LazyInitializeInternal(ProfileParams* profile_params) const = 0; | 
|  | 
| // Does an on-demand initialization of a RequestContext for the given | 
| // isolated app. | 
| @@ -159,7 +170,10 @@ class ProfileIOData : public base::RefCountedThreadSafe<ProfileIOData> { | 
| scoped_refptr<ChromeURLRequestContext> main_context, | 
| const std::string& app_id) const = 0; | 
|  | 
| + | 
| mutable bool initialized_; | 
| +  mutable scoped_ptr<ProfileParams> profile_params_; | 
| +  mutable ResourceContext resource_context_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(ProfileIOData); | 
| }; | 
|  |