Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / ios / web / public / browser_state.h
blob97f3da10a73c82d68e0f1bfbefe9616ed1834621
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"
10 namespace base {
11 class FilePath;
14 namespace net {
15 class URLRequestContextGetter;
18 namespace web {
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
28 // thread.
29 class BrowserState : public base::SupportsUserData {
30 public:
31 ~BrowserState() override;
33 // static
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
59 // BrowserState.
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);
67 protected:
68 BrowserState();
70 private:
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
76 // thread.
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
82 // the IO thread.
83 URLDataManagerIOSBackend* url_data_manager_ios_backend_;
86 } // namespace web
88 #endif // IOS_WEB_PUBLIC_BROWSER_STATE_H_