summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/cocoa/cookie_details.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/cocoa/cookie_details.h')
-rw-r--r--chrome/browser/ui/cocoa/cookie_details.h224
1 files changed, 224 insertions, 0 deletions
diff --git a/chrome/browser/ui/cocoa/cookie_details.h b/chrome/browser/ui/cocoa/cookie_details.h
new file mode 100644
index 0000000..614c87c
--- /dev/null
+++ b/chrome/browser/ui/cocoa/cookie_details.h
@@ -0,0 +1,224 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import <Cocoa/Cocoa.h>
+
+#include "chrome/browser/browsing_data_database_helper.h"
+#include "chrome/browser/browsing_data_indexed_db_helper.h"
+#include "chrome/browser/browsing_data_local_storage_helper.h"
+#include "base/scoped_nsobject.h"
+#include "net/base/cookie_monster.h"
+#include "webkit/appcache/appcache_service.h"
+
+class CookieTreeNode;
+class CookiePromptModalDialog;
+
+// This enum specifies the type of information contained in the
+// cookie details.
+enum CocoaCookieDetailsType {
+ // Represents grouping of cookie data, used in the cookie tree.
+ kCocoaCookieDetailsTypeFolder = 0,
+
+ // Detailed information about a cookie, used both in the cookie
+ // tree and the cookie prompt.
+ kCocoaCookieDetailsTypeCookie,
+
+ // Detailed information about a web database used for
+ // display in the cookie tree.
+ kCocoaCookieDetailsTypeTreeDatabase,
+
+ // Detailed information about local storage used for
+ // display in the cookie tree.
+ kCocoaCookieDetailsTypeTreeLocalStorage,
+
+ // Detailed information about an appcache used for display in the
+ // cookie tree.
+ kCocoaCookieDetailsTypeTreeAppCache,
+
+ // Detailed information about an IndexedDB used for display in the
+ // cookie tree.
+ kCocoaCookieDetailsTypeTreeIndexedDB,
+
+ // Detailed information about a web database used for display
+ // in the cookie prompt dialog.
+ kCocoaCookieDetailsTypePromptDatabase,
+
+ // Detailed information about local storage used for display
+ // in the cookie prompt dialog.
+ kCocoaCookieDetailsTypePromptLocalStorage,
+
+ // Detailed information about app caches used for display
+ // in the cookie prompt dialog.
+ kCocoaCookieDetailsTypePromptAppCache
+};
+
+// This class contains all of the information that can be displayed in
+// a cookie details view. Because the view uses bindings to display
+// the cookie information, the methods that provide that information
+// for display must be implemented directly on this class and not on any
+// of its subclasses.
+// If this system is rewritten to not use bindings, this class should be
+// subclassed and specialized, rather than using an enum to determine type.
+@interface CocoaCookieDetails : NSObject {
+ @private
+ CocoaCookieDetailsType type_;
+
+ // Used for type kCocoaCookieDetailsTypeCookie to indicate whether
+ // it should be possible to edit the expiration.
+ BOOL canEditExpiration_;
+
+ // Indicates whether a cookie has an explcit expiration. If not
+ // it will expire with the session.
+ BOOL hasExpiration_;
+
+ // Only set for type kCocoaCookieDetailsTypeCookie.
+ scoped_nsobject<NSString> content_;
+ scoped_nsobject<NSString> path_;
+ scoped_nsobject<NSString> sendFor_;
+ // Stringifed dates.
+ scoped_nsobject<NSString> expires_;
+
+ // Only set for type kCocoaCookieDetailsTypeCookie and
+ // kCocoaCookieDetailsTypeTreeAppCache nodes.
+ scoped_nsobject<NSString> created_;
+
+ // Only set for types kCocoaCookieDetailsTypeCookie, and
+ // kCocoaCookieDetailsTypePromptDatabase nodes.
+ scoped_nsobject<NSString> name_;
+
+ // Only set for type kCocoaCookieDetailsTypeTreeLocalStorage,
+ // kCocoaCookieDetailsTypeTreeDatabase,
+ // kCocoaCookieDetailsTypePromptDatabase,
+ // kCocoaCookieDetailsTypeTreeIndexedDB, and
+ // kCocoaCookieDetailsTypeTreeAppCache nodes.
+ scoped_nsobject<NSString> fileSize_;
+
+ // Only set for types kCocoaCookieDetailsTypeTreeLocalStorage,
+ // kCocoaCookieDetailsTypeTreeDatabase, and
+ // kCocoaCookieDetailsTypeTreeIndexedDB nodes.
+ scoped_nsobject<NSString> lastModified_;
+
+ // Only set for type kCocoaCookieDetailsTypeTreeAppCache nodes.
+ scoped_nsobject<NSString> lastAccessed_;
+
+ // Only set for type kCocoaCookieDetailsTypeCookie,
+ // kCocoaCookieDetailsTypePromptDatabase,
+ // kCocoaCookieDetailsTypePromptLocalStorage, and
+ // kCocoaCookieDetailsTypeTreeIndexedDB nodes.
+ scoped_nsobject<NSString> domain_;
+
+ // Only set for type kCocoaCookieTreeNodeTypeDatabaseStorage and
+ // kCocoaCookieDetailsTypePromptDatabase nodes.
+ scoped_nsobject<NSString> databaseDescription_;
+
+ // Only set for type kCocoaCookieDetailsTypePromptLocalStorage.
+ scoped_nsobject<NSString> localStorageKey_;
+ scoped_nsobject<NSString> localStorageValue_;
+
+ // Only set for type kCocoaCookieDetailsTypeTreeAppCache and
+ // kCocoaCookieDetailsTypePromptAppCache.
+ scoped_nsobject<NSString> manifestURL_;
+}
+
+@property (nonatomic, readonly) BOOL canEditExpiration;
+@property (nonatomic) BOOL hasExpiration;
+@property (nonatomic, readonly) CocoaCookieDetailsType type;
+
+// The following methods are used in the bindings of subviews inside
+// the cookie detail view. Note that the method that tests the
+// visibility of the subview for cookie-specific information has a different
+// polarity than the other visibility testing methods. This ensures that
+// this subview is shown when there is no selection in the cookie tree,
+// because a hidden value of |false| is generated when the key value binding
+// is evaluated through a nil object. The other methods are bound using a
+// |NSNegateBoolean| transformer, so that when there is a empty selection the
+// hidden value is |true|.
+- (BOOL)shouldHideCookieDetailsView;
+- (BOOL)shouldShowLocalStorageTreeDetailsView;
+- (BOOL)shouldShowLocalStoragePromptDetailsView;
+- (BOOL)shouldShowDatabaseTreeDetailsView;
+- (BOOL)shouldShowDatabasePromptDetailsView;
+- (BOOL)shouldShowAppCachePromptDetailsView;
+- (BOOL)shouldShowAppCacheTreeDetailsView;
+- (BOOL)shouldShowIndexedDBTreeDetailsView;
+
+- (NSString*)name;
+- (NSString*)content;
+- (NSString*)domain;
+- (NSString*)path;
+- (NSString*)sendFor;
+- (NSString*)created;
+- (NSString*)expires;
+- (NSString*)fileSize;
+- (NSString*)lastModified;
+- (NSString*)lastAccessed;
+- (NSString*)databaseDescription;
+- (NSString*)localStorageKey;
+- (NSString*)localStorageValue;
+- (NSString*)manifestURL;
+
+// Used for folders in the cookie tree.
+- (id)initAsFolder;
+
+// Used for cookie details in both the cookie tree and the cookie prompt dialog.
+- (id)initWithCookie:(const net::CookieMonster::CanonicalCookie*)treeNode
+ origin:(NSString*)origin
+ canEditExpiration:(BOOL)canEditExpiration;
+
+// Used for database details in the cookie tree.
+- (id)initWithDatabase:
+ (const BrowsingDataDatabaseHelper::DatabaseInfo*)databaseInfo;
+
+// Used for local storage details in the cookie tree.
+- (id)initWithLocalStorage:
+ (const BrowsingDataLocalStorageHelper::LocalStorageInfo*)localStorageInfo;
+
+// Used for database details in the cookie prompt dialog.
+- (id)initWithDatabase:(const std::string&)domain
+ databaseName:(const string16&)databaseName
+ databaseDescription:(const string16&)databaseDescription
+ fileSize:(unsigned long)fileSize;
+
+// -initWithAppCacheInfo: creates a cookie details with the manifest URL plus
+// all of this additional information that is available after an appcache is
+// actually created, including it's creation date, size and last accessed time.
+- (id)initWithAppCacheInfo:(const appcache::AppCacheInfo*)appcacheInfo;
+
+// Used for local storage details in the cookie prompt dialog.
+- (id)initWithLocalStorage:(const std::string&)domain
+ key:(const string16&)key
+ value:(const string16&)value;
+
+// -initWithAppCacheManifestURL: is called when the cookie prompt is displayed
+// for an appcache, at that time only the manifest URL of the appcache is known.
+- (id)initWithAppCacheManifestURL:(const std::string&)manifestURL;
+
+// Used for IndexedDB details in the cookie tree.
+- (id)initWithIndexedDBInfo:
+ (const BrowsingDataIndexedDBHelper::IndexedDBInfo*)indexedDB;
+
+// A factory method to create a configured instance given a node from
+// the cookie tree in |treeNode|.
++ (CocoaCookieDetails*)createFromCookieTreeNode:(CookieTreeNode*)treeNode;
+
+@end
+
+// The subpanes of the cookie details view expect to be able to bind to methods
+// through a key path in the form |content.details.xxxx|. This class serves as
+// an adapter that simply wraps a |CocoaCookieDetails| object. An instance of
+// this class is set as the content object for cookie details view's object
+// controller so that key paths are properly resolved through to the
+// |CocoaCookieDetails| object for the cookie prompt.
+@interface CookiePromptContentDetailsAdapter : NSObject {
+ @private
+ scoped_nsobject<CocoaCookieDetails> details_;
+}
+
+- (CocoaCookieDetails*)details;
+
+// The adapter assumes ownership of the details object
+// in its initializer.
+- (id)initWithDetails:(CocoaCookieDetails*)details;
+@end
+