diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/DEPS | 3 | ||||
-rw-r--r-- | chrome/app/nibs/Cookies.xib | 2263 | ||||
-rw-r--r-- | chrome/app/nibs/Preferences.xib | 14 | ||||
-rw-r--r-- | chrome/browser/cocoa/cookie_tree_node.h | 56 | ||||
-rw-r--r-- | chrome/browser/cocoa/cookie_tree_node.mm | 119 | ||||
-rw-r--r-- | chrome/browser/cocoa/cookies_window_controller.h | 117 | ||||
-rw-r--r-- | chrome/browser/cocoa/cookies_window_controller.mm | 242 | ||||
-rw-r--r-- | chrome/browser/cocoa/cookies_window_controller_unittest.mm | 366 | ||||
-rw-r--r-- | chrome/browser/cocoa/preferences_window_controller.h | 2 | ||||
-rw-r--r-- | chrome/browser/cocoa/preferences_window_controller.mm | 9 | ||||
-rwxr-xr-x | chrome/chrome_browser.gypi | 8 | ||||
-rw-r--r-- | chrome/chrome_dll.gypi | 1 | ||||
-rwxr-xr-x | chrome/chrome_tests.gypi | 1 |
13 files changed, 3199 insertions, 2 deletions
diff --git a/chrome/DEPS b/chrome/DEPS index c24006e..f8a0e86 100644 --- a/chrome/DEPS +++ b/chrome/DEPS @@ -25,6 +25,9 @@ include_rules = [ # Allow inclusion of the database library. "+webkit/database", + # Allow Apple code ImageAndTextCell. + "+third_party/apple", + # Allow inclusion of Mozilla interface headers. "+third_party/mozilla", diff --git a/chrome/app/nibs/Cookies.xib b/chrome/app/nibs/Cookies.xib new file mode 100644 index 0000000..9f37c85 --- /dev/null +++ b/chrome/app/nibs/Cookies.xib @@ -0,0 +1,2263 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">10C540</string> + <string key="IBDocument.InterfaceBuilderVersion">740</string> + <string key="IBDocument.AppKitVersion">1038.25</string> + <string key="IBDocument.HIToolboxVersion">458.00</string> + <object class="NSMutableDictionary" key="IBDocument.PluginVersions"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string> + <string key="NS.object.0">740</string> + </object> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="5"/> + </object> + <object class="NSArray" key="IBDocument.PluginDependencies"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + <object class="NSMutableDictionary" key="IBDocument.Metadata"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys" id="0"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSCustomObject" id="1001"> + <string key="NSClassName">CookiesWindowController</string> + </object> + <object class="NSCustomObject" id="1003"> + <string key="NSClassName">FirstResponder</string> + </object> + <object class="NSCustomObject" id="1004"> + <string key="NSClassName">NSApplication</string> + </object> + <object class="NSWindowTemplate" id="1005"> + <int key="NSWindowStyleMask">15</int> + <int key="NSWindowBacking">2</int> + <string key="NSWindowRect">{{476, 247}, {499, 524}}</string> + <int key="NSWTFlags">544735232</int> + <string key="NSWindowTitle">Cookies and Website Permissions</string> + <string key="NSWindowClass">NSWindow</string> + <nil key="NSViewClass"/> + <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string> + <string key="NSWindowContentMinSize">{499, 513}</string> + <object class="NSView" key="NSWindowView" id="1006"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextField" id="91932637"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{17, 499}, {465, 17}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="901192651"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">The following cookies are stored on your computer:</string> + <object class="NSFont" key="NSSupport" id="743256162"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">13</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="91932637"/> + <object class="NSColor" key="NSBackgroundColor" id="153865828"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlColor</string> + <object class="NSColor" key="NSColor" id="848879610"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes> + </object> + </object> + <object class="NSColor" key="NSTextColor" id="593135112"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlTextColor</string> + <object class="NSColor" key="NSColor" id="386908440"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MAA</bytes> + </object> + </object> + </object> + </object> + <object class="NSScrollView" id="1002552068"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">274</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSClipView" id="68591532"> + <reference key="NSNextResponder" ref="1002552068"/> + <int key="NSvFlags">2304</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSOutlineView" id="120560"> + <reference key="NSNextResponder" ref="68591532"/> + <int key="NSvFlags">256</int> + <string key="NSFrameSize">{457, 237}</string> + <reference key="NSSuperview" ref="68591532"/> + <bool key="NSEnabled">YES</bool> + <object class="_NSCornerView" key="NSCornerView"> + <nil key="NSNextResponder"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{443, 0}, {16, 17}}</string> + </object> + <object class="NSMutableArray" key="NSTableColumns"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTableColumn" id="936123567"> + <double key="NSWidth">455</double> + <double key="NSMinWidth">16</double> + <double key="NSMaxWidth">1000</double> + <object class="NSTableHeaderCell" key="NSHeaderCell"> + <int key="NSCellFlags">75628096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport" id="26"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">11</double> + <int key="NSfFlags">3100</int> + </object> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">headerTextColor</string> + <reference key="NSColor" ref="386908440"/> + </object> + </object> + <object class="NSTextFieldCell" key="NSDataCell" id="363879356"> + <int key="NSCellFlags">337772096</int> + <int key="NSCellFlags2">2048</int> + <string key="NSContents">Text Cell</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="120560"/> + <object class="NSColor" key="NSBackgroundColor" id="657409763"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">controlBackgroundColor</string> + <reference key="NSColor" ref="848879610"/> + </object> + <reference key="NSTextColor" ref="593135112"/> + </object> + <int key="NSResizingMask">3</int> + <bool key="NSIsResizeable">YES</bool> + <bool key="NSIsEditable">YES</bool> + <reference key="NSTableView" ref="120560"/> + </object> + </object> + <double key="NSIntercellSpacingWidth">2</double> + <double key="NSIntercellSpacingHeight">3</double> + <object class="NSColor" key="NSBackgroundColor" id="28636642"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MQA</bytes> + </object> + <object class="NSColor" key="NSGridColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">gridColor</string> + <object class="NSColor" key="NSColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MC41AA</bytes> + </object> + </object> + <double key="NSRowHeight">17</double> + <int key="NSTvFlags">-633339904</int> + <reference key="NSDelegate"/> + <reference key="NSDataSource"/> + <int key="NSColumnAutoresizingStyle">4</int> + <int key="NSDraggingSourceMaskForLocal">15</int> + <int key="NSDraggingSourceMaskForNonLocal">0</int> + <bool key="NSAllowsTypeSelect">YES</bool> + <int key="NSTableViewDraggingDestinationStyle">0</int> + </object> + </object> + <string key="NSFrame">{{1, 1}, {457, 237}}</string> + <reference key="NSSuperview" ref="1002552068"/> + <reference key="NSNextKeyView" ref="120560"/> + <reference key="NSDocView" ref="120560"/> + <reference key="NSBGColor" ref="657409763"/> + <int key="NScvFlags">4</int> + </object> + <object class="NSScroller" id="342557255"> + <reference key="NSNextResponder" ref="1002552068"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{443, 1}, {15, 222}}</string> + <reference key="NSSuperview" ref="1002552068"/> + <int key="NSsFlags">512</int> + <reference key="NSTarget" ref="1002552068"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">1</double> + </object> + <object class="NSScroller" id="33257460"> + <reference key="NSNextResponder" ref="1002552068"/> + <int key="NSvFlags">-2147483392</int> + <string key="NSFrame">{{1, 223}, {442, 15}}</string> + <reference key="NSSuperview" ref="1002552068"/> + <int key="NSsFlags">513</int> + <reference key="NSTarget" ref="1002552068"/> + <string key="NSAction">_doScroller:</string> + <double key="NSPercent">1</double> + </object> + </object> + <string key="NSFrame">{{20, 252}, {459, 239}}</string> + <reference key="NSSuperview" ref="1006"/> + <reference key="NSNextKeyView" ref="68591532"/> + <int key="NSsFlags">562</int> + <reference key="NSVScroller" ref="342557255"/> + <reference key="NSHScroller" ref="33257460"/> + <reference key="NSContentView" ref="68591532"/> + <bytes key="NSScrollAmts">QSAAAEEgAABBoAAAQaAAAA</bytes> + </object> + <object class="NSBox" id="271096905"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">34</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSView" id="470176110"> + <reference key="NSNextResponder" ref="271096905"/> + <int key="NSvFlags">256</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSTextField" id="963894543"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{28, 164}, {46, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="180607854"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Name:</string> + <object class="NSFont" key="NSSupport" id="1029389782"> + <string key="NSName">LucidaGrande-Bold</string> + <double key="NSSize">13</double> + <int key="NSfFlags">16</int> + </object> + <reference key="NSControlView" ref="963894543"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="372436668"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{14, 139}, {61, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="102867899"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Content:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="372436668"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="896098170"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{14, 114}, {59, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="789962444"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Domain:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="896098170"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="316383864"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{37, 89}, {37, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="334472683"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Path:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="316383864"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="554007155"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{10, 64}, {66, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="58513858"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Send For:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="554007155"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="23166105"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{15, 39}, {60, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="88655289"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Created:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="23166105"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="479211433"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">268</int> + <string key="NSFrame">{{18, 14}, {57, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="156827030"> + <int key="NSCellFlags">68288064</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Expires:</string> + <reference key="NSSupport" ref="1029389782"/> + <reference key="NSControlView" ref="479211433"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="115711329"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 164}, {372, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="374896722"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="115711329"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="99708837"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 139}, {372, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="642661444"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="99708837"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="947098731"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 114}, {371, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="179992136"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="947098731"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="207640968"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 89}, {371, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="854107155"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="207640968"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="28517082"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 64}, {371, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="758369775"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="28517082"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="1015689263"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 39}, {371, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="279699973"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="1015689263"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + <object class="NSTextField" id="483944318"> + <reference key="NSNextResponder" ref="470176110"/> + <int key="NSvFlags">266</int> + <string key="NSFrame">{{82, 14}, {372, 17}}</string> + <reference key="NSSuperview" ref="470176110"/> + <bool key="NSEnabled">YES</bool> + <object class="NSTextFieldCell" key="NSCell" id="727462063"> + <int key="NSCellFlags">70385217</int> + <int key="NSCellFlags2">272630784</int> + <string key="NSContents">Label</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="483944318"/> + <reference key="NSBackgroundColor" ref="153865828"/> + <reference key="NSTextColor" ref="593135112"/> + </object> + </object> + </object> + <string key="NSFrame">{{1, 1}, {463, 189}}</string> + <reference key="NSSuperview" ref="271096905"/> + </object> + </object> + <string key="NSFrame">{{17, 47}, {465, 191}}</string> + <reference key="NSSuperview" ref="1006"/> + <string key="NSOffsets">{0, 0}</string> + <object class="NSTextFieldCell" key="NSTitleCell"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">0</int> + <string key="NSContents">Box</string> + <reference key="NSSupport" ref="26"/> + <object class="NSColor" key="NSBackgroundColor"> + <int key="NSColorSpace">6</int> + <string key="NSCatalogName">System</string> + <string key="NSColorName">textBackgroundColor</string> + <reference key="NSColor" ref="28636642"/> + </object> + <object class="NSColor" key="NSTextColor"> + <int key="NSColorSpace">3</int> + <bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes> + </object> + </object> + <reference key="NSContentView" ref="470176110"/> + <int key="NSBorderType">1</int> + <int key="NSBoxType">0</int> + <int key="NSTitlePosition">0</int> + <bool key="NSTransparent">NO</bool> + </object> + <object class="NSButton" id="328853880"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{14, 9}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="983254772"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Remove</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="328853880"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"></string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="153456657"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">292</int> + <string key="NSFrame">{{110, 9}, {111, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="706435612"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Remove All</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="153456657"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + <object class="NSButton" id="877515252"> + <reference key="NSNextResponder" ref="1006"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{389, 9}, {96, 32}}</string> + <reference key="NSSuperview" ref="1006"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="899809726"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents">Close</string> + <reference key="NSSupport" ref="743256162"/> + <reference key="NSControlView" ref="877515252"/> + <int key="NSButtonFlags">-2038284033</int> + <int key="NSButtonFlags2">129</int> + <string key="NSAlternateContents"/> + <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{499, 524}</string> + <reference key="NSSuperview"/> + </object> + <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string> + <string key="NSMinSize">{499, 535}</string> + <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string> + </object> + <object class="NSTreeController" id="317796902"> + <object class="NSMutableArray" key="NSDeclaredKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>title</string> + <string>name</string> + <string>content</string> + <string>domain</string> + <string>path</string> + <string>sendFor</string> + <string>created</string> + <string>expires</string> + <string>count</string> + </object> + <string key="NSObjectClassName">CocoaCookieTreeNode</string> + <object class="_NSManagedProxy" key="_NSManagedProxy"/> + <bool key="NSPreservesSelection">YES</bool> + <bool key="NSSelectsInsertedObjects">YES</bool> + <string key="NSTreeContentChildrenKey">children</string> + <string key="NSTreeContentLeafKey">isLeaf</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">window</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">49</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">closeSheet:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="877515252"/> + </object> + <int key="connectionID">50</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">treeController_</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="317796902"/> + </object> + <int key="connectionID">52</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: arrangedObjects.title</string> + <reference key="source" ref="936123567"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="936123567"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: arrangedObjects.title</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">arrangedObjects.title</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">57</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">contentArray: cocoaTreeModel.children</string> + <reference key="source" ref="317796902"/> + <reference key="destination" ref="1001"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="317796902"/> + <reference key="NSDestination" ref="1001"/> + <string key="NSLabel">contentArray: cocoaTreeModel.children</string> + <string key="NSBinding">contentArray</string> + <string key="NSKeyPath">cocoaTreeModel.children</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">58</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.name</string> + <reference key="source" ref="115711329"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="115711329"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.name</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.name</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">90</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.content</string> + <reference key="source" ref="99708837"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="99708837"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.content</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.content</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">91</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.domain</string> + <reference key="source" ref="947098731"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="947098731"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.domain</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.domain</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">92</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.path</string> + <reference key="source" ref="207640968"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="207640968"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.path</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.path</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">93</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.sendFor</string> + <reference key="source" ref="28517082"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="28517082"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.sendFor</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.sendFor</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">94</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.created</string> + <reference key="source" ref="1015689263"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="1015689263"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.created</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.created</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">95</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">value: selection.expires</string> + <reference key="source" ref="483944318"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="483944318"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">value: selection.expires</string> + <string key="NSBinding">value</string> + <string key="NSKeyPath">selection.expires</string> + <object class="NSDictionary" key="NSOptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>NSNoSelectionPlaceholder</string> + <string>NSNotApplicablePlaceholder</string> + <string>NSNullPlaceholder</string> + <string>NSRaisesForNotApplicableKeys</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <string>< no cookie selected ></string> + <boolean value="NO"/> + </object> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">96</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">deleteCookie:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="328853880"/> + </object> + <int key="connectionID">97</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">deleteAllCookies:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="153456657"/> + </object> + <int key="connectionID">98</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="120560"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">99</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">delegate</string> + <reference key="source" ref="1005"/> + <reference key="destination" ref="1001"/> + </object> + <int key="connectionID">106</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: selectionIndexPath</string> + <reference key="source" ref="328853880"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="328853880"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">enabled: selectionIndexPath</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">selectionIndexPath</string> + <object class="NSDictionary" key="NSOptions"> + <string key="NS.key.0">NSValueTransformerName</string> + <string key="NS.object.0">NSIsNotNil</string> + </object> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">126</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBBindingConnection" key="connection"> + <string key="label">enabled: arrangedObjects.count</string> + <reference key="source" ref="153456657"/> + <reference key="destination" ref="317796902"/> + <object class="NSNibBindingConnector" key="connector"> + <reference key="NSSource" ref="153456657"/> + <reference key="NSDestination" ref="317796902"/> + <string key="NSLabel">enabled: arrangedObjects.count</string> + <string key="NSBinding">enabled</string> + <string key="NSKeyPath">arrangedObjects.count</string> + <int key="NSNibBindingConnectorVersion">2</int> + </object> + </object> + <int key="connectionID">128</int> + </object> + </object> + <object class="IBMutableOrderedSet" key="objectRecords"> + <object class="NSArray" key="orderedObjects"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBObjectRecord"> + <int key="objectID">0</int> + <reference key="object" ref="0"/> + <reference key="children" ref="1000"/> + <nil key="parent"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-2</int> + <reference key="object" ref="1001"/> + <reference key="parent" ref="0"/> + <string key="objectName">File's Owner</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="0"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="0"/> + <string key="objectName">Application</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">1</int> + <reference key="object" ref="1005"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="1006"/> + </object> + <reference key="parent" ref="0"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">2</int> + <reference key="object" ref="1006"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="91932637"/> + <reference ref="1002552068"/> + <reference ref="271096905"/> + <reference ref="328853880"/> + <reference ref="153456657"/> + <reference ref="877515252"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="91932637"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="901192651"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="901192651"/> + <reference key="parent" ref="91932637"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">5</int> + <reference key="object" ref="1002552068"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="342557255"/> + <reference ref="33257460"/> + <reference ref="120560"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">6</int> + <reference key="object" ref="342557255"/> + <reference key="parent" ref="1002552068"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">7</int> + <reference key="object" ref="33257460"/> + <reference key="parent" ref="1002552068"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">8</int> + <reference key="object" ref="120560"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="936123567"/> + </object> + <reference key="parent" ref="1002552068"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">10</int> + <reference key="object" ref="936123567"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="363879356"/> + </object> + <reference key="parent" ref="120560"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">13</int> + <reference key="object" ref="363879356"/> + <reference key="parent" ref="936123567"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">14</int> + <reference key="object" ref="271096905"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="963894543"/> + <reference ref="372436668"/> + <reference ref="896098170"/> + <reference ref="316383864"/> + <reference ref="554007155"/> + <reference ref="23166105"/> + <reference ref="479211433"/> + <reference ref="115711329"/> + <reference ref="99708837"/> + <reference ref="207640968"/> + <reference ref="28517082"/> + <reference ref="1015689263"/> + <reference ref="483944318"/> + <reference ref="947098731"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">15</int> + <reference key="object" ref="328853880"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="983254772"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">16</int> + <reference key="object" ref="983254772"/> + <reference key="parent" ref="328853880"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">17</int> + <reference key="object" ref="153456657"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="706435612"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">18</int> + <reference key="object" ref="706435612"/> + <reference key="parent" ref="153456657"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">19</int> + <reference key="object" ref="877515252"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="899809726"/> + </object> + <reference key="parent" ref="1006"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">20</int> + <reference key="object" ref="899809726"/> + <reference key="parent" ref="877515252"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">21</int> + <reference key="object" ref="963894543"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="180607854"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">22</int> + <reference key="object" ref="180607854"/> + <reference key="parent" ref="963894543"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">23</int> + <reference key="object" ref="372436668"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="102867899"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">24</int> + <reference key="object" ref="102867899"/> + <reference key="parent" ref="372436668"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">25</int> + <reference key="object" ref="896098170"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="789962444"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">26</int> + <reference key="object" ref="789962444"/> + <reference key="parent" ref="896098170"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">27</int> + <reference key="object" ref="316383864"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="334472683"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">28</int> + <reference key="object" ref="334472683"/> + <reference key="parent" ref="316383864"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">29</int> + <reference key="object" ref="554007155"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="58513858"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">30</int> + <reference key="object" ref="58513858"/> + <reference key="parent" ref="554007155"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">31</int> + <reference key="object" ref="23166105"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="88655289"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">32</int> + <reference key="object" ref="88655289"/> + <reference key="parent" ref="23166105"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">33</int> + <reference key="object" ref="479211433"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="156827030"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">34</int> + <reference key="object" ref="156827030"/> + <reference key="parent" ref="479211433"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">35</int> + <reference key="object" ref="115711329"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="374896722"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">36</int> + <reference key="object" ref="374896722"/> + <reference key="parent" ref="115711329"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">37</int> + <reference key="object" ref="99708837"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="642661444"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">38</int> + <reference key="object" ref="642661444"/> + <reference key="parent" ref="99708837"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">39</int> + <reference key="object" ref="947098731"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="179992136"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">40</int> + <reference key="object" ref="179992136"/> + <reference key="parent" ref="947098731"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">41</int> + <reference key="object" ref="207640968"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="854107155"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">42</int> + <reference key="object" ref="854107155"/> + <reference key="parent" ref="207640968"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">43</int> + <reference key="object" ref="28517082"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="758369775"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">44</int> + <reference key="object" ref="758369775"/> + <reference key="parent" ref="28517082"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">45</int> + <reference key="object" ref="1015689263"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="279699973"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">46</int> + <reference key="object" ref="279699973"/> + <reference key="parent" ref="1015689263"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">47</int> + <reference key="object" ref="483944318"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="727462063"/> + </object> + <reference key="parent" ref="271096905"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">48</int> + <reference key="object" ref="727462063"/> + <reference key="parent" ref="483944318"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">51</int> + <reference key="object" ref="317796902"/> + <reference key="parent" ref="0"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>-1.IBPluginDependency</string> + <string>-2.IBPluginDependency</string> + <string>-3.IBPluginDependency</string> + <string>1.IBEditorWindowLastContentRect</string> + <string>1.IBPluginDependency</string> + <string>1.IBWindowTemplateEditedContentRect</string> + <string>1.NSWindowTemplate.visibleAtLaunch</string> + <string>1.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>1.windowTemplate.hasMinSize</string> + <string>1.windowTemplate.minSize</string> + <string>10.IBPluginDependency</string> + <string>13.CustomClassName</string> + <string>13.IBPluginDependency</string> + <string>14.IBPluginDependency</string> + <string>15.IBPluginDependency</string> + <string>16.IBPluginDependency</string> + <string>17.IBPluginDependency</string> + <string>18.IBPluginDependency</string> + <string>19.IBPluginDependency</string> + <string>2.IBPluginDependency</string> + <string>20.IBPluginDependency</string> + <string>21.IBPluginDependency</string> + <string>22.IBPluginDependency</string> + <string>23.IBPluginDependency</string> + <string>24.IBPluginDependency</string> + <string>25.IBPluginDependency</string> + <string>26.IBPluginDependency</string> + <string>27.IBPluginDependency</string> + <string>28.IBPluginDependency</string> + <string>29.IBPluginDependency</string> + <string>3.IBPluginDependency</string> + <string>30.IBPluginDependency</string> + <string>31.IBPluginDependency</string> + <string>32.IBPluginDependency</string> + <string>33.IBPluginDependency</string> + <string>34.IBPluginDependency</string> + <string>35.IBPluginDependency</string> + <string>36.IBPluginDependency</string> + <string>37.IBPluginDependency</string> + <string>38.IBPluginDependency</string> + <string>39.IBPluginDependency</string> + <string>4.IBPluginDependency</string> + <string>40.IBPluginDependency</string> + <string>41.IBPluginDependency</string> + <string>42.IBPluginDependency</string> + <string>43.IBPluginDependency</string> + <string>44.IBPluginDependency</string> + <string>45.IBPluginDependency</string> + <string>46.IBPluginDependency</string> + <string>47.IBPluginDependency</string> + <string>48.IBPluginDependency</string> + <string>5.IBPluginDependency</string> + <string>51.IBPluginDependency</string> + <string>6.IBPluginDependency</string> + <string>7.IBPluginDependency</string> + <string>8.IBPluginDependency</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{498, 183}, {499, 524}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{{498, 183}, {499, 524}}</string> + <boolean value="NO"/> + <string>{196, 240}</string> + <string>{{357, 418}, {480, 270}}</string> + <boolean value="YES"/> + <string>{499, 513}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>ImageAndTextCell</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + </object> + </object> + <object class="NSMutableDictionary" key="unlocalizedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="activeLocalization"/> + <object class="NSMutableDictionary" key="localizations"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference key="dict.sortedKeys" ref="0"/> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">129</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">CookiesWindowController</string> + <string key="superclassName">NSWindowController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>closeSheet:</string> + <string>deleteAllCookies:</string> + <string>deleteCookie:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="NSMutableDictionary" key="outlets"> + <string key="NS.key.0">treeController_</string> + <string key="NS.object.0">NSTreeController</string> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/cookies_window_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">ImageAndTextCell</string> + <string key="superclassName">NSTextFieldCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">../third_party/apple/ImageAndTextCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/status_bubble_mac.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/tab_strip_model_observer_bridge.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/nswindow_local_state.h</string> + </object> + </object> + </object> + <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">NSActionCell</string> + <string key="superclassName">NSCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <string key="superclassName">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="966009744"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="308216055"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="669407503"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSApplication</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSBox</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSBox.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButton</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButton.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSButtonCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSCell</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSControl</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="376210239"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSControl.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSController</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSFormatter</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSMenu</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="336851698"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAlert.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSAnimation.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="966009744"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="308216055"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSBrowser.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="669407503"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSComboBox.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSComboBoxCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="376210239"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDatePickerCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="846502556"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSImage.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <reference key="sourceIdentifier" ref="336851698"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="998258386"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRuleEditor.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSound.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSpeechRecognizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSpeechSynthesizer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTabView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="529665897"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSText.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextStorage.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTokenField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTokenFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="140623127"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier" id="357114725"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSError.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSMetadata.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObject.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPort.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSSpellServer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSStream.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSThread.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURL.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">Print.framework/Headers/PDEPluginInterface.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CAAnimation.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CALayer.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">QuartzCore.framework/Headers/CIImageProvider.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFAuthorizationView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFCertificatePanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">SecurityInterface.framework/Headers/SFChooseIdentityPanel.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSObjectController</string> + <string key="superclassName">NSController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSObjectController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSOutlineView</string> + <string key="superclassName">NSTableView</string> + <reference key="sourceIdentifier" ref="998258386"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSResponder</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScrollView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSScroller</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableColumn</string> + <string key="superclassName">NSObject</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTableColumn.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTableView</string> + <string key="superclassName">NSControl</string> + <reference key="sourceIdentifier" ref="529665897"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextField</string> + <string key="superclassName">NSControl</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTextFieldCell</string> + <string key="superclassName">NSActionCell</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSTreeController</string> + <string key="superclassName">NSObjectController</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSTreeController.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSView</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="140623127"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <reference key="sourceIdentifier" ref="846502556"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <string key="superclassName">NSResponder</string> + <reference key="sourceIdentifier" ref="357114725"/> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindow</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">NSWindowController</string> + <string key="superclassName">NSResponder</string> + <object class="NSMutableDictionary" key="actions"> + <string key="NS.key.0">showWindow:</string> + <string key="NS.object.0">id</string> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBFrameworkSource</string> + <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string> + </object> + </object> + </object> + </object> + <int key="IBDocument.localizationMode">0</int> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string> + <integer value="1050" key="NS.object.0"/> + </object> + <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies"> + <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string> + <integer value="3000" key="NS.object.0"/> + </object> + <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool> + <string key="IBDocument.LastKnownRelativeProjectPath">../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/chrome/app/nibs/Preferences.xib b/chrome/app/nibs/Preferences.xib index bcf9ac4..3b47dfa 100644 --- a/chrome/app/nibs/Preferences.xib +++ b/chrome/app/nibs/Preferences.xib @@ -486,7 +486,7 @@ <reference key="NSSuperview" ref="1016273328"/> <bool key="NSEnabled">YES</bool> <object class="NSButtonCell" key="NSCell" id="441531293"> - <int key="NSCellFlags">604110336</int> + <int key="NSCellFlags">67239424</int> <int key="NSCellFlags2">134217728</int> <string key="NSContents">^IDS_OPTIONS_COOKIES_SHOWCOOKIES</string> <reference key="NSSupport" ref="445696277"/> @@ -3606,6 +3606,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> <int key="connectionID">617</int> </object> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">showCookies:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1054376288"/> + </object> + <int key="connectionID">618</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -5218,7 +5226,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> </object> </object> <nil key="sourceID"/> - <int key="maxID">617</int> + <int key="maxID">618</int> </object> <object class="IBClassDescriber" key="IBDocument.Classes"> <object class="NSMutableArray" key="referencedPartialClassDescriptions"> @@ -5378,6 +5386,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>privacyLearnMore:</string> <string>removeSelectedHomepages:</string> <string>resetThemeToDefault:</string> + <string>showCookies:</string> <string>showPreferences:</string> <string>showSavedPasswords:</string> <string>themesGallery:</string> @@ -5402,6 +5411,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes> <string>id</string> <string>id</string> <string>id</string> + <string>id</string> </object> </object> <object class="NSMutableDictionary" key="outlets"> diff --git a/chrome/browser/cocoa/cookie_tree_node.h b/chrome/browser/cocoa/cookie_tree_node.h new file mode 100644 index 0000000..5ff6695 --- /dev/null +++ b/chrome/browser/cocoa/cookie_tree_node.h @@ -0,0 +1,56 @@ +// Copyright (c) 2009 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 "base/scoped_nsobject.h" +#include "chrome/browser/cookies_tree_model.h" + +// This class is used by CookiesWindowController and represents a node in the +// cookie tree view. +@interface CocoaCookieTreeNode : NSObject { + scoped_nsobject<NSString> title_; + scoped_nsobject<NSMutableArray> children_; + + // The platform-independent model node. + CookieTreeNode* treeNode_; // weak + + // These members are only set for true cookie nodes. + BOOL isCookie_; + scoped_nsobject<NSString> name_; + scoped_nsobject<NSString> content_; + scoped_nsobject<NSString> domain_; + scoped_nsobject<NSString> path_; + scoped_nsobject<NSString> sendFor_; + // Stringifed dates. + scoped_nsobject<NSString> created_; + scoped_nsobject<NSString> expires_; +} + +// Designated initializer. +- (id)initWithNode:(CookieTreeNode*)node; + +// Re-sets all the members of the node based on |treeNode_|. +- (void)rebuild; + +- (BOOL)isLeaf; + +// Getters. +- (NSString*)title; +// |-children| is mutable so that the CookiesTreeModelObserverBridge can +// operate on the children. +- (NSMutableArray*)children; +- (TreeModelNode*)treeNode; + +// Used only by cookies. Nil for non-cookie nodes. +- (BOOL)isCookie; +- (NSString*)name; +- (NSString*)content; +- (NSString*)domain; +- (NSString*)path; +- (NSString*)sendFor; +- (NSString*)created; +- (NSString*)expires; + +@end diff --git a/chrome/browser/cocoa/cookie_tree_node.mm b/chrome/browser/cocoa/cookie_tree_node.mm new file mode 100644 index 0000000..1b1aafe --- /dev/null +++ b/chrome/browser/cocoa/cookie_tree_node.mm @@ -0,0 +1,119 @@ +// Copyright (c) 2009 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 "chrome/browser/cocoa/cookie_tree_node.h" + +#include "app/l10n_util_mac.h" +#import "base/i18n/time_formatting.h" +#include "base/sys_string_conversions.h" +#include "grit/generated_resources.h" + +@implementation CocoaCookieTreeNode + +- (id)initWithNode:(CookieTreeNode*)node { + if ((self = [super init])) { + DCHECK(node); + treeNode_ = node; + + const int childCount = node->GetChildCount(); + children_.reset([[NSMutableArray alloc] initWithCapacity:childCount]); + for (int i = 0; i < childCount; ++i) { + CookieTreeNode* child = node->GetChild(i); + scoped_nsobject<CocoaCookieTreeNode> childNode( + [[CocoaCookieTreeNode alloc] initWithNode:child]); + [children_ addObject:childNode.get()]; + } + + [self rebuild]; + } + return self; +} + +- (void)rebuild { + title_.reset([base::SysWideToNSString(treeNode_->GetTitle()) retain]); + isCookie_ = NO; + + CookieTreeNode::DetailedInfo info = treeNode_->GetDetailedInfo(); + if (info.node_type == CookieTreeNode::DetailedInfo::TYPE_COOKIE) { + isCookie_ = YES; + net::CookieMonster::CanonicalCookie cookie = info.cookie->second; + + name_.reset([base::SysUTF8ToNSString(cookie.Name()) retain]); + title_.reset([base::SysUTF8ToNSString(cookie.Name()) retain]); + content_.reset([base::SysUTF8ToNSString(cookie.Value()) retain]); + path_.reset([base::SysUTF8ToNSString(cookie.Path()) retain]); + domain_.reset([base::SysWideToNSString(info.origin) retain]); + + if (cookie.DoesExpire()) { + expires_.reset([base::SysWideToNSString( + base::TimeFormatFriendlyDateAndTime(cookie.ExpiryDate())) retain]); + } else { + expires_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_EXPIRES_SESSION) retain]); + } + + created_.reset([base::SysWideToNSString( + base::TimeFormatFriendlyDateAndTime(cookie.CreationDate())) retain]); + + if (cookie.IsSecure()) { + sendFor_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_SENDFOR_SECURE) retain]); + } else { + sendFor_.reset([l10n_util::GetNSStringWithFixup( + IDS_COOKIES_COOKIE_SENDFOR_ANY) retain]); + } + } +} + +- (BOOL)isLeaf { + return (treeNode_->GetChildCount() == 0); +} + +- (NSString*)title { + return title_.get(); +} + +- (NSMutableArray*)children { + return children_.get(); +} + +- (TreeModelNode*)treeNode { + return treeNode_; +} + +#pragma mark Cookie Accessors + +- (BOOL)isCookie { + return isCookie_; +} + +- (NSString*)name { + return name_.get(); +} + +- (NSString*)content { + return content_.get(); +} + +- (NSString*)domain { + return domain_.get(); +} + +- (NSString*)path { + return path_.get(); +} + +- (NSString*)sendFor { + return sendFor_.get(); +} + +- (NSString*)created { + return created_.get(); +} + +- (NSString*)expires { + return expires_.get(); +} + +@end diff --git a/chrome/browser/cocoa/cookies_window_controller.h b/chrome/browser/cocoa/cookies_window_controller.h new file mode 100644 index 0000000..c234742 --- /dev/null +++ b/chrome/browser/cocoa/cookies_window_controller.h @@ -0,0 +1,117 @@ +// Copyright (c) 2009 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 "app/tree_model.h" +#include "base/cocoa_protocols_mac.h" +#include "base/scoped_nsobject.h" +#include "base/scoped_ptr.h" +#import "chrome/browser/cocoa/cookie_tree_node.h" +#include "chrome/browser/cookies_tree_model.h" +#include "net/base/cookie_monster.h" + +@class CookiesWindowController; +class Profile; + +namespace { +class CookiesWindowControllerTest; +} + +// Thin bridge to the window controller that performs model update actions +// directly on the treeController_. +class CookiesTreeModelObserverBridge : public TreeModelObserver { + public: + explicit CookiesTreeModelObserverBridge(CookiesWindowController* controller); + + // Notification that nodes were added to the specified parent. + virtual void TreeNodesAdded(TreeModel* model, + TreeModelNode* parent, + int start, + int count); + + // Notification that nodes were removed from the specified parent. + virtual void TreeNodesRemoved(TreeModel* model, + TreeModelNode* parent, + int start, + int count); + + // Notification the children of |parent| have been reordered. Note, only + // the direct children of |parent| have been reordered, not descendants. + virtual void TreeNodeChildrenReordered(TreeModel* model, + TreeModelNode* parent); + + // Notification that the contents of a node has changed. + virtual void TreeNodeChanged(TreeModel* model, TreeModelNode* node); + + private: + friend class ::CookiesWindowControllerTest; + + // Creates an CocoaCookieTreeNodefrom a platform-independent one. + // Return value is autoreleased. This can recusively create child nodes. + CocoaCookieTreeNode* CocoaNodeFromTreeNode(TreeModelNode* node, + bool recurse); + + // Finds the Cocoa model node based on a platform-independent one. This is + // done by comparing the treeNode pointers. |start| is the node to start + // searching at. If |start| is nil, the root is used. + CocoaCookieTreeNode* FindCocoaNode(TreeModelNode* node, + CocoaCookieTreeNode* start); + + CookiesWindowController* window_controller_; // weak, owns us. +}; + +// Controller for the cookies manager. This class stores an internal copy of +// the CookiesTreeModel but with Cocoa-converted values (NSStrings and NSImages +// instead of std::strings and SkBitmaps). Doing this allows us to use bindings +// for the interface. Changes are pushed to this internal model via a very thin +// bridge (see above). +// +// TODO(rsesek): Localize this nib. +@interface CookiesWindowController : NSWindowController + <NSOutlineViewDelegate, + NSWindowDelegate> { + @private + // Platform-independent model and C++/Obj-C bridge components. + scoped_ptr<CookiesTreeModel> treeModel_; + scoped_ptr<CookiesTreeModelObserverBridge> modelObserver_; + + // Cached array of icons. + scoped_nsobject<NSMutableArray> icons_; + + // Our Cocoa copy of the model. + scoped_nsobject<CocoaCookieTreeNode> cocoaTreeModel_; + + IBOutlet NSTreeController* treeController_; + + Profile* profile_; // weak +} +@property (readonly, nonatomic) NSTreeController* treeController; + +// Designated initializer. Profile cannot be NULL. +- (id)initWithProfile:(Profile*)profile; + +// Shows the cookies window as a modal sheet attached to |window|. +- (void)attachSheetTo:(NSWindow*)window; + +// Delete cookie actions. +- (IBAction)deleteCookie:(id)sender; +- (IBAction)deleteAllCookies:(id)sender; + +// Closes the sheet and ends the modal loop. This will also cleanup the memory. +- (IBAction)closeSheet:(id)sender; + +// Returns the cocoaTreeModel_. +- (CocoaCookieTreeNode*)cocoaTreeModel; +- (void)setCocoaTreeModel:(CocoaCookieTreeNode*)model; + +// Returns the treeModel_. +- (CookiesTreeModel*)treeModel; + +@end + +@interface CookiesWindowController (UnitTesting) +- (CookiesTreeModelObserverBridge*)modelObserver; +- (NSArray*)icons; +@end diff --git a/chrome/browser/cocoa/cookies_window_controller.mm b/chrome/browser/cocoa/cookies_window_controller.mm new file mode 100644 index 0000000..41ba73f --- /dev/null +++ b/chrome/browser/cocoa/cookies_window_controller.mm @@ -0,0 +1,242 @@ +// Copyright (c) 2009 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 "chrome/browser/cocoa/cookies_window_controller.h" + +#include <vector> + +#include "app/l10n_util_mac.h" +#include "app/resource_bundle.h" +#import "base/i18n/time_formatting.h" +#import "base/mac_util.h" +#include "base/sys_string_conversions.h" +#include "chrome/browser/profile.h" +#include "grit/generated_resources.h" +#include "grit/theme_resources.h" +#include "skia/ext/skia_utils_mac.h" +#include "third_party/apple/ImageAndTextCell.h" +#include "third_party/skia/include/core/SkBitmap.h" + +// Key path used for notifying KVO. +static NSString* const kCocoaTreeModel = @"cocoaTreeModel"; + +CookiesTreeModelObserverBridge::CookiesTreeModelObserverBridge( + CookiesWindowController* controller) + : window_controller_(controller) { +} + +// Notification that nodes were added to the specified parent. +void CookiesTreeModelObserverBridge::TreeNodesAdded(TreeModel* model, + TreeModelNode* parent, + int start, + int count) { + CocoaCookieTreeNode* cocoa_parent = FindCocoaNode(parent, nil); + NSMutableArray* cocoa_children = [cocoa_parent children]; + + [window_controller_ willChangeValueForKey:kCocoaTreeModel]; + CookieTreeNode* cookie_parent = static_cast<CookieTreeNode*>(parent); + for (int i = 0; i < count; ++i) { + CookieTreeNode* cookie_child = cookie_parent->GetChild(start + i); + CocoaCookieTreeNode* new_child = CocoaNodeFromTreeNode(cookie_child, true); + [cocoa_children addObject:new_child]; + } + [window_controller_ didChangeValueForKey:kCocoaTreeModel]; +} + +// Notification that nodes were removed from the specified parent. +void CookiesTreeModelObserverBridge::TreeNodesRemoved(TreeModel* model, + TreeModelNode* parent, + int start, + int count) { + CocoaCookieTreeNode* cocoa_parent = FindCocoaNode(parent, nil); + [window_controller_ willChangeValueForKey:kCocoaTreeModel]; + NSMutableArray* cocoa_children = [cocoa_parent children]; + for (int i = start + count - 1; i >= start; --i) { + [cocoa_children removeObjectAtIndex:i]; + } + [window_controller_ didChangeValueForKey:kCocoaTreeModel]; +} + +// Notification the children of |parent| have been reordered. Note, only +// the direct children of |parent| have been reordered, not descendants. +void CookiesTreeModelObserverBridge::TreeNodeChildrenReordered(TreeModel* model, + TreeModelNode* parent) { + CocoaCookieTreeNode* cocoa_parent = FindCocoaNode(parent, nil); + NSMutableArray* cocoa_children = [cocoa_parent children]; + + CookieTreeNode* cookie_parent = static_cast<CookieTreeNode*>(parent); + const int child_count = cookie_parent->GetChildCount(); + + [window_controller_ willChangeValueForKey:kCocoaTreeModel]; + for (int i = 0; i < child_count; ++i) { + CookieTreeNode* swap_in = cookie_parent->GetChild(i); + for (int j = i; j < child_count; ++j) { + CocoaCookieTreeNode* child = [cocoa_children objectAtIndex:j]; + TreeModelNode* swap_out = [child treeNode]; + if (swap_in == swap_out) { + [cocoa_children exchangeObjectAtIndex:j withObjectAtIndex:i]; + break; + } + } + } + [window_controller_ didChangeValueForKey:kCocoaTreeModel]; +} + +// Notification that the contents of a node has changed. +void CookiesTreeModelObserverBridge::TreeNodeChanged(TreeModel* model, + TreeModelNode* node) { + [window_controller_ willChangeValueForKey:kCocoaTreeModel]; + CocoaCookieTreeNode* changed_node = FindCocoaNode(node, nil); + [changed_node rebuild]; + [window_controller_ didChangeValueForKey:kCocoaTreeModel]; +} + +CocoaCookieTreeNode* CookiesTreeModelObserverBridge::CocoaNodeFromTreeNode( + TreeModelNode* node, bool recurse) { + CookieTreeNode* cookie_node = static_cast<CookieTreeNode*>(node); + return [[[CocoaCookieTreeNode alloc] initWithNode:cookie_node] autorelease]; +} + +// Does a pre-order traversal on the tree to find |node|. +CocoaCookieTreeNode* CookiesTreeModelObserverBridge::FindCocoaNode( + TreeModelNode* node, CocoaCookieTreeNode* start) { + if (!start) { + start = [window_controller_ cocoaTreeModel]; + } + if ([start treeNode] == node) { + return start; + } + + NSArray* children = [start children]; + for (CocoaCookieTreeNode* child in children) { + if ([child treeNode] == node) { + return child; + } + + // Search the children. Return the result if we find one. + CocoaCookieTreeNode* recurse = FindCocoaNode(node, child); + if (recurse) + return recurse; + } + return nil; // We couldn't find the node. +} + +#pragma mark Window Controller + +@implementation CookiesWindowController + +@synthesize treeController = treeController_; + +- (id)initWithProfile:(Profile*)profile { + DCHECK(profile); + NSString* nibpath = [mac_util::MainAppBundle() pathForResource:@"Cookies" + ofType:@"nib"]; + if ((self = [super initWithWindowNibPath:nibpath owner:self])) { + profile_ = profile; + treeModel_.reset(new CookiesTreeModel(profile_)); + modelObserver_.reset(new CookiesTreeModelObserverBridge(self)); + treeModel_->SetObserver(modelObserver_.get()); + + // Convert the model's icons from Skia to Cocoa. + std::vector<SkBitmap> skiaIcons; + treeModel_->GetIcons(&skiaIcons); + icons_.reset([[NSMutableArray alloc] init]); + for (std::vector<SkBitmap>::iterator it = skiaIcons.begin(); + it != skiaIcons.end(); ++it) { + [icons_ addObject:gfx::SkBitmapToNSImage(*it)]; + } + + // Default icon will be the last item in the array. + ResourceBundle& rb = ResourceBundle::GetSharedInstance(); + // TODO(rsesek): Rename this resource now that it's in multiple places. + [icons_ addObject:rb.GetNSImageNamed(IDR_BOOKMARK_BAR_FOLDER)]; + + // Create the Cocoa model. + CookieTreeNode* root = static_cast<CookieTreeNode*>(treeModel_->GetRoot()); + cocoaTreeModel_.reset([[CocoaCookieTreeNode alloc] initWithNode:root]); + } + return self; +} + +- (void)awakeFromNib { + DCHECK([self window]); + DCHECK_EQ(self, [[self window] delegate]); +} + +- (void)windowWillClose:(NSNotification*)notif { + [self autorelease]; +} + +- (void)attachSheetTo:(NSWindow*)window { + [NSApp beginSheet:[self window] + modalForWindow:window + modalDelegate:self + didEndSelector:@selector(sheetEndSheet:returnCode:contextInfo:) + contextInfo:nil]; +} + +- (void)sheetEndSheet:(NSWindow*)sheet + returnCode:(NSInteger)returnCode + contextInfo:(void*)context { + [sheet close]; + [sheet orderOut:self]; +} + +- (IBAction)deleteCookie:(id)sender { + scoped_nsobject<NSArray> selection( + [[treeController_ selectedObjects] retain]); + for (CocoaCookieTreeNode* node in selection.get()) { + CookieTreeNode* cookie = static_cast<CookieTreeNode*>([node treeNode]); + treeModel_->DeleteCookieNode(cookie); + } +} + +- (IBAction)deleteAllCookies:(id)sender { + treeModel_->DeleteAllCookies(); +} + +- (IBAction)closeSheet:(id)sender { + [NSApp endSheet:[self window]]; +} + +#pragma mark Getters and Setters + +- (CocoaCookieTreeNode*)cocoaTreeModel { + return cocoaTreeModel_.get(); +} +- (void)setCocoaTreeModel:(CocoaCookieTreeNode*)model { + return cocoaTreeModel_.reset([model retain]); +} + +- (CookiesTreeModel*)treeModel { + return treeModel_.get(); +} + +#pragma mark Outline View Delegate + +- (void)outlineView:(NSOutlineView*)outlineView + willDisplayCell:(id)cell + forTableColumn:(NSTableColumn*)tableColumn + item:(id)item { + CocoaCookieTreeNode* node = [item representedObject]; + int index = treeModel_->GetIconIndex([node treeNode]); + NSImage* icon = nil; + if (index >= 0) + icon = [icons_ objectAtIndex:index]; + else + icon = [icons_ lastObject]; + [(ImageAndTextCell*)cell setImage:icon]; +} + +#pragma mark Unit Testing + +- (CookiesTreeModelObserverBridge*)modelObserver { + return modelObserver_.get(); +} + +- (NSArray*)icons { + return icons_.get(); +} + +@end diff --git a/chrome/browser/cocoa/cookies_window_controller_unittest.mm b/chrome/browser/cocoa/cookies_window_controller_unittest.mm new file mode 100644 index 0000000..0071ff1 --- /dev/null +++ b/chrome/browser/cocoa/cookies_window_controller_unittest.mm @@ -0,0 +1,366 @@ +// Copyright (c) 2009 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 "app/tree_model.h" +#import "base/scoped_nsobject.h" +#include "base/scoped_ptr.h" +#import "chrome/browser/cocoa/cookies_window_controller.h" +#include "chrome/browser/cocoa/cocoa_test_helper.h" +#include "chrome/browser/net/url_request_context_getter.h" +#include "chrome/browser/cookies_tree_model.h" +#include "chrome/test/testing_profile.h" +#include "googleurl/src/gurl.h" +#include "net/url_request/url_request_context.h" +#include "testing/gtest/include/gtest/gtest.h" +#include "testing/platform_test.h" + +// Used to test FindCocoaNode. This only sets the title and node, without +// initializing any other members. +@interface FakeCocoaCookieTreeNode : CocoaCookieTreeNode { + TreeModelNode* testNode_; +} +- (id)initWithTreeNode:(TreeModelNode*)node; +@end +@implementation FakeCocoaCookieTreeNode +- (id)initWithTreeNode:(TreeModelNode*)node { + if ((self = [super init])) { + testNode_ = node; + children_.reset([[NSMutableArray alloc] init]); + } + return self; +} +- (TreeModelNode*)treeNode { + return testNode_; +} +@end + +// For some utterly inexplicable reason, |-children| returns an NSArray rather +// than an NSMutableArray, BUT ONLY IN THIS UNIT TEST, and not in the actual +// window controller. This leads to errors for |-addObject:| messages. Maybe +// it's a compiler bug? Or there's something strange happening via swizzling in +// the test environment? Or did somebody forget to sacrifice a lamb on the new +// moon? After investigating for long time, the easiest/best solution was to +// create this hacky secondary getter. +@interface CocoaCookieTreeNode (UglyHacks) +- (NSMutableArray*)childs; +@end +@implementation CocoaCookieTreeNode (UglyHacks) +- (NSMutableArray*)childs { + return children_.get(); +} +@end + +// Copied from src/chrome/cookies_tree_model_unittest.cc. +namespace { + +class TestURLRequestContext : public URLRequestContext { + public: + TestURLRequestContext() { + cookie_store_ = new net::CookieMonster(); + } +}; + +class TestURLRequestContextGetter : public URLRequestContextGetter { + public: + virtual URLRequestContext* GetURLRequestContext() { + if (!context_) + context_ = new TestURLRequestContext(); + return context_.get(); + } + private: + scoped_refptr<URLRequestContext> context_; +}; + +class CookieTestingProfile : public TestingProfile { + public: + virtual URLRequestContextGetter* GetRequestContext() { + if (!url_request_context_getter_.get()) + url_request_context_getter_ = new TestURLRequestContextGetter(); + return url_request_context_getter_.get(); + } + virtual ~CookieTestingProfile() {} + + net::CookieMonster* GetCookieMonster() { + return GetRequestContext()->GetCookieStore()->GetCookieMonster(); + } + + private: + scoped_refptr<URLRequestContextGetter> url_request_context_getter_; +}; + +class CookiesWindowControllerTest : public CocoaTest { + public: + virtual void SetUp() { + CocoaTest::SetUp(); + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:&profile_]); + } + + virtual void TearDown() { + CocoaTest::TearDown(); + } + + CocoaCookieTreeNode* CocoaNodeFromTreeNode(TreeModelNode* node, + bool recurse) { + return [controller_ modelObserver]->CocoaNodeFromTreeNode(node, recurse); + } + + CocoaCookieTreeNode* FindCocoaNode(TreeModelNode* node, + CocoaCookieTreeNode* start) { + return [controller_ modelObserver]->FindCocoaNode(node, start); + } + + CookieTestingProfile profile_; + scoped_nsobject<CookiesWindowController> controller_; +}; + +TEST_F(CookiesWindowControllerTest, Construction) { + std::vector<SkBitmap> skia_icons; + [controller_ treeModel]->GetIcons(&skia_icons); + + EXPECT_EQ([[controller_ icons] count], skia_icons.size() + 1U); +} + +TEST_F(CookiesWindowControllerTest, FindCocoaNodeRoot) { + scoped_ptr< TreeNodeWithValue<int> > search(new TreeNodeWithValue<int>(42)); + scoped_nsobject<FakeCocoaCookieTreeNode> node( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:search.get()]); + EXPECT_EQ(node.get(), FindCocoaNode(search.get(), node.get())); +} + +TEST_F(CookiesWindowControllerTest, FindCocoaNodeImmediateChild) { + scoped_ptr< TreeNodeWithValue<int> > parent(new TreeNodeWithValue<int>(100)); + scoped_ptr< TreeNodeWithValue<int> > child1(new TreeNodeWithValue<int>(10)); + scoped_ptr< TreeNodeWithValue<int> > child2(new TreeNodeWithValue<int>(20)); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaParent( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:parent.get()]); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaChild1( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:child1.get()]); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaChild2( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:child2.get()]); + [[cocoaParent childs] addObject:cocoaChild1.get()]; + [[cocoaParent childs] addObject:cocoaChild2.get()]; + + EXPECT_EQ(cocoaChild2.get(), FindCocoaNode(child2.get(), cocoaParent.get())); +} + +TEST_F(CookiesWindowControllerTest, FindCocoaNodeRecursive) { + scoped_ptr< TreeNodeWithValue<int> > parent(new TreeNodeWithValue<int>(100)); + scoped_ptr< TreeNodeWithValue<int> > child1(new TreeNodeWithValue<int>(10)); + scoped_ptr< TreeNodeWithValue<int> > child2(new TreeNodeWithValue<int>(20)); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaParent( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:parent.get()]); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaChild1( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:child1.get()]); + scoped_nsobject<FakeCocoaCookieTreeNode> cocoaChild2( + [[FakeCocoaCookieTreeNode alloc] initWithTreeNode:child2.get()]); + [[cocoaParent childs] addObject:cocoaChild1.get()]; + [[cocoaChild1 childs] addObject:cocoaChild2.get()]; + + EXPECT_EQ(cocoaChild2.get(), FindCocoaNode(child2.get(), cocoaParent.get())); +} + +TEST_F(CookiesWindowControllerTest, CocoaNodeFromTreeNodeCookie) { + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(GURL("http://foo.com"), "A=B"); + CookiesTreeModel model(&profile_); + + // Root --> foo.com --> Cookies --> A. Create node for 'A'. + TreeModelNode* node = model.GetRoot()->GetChild(0)->GetChild(0)->GetChild(0); + CocoaCookieTreeNode* cookie = CocoaNodeFromTreeNode(node, false); + + EXPECT_TRUE([@"B" isEqualToString:[cookie content]]); + EXPECT_TRUE([@"End of the session" isEqualToString:[cookie expires]]); + EXPECT_TRUE([@"Any kind of connection" isEqualToString:[cookie sendFor]]); + EXPECT_TRUE([@"A" isEqualToString:[cookie title]]); + EXPECT_TRUE([@"A" isEqualToString:[cookie name]]); + EXPECT_TRUE([@"/" isEqualToString:[cookie path]]); + EXPECT_EQ(0U, [[cookie childs] count]); + EXPECT_TRUE([cookie created]); + EXPECT_TRUE([cookie isLeaf]); + EXPECT_EQ(node, [cookie treeNode]); +} + +TEST_F(CookiesWindowControllerTest, CocoaNodeFromTreeNodeRecursive) { + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(GURL("http://foo.com"), "A=B"); + CookiesTreeModel model(&profile_); + + // Root --> foo.com --> Cookies --> A. Create node for 'foo.com'. + CookieTreeNode* node = model.GetRoot()->GetChild(0); + CocoaCookieTreeNode* domain = CocoaNodeFromTreeNode(node, true); + CocoaCookieTreeNode* cookies = [[domain childs] objectAtIndex:0]; + CocoaCookieTreeNode* cookie = [[cookies childs] objectAtIndex:0]; + + // Test domain-level node. + EXPECT_TRUE([@"foo.com" isEqualToString:[domain title]]); + + EXPECT_FALSE([domain isLeaf]); + EXPECT_EQ(1U, [[domain childs] count]); + EXPECT_EQ(node, [domain treeNode]); + + // Test "Cookies" folder node. + EXPECT_TRUE([@"Cookies" isEqualToString:[cookies title]]); + EXPECT_FALSE([cookies isLeaf]); + EXPECT_EQ(1U, [[cookies childs] count]); + EXPECT_EQ(node->GetChild(0), [cookies treeNode]); + + // Test cookie node. This is the same as CocoaNodeFromTreeNodeCookie. + EXPECT_TRUE([@"B" isEqualToString:[cookie content]]); + EXPECT_TRUE([@"End of the session" isEqualToString:[cookie expires]]); + EXPECT_TRUE([@"Any kind of connection" isEqualToString:[cookie sendFor]]); + EXPECT_TRUE([@"A" isEqualToString:[cookie title]]); + EXPECT_TRUE([@"A" isEqualToString:[cookie name]]); + EXPECT_TRUE([@"/" isEqualToString:[cookie path]]); + EXPECT_TRUE([@"foo.com" isEqualToString:[cookie domain]]); + EXPECT_EQ(0U, [[cookie childs] count]); + EXPECT_TRUE([cookie created]); + EXPECT_TRUE([cookie isLeaf]); + EXPECT_EQ(node->GetChild(0)->GetChild(0), [cookie treeNode]); +} + +TEST_F(CookiesWindowControllerTest, TreeNodesAdded) { + const GURL url = GURL("http://foo.com"); + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(url, "A=B"); + + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:&profile_]); + + // Root --> foo.com --> Cookies. + NSMutableArray* cocoa_children = + [[[[[[controller_ cocoaTreeModel] childs] objectAtIndex:0] + childs] objectAtIndex:0] childs]; + EXPECT_EQ(1U, [cocoa_children count]); + + // Create some cookies. + cm->SetCookie(url, "C=D"); + cm->SetCookie(url, "E=F"); + + net::CookieMonster::CookieList list = cm->GetAllCookies(); + CookiesTreeModel* model = [controller_ treeModel]; + // Root --> foo.com --> Cookies. + CookieTreeNode* parent = model->GetRoot()->GetChild(0)->GetChild(0); + + ASSERT_EQ(3U, list.size()); + + // Add the cookie nodes. + CookieTreeCookieNode* cnode = new CookieTreeCookieNode(&list[1]); + parent->Add(1, cnode); // |parent| takes ownership. + cnode = new CookieTreeCookieNode(&list[2]); + parent->Add(2, cnode); + + // Manually notify the observer. + [controller_ modelObserver]->TreeNodesAdded(model, parent, 1, 2); + + // Check that we have created 2 more Cocoa nodes. + EXPECT_EQ(3U, [cocoa_children count]); +} + +TEST_F(CookiesWindowControllerTest, TreeNodesRemoved) { + const GURL url = GURL("http://foo.com"); + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(url, "A=B"); + cm->SetCookie(url, "C=D"); + cm->SetCookie(url, "E=F"); + + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:&profile_]); + + // Root --> foo.com --> Cookies. + NSMutableArray* cocoa_children = + [[[[[[controller_ cocoaTreeModel] childs] objectAtIndex:0] + childs] objectAtIndex:0] childs]; + EXPECT_EQ(3U, [cocoa_children count]); + + CookiesTreeModel* model = [controller_ treeModel]; + // Root --> foo.com --> Cookies. + CookieTreeNode* parent = model->GetRoot()->GetChild(0)->GetChild(0); + + // Pretend to remove the nodes. + [controller_ modelObserver]->TreeNodesRemoved(model, parent, 1, 2); + + EXPECT_EQ(1U, [cocoa_children count]); + + NSString* title = [[cocoa_children objectAtIndex:0] name]; + EXPECT_TRUE([@"A" isEqualToString:title]); +} + +TEST_F(CookiesWindowControllerTest, TreeNodeChildrenReordered) { + const GURL url = GURL("http://foo.com"); + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(url, "A=B"); + cm->SetCookie(url, "C=D"); + cm->SetCookie(url, "E=F"); + + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:&profile_]); + + // Root --> foo.com --> Cookies. + NSMutableArray* cocoa_children = + [[[[[[controller_ cocoaTreeModel] childs] objectAtIndex:0] + childs] objectAtIndex:0] childs]; + EXPECT_EQ(3U, [cocoa_children count]); + + // Check default ordering. + CocoaCookieTreeNode* node = [cocoa_children objectAtIndex:0]; + EXPECT_TRUE([@"A" isEqualToString:[node name]]); + node = [cocoa_children objectAtIndex:1]; + EXPECT_TRUE([@"C" isEqualToString:[node name]]); + node = [cocoa_children objectAtIndex:2]; + EXPECT_TRUE([@"E" isEqualToString:[node name]]); + + CookiesTreeModel* model = [controller_ treeModel]; + // Root --> foo.com --> Cookies. + CookieTreeNode* parent = model->GetRoot()->GetChild(0)->GetChild(0); + + // Reorder the nodes. + CookieTreeNode* node_e = parent->Remove(2); + CookieTreeNode* node_c = parent->Remove(1); + parent->Add(0, node_e); + parent->Add(2, node_c); + + // Notify the observer of the reordering. + [controller_ modelObserver]->TreeNodeChildrenReordered(model, parent); + + // Check the new order. + node = [cocoa_children objectAtIndex:0]; + EXPECT_TRUE([@"E" isEqualToString:[node name]]); + node = [cocoa_children objectAtIndex:1]; + EXPECT_TRUE([@"A" isEqualToString:[node name]]); + node = [cocoa_children objectAtIndex:2]; + EXPECT_TRUE([@"C" isEqualToString:[node name]]); +} + +TEST_F(CookiesWindowControllerTest, TreeNodeChanged) { + const GURL url = GURL("http://foo.com"); + net::CookieMonster* cm = profile_.GetCookieMonster(); + cm->SetCookie(url, "A=B"); + + controller_.reset( + [[CookiesWindowController alloc] initWithProfile:&profile_]); + + CookiesTreeModel* model = [controller_ treeModel]; + // Root --> foo.com --> Cookies. + CookieTreeNode* node = model->GetRoot()->GetChild(0)->GetChild(0); + + // Root --> foo.com --> Cookies. + CocoaCookieTreeNode* cocoa_node = + [[[[[controller_ cocoaTreeModel] childs] objectAtIndex:0] + childs] objectAtIndex:0]; + + EXPECT_TRUE([@"Cookies" isEqualToString:[cocoa_node title]]); + + // Fake update the cookie folder's title. This would never happen in reality, + // but it tests the code path that ultimately calls CocoaNodeFromTreeNode, + // which is tested elsewhere. + node->SetTitle(L"Silly Change"); + [controller_ modelObserver]->TreeNodeChanged(model, node); + + EXPECT_TRUE([@"Silly Change" isEqualToString:[cocoa_node title]]); +} + +} // namespace diff --git a/chrome/browser/cocoa/preferences_window_controller.h b/chrome/browser/cocoa/preferences_window_controller.h index 53d9800..c78f1a9 100644 --- a/chrome/browser/cocoa/preferences_window_controller.h +++ b/chrome/browser/cocoa/preferences_window_controller.h @@ -9,6 +9,7 @@ #include "chrome/browser/options_window.h" #include "chrome/common/pref_member.h" +@class CookiesWindowController; @class CustomHomePagesModel; @class FontLanguageSettingsController; class PrefObserverBridge; @@ -128,6 +129,7 @@ class ProfileSyncService; - (IBAction)doSyncAction:(id)sender; // Under the hood +- (IBAction)showCookies:(id)sender; - (IBAction)browseDownloadLocation:(id)sender; - (IBAction)privacyLearnMore:(id)sender; - (IBAction)changeFontAndLanguageSettings:(id)sender; diff --git a/chrome/browser/cocoa/preferences_window_controller.mm b/chrome/browser/cocoa/preferences_window_controller.mm index 0dd1f1e..ef2db1d 100644 --- a/chrome/browser/cocoa/preferences_window_controller.mm +++ b/chrome/browser/cocoa/preferences_window_controller.mm @@ -16,6 +16,7 @@ #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_process.h" #import "chrome/browser/cocoa/clear_browsing_data_controller.h" +#import "chrome/browser/cocoa/cookies_window_controller.h" #import "chrome/browser/cocoa/custom_home_pages_model.h" #import "chrome/browser/cocoa/font_language_settings_controller.h" #import "chrome/browser/cocoa/keyword_editor_cocoa_controller.h" @@ -1299,6 +1300,14 @@ const int kDisabledIndex = 1; } } +// Shows the cookies controller. +- (IBAction)showCookies:(id)sender { + // The controller will clean itself up. + CookiesWindowController* controller = + [[CookiesWindowController alloc] initWithProfile:profile_]; + [controller attachSheetTo:[self window]]; +} + // Bring up an open panel to allow the user to set a new downloads location. - (void)browseDownloadLocation:(id)sender { NSOpenPanel* panel = [NSOpenPanel openPanel]; diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 48d3f1c..244eb32 100755 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -382,6 +382,10 @@ 'browser/cocoa/command_observer_bridge.mm', 'browser/cocoa/constrained_window_mac.h', 'browser/cocoa/constrained_window_mac.mm', + 'browser/cooca/cookie_tree_node.h', + 'browser/cocoa/cookie_tree_node.mm', + 'browser/cocoa/cookies_window_controller.h', + 'browser/cocoa/cookies_window_controller.mm', 'browser/cocoa/custom_home_pages_model.h', 'browser/cocoa/custom_home_pages_model.mm', 'browser/cocoa/delayedmenu_button.h', @@ -1937,6 +1941,9 @@ ], 'sources': [ 'browser/net/ssl_config_service_manager_system.cc', + # Build Apple sample code + '../third_party/apple/ImageAndTextCell.h', + '../third_party/apple/ImageAndTextCell.m', # Build the necessary GTM sources '../third_party/GTM/AppKit/GTMFadeTruncatingTextFieldCell.h', '../third_party/GTM/AppKit/GTMFadeTruncatingTextFieldCell.m', @@ -1970,6 +1977,7 @@ '../base/chrome_application_mac.h', ], 'include_dirs': [ + '../third_party/apple', '../third_party/GTM', '../third_party/GTM/AppKit', '../third_party/GTM/Foundation', diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi index 67028dd..b3d4d38f 100644 --- a/chrome/chrome_dll.gypi +++ b/chrome/chrome_dll.gypi @@ -186,6 +186,7 @@ 'app/nibs/BookmarkNameFolder.xib', 'app/nibs/BrowserWindow.xib', 'app/nibs/ClearBrowsingData.xib', + 'app/nibs/Cookies.xib', 'app/nibs/DownloadItem.xib', 'app/nibs/DownloadShelf.xib', 'app/nibs/EditSearchEngine.xib', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 9657ce7..f7bea1c 100755 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -592,6 +592,7 @@ 'browser/cocoa/cocoa_test_helper.h', 'browser/cocoa/cocoa_test_helper.mm', 'browser/cocoa/command_observer_bridge_unittest.mm', + 'browser/cocoa/cookies_window_controller_unittest.mm', 'browser/cocoa/custom_home_pages_model_unittest.mm', 'browser/cocoa/delayedmenu_button_unittest.mm', 'browser/cocoa/download_shelf_mac_unittest.mm', |