From 51f70bd8def42cd3adfcf6fd20940a8f0bcd3cb3 Mon Sep 17 00:00:00 2001 From: "evan@chromium.org" Date: Wed, 24 Feb 2010 11:45:17 +0000 Subject: [Mac] Implement HTML5 database items in "Cookies and Other Data" dialog. Code changes to support a new variant of CocoaCookieTreeNode that displays the information about web databases. Changes to Cookies.xib: Added a new NSView "Database" in the existing information summary view for items selected in the cookie tree. This Database view provides the details for selected items that are web databases, and is in the same implement + layout style as the existing "Cookie" and "Local Storage" views. Added a key "databaseDescription" to the CocoaCookieTreeNode to support the display of the new node type. TEST=manual testing in the "Cookies and Other Data" dialog BUG=http://crbug.com/35191 Patch from Dan Clifford . Review URL: http://codereview.chromium.org/596058 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39882 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/app/nibs/Cookies.xib | 1336 +++++++------------- chrome/browser/cocoa/cookie_tree_node.h | 21 +- chrome/browser/cocoa/cookie_tree_node.mm | 19 +- chrome/browser/cocoa/cookies_window_controller.h | 2 + chrome/browser/cocoa/cookies_window_controller.mm | 26 +- .../cocoa/cookies_window_controller_unittest.mm | 58 +- 6 files changed, 598 insertions(+), 864 deletions(-) diff --git a/chrome/app/nibs/Cookies.xib b/chrome/app/nibs/Cookies.xib index c06c5d8..40ec7b0 100644 --- a/chrome/app/nibs/Cookies.xib +++ b/chrome/app/nibs/Cookies.xib @@ -1,18 +1,14 @@ - + 1050 - 10C540 - 740 - 1038.25 - 458.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 740 - + 9L31a + 680 + 949.54 + 353.00 YES - + YES @@ -20,7 +16,7 @@ YES - + YES @@ -46,7 +42,7 @@ ^IDS_COOKIES_WEBSITE_PERMISSIONS_WINDOW_TITLE NSWindow - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {499, 513} @@ -65,7 +61,7 @@ ^IDS_COOKIES_INFO_LABEL LucidaGrande - 13 + 1.300000e+01 1044 @@ -75,7 +71,7 @@ controlColor 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2OQA @@ -113,21 +109,21 @@ YES - 455 - 16 - 1000 + 4.550000e+02 + 1.600000e+01 + 1.000000e+03 75628096 2048 LucidaGrande - 11 + 1.100000e+01 3100 3 - MC4zMzMzMzI5ODU2AA + MC4zMzMzMzI5OQA 6 @@ -155,8 +151,8 @@ - 2 - 3 + 2.000000e+00 + 3.000000e+00 6 @@ -167,15 +163,12 @@ MC41AA - 14 + 1.400000e+01 -767557632 - - 4 15 0 YES - 0 {{1, 1}, {457, 237}} @@ -193,7 +186,7 @@ 256 _doScroller: - 1 + 1.000000e+00 @@ -203,8 +196,8 @@ 513 _doScroller: - 0.035010940919037198 - 1 + 3.501094e-02 + 1.000000e+00 {{20, 250}, {459, 239}} @@ -256,7 +249,7 @@ -2038284033 129 -  + fw 200 25 @@ -304,7 +297,7 @@ YES 343014976 - 272630848 + 272630784 ^IDS_COOKIES_SEARCH_LABEL @@ -325,9 +318,9 @@ 130560 0 search - _searchFieldSearch: + 138690815 0 @@ -342,7 +335,7 @@ YES YES - + YES AXDescription NSAccessibilityEncodedAttributesValueType @@ -354,9 +347,9 @@ - _searchFieldCancel: + 138690815 0 @@ -379,7 +372,7 @@ YES - 258 + -2147483390 YES @@ -399,7 +392,7 @@ ^IDS_COOKIES_COOKIE_EXPIRES_LABEL LucidaGrande-Bold - 13 + 1.300000e+01 16 @@ -759,6 +752,131 @@ {{8, 10}, {446, 171}} + + + -2147483390 + + YES + + + 292 + + YES + + + 267 + {{13, 120}, {82, 17}} + + YES + + 68288064 + 272630784 + ^IDS_COOKIES_LOCAL_STORAGE_LAST_MODIFIED_LABEL + + + + + + + + + 267 + {{13, 145}, {82, 17}} + + YES + + 68288064 + 272630784 + ^IDS_COOKIES_LOCAL_STORAGE_SIZE_ON_DISK_LABEL + + + + + + + + + 267 + {{13, 170}, {82, 17}} + + YES + + 68288064 + 272630784 + ^IDS_COOKIES_WEB_DATABASE_DESCRIPTION_LABEL + + + + + + + + {{-16, -20}, {92, 207}} + + GTMWidthBasedTweaker + + + + 292 + + YES + + + 266 + {{3, 120}, {365, 17}} + + YES + + 70385217 + 272630784 + Label + + + + + + + + + 266 + {{3, 145}, {366, 17}} + + YES + + 70385217 + 272630784 + Label + + + + + + + + + 266 + {{3, 170}, {366, 17}} + + YES + + 70385217 + 272630784 + Label + + + + + + + + {{76, -20}, {386, 207}} + + NSView + + + {{8, 10}, {446, 171}} + + {{1, 1}, {462, 189}} @@ -775,7 +893,7 @@ 3 - MCAwLjgwMDAwMDAxMTkAA + MCAwLjgwMDAwMDAxAA @@ -790,14 +908,14 @@ {{0, 0}, {1440, 878}} {499, 535} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} YES title name - content + databaseDescription domain path sendFor @@ -806,6 +924,7 @@ count fileSize lastModified + modelKey CocoaCookieTreeNode @@ -1005,7 +1124,7 @@ selection.created YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1017,7 +1136,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1038,7 +1157,7 @@ selection.sendFor YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1050,7 +1169,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1071,7 +1190,7 @@ selection.expires YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1083,7 +1202,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1104,7 +1223,7 @@ selection.domain YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1116,7 +1235,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1137,7 +1256,7 @@ selection.path YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1149,7 +1268,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1170,7 +1289,7 @@ selection.name YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1182,7 +1301,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1203,7 +1322,7 @@ selection.content YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1215,7 +1334,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1244,7 +1363,7 @@ selection.domain YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1256,7 +1375,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1277,7 +1396,7 @@ selection.lastModified YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1289,7 +1408,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1310,7 +1429,7 @@ selection.fileSize YES - + YES NSNoSelectionPlaceholder NSNotApplicablePlaceholder @@ -1322,7 +1441,7 @@ ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED ^IDS_COOKIES_COOKIE_NONESELECTED - + 2 @@ -1346,32 +1465,149 @@ 291 + + + viewToSlideAndResize_ + + + + 307 + + + + databaseInfo_ + + + + 327 + + + + value: selection.lastModified + + + + + + value: selection.lastModified + value + selection.lastModified + + YES + + YES + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + + + YES + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + + + + 2 + + + 330 + + + + value: selection.fileSize + + + + + + value: selection.fileSize + value + selection.fileSize + + YES + + YES + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + + + YES + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + + + + 2 + + + 331 + + + + value: selection.databaseDescription + + + + + + value: selection.databaseDescription + value + selection.databaseDescription + + YES + + YES + NSNoSelectionPlaceholder + NSNotApplicablePlaceholder + NSNullPlaceholder + NSRaisesForNotApplicableKeys + + + YES + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + ^IDS_COOKIES_COOKIE_NONESELECTED + + + + 2 + + + 343 + YES 0 - + + YES + -2 - - File's Owner + + RmlsZSdzIE93bmVyA -1 - + First Responder -3 - + Application @@ -1381,7 +1617,7 @@ YES - + 2 @@ -1458,7 +1694,7 @@ 51 - + 130 @@ -1524,12 +1760,12 @@ 136 - + 137 - + 177 @@ -1552,6 +1788,7 @@ YES + @@ -1909,11 +2146,128 @@ + + 292 + + + YES + + + + + Database + + + 294 + + + YES + + + + + + + + 293 + + + YES + + + + + + + + 303 + + + YES + + + + + + 302 + + + YES + + + + + + 301 + + + YES + + + + + + 306 + + + + + 305 + + + + + 304 + + + + + 297 + + + YES + + + + + + 296 + + + YES + + + + + + 295 + + + YES + + + + + + 300 + + + + + 299 + + + + + 298 + + + YES - + YES -1.IBPluginDependency -2.IBPluginDependency @@ -1984,7 +2338,20 @@ 283.IBPluginDependency 284.IBPluginDependency 285.IBPluginDependency + 292.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 299.IBPluginDependency 3.IBPluginDependency + 300.IBPluginDependency + 301.IBPluginDependency + 302.IBPluginDependency + 303.IBPluginDependency + 304.IBPluginDependency + 305.IBPluginDependency + 306.IBPluginDependency 4.IBPluginDependency 5.IBPluginDependency 51.IBPluginDependency @@ -1997,14 +2364,14 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{516, 304}, {499, 552}} + {{224, -511}, {499, 552}} com.apple.InterfaceBuilder.CocoaPlugin - - {{516, 304}, {499, 552}} - + + {{224, -511}, {499, 552}} + {196, 240} {{357, 418}, {480, 270}} - + {499, 513} com.apple.InterfaceBuilder.CocoaPlugin ImageAndTextCell @@ -2070,25 +2437,42 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - - - YES - - - YES - - - - + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + YES - + + YES + + + YES + + + + + YES + + YES + YES - 291 + 343 @@ -2106,7 +2490,7 @@ NSWindowController YES - + YES closeSheet: deleteAllCookies: @@ -2123,9 +2507,10 @@ YES - + YES cookieInfo_ + databaseInfo_ localStorageInfo_ outlineView_ searchField_ @@ -2135,6 +2520,7 @@ YES NSView NSView + NSView NSOutlineView NSSearchField NSTreeController @@ -2146,11 +2532,19 @@ + CookiesWindowController + NSWindowController + + IBUserSource + + + + GTMUILocalizer NSObject YES - + YES otherObjectToLocalize_ owner_ @@ -2173,7 +2567,7 @@ NSObject YES - + YES localizerOwner_ localizer_ @@ -2196,7 +2590,7 @@ NSView YES - + YES viewToResize_ viewToSlideAndResize_ @@ -2234,768 +2628,8 @@ - - YES - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSBox - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSBox.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSController - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSController.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAlert.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAnimation.h - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSBrowser.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSComboBox.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSComboBoxCell.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDatePickerCell.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSImage.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSRuleEditor.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSound.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSpeechRecognizer.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSpeechSynthesizer.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSplitView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSText.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTextStorage.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTextView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTokenField.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTokenFieldCell.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbar.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSMetadata.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSNetServices.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPort.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSSpellServer.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSStream.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSXMLParser.h - - - - NSObject - - IBFrameworkSource - Print.framework/Headers/PDEPluginInterface.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CIImageProvider.h - - - - NSObject - - IBFrameworkSource - SecurityInterface.framework/Headers/SFAuthorizationView.h - - - - NSObject - - IBFrameworkSource - SecurityInterface.framework/Headers/SFCertificatePanel.h - - - - NSObject - - IBFrameworkSource - SecurityInterface.framework/Headers/SFChooseIdentityPanel.h - - - - NSObjectController - NSController - - IBFrameworkSource - AppKit.framework/Headers/NSObjectController.h - - - - NSOutlineView - NSTableView - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSSearchField - NSTextField - - IBFrameworkSource - AppKit.framework/Headers/NSSearchField.h - - - - NSSearchFieldCell - NSTextFieldCell - - IBFrameworkSource - AppKit.framework/Headers/NSSearchFieldCell.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableView - NSControl - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSTreeController - NSObjectController - - IBFrameworkSource - AppKit.framework/Headers/NSTreeController.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - - - NSWindow - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h - - - - NSWindowController - NSResponder - - showWindow: - id - - - IBFrameworkSource - AppKit.framework/Headers/NSWindowController.h - - - 0 - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES ../../chrome.xcodeproj 3 diff --git a/chrome/browser/cocoa/cookie_tree_node.h b/chrome/browser/cocoa/cookie_tree_node.h index 693895e..5101157 100644 --- a/chrome/browser/cocoa/cookie_tree_node.h +++ b/chrome/browser/cocoa/cookie_tree_node.h @@ -17,8 +17,11 @@ enum CocoaCookieTreeNodeType { // A cookie node. kCocoaCookieTreeNodeTypeCookie = 1, + // A HTML5 database storage node. + kCocoaCookieTreeNodeTypeDatabaseStorage = 2, + // A local storage node. - kCocoaCookieTreeNodeTypeLocalStorage = 2 + kCocoaCookieTreeNodeTypeLocalStorage = 3 }; // This class is used by CookiesWindowController and represents a node in the @@ -41,12 +44,18 @@ enum CocoaCookieTreeNodeType { scoped_nsobject created_; scoped_nsobject expires_; - // These members are only set for kCocoaCookieTreeNodeTypeLocalStorage nodes. + // These members are only set for kCocoaCookieTreeNodeTypeLocalStorage + // and kCocoaCookieTreeNodeTypeDatabaseStorage nodes. scoped_nsobject fileSize_; scoped_nsobject lastModified_; - // These members are set for both of the two specialized node types. + // These members are only set for kCocoaCookieTreeNodeTypeCookie and + // kCocoaCookieTreeNodeTypeLocalStorage nodes. scoped_nsobject domain_; + + // These members are used only for nodes of type + // kCocoaCookieTreeNodeTypeDatabaseStorage. + scoped_nsobject databaseDescription_; } // Designated initializer. @@ -75,8 +84,12 @@ enum CocoaCookieTreeNodeType { - (NSString*)created; - (NSString*)expires; -// Used by kCocoaCookieTreeNodeTypeLocalStorage nodes. Nil for other types. +// Used by kCocoaCookieTreeNodeTypeLocalStorage and +// kCocoaCookieTreeNodeTypeDatabaseStorage nodes. Nil for other types. - (NSString*)fileSize; - (NSString*)lastModified; +// Used by kCocoaCookieTreeNodeTypeDatabaseStorage nodes. Nil for other types. +- (NSString*)databaseDescription; + @end diff --git a/chrome/browser/cocoa/cookie_tree_node.mm b/chrome/browser/cocoa/cookie_tree_node.mm index a4642a4..3d9eeaa 100644 --- a/chrome/browser/cocoa/cookie_tree_node.mm +++ b/chrome/browser/cocoa/cookie_tree_node.mm @@ -56,6 +56,17 @@ sendFor_.reset([l10n_util::GetNSStringWithFixup( IDS_COOKIES_COOKIE_SENDFOR_ANY) retain]); } + } else if (nodeType == CookieTreeNode::DetailedInfo::TYPE_DATABASE) { + const BrowsingDataDatabaseHelper::DatabaseInfo* databaseInfo = + info.database_info; + nodeType_ = kCocoaCookieTreeNodeTypeDatabaseStorage; + databaseDescription_.reset([base::SysUTF8ToNSString( + databaseInfo->description) retain]); + fileSize_.reset([base::SysWideToNSString(FormatBytes(databaseInfo->size, + GetByteDisplayUnits(databaseInfo->size), true)) retain]); + lastModified_.reset([base::SysWideToNSString( + base::TimeFormatFriendlyDateAndTime( + databaseInfo->last_modified)) retain]); } else if (nodeType == CookieTreeNode::DetailedInfo::TYPE_LOCAL_STORAGE) { const BrowsingDataLocalStorageHelper::LocalStorageInfo* storageInfo = info.local_storage_info; @@ -140,7 +151,7 @@ return expires_.get(); } -#pragma mark Local Storage Accessors +#pragma mark Local Storage and Database Accessors - (NSString*)fileSize { return fileSize_.get(); @@ -150,4 +161,10 @@ return lastModified_.get(); } +#pragma mark Database Accessors + +- (NSString*)databaseDescription { + return databaseDescription_.get(); +} + @end diff --git a/chrome/browser/cocoa/cookies_window_controller.h b/chrome/browser/cocoa/cookies_window_controller.h index c2beb5e..b03653c 100644 --- a/chrome/browser/cocoa/cookies_window_controller.h +++ b/chrome/browser/cocoa/cookies_window_controller.h @@ -97,6 +97,7 @@ class CookiesTreeModelObserverBridge : public TreeModelObserver { // These views are laid out inside a NSBox and are shown/hidden to detail // information about the selected node. IBOutlet NSView* cookieInfo_; + IBOutlet NSView* databaseInfo_; IBOutlet NSView* localStorageInfo_; Profile* profile_; // weak @@ -139,5 +140,6 @@ class CookiesTreeModelObserverBridge : public TreeModelObserver { - (NSArray*)icons; - (NSView*)cookieInfoView; - (NSView*)localStorageInfoView; +- (NSView*)databaseInfoInfoView; - (void)loadTreeModelFromProfile; @end diff --git a/chrome/browser/cocoa/cookies_window_controller.mm b/chrome/browser/cocoa/cookies_window_controller.mm index cec7f71..70fddc7 100644 --- a/chrome/browser/cocoa/cookies_window_controller.mm +++ b/chrome/browser/cocoa/cookies_window_controller.mm @@ -327,6 +327,12 @@ bool CookiesTreeModelObserverBridge::HasCocoaModel() { if (count != 1U) { DCHECK_LT(count, 1U) << "User was able to select more than 1 cookie node!"; [self setRemoveButtonEnabled:NO]; + + // Make sure that the cookie info pane is shown when there is no selection. + // That's what windows does. + [cookieInfo_ setHidden:NO]; + [localStorageInfo_ setHidden:YES]; + [databaseInfo_ setHidden:YES]; return; } @@ -346,13 +352,15 @@ bool CookiesTreeModelObserverBridge::HasCocoaModel() { [self setRemoveButtonEnabled:YES]; CocoaCookieTreeNodeType nodeType = [[selectedObjects lastObject] nodeType]; - if (nodeType == kCocoaCookieTreeNodeTypeLocalStorage) { - [cookieInfo_ setHidden:YES]; - [localStorageInfo_ setHidden:NO]; - } else { - [cookieInfo_ setHidden:NO]; - [localStorageInfo_ setHidden:YES]; - } + bool hideCookieInfoView = nodeType != kCocoaCookieTreeNodeTypeCookie && + nodeType != kCocoaCookieTreeNodeTypeFolder; + bool hideLocaStorageInfoView = + nodeType != kCocoaCookieTreeNodeTypeLocalStorage; + bool hideDatabaseInfoView = + nodeType != kCocoaCookieTreeNodeTypeDatabaseStorage; + [cookieInfo_ setHidden:hideCookieInfoView]; + [localStorageInfo_ setHidden:hideLocaStorageInfoView]; + [databaseInfo_ setHidden:hideDatabaseInfoView]; } #pragma mark Unit Testing @@ -373,6 +381,10 @@ bool CookiesTreeModelObserverBridge::HasCocoaModel() { return localStorageInfo_; } +- (NSView*)databaseInfoView { + return databaseInfo_; +} + // Re-initializes the |treeModel_|, creates a new observer for it, and re- // builds the |cocoaTreeModel_|. We use this to initialize the controller and // to rebuild after the user clears browsing data. Because the models get diff --git a/chrome/browser/cocoa/cookies_window_controller_unittest.mm b/chrome/browser/cocoa/cookies_window_controller_unittest.mm index 224663f..deff1ee 100644 --- a/chrome/browser/cocoa/cookies_window_controller_unittest.mm +++ b/chrome/browser/cocoa/cookies_window_controller_unittest.mm @@ -243,7 +243,7 @@ TEST_F(CookiesWindowControllerTest, TreeNodesRemoved) { controller_.reset( [[CookiesWindowController alloc] initWithProfile:profile - databaseHelper:database_helper_ + databaseHelper:database_helper_ storageHelper:local_storage_helper_]); // Root --> foo.com --> Cookies. @@ -580,6 +580,62 @@ TEST_F(CookiesWindowControllerTest, UpdateFilter) EXPECT_EQ(1U, [[[controller_ cocoaTreeModel] children] count]); } +TEST_F(CookiesWindowControllerTest, CreateDatabaseStorageNodes) { + TestingProfile* profile = browser_helper_.profile(); + database_helper_ = new MockBrowsingDataDatabaseHelper(profile); + local_storage_helper_ = new MockBrowsingDataLocalStorageHelper(profile); + database_helper_->AddDatabaseSamples(); + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:profile + databaseHelper:database_helper_ + storageHelper:local_storage_helper_]); + database_helper_->Notify(); + + ASSERT_EQ(2U, [[[controller_ cocoaTreeModel] children] count]); + + // Root --> gdbhost1. + CocoaCookieTreeNode* node = + [[[controller_ cocoaTreeModel] children] objectAtIndex:0]; + EXPECT_TRUE([@"gdbhost1" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeFolder, [node nodeType]); + EXPECT_EQ(1U, [[node children] count]); + + // host1 --> Web Databases. + node = [[node children] lastObject]; + EXPECT_TRUE([@"Web Databases" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeFolder, [node nodeType]); + EXPECT_EQ(1U, [[node children] count]); + + // Database Storage --> db1. + node = [[node children] lastObject]; + EXPECT_TRUE([@"db1" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeDatabaseStorage, [node nodeType]); + EXPECT_TRUE([@"description 1" isEqualToString:[node databaseDescription]]); + EXPECT_TRUE([node lastModified]); + EXPECT_TRUE([node fileSize]); + + // Root --> gdbhost2. + node = + [[[controller_ cocoaTreeModel] children] objectAtIndex:1]; + EXPECT_TRUE([@"gdbhost2" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeFolder, [node nodeType]); + EXPECT_EQ(1U, [[node children] count]); + + // host1 --> Web Databases. + node = [[node children] lastObject]; + EXPECT_TRUE([@"Web Databases" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeFolder, [node nodeType]); + EXPECT_EQ(1U, [[node children] count]); + + // Database Storage --> db2. + node = [[node children] lastObject]; + EXPECT_TRUE([@"db2" isEqualToString:[node title]]); + EXPECT_EQ(kCocoaCookieTreeNodeTypeDatabaseStorage, [node nodeType]); + EXPECT_TRUE([@"description 2" isEqualToString:[node databaseDescription]]); + EXPECT_TRUE([node lastModified]); + EXPECT_TRUE([node fileSize]); +} + TEST_F(CookiesWindowControllerTest, CreateLocalStorageNodes) { TestingProfile* profile = browser_helper_.profile(); net::CookieMonster* cm = profile->GetCookieMonster(); -- cgit v1.1