diff options
Diffstat (limited to 'chrome')
19 files changed, 1948 insertions, 46 deletions
diff --git a/chrome/app/nibs/en.lproj/DownloadShelf.xib b/chrome/app/nibs/en.lproj/DownloadShelf.xib new file mode 100644 index 0000000..1bfa275 --- /dev/null +++ b/chrome/app/nibs/en.lproj/DownloadShelf.xib @@ -0,0 +1,1240 @@ +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">9J61</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.46</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </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"> + <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">DownloadShelfController</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="NSCustomView" id="1005"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">290</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="538957441"> + <reference key="NSNextResponder" ref="1005"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{456, 12}, {15, 15}}</string> + <reference key="NSSuperview" ref="1005"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="104399124"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">1.300000e+01</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="538957441"/> + <int key="NSButtonFlags">142360831</int> + <int key="NSButtonFlags2">6</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar_p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{480, 40}</string> + <reference key="NSSuperview"/> + <string key="NSClassName">DownloadShelfView</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="538957441"/> + </object> + <int key="connectionID">6</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">9</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> + <object class="NSArray" key="object" id="1002"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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="1002"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="1002"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="1002"/> + <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="538957441"/> + </object> + <reference key="parent" ref="1002"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="538957441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104399124"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="104399124"/> + <reference key="parent" ref="538957441"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" 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.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>3.IBPluginDependency</string> + <string>4.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>{{509, 905}, {480, 40}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{628, 654}</string> + <string>{{357, 416}, {480, 272}}</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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">9</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfController</string> + <string key="superclassName">NSViewController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>hide:</string> + <string>show:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_view.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> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.LastKnownRelativeProjectPath">../../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">9J61</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.46</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </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"> + <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">DownloadShelfController</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="NSCustomView" id="1005"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">290</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="538957441"> + <reference key="NSNextResponder" ref="1005"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{456, 12}, {15, 15}}</string> + <reference key="NSSuperview" ref="1005"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="104399124"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">1.300000e+01</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="538957441"/> + <int key="NSButtonFlags">142360831</int> + <int key="NSButtonFlags2">6</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar_p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{480, 40}</string> + <reference key="NSSuperview"/> + <string key="NSClassName">DownloadShelfView</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="538957441"/> + </object> + <int key="connectionID">6</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">9</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> + <object class="NSArray" key="object" id="1002"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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="1002"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="1002"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="1002"/> + <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="538957441"/> + </object> + <reference key="parent" ref="1002"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="538957441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104399124"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="104399124"/> + <reference key="parent" ref="538957441"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" 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.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>3.IBPluginDependency</string> + <string>4.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>{{509, 905}, {480, 40}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{628, 654}</string> + <string>{{357, 416}, {480, 272}}</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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">9</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfController</string> + <string key="superclassName">NSViewController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>hide:</string> + <string>show:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_view.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> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.LastKnownRelativeProjectPath">../../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">9J61</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.46</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </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"> + <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">DownloadShelfController</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="NSCustomView" id="1005"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">290</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="538957441"> + <reference key="NSNextResponder" ref="1005"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{456, 12}, {15, 15}}</string> + <reference key="NSSuperview" ref="1005"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="104399124"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">1.300000e+01</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="538957441"/> + <int key="NSButtonFlags">142360831</int> + <int key="NSButtonFlags2">6</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar_p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{480, 40}</string> + <reference key="NSSuperview"/> + <string key="NSClassName">DownloadShelfView</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="538957441"/> + </object> + <int key="connectionID">6</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">9</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> + <object class="NSArray" key="object" id="1002"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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="1002"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="1002"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="1002"/> + <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="538957441"/> + </object> + <reference key="parent" ref="1002"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="538957441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104399124"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="104399124"/> + <reference key="parent" ref="538957441"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" 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.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>3.IBPluginDependency</string> + <string>4.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>{{509, 905}, {480, 40}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{628, 654}</string> + <string>{{357, 416}, {480, 272}}</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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">9</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfController</string> + <string key="superclassName">NSViewController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>hide:</string> + <string>show:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_view.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> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.LastKnownRelativeProjectPath">../../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">9J61</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.46</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </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"> + <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">DownloadShelfController</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="NSCustomView" id="1005"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">290</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="538957441"> + <reference key="NSNextResponder" ref="1005"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{456, 12}, {15, 15}}</string> + <reference key="NSSuperview" ref="1005"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="104399124"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">1.300000e+01</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="538957441"/> + <int key="NSButtonFlags">142360831</int> + <int key="NSButtonFlags2">6</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar_p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{480, 40}</string> + <reference key="NSSuperview"/> + <string key="NSClassName">DownloadShelfView</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="538957441"/> + </object> + <int key="connectionID">6</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">9</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> + <object class="NSArray" key="object" id="1002"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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="1002"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="1002"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="1002"/> + <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="538957441"/> + </object> + <reference key="parent" ref="1002"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="538957441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104399124"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="104399124"/> + <reference key="parent" ref="538957441"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" 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.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>3.IBPluginDependency</string> + <string>4.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>{{509, 905}, {480, 40}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{628, 654}</string> + <string>{{357, 416}, {480, 272}}</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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">9</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfController</string> + <string key="superclassName">NSViewController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>hide:</string> + <string>show:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_view.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> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.LastKnownRelativeProjectPath">../../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> +<?xml version="1.0" encoding="UTF-8"?> +<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03"> + <data> + <int key="IBDocument.SystemTarget">1050</int> + <string key="IBDocument.SystemVersion">9J61</string> + <string key="IBDocument.InterfaceBuilderVersion">677</string> + <string key="IBDocument.AppKitVersion">949.46</string> + <string key="IBDocument.HIToolboxVersion">353.00</string> + <object class="NSMutableArray" key="IBDocument.EditedObjectIDs"> + <bool key="EncodedWithXMLCoder">YES</bool> + <integer value="1"/> + </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"> + <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">DownloadShelfController</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="NSCustomView" id="1005"> + <reference key="NSNextResponder"/> + <int key="NSvFlags">290</int> + <object class="NSMutableArray" key="NSSubviews"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSButton" id="538957441"> + <reference key="NSNextResponder" ref="1005"/> + <int key="NSvFlags">289</int> + <string key="NSFrame">{{456, 12}, {15, 15}}</string> + <reference key="NSSuperview" ref="1005"/> + <bool key="NSEnabled">YES</bool> + <object class="NSButtonCell" key="NSCell" id="104399124"> + <int key="NSCellFlags">67239424</int> + <int key="NSCellFlags2">134217728</int> + <string key="NSContents"/> + <object class="NSFont" key="NSSupport"> + <string key="NSName">LucidaGrande</string> + <double key="NSSize">1.300000e+01</double> + <int key="NSfFlags">1044</int> + </object> + <reference key="NSControlView" ref="538957441"/> + <int key="NSButtonFlags">142360831</int> + <int key="NSButtonFlags2">6</int> + <object class="NSCustomResource" key="NSNormalImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar</string> + </object> + <object class="NSCustomResource" key="NSAlternateImage"> + <string key="NSClassName">NSImage</string> + <string key="NSResourceName">close_bar_p</string> + </object> + <string key="NSAlternateContents"/> + <string key="NSKeyEquivalent"/> + <int key="NSPeriodicDelay">200</int> + <int key="NSPeriodicInterval">25</int> + </object> + </object> + </object> + <string key="NSFrameSize">{480, 40}</string> + <reference key="NSSuperview"/> + <string key="NSClassName">DownloadShelfView</string> + </object> + </object> + <object class="IBObjectContainer" key="IBDocument.Objects"> + <object class="NSMutableArray" key="connectionRecords"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBActionConnection" key="connection"> + <string key="label">hide:</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="538957441"/> + </object> + <int key="connectionID">6</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">view</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1005"/> + </object> + <int key="connectionID">9</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> + <object class="NSArray" key="object" id="1002"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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="1002"/> + <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-1</int> + <reference key="object" ref="1003"/> + <reference key="parent" ref="1002"/> + <string key="objectName">First Responder</string> + </object> + <object class="IBObjectRecord"> + <int key="objectID">-3</int> + <reference key="object" ref="1004"/> + <reference key="parent" ref="1002"/> + <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="538957441"/> + </object> + <reference key="parent" ref="1002"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">3</int> + <reference key="object" ref="538957441"/> + <object class="NSMutableArray" key="children"> + <bool key="EncodedWithXMLCoder">YES</bool> + <reference ref="104399124"/> + </object> + <reference key="parent" ref="1005"/> + </object> + <object class="IBObjectRecord"> + <int key="objectID">4</int> + <reference key="object" ref="104399124"/> + <reference key="parent" ref="538957441"/> + </object> + </object> + </object> + <object class="NSMutableDictionary" key="flattenedProperties"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" 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.WindowOrigin</string> + <string>1.editorWindowContentRectSynchronizationRect</string> + <string>3.IBPluginDependency</string> + <string>4.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>{{509, 905}, {480, 40}}</string> + <string>com.apple.InterfaceBuilder.CocoaPlugin</string> + <string>{628, 654}</string> + <string>{{357, 416}, {480, 272}}</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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <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> + <object class="NSArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + </object> + </object> + <nil key="sourceID"/> + <int key="maxID">9</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfController</string> + <string key="superclassName">NSViewController</string> + <object class="NSMutableDictionary" key="actions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>hide:</string> + <string>show:</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_controller.h</string> + </object> + </object> + <object class="IBPartialClassDescription"> + <string key="className">DownloadShelfView</string> + <string key="superclassName">NSView</string> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBProjectSource</string> + <string key="minorKey">browser/cocoa/download_shelf_view.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> + </object> + <int key="IBDocument.localizationMode">0</int> + <string key="IBDocument.LastKnownRelativeProjectPath">../../../chrome.xcodeproj</string> + <int key="IBDocument.defaultPropertyAccessControl">3</int> + </data> +</archive> diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 38f5818..5bba572 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -1277,9 +1277,7 @@ void Browser::ExecuteCommandWithDisposition( case IDC_NEW_WINDOW_PROFILE_7: case IDC_NEW_WINDOW_PROFILE_8: NewProfileWindowByIndex(id - IDC_NEW_WINDOW_PROFILE_0); break; -#if defined(OS_WIN) || defined(OS_LINUX) case IDC_CLOSE_WINDOW: CloseWindow(); break; -#endif case IDC_NEW_TAB: NewTab(); break; case IDC_CLOSE_TAB: CloseTab(); break; case IDC_SELECT_NEXT_TAB: SelectNextTab(); break; diff --git a/chrome/browser/cocoa/browser_window_cocoa.mm b/chrome/browser/cocoa/browser_window_cocoa.mm index f295167..28f87ae9 100644 --- a/chrome/browser/cocoa/browser_window_cocoa.mm +++ b/chrome/browser/cocoa/browser_window_cocoa.mm @@ -9,6 +9,7 @@ #include "chrome/browser/cocoa/browser_window_cocoa.h" #import "chrome/browser/cocoa/browser_window_controller.h" #import "chrome/browser/cocoa/clear_browsing_data_controller.h" +#import "chrome/browser/cocoa/download_shelf_controller.h" #include "chrome/browser/browser.h" #include "chrome/browser/download/download_shelf.h" #include "chrome/common/notification_service.h" @@ -188,15 +189,12 @@ void BrowserWindowCocoa::ShowBookmarkBubble(const GURL& url, } bool BrowserWindowCocoa::IsDownloadShelfVisible() const { - return download_shelf_ != NULL && download_shelf_->IsShowing(); + return [controller_ isDownloadShelfVisible] != NO; } DownloadShelf* BrowserWindowCocoa::GetDownloadShelf() { - NOTIMPLEMENTED(); - if (!download_shelf_.get()) { - download_shelf_.reset(new DownloadShelfMac(browser_)); - } - return download_shelf_.get(); + DownloadShelfController* shelfController = [controller_ downloadShelf]; + return [shelfController bridge]; } void BrowserWindowCocoa::ShowReportBugDialog() { diff --git a/chrome/browser/cocoa/browser_window_controller.h b/chrome/browser/cocoa/browser_window_controller.h index e567db7..ab90f2e 100644 --- a/chrome/browser/cocoa/browser_window_controller.h +++ b/chrome/browser/cocoa/browser_window_controller.h @@ -20,6 +20,7 @@ class Browser; class BrowserWindow; class BrowserWindowCocoa; +@class DownloadShelfController; @class FindBarCocoaController; class LocationBar; class StatusBubble; @@ -50,6 +51,7 @@ class TabStripModelObserverBridge; scoped_nsobject<TabStripController> tabStripController_; scoped_nsobject<FindBarCocoaController> findBarCocoaController_; scoped_ptr<StatusBubble> statusBubble_; + scoped_nsobject<DownloadShelfController> downloadShelfController_; BOOL ownsBrowser_; // Only ever NO when testing } @@ -97,6 +99,11 @@ class TabStripModelObserverBridge; - (void)toggleBookmarkBar; +- (BOOL)isDownloadShelfVisible; + +// Lazily creates the download shelf in visible state if it doesn't exist yet. +- (DownloadShelfController*)downloadShelf; + // Retains the given FindBarCocoaController and adds its view to this // browser window. Must only be called once per // BrowserWindowController. diff --git a/chrome/browser/cocoa/browser_window_controller.mm b/chrome/browser/cocoa/browser_window_controller.mm index 994694f..d814c36 100644 --- a/chrome/browser/cocoa/browser_window_controller.mm +++ b/chrome/browser/cocoa/browser_window_controller.mm @@ -17,6 +17,7 @@ #import "chrome/browser/cocoa/bookmark_bar_controller.h" #import "chrome/browser/cocoa/browser_window_cocoa.h" #import "chrome/browser/cocoa/browser_window_controller.h" +#import "chrome/browser/cocoa/download_shelf_controller.h" #import "chrome/browser/cocoa/find_bar_cocoa_controller.h" #include "chrome/browser/cocoa/find_bar_bridge.h" #import "chrome/browser/cocoa/status_bubble_mac.h" @@ -520,7 +521,6 @@ willPositionSheet:(NSWindow *)sheet // And make sure we use the correct frame in the new view. [[controller tabStripController] setFrameOfSelectedTab:tabRect]; - return controller; } @@ -548,6 +548,19 @@ willPositionSheet:(NSWindow *)sheet [bookmarkBarController_ toggleBookmarkBar]; } +- (BOOL)isDownloadShelfVisible { + return downloadShelfController_ != nil && + [downloadShelfController_ isVisible]; +} + +- (DownloadShelfController*)downloadShelf { + if (!downloadShelfController_.get()) { + downloadShelfController_.reset([[DownloadShelfController alloc] + initWithBrowser:browser_.get() contentArea:[self tabContentArea]]); + } + return downloadShelfController_; +} + - (void)addFindBar:(FindBarCocoaController*)findBarCocoaController { // Shouldn't call addFindBar twice. DCHECK(!findBarCocoaController_.get()); @@ -685,9 +698,9 @@ willPositionSheet:(NSWindow *)sheet // sure we aren't doing anything wasteful in those cases. [bookmarkBarController_ resizeBookmarkBar]; - if (findBarCocoaController_.get()) { - [findBarCocoaController_ positionFindBarView:[self tabContentArea]]; - } + [downloadShelfController_ resizeDownloadShelf]; + + [findBarCocoaController_ positionFindBarView:[self tabContentArea]]; } - (void)saveWindowPositionIfNeeded { diff --git a/chrome/browser/cocoa/download_item_mac.h b/chrome/browser/cocoa/download_item_mac.h new file mode 100644 index 0000000..4af3d53 --- /dev/null +++ b/chrome/browser/cocoa/download_item_mac.h @@ -0,0 +1,47 @@ +// 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. + +#ifndef CHROME_BROWSER_COCOA_DOWNLOAD_ITEM_MAC_H_ +#define CHROME_BROWSER_COCOA_DOWNLOAD_ITEM_MAC_H_ + +#import <Cocoa/Cocoa.h> + +#include "base/scoped_nsobject.h" +#include "base/scoped_ptr.h" +#include "chrome/browser/download/download_manager.h" + +class BaseDownloadItemModel; +@class DownloadShelfController; +@class DownloadShelfContextMenuBridge; + + +// A class that bridges the visible mac download items to chromium's +// download model. + +class DownloadItemMac : DownloadItem::Observer { + public: + // DownloadItemMac takes ownership of |download_item_model|. + DownloadItemMac(BaseDownloadItemModel* download_item_model, + NSRect frame, + DownloadShelfController* parent); + + // Destructor. + ~DownloadItemMac(); + + // DownloadItem::Observer implementation + virtual void OnDownloadUpdated(DownloadItem* download); + virtual void OnDownloadOpened(DownloadItem* download) { } + + private: + // The download item model we represent. + scoped_ptr<BaseDownloadItemModel> download_model_; + + // Our parent view + DownloadShelfController* parent_; // weak + + // Context menu + scoped_nsobject<DownloadShelfContextMenuBridge> menu_; +}; + +#endif // CHROME_BROWSER_COCOA_DOWNLOAD_ITEM_MAC_H_ diff --git a/chrome/browser/cocoa/download_item_mac.mm b/chrome/browser/cocoa/download_item_mac.mm new file mode 100644 index 0000000..eca5316 --- /dev/null +++ b/chrome/browser/cocoa/download_item_mac.mm @@ -0,0 +1,164 @@ +// 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. + +#include "chrome/browser/cocoa/download_item_mac.h" + +#include "base/basictypes.h" +#include "base/string_util.h" +#include "base/sys_string_conversions.h" +#import "chrome/browser/cocoa/download_shelf_controller.h" +#import "chrome/browser/cocoa/download_shelf_mac.h" +#import "chrome/browser/cocoa/download_shelf_view.h" +#include "chrome/browser/download/download_item_model.h" +#include "chrome/browser/download/download_manager.h" +#include "chrome/browser/download/download_shelf.h" + +// A class for the chromium-side part of the download shelf context menu. + +class DownloadShelfContextMenuMac : public DownloadShelfContextMenu { + public: + DownloadShelfContextMenuMac(BaseDownloadItemModel* model, + DownloadShelfContextMenuBridge* bridge) + : DownloadShelfContextMenu(model), bridge_(bridge) { + } + + NSMenu* GetCocoaMenu(); + + using DownloadShelfContextMenu::ExecuteItemCommand; + + private: + DownloadShelfContextMenuBridge* bridge_; // weak, owns us +}; + +NSMenu* DownloadShelfContextMenuMac::GetCocoaMenu() { + // TODO(thakis): win/gtk show slightly different menus when the download is + // in progress/done (mainly the first item) + // TODO(thakis): this probably wants to be in a xib file or at least use + // localized strings + + NSMenuItem* item; + NSMenu* menu = + [[[NSMenu alloc] initWithTitle:@"DownloadItemPopup"] autorelease]; + SEL action = @selector(performAction:); + + item = [menu addItemWithTitle:@"Open" action:action keyEquivalent:@""]; + // [item addItemWithTitle:@"Open when complete" ...]; // In-progress text. + [item setTag:OPEN_WHEN_COMPLETE]; + [item setTarget:bridge_]; + + // TODO(thakis): Set correct checkbox state, make this a checkbox item + item = [menu addItemWithTitle:@"Always open type" + action:action + keyEquivalent:@""]; + [item setTag:ALWAYS_OPEN_TYPE]; + [item setTarget:bridge_]; + + [menu addItem:[NSMenuItem separatorItem]]; + + item = [menu addItemWithTitle:@"Reveal in Finder" + action:action + keyEquivalent:@""]; + [item setTag:SHOW_IN_FOLDER]; + [item setTarget:bridge_]; + + [menu addItem:[NSMenuItem separatorItem]]; + + item = [menu addItemWithTitle:@"Cancel" action:action keyEquivalent:@""]; + [item setTag:CANCEL]; + [item setTarget:bridge_]; + + return menu; +} + + +// A class for the cocoa side of the download shelf context menu. + +@interface DownloadShelfContextMenuBridge : NSObject { + @private + scoped_ptr<DownloadShelfContextMenuMac> contextMenu_; +} + +- (DownloadShelfContextMenuBridge*)initWithModel:(BaseDownloadItemModel*)model; +@end + +@interface DownloadShelfContextMenuBridge(Private) +- (void)performAction:(id)sender; +- (NSMenu*)menu; +@end + +@implementation DownloadShelfContextMenuBridge + +- (DownloadShelfContextMenuBridge*)initWithModel:(BaseDownloadItemModel*)model { + if ((self = [super init]) == nil) { + return nil; + } + contextMenu_.reset(new DownloadShelfContextMenuMac(model, self)); + return self; +} + +@end + +@implementation DownloadShelfContextMenuBridge(Private) + +- (void)performAction:(id)sender { + contextMenu_->ExecuteItemCommand([sender tag]); +} + +- (NSMenu*)menu { + return contextMenu_->GetCocoaMenu(); +} + +@end + + +// DownloadItemMac ------------------------------------------------------------- + +DownloadItemMac::DownloadItemMac(BaseDownloadItemModel* download_model, + NSRect frame, + DownloadShelfController* parent) + : download_model_(download_model), parent_(parent) { + download_model_->download()->AddObserver(this); + + // TODO(thakis): The windows version of this does all kinds of things + // (gratituous use of animation, special handling of dangerous downloads) + // that we don't currently do. + + scoped_nsobject<NSPopUpButton> view( + [[NSPopUpButton alloc] initWithFrame:frame pullsDown:YES]); + [parent_ addDownloadItem:view.get()]; + + // TODO(thakis): use filename eliding like gtk/windows versions + std::wstring tmpname = + download_model->download()->GetFileName().ToWStringHack(); + + NSString* titleString = base::SysWideToNSString(tmpname); + + menu_.reset([[DownloadShelfContextMenuBridge alloc] + initWithModel:download_model_.get()]); + [view.get() setMenu:[menu_.get() menu]]; + + [view.get() insertItemWithTitle:titleString atIndex:0]; + + // TODO(thakis): Use file extension and iconForFileType. Currently, this + // complains "<filename> is not a full path." + [[view.get() itemAtIndex:0] setImage: + [[NSWorkspace sharedWorkspace] iconForFile:titleString]]; +} + +DownloadItemMac::~DownloadItemMac() { + download_model_->download()->RemoveObserver(this); +} + +void DownloadItemMac::OnDownloadUpdated(DownloadItem* download) { + DCHECK_EQ(download, download_model_->download()); + + std::wstring status_text = download_model_->GetStatusText(); + // Remove the status text label. + if (status_text.empty()) { + // TODO(thakis): Once there is a status label, hide it here + return; + } + + // TODO(thakis): Set status_text as status label +} diff --git a/chrome/browser/cocoa/download_shelf_controller.h b/chrome/browser/cocoa/download_shelf_controller.h new file mode 100644 index 0000000..86c5535 --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_controller.h @@ -0,0 +1,45 @@ +// 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_ptr.h" + +class Browser; +@class BrowserWindowController; +class DownloadShelf; +@class DownloadShelfView; + +// A controller class that manages the download shelf for one window. + +@interface DownloadShelfController : NSViewController { + @private + // Currently these two are always the same, but they mean slightly + // different things. contentAreaHasOffset_ is an implementation + // detail of download shelf visibility. + BOOL contentAreaHasOffset_; + BOOL barIsVisible_; + + scoped_ptr<DownloadShelf> bridge_; + NSView* contentArea_; + int shelfHeight_; +}; + +- (id)initWithBrowser:(Browser*)browser + contentArea:(NSView*)content; + +- (DownloadShelf*)bridge; +- (BOOL)isVisible; + +- (IBAction)show:(id)sender; +- (IBAction)hide:(id)sender; + +// TODO(thakis): this should internally build an item and get only +// the model as parameter. +- (void)addDownloadItem:(NSView*)view; + +// Resizes the download shelf based on the state of the content area. +- (void)resizeDownloadShelf; + +@end diff --git a/chrome/browser/cocoa/download_shelf_controller.mm b/chrome/browser/cocoa/download_shelf_controller.mm new file mode 100644 index 0000000..b82f67f --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_controller.mm @@ -0,0 +1,114 @@ +// 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 "download_shelf_controller.h" + +#include "base/mac_util.h" +#import "chrome/browser/cocoa/browser_window_controller.h" +#include "chrome/browser/cocoa/browser_window_cocoa.h" +#include "chrome/browser/cocoa/download_shelf_mac.h" +#import "chrome/browser/cocoa/download_shelf_view.h" + + +@interface DownloadShelfController(Private) +- (void)applyContentAreaOffset:(BOOL)apply; +- (void)positionBar; +- (void)showDownloadShelf:(BOOL)enable; +@end + + +@implementation DownloadShelfController + +- (id)initWithBrowser:(Browser*)browser + contentArea:(NSView*)content { + if ((self = [super initWithNibName:@"DownloadShelf" + bundle:mac_util::MainAppBundle()])) { + contentArea_ = content; + shelfHeight_ = [[self view] bounds].size.height; + + [self positionBar]; + [[[contentArea_ window] contentView] addSubview:[self view]]; + + // This calls show:, so it needs to be last. + bridge_.reset(new DownloadShelfMac(browser, self)); + } + return self; +} + +// Initializes the download shelf at the bottom edge of |contentArea_|. +- (void)positionBar { + // Set the bar's height to zero and position it at the bottom of the + // content area, within the window's content view (as opposed to the + // tab strip, which is a sibling). We'll enlarge it and slide the + // content area up when we need to show this strip. + NSRect contentFrame = [contentArea_ frame]; + NSRect barFrame = NSMakeRect(0, 0, + contentFrame.size.width, shelfHeight_); + [[self view] setFrame:barFrame]; +} + +// Called when the contentArea's frame changes. Enlarge the view to +// stay with the bottom of the contentArea. +- (void)resizeDownloadShelf { + NSRect barFrame = [[self view] frame]; + barFrame.origin.y = 0; + barFrame.size.height = NSMinY([contentArea_ frame]); + [[self view] setFrame:barFrame]; +} + +// Show or hide the bar based on the value of |enable|. Handles animating the +// resize of the content view. +- (void)showDownloadShelf:(BOOL)enable { + contentAreaHasOffset_ = enable; + [[self view] setHidden:enable ? NO : YES]; + [self applyContentAreaOffset:enable]; + + barIsVisible_ = enable; +} + +// Apply a contents box offset to make (or remove) room for the +// download shelf. If apply==YES, always make room (the contentView_ is +// "full size"). If apply==NO we are trying to undo an offset. If no +// offset there is nothing to undo. +- (void)applyContentAreaOffset:(BOOL)apply { + if (!contentAreaHasOffset_ && apply) { + // There is no offset to unconditionally apply. + return; + } + + NSRect frame = [contentArea_ frame]; + if (apply) { + frame.origin.y += shelfHeight_; + frame.size.height -= shelfHeight_; + } else { + frame.origin.y -= shelfHeight_; + frame.size.height += shelfHeight_; + } + + [[contentArea_ animator] setFrame:frame]; + [[self view] setNeedsDisplay:YES]; + [contentArea_ setNeedsDisplay:YES]; +} + +- (DownloadShelf*)bridge { + return bridge_.get(); +} + +- (BOOL)isVisible { + return barIsVisible_; +} + +- (void)show:(id)sender { + [self showDownloadShelf:YES]; +} + +- (void)hide:(id)sender { + [self showDownloadShelf:NO]; +} + +- (void)addDownloadItem:(NSView*)view { + [[self view] addSubview:view]; +} + +@end diff --git a/chrome/browser/cocoa/download_shelf_mac.h b/chrome/browser/cocoa/download_shelf_mac.h new file mode 100644 index 0000000..2959fe5 --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_mac.h @@ -0,0 +1,44 @@ +// 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. + +#ifndef CHROME_BROWSER_COCOA_DOWNLOAD_SHELF_MAC_H_ +#define CHROME_BROWSER_COCOA_DOWNLOAD_SHELF_MAC_H_ + +#import <Cocoa/Cocoa.h> + +#include <vector> + +#include "base/scoped_ptr.h" +#include "chrome/browser/download/download_shelf.h" + +class BaseDownloadItemModel; +class CustomDrawButton; +class DownloadItemMac; + +@class ShelfView; +@class DownloadShelfController; + +// A class to bridge the chromium download shelf to mac gui. This is just a +// wrapper class that forward everything to DownloadShelfController. + +class DownloadShelfMac : public DownloadShelf { + public: + explicit DownloadShelfMac(Browser* browser, + DownloadShelfController* controller); + + // DownloadShelf implementation. + virtual void AddDownload(BaseDownloadItemModel* download_model); + virtual bool IsShowing() const; + virtual bool IsClosing() const; + virtual void Show(); + virtual void Close(); + + private: + // The download items we have added to our shelf. + std::vector<DownloadItemMac*> download_items_; + + DownloadShelfController* shelf_controller_; // weak, owns us +}; + +#endif // CHROME_BROWSER_COCOA_DOWNLOAD_SHELF_MAC_H_ diff --git a/chrome/browser/cocoa/download_shelf_mac.mm b/chrome/browser/cocoa/download_shelf_mac.mm new file mode 100644 index 0000000..18fca59 --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_mac.mm @@ -0,0 +1,69 @@ +// 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. + +#include "chrome/browser/cocoa/download_shelf_mac.h" + +#import "chrome/browser/cocoa/download_shelf_controller.h" +#include "chrome/browser/cocoa/download_item_mac.h" +#include "chrome/browser/download/download_item_model.h" + +namespace { + +// TODO(thakis): These are all temporary until there's a download item view + +// Border padding of a download item +const int kDownloadItemBorderPadding = 4; + +// Width of a download item +const int kDownloadItemWidth = 200; + +// Height of a download item +const int kDownloadItemHeight = 32; + +// Horizontal padding between two download items +const int kDownloadItemPadding = 10; + +} // namespace + +DownloadShelfMac::DownloadShelfMac(Browser* browser, + DownloadShelfController* controller) + : DownloadShelf(browser), + shelf_controller_(controller) { + Show(); +} + +void DownloadShelfMac::AddDownload(BaseDownloadItemModel* download_model) { + + // TODO(thakis): we need to delete these at some point. There's no explicit + // mass delete on windows, figure out where they do it. + + // TODO(thakis): This should just forward to the controller. + + // TODO(thakis): RTL support? + int startX = kDownloadItemBorderPadding + + (kDownloadItemWidth + kDownloadItemPadding) * download_items_.size(); + download_items_.push_back(new DownloadItemMac(download_model, + NSMakeRect(startX, kDownloadItemBorderPadding, + kDownloadItemWidth, kDownloadItemHeight), + shelf_controller_)); + + Show(); +} + +bool DownloadShelfMac::IsShowing() const { + return [shelf_controller_ isVisible] == YES; +} + +bool DownloadShelfMac::IsClosing() const { + // TODO(estade): This is never called. For now just return false. + return false; +} + +void DownloadShelfMac::Show() { + [shelf_controller_ show:nil]; +} + +void DownloadShelfMac::Close() { + [shelf_controller_ hide:nil]; +} diff --git a/chrome/browser/cocoa/download_shelf_mac_unittest.mm b/chrome/browser/cocoa/download_shelf_mac_unittest.mm new file mode 100644 index 0000000..78ff52d --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_mac_unittest.mm @@ -0,0 +1,91 @@ +// 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. + +#include "chrome/browser/cocoa/browser_test_helper.h" +#include "chrome/browser/cocoa/cocoa_test_helper.h" +#include "chrome/browser/cocoa/download_shelf_mac.h" +#include "testing/gtest/include/gtest/gtest.h" + + +// A fake implementation of DownloadShelfController. It implements only the +// methods that DownloadShelfMac call during the tests in this file. We get this +// class into the DownloadShelfMac constructor by some questionable casting -- +// Objective C is a dynamic language, so we pretend that's ok. + +@interface FakeDownloadShelfController : NSObject { + @public + int callCountIsVisible; + int callCountShow; + int callCountHide; +} + +- (BOOL)isVisible; +- (IBAction)show:(id)sender; +- (IBAction)hide:(id)sender; +@end + +@implementation FakeDownloadShelfController + +- (BOOL)isVisible { + ++callCountIsVisible; + return YES; +} + +- (IBAction)show:(id)sender { + ++callCountShow; +} + +- (IBAction)hide:(id)sender { + ++callCountHide; +} + +@end + + +namespace { + +class DownloadShelfMacTest : public testing::Test { + + virtual void SetUp() { + shelf_controller_.reset([[FakeDownloadShelfController alloc] init]); + } + + protected: + scoped_nsobject<FakeDownloadShelfController> shelf_controller_; + CocoaTestHelper helper_; + BrowserTestHelper browser_helper_; +}; + +TEST_F(DownloadShelfMacTest, CreationCallsShow) { + // Also make sure the DownloadShelfMacTest constructor doesn't crash. + DownloadShelfMac shelf(browser_helper_.browser(), + (DownloadShelfController*)shelf_controller_.get()); + EXPECT_EQ(1, shelf_controller_.get()->callCountShow); +} + +TEST_F(DownloadShelfMacTest, ForwardsShow) { + DownloadShelfMac shelf(browser_helper_.browser(), + (DownloadShelfController*)shelf_controller_.get()); + EXPECT_EQ(1, shelf_controller_.get()->callCountShow); + shelf.Show(); + EXPECT_EQ(2, shelf_controller_.get()->callCountShow); +} + +TEST_F(DownloadShelfMacTest, ForwardsHide) { + DownloadShelfMac shelf(browser_helper_.browser(), + (DownloadShelfController*)shelf_controller_.get()); + EXPECT_EQ(0, shelf_controller_.get()->callCountHide); + shelf.Close(); + EXPECT_EQ(1, shelf_controller_.get()->callCountHide); +} + +TEST_F(DownloadShelfMacTest, ForwardsIsShowing) { + DownloadShelfMac shelf(browser_helper_.browser(), + (DownloadShelfController*)shelf_controller_.get()); + EXPECT_EQ(0, shelf_controller_.get()->callCountIsVisible); + shelf.IsShowing(); + EXPECT_EQ(1, shelf_controller_.get()->callCountIsVisible); +} + +} // namespace diff --git a/chrome/browser/cocoa/download_shelf_view.h b/chrome/browser/cocoa/download_shelf_view.h new file mode 100644 index 0000000..d69b139 --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_view.h @@ -0,0 +1,17 @@ +// 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. + +#ifndef CHROME_BROWSER_COCOA_SHELF_VIEW_H_ +#define CHROME_BROWSER_COCOA_SHELF_VIEW_H_ + +#import <Cocoa/Cocoa.h> + +// A view that handles any special rendering for the download shelf, painting +// a gradient and managing a set of DownloadItemViews. + +@interface DownloadShelfView : NSView { +} +@end + +#endif // CHROME_BROWSER_COCOA_SHELF_VIEW_H_ diff --git a/chrome/browser/cocoa/download_shelf_view.mm b/chrome/browser/cocoa/download_shelf_view.mm new file mode 100644 index 0000000..f1c9fb1 --- /dev/null +++ b/chrome/browser/cocoa/download_shelf_view.mm @@ -0,0 +1,61 @@ +// 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/download_shelf_view.h" + +#include "base/scoped_nsobject.h" + +@implementation DownloadShelfView + +- (void)drawRect:(NSRect)rect { + rect = [self bounds]; + + // TODO(thakis): Once this has its final look, it also needs an + // "inactive" state. + +#if 0 + // Grey Finder/iCal-like bottom bar with dark gradient, dark/light lines + NSColor* start = + [NSColor colorWithCalibratedWhite: 0.75 alpha:1.0]; + NSColor* end = [NSColor colorWithCalibratedWhite:0.59 alpha:1.0]; + scoped_nsobject<NSGradient> gradient( + [[NSGradient alloc] initWithStartingColor:start endingColor:end]); + [gradient drawInRect:[self bounds] angle:270.0]; + + NSRect borderRect, contentRect; + NSDivideRect(rect, &borderRect, &contentRect, 1, NSMaxYEdge); + [[NSColor colorWithDeviceWhite:0.25 alpha:1.0] set]; + NSRectFillUsingOperation(borderRect, NSCompositeSourceOver); + + NSDivideRect(contentRect, &borderRect, &contentRect, 1, NSMaxYEdge); + [[NSColor colorWithDeviceWhite:0.85 alpha:1.0] set]; + NSRectFillUsingOperation(borderRect, NSCompositeSourceOver); +#else + // Glossy two-color bar with only light line at top (Mail.app/HitList-style) + // Doesn't mesh with the matte look of the toolbar. + + NSRect topRect, bottomRect; + NSDivideRect(rect, &topRect, &bottomRect, rect.size.height/2, NSMaxYEdge); + + // 1px line at top + NSRect borderRect, contentRect; + NSDivideRect(topRect, &borderRect, &contentRect, 1, NSMaxYEdge); + [[NSColor colorWithDeviceWhite:0.69 alpha:1.0] set]; + NSRectFillUsingOperation(borderRect, NSCompositeSourceOver); + + // Gradient for upper half + NSColor* start = + [NSColor colorWithCalibratedWhite: 1.0 alpha:1.0]; + NSColor* end = [NSColor colorWithCalibratedWhite:0.94 alpha:1.0]; + scoped_nsobject<NSGradient> gradient( + [[NSGradient alloc] initWithStartingColor:start endingColor:end]); + [gradient drawInRect:contentRect angle:270.0]; + + // Fill lower half with solid color + [[NSColor colorWithDeviceWhite:0.9 alpha:1.0] set]; + NSRectFillUsingOperation(bottomRect, NSCompositeSourceOver); +#endif +} + +@end diff --git a/chrome/browser/download/download_manager.cc b/chrome/browser/download/download_manager.cc index de48b90..7ed4ad0 100644 --- a/chrome/browser/download/download_manager.cc +++ b/chrome/browser/download/download_manager.cc @@ -636,6 +636,7 @@ void DownloadManager::OnPathExistenceAvailable(DownloadCreateInfo* info) { DCHECK(info); if (info->save_as) { +#if defined(OS_WIN) || defined(OS_LINUX) // We must ask the user for the place to put the download. if (!select_file_dialog_.get()) select_file_dialog_ = SelectFileDialog::Create(this); @@ -655,6 +656,10 @@ void DownloadManager::OnPathExistenceAvailable(DownloadCreateInfo* info) { info->suggested_path, &file_type_info, 0, FILE_PATH_LITERAL(""), owning_window, info); +#elif defined(OS_MACOSX) + // TODO(port): port this file -- need dialogs. + NOTIMPLEMENTED(); +#endif } else { // No prompting for download, just continue with the suggested name. ContinueStartDownload(info, info->suggested_path); diff --git a/chrome/browser/download/save_package.cc b/chrome/browser/download/save_package.cc index 7e90cbb..beca753 100644 --- a/chrome/browser/download/save_package.cc +++ b/chrome/browser/download/save_package.cc @@ -252,12 +252,7 @@ bool SavePackage::Init() { download_ = new DownloadItem(1, saved_main_file_path_, 0, page_url_, FilePath(), Time::Now(), 0, -1, -1, false); download_->set_manager(tab_contents_->profile()->GetDownloadManager()); -#if !defined(OS_MACOSX) tab_contents_->OnStartDownload(download_); -#else - // TODO(port): Create a download shelf for mac. - NOTIMPLEMENTED(); -#endif // Check save type and process the save page job. if (save_type_ == SAVE_AS_COMPLETE_HTML) { diff --git a/chrome/chrome.gyp b/chrome/chrome.gyp index ad0d097..fd46400 100644 --- a/chrome/chrome.gyp +++ b/chrome/chrome.gyp @@ -724,6 +724,14 @@ 'browser/cocoa/command_observer_bridge.mm', 'browser/cocoa/custom_home_pages_model.h', 'browser/cocoa/custom_home_pages_model.mm', + 'browser/cocoa/download_item_mac.h', + 'browser/cocoa/download_item_mac.mm', + 'browser/cocoa/download_shelf_controller.h', + 'browser/cocoa/download_shelf_controller.mm', + 'browser/cocoa/download_shelf_mac.h', + 'browser/cocoa/download_shelf_mac.mm', + 'browser/cocoa/download_shelf_view.h', + 'browser/cocoa/download_shelf_view.mm', 'browser/cocoa/encoding_menu_controller_delegate_mac.h', 'browser/cocoa/encoding_menu_controller_delegate_mac.mm', 'browser/cocoa/find_bar_bridge.h', @@ -2355,6 +2363,7 @@ 'app/nibs/en.lproj/About.xib', 'app/nibs/en.lproj/BrowserWindow.xib', 'app/nibs/en.lproj/ClearBrowsingData.xib', + 'app/nibs/en.lproj/DownloadShelf.xib', 'app/nibs/en.lproj/FindBar.xib', 'app/nibs/en.lproj/FirstRunDialog.xib', 'app/nibs/en.lproj/MainMenu.xib', @@ -3219,9 +3228,6 @@ # TODO(port) 'app/chrome_main_uitest.cc', 'browser/crash_recovery_uitest.cc', - 'browser/download/download_uitest.cc', - # blocked on download shelf - 'browser/download/save_page_uitest.cc', 'browser/login_prompt_uitest.cc', 'browser/metrics/metrics_service_uitest.cc', # leaves an extra window on screen after test completes. @@ -3364,6 +3370,7 @@ 'browser/cocoa/cocoa_utils_unittest.mm', 'browser/cocoa/command_observer_bridge_unittest.mm', 'browser/cocoa/custom_home_pages_model_unittest.mm', + 'browser/cocoa/download_shelf_mac_unittest.mm', 'browser/cocoa/find_bar_bridge_unittest.mm', 'browser/cocoa/find_bar_cocoa_controller_unittest.mm', 'browser/cocoa/find_bar_view_unittest.mm', diff --git a/chrome/common/temp_scaffolding_stubs.cc b/chrome/common/temp_scaffolding_stubs.cc index 74f5d4d..5aa41e5 100644 --- a/chrome/common/temp_scaffolding_stubs.cc +++ b/chrome/common/temp_scaffolding_stubs.cc @@ -258,11 +258,23 @@ InfoBar* LinkInfoBarDelegate::CreateInfoBar() { } #endif +// This should prompt the user if she wants to allow more than one concurrent +// download per tab. Until this is in place, always allow multiple downloads. +class DownloadRequestDialogDelegateStub + : public DownloadRequestDialogDelegate { + public: + explicit DownloadRequestDialogDelegateStub( + DownloadRequestManager::TabDownloadState* host) + : DownloadRequestDialogDelegate(host) { DoAccept(); } + + virtual void CloseWindow() {} +}; + DownloadRequestDialogDelegate* DownloadRequestDialogDelegate::Create( TabContents* tab, DownloadRequestManager::TabDownloadState* host) { NOTIMPLEMENTED(); - return NULL; + return new DownloadRequestDialogDelegateStub(host); } #if !defined(TOOLKIT_VIEWS) diff --git a/chrome/common/temp_scaffolding_stubs.h b/chrome/common/temp_scaffolding_stubs.h index 07f1e1e..78a42a1 100644 --- a/chrome/common/temp_scaffolding_stubs.h +++ b/chrome/common/temp_scaffolding_stubs.h @@ -23,11 +23,6 @@ #include "googleurl/src/gurl.h" #include "third_party/skia/include/core/SkBitmap.h" -#if defined(OS_MACOSX) -#include "chrome/browser/download/download_item_model.h" -#include "chrome/browser/download/download_shelf.h" -#endif - class BookmarkContextMenu; class BookmarkNode; @@ -393,26 +388,6 @@ class OSExchangeData { class BaseDragSource { }; -//-------------------------------------------------------------------------- - -#if defined(OS_MACOSX) - -class DownloadShelfMac : public DownloadShelf { - public: - explicit DownloadShelfMac(Browser* browser) - : DownloadShelf(browser), visible_(false) { } - virtual void AddDownload(BaseDownloadItemModel* download_model) - { NOTIMPLEMENTED(); visible_ = true; } - virtual bool IsShowing() const { NOTIMPLEMENTED(); return visible_; } - virtual bool IsClosing() const { NOTIMPLEMENTED(); return visible_; } - virtual void Show() { NOTIMPLEMENTED(); visible_ = true; } - virtual void Close() { NOTIMPLEMENTED(); visible_ = false; } - private: - bool visible_; -}; - -#endif - //--------------------------------------------------------------------------- // These stubs are for extensions |