summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/DEPS3
-rw-r--r--chrome/app/nibs/Cookies.xib2263
-rw-r--r--chrome/app/nibs/Preferences.xib14
-rw-r--r--chrome/browser/cocoa/cookie_tree_node.h56
-rw-r--r--chrome/browser/cocoa/cookie_tree_node.mm119
-rw-r--r--chrome/browser/cocoa/cookies_window_controller.h117
-rw-r--r--chrome/browser/cocoa/cookies_window_controller.mm242
-rw-r--r--chrome/browser/cocoa/cookies_window_controller_unittest.mm366
-rw-r--r--chrome/browser/cocoa/preferences_window_controller.h2
-rw-r--r--chrome/browser/cocoa/preferences_window_controller.mm9
-rwxr-xr-xchrome/chrome_browser.gypi8
-rw-r--r--chrome/chrome_dll.gypi1
-rwxr-xr-xchrome/chrome_tests.gypi1
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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</string>
+ <string>&lt; no cookie selected &gt;</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',