1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef IOS_WEB_PUBLIC_BROWSER_STATE_H_
6 #define IOS_WEB_PUBLIC_BROWSER_STATE_H_
8 #include "base/supports_user_data.h"
15 class URLRequestContextGetter
;
19 class ActiveStateManager
;
20 class BrowsingDataPartition
;
21 class CertificatePolicyCache
;
22 class URLDataManagerIOS
;
23 class URLDataManagerIOSBackend
;
24 class URLRequestChromeJob
;
26 // This class holds the context needed for a browsing session.
27 // It lives on the UI thread. All these methods must only be called on the UI
29 class BrowserState
: public base::SupportsUserData
{
31 ~BrowserState() override
;
34 static scoped_refptr
<CertificatePolicyCache
> GetCertificatePolicyCache(
35 BrowserState
* browser_state
);
37 // Returns the ActiveStateManager associated with |browser_state.|
38 // Lazily creates one if an ActiveStateManager is not already associated with
39 // the |browser_state|. |browser_state| cannot be a nullptr. Must be accessed
40 // only from the main thread.
41 static ActiveStateManager
* GetActiveStateManager(BrowserState
* browser_state
);
43 // Returns the BrowsingDataPartition associated with this browser_state.
44 // Lazily creates one if a BrowsingDataPartition is not already associated
45 // with the |browser_state|. |browser_state| cannot be a nullptr. Must be
46 // accessed only from the main thread.
47 static BrowsingDataPartition
* GetBrowsingDataPartition(
48 BrowserState
* browser_state
);
50 // Returns whether this BrowserState is incognito. Default is false.
51 virtual bool IsOffTheRecord() const = 0;
53 // Returns the path where the BrowserState data is stored.
54 // Unlike Profile::GetPath(), incognito BrowserState do not share their path
55 // with their original BrowserState.
56 virtual base::FilePath
GetStatePath() const = 0;
58 // Returns the request context information associated with this
60 virtual net::URLRequestContextGetter
* GetRequestContext() = 0;
62 // Safely cast a base::SupportsUserData to a BrowserState. Returns nullptr
63 // if |supports_user_data| is not a BrowserState.
64 static BrowserState
* FromSupportsUserData(
65 base::SupportsUserData
* supports_user_data
);
71 friend class URLDataManagerIOS
;
72 friend class URLRequestChromeJob
;
74 // Returns the URLDataManagerIOSBackend instance associated with this
75 // BrowserState, creating it if necessary. Should only be called on the IO
77 // Not intended for usage outside of //web.
78 URLDataManagerIOSBackend
* GetURLDataManagerIOSBackendOnIOThread();
80 // The URLDataManagerIOSBackend instance associated with this BrowserState.
81 // Created and destroyed on the IO thread, and should be accessed only from
83 URLDataManagerIOSBackend
* url_data_manager_ios_backend_
;
88 #endif // IOS_WEB_PUBLIC_BROWSER_STATE_H_