Add ENABLE_MEDIA_ROUTER define to builds other than Android and iOS.
[chromium-blink-merge.git] / chrome / browser / ui / cocoa / content_settings / cookie_details.h
blob0148f6b99c2b8cd912ff50ff583a89f1d1575ed9
1 // Copyright (c) 2012 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 #import <Cocoa/Cocoa.h>
7 #include "base/mac/scoped_nsobject.h"
8 #include "chrome/browser/browsing_data/browsing_data_database_helper.h"
9 #include "chrome/browser/browsing_data/browsing_data_indexed_db_helper.h"
10 #include "chrome/browser/browsing_data/browsing_data_local_storage_helper.h"
11 #include "chrome/browser/browsing_data/browsing_data_service_worker_helper.h"
12 #include "content/public/browser/appcache_service.h"
14 class CookieTreeNode;
16 namespace net {
17 class CanonicalCookie;
20 // This enum specifies the type of information contained in the
21 // cookie details.
22 enum CocoaCookieDetailsType {
23 // Represents grouping of cookie data, used in the cookie tree.
24 kCocoaCookieDetailsTypeFolder = 0,
26 // Detailed information about a cookie, used both in the cookie
27 // tree and the cookie prompt.
28 kCocoaCookieDetailsTypeCookie,
30 // Detailed information about a web database used for
31 // display in the cookie tree.
32 kCocoaCookieDetailsTypeTreeDatabase,
34 // Detailed information about local storage used for
35 // display in the cookie tree.
36 kCocoaCookieDetailsTypeTreeLocalStorage,
38 // Detailed information about an appcache used for display in the
39 // cookie tree.
40 kCocoaCookieDetailsTypeTreeAppCache,
42 // Detailed information about an IndexedDB used for display in the
43 // cookie tree.
44 kCocoaCookieDetailsTypeTreeIndexedDB,
46 // Detailed information about a Service Worker used for display in the
47 // cookie tree.
48 kCocoaCookieDetailsTypeTreeServiceWorker,
50 // Detailed information about a web database used for display
51 // in the cookie prompt dialog.
52 kCocoaCookieDetailsTypePromptDatabase,
54 // Detailed information about local storage used for display
55 // in the cookie prompt dialog.
56 kCocoaCookieDetailsTypePromptLocalStorage,
58 // Detailed information about app caches used for display
59 // in the cookie prompt dialog.
60 kCocoaCookieDetailsTypePromptAppCache
63 // This class contains all of the information that can be displayed in
64 // a cookie details view. Because the view uses bindings to display
65 // the cookie information, the methods that provide that information
66 // for display must be implemented directly on this class and not on any
67 // of its subclasses.
68 // If this system is rewritten to not use bindings, this class should be
69 // subclassed and specialized, rather than using an enum to determine type.
70 @interface CocoaCookieDetails : NSObject {
71 @private
72 CocoaCookieDetailsType type_;
74 // Used for type kCocoaCookieDetailsTypeCookie to indicate whether
75 // it should be possible to edit the expiration.
76 BOOL canEditExpiration_;
78 // Indicates whether a cookie has an explcit expiration. If not
79 // it will expire with the session.
80 BOOL hasExpiration_;
82 // Only set for type kCocoaCookieDetailsTypeCookie.
83 base::scoped_nsobject<NSString> content_;
84 base::scoped_nsobject<NSString> path_;
85 base::scoped_nsobject<NSString> sendFor_;
86 // Stringifed dates.
87 base::scoped_nsobject<NSString> expires_;
89 // Only set for type kCocoaCookieDetailsTypeCookie and
90 // kCocoaCookieDetailsTypeTreeAppCache nodes.
91 base::scoped_nsobject<NSString> created_;
93 // Only set for types kCocoaCookieDetailsTypeCookie, and
94 // kCocoaCookieDetailsTypePromptDatabase nodes.
95 base::scoped_nsobject<NSString> name_;
97 // Only set for type kCocoaCookieDetailsTypeTreeLocalStorage,
98 // kCocoaCookieDetailsTypeTreeDatabase,
99 // kCocoaCookieDetailsTypePromptDatabase,
100 // kCocoaCookieDetailsTypeTreeIndexedDB,
101 // kCocoaCookieDetailsTypeTreeServiceWorker, and
102 // kCocoaCookieDetailsTypeTreeAppCache nodes.
103 base::scoped_nsobject<NSString> fileSize_;
105 // Only set for types kCocoaCookieDetailsTypeTreeLocalStorage,
106 // kCocoaCookieDetailsTypeTreeDatabase,
107 // kCocoaCookieDetailsTypeTreeServiceWorker, and
108 // kCocoaCookieDetailsTypeTreeIndexedDB nodes.
109 base::scoped_nsobject<NSString> lastModified_;
111 // Only set for type kCocoaCookieDetailsTypeTreeAppCache nodes.
112 base::scoped_nsobject<NSString> lastAccessed_;
114 // Only set for type kCocoaCookieDetailsTypeCookie,
115 // kCocoaCookieDetailsTypePromptDatabase,
116 // kCocoaCookieDetailsTypePromptLocalStorage,
117 // kCocoaCookieDetailsTypePromptServiceWorker, and
118 // kCocoaCookieDetailsTypeTreeIndexedDB nodes.
119 base::scoped_nsobject<NSString> domain_;
121 // Only set for type kCocoaCookieTreeNodeTypeDatabaseStorage and
122 // kCocoaCookieDetailsTypePromptDatabase nodes.
123 base::scoped_nsobject<NSString> databaseDescription_;
125 // Only set for type kCocoaCookieDetailsTypePromptLocalStorage.
126 base::scoped_nsobject<NSString> localStorageKey_;
127 base::scoped_nsobject<NSString> localStorageValue_;
129 // Only set for type kCocoaCookieDetailsTypeTreeAppCache and
130 // kCocoaCookieDetailsTypePromptAppCache.
131 base::scoped_nsobject<NSString> manifestURL_;
133 // Only set for type kCocoaCookieDetailsTypeTreeServiceWorker nodes.
134 base::scoped_nsobject<NSString> scopes_;
137 @property(nonatomic, readonly) BOOL canEditExpiration;
138 @property(nonatomic) BOOL hasExpiration;
139 @property(nonatomic, readonly) CocoaCookieDetailsType type;
141 // The following methods are used in the bindings of subviews inside
142 // the cookie detail view. Note that the method that tests the
143 // visibility of the subview for cookie-specific information has a different
144 // polarity than the other visibility testing methods. This ensures that
145 // this subview is shown when there is no selection in the cookie tree,
146 // because a hidden value of |false| is generated when the key value binding
147 // is evaluated through a nil object. The other methods are bound using a
148 // |NSNegateBoolean| transformer, so that when there is a empty selection the
149 // hidden value is |true|.
150 - (BOOL)shouldHideCookieDetailsView;
151 - (BOOL)shouldShowLocalStorageTreeDetailsView;
152 - (BOOL)shouldShowLocalStoragePromptDetailsView;
153 - (BOOL)shouldShowDatabaseTreeDetailsView;
154 - (BOOL)shouldShowDatabasePromptDetailsView;
155 - (BOOL)shouldShowAppCachePromptDetailsView;
156 - (BOOL)shouldShowAppCacheTreeDetailsView;
157 - (BOOL)shouldShowIndexedDBTreeDetailsView;
158 - (BOOL)shouldShowServiceWorkerTreeDetailsView;
160 - (NSString*)name;
161 - (NSString*)content;
162 - (NSString*)domain;
163 - (NSString*)path;
164 - (NSString*)sendFor;
165 - (NSString*)created;
166 - (NSString*)expires;
167 - (NSString*)fileSize;
168 - (NSString*)lastModified;
169 - (NSString*)lastAccessed;
170 - (NSString*)databaseDescription;
171 - (NSString*)localStorageKey;
172 - (NSString*)localStorageValue;
173 - (NSString*)manifestURL;
174 - (NSString*)scopes;
176 // Used for folders in the cookie tree.
177 - (id)initAsFolder;
179 // Used for cookie details in both the cookie tree and the cookie prompt dialog.
180 - (id)initWithCookie:(const net::CanonicalCookie*)treeNode
181 canEditExpiration:(BOOL)canEditExpiration;
183 // Used for database details in the cookie tree.
184 - (id)initWithDatabase:
185 (const BrowsingDataDatabaseHelper::DatabaseInfo*)databaseInfo;
187 // Used for local storage details in the cookie tree.
188 - (id)initWithLocalStorage:
189 (const BrowsingDataLocalStorageHelper::LocalStorageInfo*)localStorageInfo;
191 // Used for database details in the cookie prompt dialog.
192 - (id)initWithDatabase:(const std::string&)domain
193 databaseName:(const base::string16&)databaseName
194 databaseDescription:(const base::string16&)databaseDescription
195 fileSize:(unsigned long)fileSize;
197 // -initWithAppCacheInfo: creates a cookie details with the manifest URL plus
198 // all of this additional information that is available after an appcache is
199 // actually created, including its creation date, size and last accessed time.
200 - (id)initWithAppCacheInfo:(const content::AppCacheInfo*)appcacheInfo;
202 // Used for local storage details in the cookie prompt dialog.
203 - (id)initWithLocalStorage:(const std::string&)domain
204 key:(const base::string16&)key
205 value:(const base::string16&)value;
207 // -initWithAppCacheManifestURL: is called when the cookie prompt is displayed
208 // for an appcache, at that time only the manifest URL of the appcache is known.
209 - (id)initWithAppCacheManifestURL:(const std::string&)manifestURL;
211 // Used for IndexedDB details in the cookie tree.
212 - (id)initWithIndexedDBInfo:
213 (const content::IndexedDBInfo*)indexedDB;
215 // Used for ServiceWorker details in the cookie tree.
216 - (id)initWithServiceWorkerUsageInfo:
217 (const content::ServiceWorkerUsageInfo*)serviceWorker;
219 // A factory method to create a configured instance given a node from
220 // the cookie tree in |treeNode|.
221 + (CocoaCookieDetails*)createFromCookieTreeNode:(CookieTreeNode*)treeNode;
223 @end
225 // The subpanes of the cookie details view expect to be able to bind to methods
226 // through a key path in the form |content.details.xxxx|. This class serves as
227 // an adapter that simply wraps a |CocoaCookieDetails| object. An instance of
228 // this class is set as the content object for cookie details view's object
229 // controller so that key paths are properly resolved through to the
230 // |CocoaCookieDetails| object for the cookie prompt.
231 @interface CookiePromptContentDetailsAdapter : NSObject {
232 @private
233 base::scoped_nsobject<CocoaCookieDetails> details_;
236 - (CocoaCookieDetails*)details;
238 // The adapter assumes ownership of the details object
239 // in its initializer.
240 - (id)initWithDetails:(CocoaCookieDetails*)details;
241 @end