summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/app/chrome_dll_resource.h4
-rw-r--r--chrome/app/generated_resources.grd29
-rw-r--r--chrome/app/nibs/SideToolbar.xib2
-rw-r--r--chrome/app/nibs/Toolbar.xib824
-rw-r--r--chrome/app/theme/go.pngbin823 -> 0 bytes
-rw-r--r--chrome/app/theme/go_Template.pdf683
-rw-r--r--chrome/app/theme/go_d.pngbin783 -> 0 bytes
-rw-r--r--chrome/app/theme/go_h.pngbin1176 -> 0 bytes
-rw-r--r--chrome/app/theme/go_mask.pngbin202 -> 0 bytes
-rw-r--r--chrome/app/theme/go_noborder_center.pngbin476 -> 0 bytes
-rw-r--r--chrome/app/theme/go_p.pngbin1150 -> 0 bytes
-rw-r--r--chrome/app/theme/reload.pngbin1246 -> 1345 bytes
-rw-r--r--chrome/app/theme/reload_d.pngbin1108 -> 1204 bytes
-rw-r--r--chrome/app/theme/reload_h.pngbin1549 -> 1668 bytes
-rw-r--r--chrome/app/theme/reload_mask.pngbin207 -> 0 bytes
-rw-r--r--chrome/app/theme/reload_p.pngbin1439 -> 1530 bytes
-rw-r--r--chrome/app/theme/stop_noborder_center.pngbin629 -> 0 bytes
-rw-r--r--chrome/app/theme/theme_resources.grd7
-rw-r--r--chrome/browser/browser.cc17
-rw-r--r--chrome/browser/browser.h9
-rw-r--r--chrome/browser/browser_theme_pack.cc45
-rw-r--r--chrome/browser/browser_theme_provider.cc7
-rw-r--r--chrome/browser/browser_window.h4
-rw-r--r--chrome/browser/chromeos/compact_location_bar_view.cc2
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.h2
-rw-r--r--chrome/browser/cocoa/browser_window_cocoa.mm2
-rw-r--r--chrome/browser/cocoa/location_bar_view_mac.h1
-rw-r--r--chrome/browser/cocoa/location_bar_view_mac.mm5
-rw-r--r--chrome/browser/cocoa/side_tabs_toolbar_controller.h4
-rw-r--r--chrome/browser/cocoa/side_tabs_toolbar_controller.mm4
-rw-r--r--chrome/browser/cocoa/toolbar_controller.h1
-rw-r--r--chrome/browser/cocoa/toolbar_controller.mm141
-rw-r--r--chrome/browser/cocoa/toolbar_controller_unittest.mm20
-rw-r--r--chrome/browser/gtk/browser_toolbar_gtk.cc63
-rw-r--r--chrome/browser/gtk/browser_toolbar_gtk.h7
-rw-r--r--chrome/browser/gtk/browser_window_gtk.cc9
-rw-r--r--chrome/browser/gtk/browser_window_gtk.h2
-rw-r--r--chrome/browser/gtk/go_button_gtk.cc232
-rw-r--r--chrome/browser/gtk/go_button_gtk_unittest.cc133
-rw-r--r--chrome/browser/gtk/location_bar_view_gtk.cc7
-rw-r--r--chrome/browser/gtk/location_bar_view_gtk.h1
-rw-r--r--chrome/browser/gtk/reload_button_gtk.cc218
-rw-r--r--chrome/browser/gtk/reload_button_gtk.h (renamed from chrome/browser/gtk/go_button_gtk.h)42
-rw-r--r--chrome/browser/gtk/reload_button_gtk_unittest.cc138
-rw-r--r--chrome/browser/gtk/view_id_util.cc5
-rw-r--r--chrome/browser/location_bar.h3
-rw-r--r--chrome/browser/theme_resources_util_unittest.cc2
-rw-r--r--chrome/browser/view_ids.h1
-rw-r--r--chrome/browser/views/browser_views_accessibility_browsertest.cc8
-rw-r--r--chrome/browser/views/frame/browser_view.cc6
-rw-r--r--chrome/browser/views/frame/browser_view.h2
-rw-r--r--chrome/browser/views/go_button.cc135
-rw-r--r--chrome/browser/views/location_bar/location_bar_view.cc4
-rw-r--r--chrome/browser/views/location_bar/location_bar_view.h1
-rw-r--r--chrome/browser/views/reload_button.cc112
-rw-r--r--chrome/browser/views/reload_button.h (renamed from chrome/browser/views/go_button.h)33
-rw-r--r--chrome/browser/views/toolbar_view.cc84
-rw-r--r--chrome/browser/views/toolbar_view.h7
-rwxr-xr-xchrome/chrome_browser.gypi28
-rw-r--r--chrome/chrome_dll.gypi1
-rwxr-xr-xchrome/chrome_tests.gypi10
-rw-r--r--chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pakbin1194298 -> 1190341 bytes
-rw-r--r--chrome/test/test_browser_window.h2
-rw-r--r--chrome/test/test_location_bar.h1
64 files changed, 723 insertions, 2387 deletions
diff --git a/chrome/app/chrome_dll_resource.h b/chrome/app/chrome_dll_resource.h
index a1055ed..8a02d90 100644
--- a/chrome/app/chrome_dll_resource.h
+++ b/chrome/app/chrome_dll_resource.h
@@ -67,15 +67,13 @@
// how they appear in the GUI/menus (left to right, top to bottom, etc.).
// Navigation commands
+// TODO: Reorder to be in visible order; collapse holes
#define IDC_BACK 33000
#define IDC_FORWARD 33001
#define IDC_RELOAD 33002
#define IDC_HOME 33003
#define IDC_OPEN_CURRENT_URL 33004
-#define IDC_GO 33005
#define IDC_STOP 33006
-// TODO: put this alongside RELOAD, next time someone wants to fix all
-// the Mac ids.
#define IDC_RELOAD_IGNORING_CACHE 33007
// Window management commands
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 0a78959..73826e5 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -3821,11 +3821,14 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_TOOLTIP_FORWARD" desc="The tooltip for forward button">
Click to go forward, hold to see history
</message>
+ <message name="IDS_TOOLTIP_HOME" desc="The tooltip for the home button">
+ Open the home page
+ </message>
<message name="IDS_TOOLTIP_RELOAD" desc="The tooltip for reload button">
Reload this page
</message>
- <message name="IDS_TOOLTIP_HOME" desc="The tooltip for the home button">
- Open the home page
+ <message name="IDS_TOOLTIP_STOP" desc="The tooltip for the stop button">
+ Stop loading this page
</message>
<message name="IDS_TOOLTIP_STAR" desc="The tooltip for bookmark button">
Bookmark this page
@@ -3833,15 +3836,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_TOOLTIP_STARRED" desc="The tooltip for bookmark button when bookmarked">
Edit bookmark for this page
</message>
- <message name="IDS_TOOLTIP_GO_SITE" desc="The tooltip for go button when going to a site">
- Go to <ph name="URL">$1<ex>http://www.google.com/</ex></ph>
- </message>
- <message name="IDS_TOOLTIP_GO_SEARCH" desc="The tooltip for go button when searching for a term">
- Search <ph name="ENGINE">$1<ex>Google</ex></ph> for <ph name="SEARCH_TERMS">$2<ex>flowers</ex></ph>
- </message>
- <message name="IDS_TOOLTIP_STOP" desc="The tooltip for the stop button">
- Stop loading this page
- </message>
<message name="IDS_TOOLTIP_CLOSE_TAB" desc="The tooltip for the close tab button">
Close
</message>
@@ -3856,18 +3850,18 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_ACCNAME_FORWARD" desc="The accessible name for the forward button.">
Forward
</message>
- <message name="IDS_ACCNAME_RELOAD" desc="The accessible name for the reload button.">
- Reload
- </message>
<message name="IDS_ACCNAME_HOME" desc="The accessible name for the home button">
Home
</message>
- <message name="IDS_ACCNAME_STAR" desc="The accessible name for the bookmark button.">
- Bookmark
+ <message name="IDS_ACCNAME_RELOAD" desc="The accessible name for the reload/stop button.">
+ Reload
</message>
<message name="IDS_ACCNAME_LOCATION" desc="The accessible name for the location bar edit field.">
Location
</message>
+ <message name="IDS_ACCNAME_STAR" desc="The accessible name for the bookmark button.">
+ Bookmark
+ </message>
<message name="IDS_ACCNAME_FIND" desc="The accessible name for the find button.">
Find
</message>
@@ -3877,9 +3871,6 @@ Keep your key file in a safe place. You will need it to create new versions of y
<message name="IDS_ACCNAME_NEXT" desc="The accessible name for the next button.">
Next
</message>
- <message name="IDS_ACCNAME_GO" desc="The accessible name for the go/stop button.">
- Go
- </message>
<message name="IDS_ACCNAME_PAGE" desc="The accessible name for the page menu.">
Page
</message>
diff --git a/chrome/app/nibs/SideToolbar.xib b/chrome/app/nibs/SideToolbar.xib
index 742fd25..7570447 100644
--- a/chrome/app/nibs/SideToolbar.xib
+++ b/chrome/app/nibs/SideToolbar.xib
@@ -195,7 +195,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{171, 0}, {29, 27}}</string>
<reference key="NSSuperview" ref="928520650"/>
- <int key="NSTag">33005</int>
+ <int key="NSTag">33004</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="203834804">
<int key="NSCellFlags">67239424</int>
diff --git a/chrome/app/nibs/Toolbar.xib b/chrome/app/nibs/Toolbar.xib
index 3db1282..51feab0 100644
--- a/chrome/app/nibs/Toolbar.xib
+++ b/chrome/app/nibs/Toolbar.xib
@@ -1,15 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
<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>
+ <string key="IBDocument.SystemVersion">9L31a</string>
+ <string key="IBDocument.InterfaceBuilderVersion">677</string>
+ <string key="IBDocument.AppKitVersion">949.54</string>
+ <string key="IBDocument.HIToolboxVersion">353.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="1"/>
@@ -20,7 +16,7 @@
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
+ <object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -53,7 +49,7 @@
<object class="NSTextField" id="535508469">
<reference key="NSNextResponder" ref="928520650"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{130, 5}, {376, 27}}</string>
+ <string key="NSFrame">{{136, 5}, {401, 27}}</string>
<reference key="NSSuperview" ref="928520650"/>
<int key="NSTag">33004</int>
<bool key="NSEnabled">YES</bool>
@@ -63,7 +59,7 @@
<string key="NSContents">chromium.org</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
+ <double key="NSSize">1.300000e+01</double>
<int key="NSfFlags">16</int>
</object>
<reference key="NSControlView" ref="535508469"/>
@@ -101,7 +97,7 @@
<string key="NSContents"/>
<object class="NSFont" key="NSSupport" id="64724822">
<string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
+ <double key="NSSize">1.300000e+01</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="368496192"/>
@@ -130,7 +126,6 @@
<string key="NSContents"/>
<reference key="NSSupport" ref="64724822"/>
<reference key="NSControlView" ref="458854861"/>
- <int key="NSTag">-1</int>
<int key="NSButtonFlags">-2033434369</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage">
@@ -155,8 +150,8 @@
<int key="NSCellFlags2">134250496</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="64724822"/>
- <reference key="NSControlView" ref="781044416"/>
<int key="NSTag">1</int>
+ <reference key="NSControlView" ref="781044416"/>
<int key="NSButtonFlags">-2031861505</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage">
@@ -181,8 +176,8 @@
<int key="NSCellFlags2">134250496</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="64724822"/>
- <reference key="NSControlView" ref="634265909"/>
<int key="NSTag">-2</int>
+ <reference key="NSControlView" ref="634265909"/>
<int key="NSButtonFlags">-2030812929</int>
<int key="NSButtonFlags2">6</int>
<object class="NSCustomResource" key="NSNormalImage">
@@ -195,38 +190,11 @@
<int key="NSPeriodicInterval">75</int>
</object>
</object>
- <object class="NSButton" id="480525277">
- <reference key="NSNextResponder" ref="928520650"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{506, 5}, {29, 27}}</string>
- <reference key="NSSuperview" ref="928520650"/>
- <int key="NSTag">33005</int>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="203834804">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134250496</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="64724822"/>
- <reference key="NSControlView" ref="480525277"/>
- <int key="NSTag">1</int>
- <int key="NSButtonFlags">-2031861505</int>
- <int key="NSButtonFlags2">6</int>
- <object class="NSCustomResource" key="NSNormalImage">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">go_Template</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
<object class="NSButton" id="571076484">
<reference key="NSNextResponder" ref="928520650"/>
<int key="NSvFlags">265</int>
<string key="NSFrame">{{540, 5}, {35, 27}}</string>
<reference key="NSSuperview" ref="928520650"/>
- <int key="NSTag">33005</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="482050975">
<int key="NSCellFlags">-2080244224</int>
@@ -251,7 +219,6 @@
<int key="NSvFlags">265</int>
<string key="NSFrame">{{574, 5}, {35, 27}}</string>
<reference key="NSSuperview" ref="928520650"/>
- <int key="NSTag">33005</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="204555298">
<int key="NSCellFlags">67239424</int>
@@ -312,14 +279,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">goButton_</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="480525277"/>
- </object>
- <int key="connectionID">21</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="928520650"/>
@@ -343,14 +302,6 @@
<int key="connectionID">26</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">commandDispatch:</string>
- <reference key="source" ref="1003"/>
- <reference key="destination" ref="480525277"/>
- </object>
- <int key="connectionID">29</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">locationBar_</string>
<reference key="source" ref="1001"/>
@@ -428,26 +379,28 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <reference key="object" ref="0"/>
+ <object class="NSArray" key="object" id="588411309">
+ <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="0"/>
- <string key="objectName">File's Owner</string>
+ <reference key="parent" ref="588411309"/>
+ <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="0"/>
+ <reference key="parent" ref="588411309"/>
<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"/>
+ <reference key="parent" ref="588411309"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
@@ -460,12 +413,11 @@
<reference ref="535508469"/>
<reference ref="781044416"/>
<reference ref="368496192"/>
- <reference ref="480525277"/>
<reference ref="602421009"/>
<reference ref="571076484"/>
<reference ref="421615633"/>
</object>
- <reference key="parent" ref="0"/>
+ <reference key="parent" ref="588411309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
@@ -495,15 +447,6 @@
<reference key="parent" ref="928520650"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="480525277"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="203834804"/>
- </object>
- <reference key="parent" ref="928520650"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">7</int>
<reference key="object" ref="781044416"/>
<object class="NSMutableArray" key="children">
@@ -532,11 +475,6 @@
<reference key="parent" ref="781044416"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">12</int>
- <reference key="object" ref="203834804"/>
- <reference key="parent" ref="480525277"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">13</int>
<reference key="object" ref="464583340"/>
<reference key="parent" ref="535508469"/>
@@ -582,12 +520,12 @@
<object class="IBObjectRecord">
<int key="objectID">122</int>
<reference key="object" ref="1044322163"/>
- <reference key="parent" ref="0"/>
+ <reference key="parent" ref="588411309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">130</int>
<reference key="object" ref="306232897"/>
- <reference key="parent" ref="0"/>
+ <reference key="parent" ref="588411309"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">144</int>
@@ -599,7 +537,7 @@
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.IBPluginDependency</string>
<string>-2.IBPluginDependency</string>
@@ -609,8 +547,6 @@
<string>1.IBViewEditorWindowController.showingLayoutRectangles</string>
<string>10.CustomClassName</string>
<string>10.IBPluginDependency</string>
- <string>12.CustomClassName</string>
- <string>12.IBPluginDependency</string>
<string>122.IBPluginDependency</string>
<string>13.CustomClassName</string>
<string>13.IBPluginDependency</string>
@@ -637,7 +573,6 @@
<string>39.IBPluginDependency</string>
<string>4.CustomClassName</string>
<string>4.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
<string>7.CustomClassName</string>
<string>7.IBAttributePlaceholdersKey</string>
<string>7.IBPluginDependency</string>
@@ -656,8 +591,6 @@
<boolean value="YES"/>
<string>ClickHoldButtonCell</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>GradientButtonCell</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>AutocompleteTextFieldCell</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -712,7 +645,6 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>AutocompleteTextField</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>DelayedMenuButton</string>
<object class="NSMutableDictionary">
<string key="NS.key.0">ToolTip</string>
@@ -738,7 +670,9 @@
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -746,7 +680,9 @@
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -822,7 +758,7 @@
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>commandDispatch:</string>
<string>commandDispatchUsingKeyModifiers:</string>
@@ -843,7 +779,7 @@
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>otherObjectToLocalize_</string>
<string>owner_</string>
@@ -892,6 +828,13 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">browser/cocoa/objc_zombie.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>
@@ -923,12 +866,11 @@
<string key="superclassName">NSViewController</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
+ <object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>backButton_</string>
<string>browserActionsContainerView_</string>
<string>forwardButton_</string>
- <string>goButton_</string>
<string>homeButton_</string>
<string>locationBar_</string>
<string>pageButton_</string>
@@ -942,7 +884,6 @@
<string>BrowserActionsContainerView</string>
<string>DelayedMenuButton</string>
<string>NSButton</string>
- <string>NSButton</string>
<string>AutocompleteTextField</string>
<string>MenuButton</string>
<string>NSButton</string>
@@ -972,697 +913,8 @@
</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="841811325">
- <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="432873928">
- <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="336181136">
- <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">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="814771507">
- <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="801092230">
- <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">AddressBook.framework/Headers/ABActions.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="841811325"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="432873928"/>
- </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="336181136"/>
- </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="814771507"/>
- </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">
- <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="801092230"/>
- </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">
- <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">
- <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="188847126">
- <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">
- <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">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">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">NSUserDefaultsController</string>
- <string key="superclassName">NSController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserDefaultsController.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="188847126"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSViewController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="outlets">
- <string key="NS.key.0">view</string>
- <string key="NS.object.0">NSView</string>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSViewController.h</string>
- </object>
- </object>
- </object>
</object>
<int key="IBDocument.localizationMode">0</int>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
- <integer value="1050" key="NS.object.0"/>
- </object>
- <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>
diff --git a/chrome/app/theme/go.png b/chrome/app/theme/go.png
deleted file mode 100644
index c4df2164..0000000
--- a/chrome/app/theme/go.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/go_Template.pdf b/chrome/app/theme/go_Template.pdf
deleted file mode 100644
index e863e13..0000000
--- a/chrome/app/theme/go_Template.pdf
+++ /dev/null
@@ -1,683 +0,0 @@
-%PDF-1.5 %âãÏÓ
-1 0 obj <</Metadata 2 0 R/OCProperties<</D<</ON[9 0 R 25 0 R 42 0 R 59 0 R 76 0 R]/Order 77 0 R/RBGroups[]>>/OCGs[9 0 R 25 0 R 42 0 R 59 0 R 76 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <</Length 32048/Subtype/XML/Type/Metadata>>stream
-<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
-<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 4.2.2-c063 53.352624, 2008/07/30-18:05:41 ">
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Description rdf:about=""
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <dc:format>application/pdf</dc:format>
- <dc:title>
- <rdf:Alt>
- <rdf:li xml:lang="x-default">goTemplate</rdf:li>
- </rdf:Alt>
- </dc:title>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmp="http://ns.adobe.com/xap/1.0/"
- xmlns:xmpGImg="http://ns.adobe.com/xap/1.0/g/img/">
- <xmp:MetadataDate>2009-08-11T10:25:15-07:00</xmp:MetadataDate>
- <xmp:ModifyDate>2009-08-11T10:25:15-07:00</xmp:ModifyDate>
- <xmp:CreateDate>2009-01-21T22:30:14-08:00</xmp:CreateDate>
- <xmp:CreatorTool>Adobe Illustrator CS4</xmp:CreatorTool>
- <xmp:Thumbnails>
- <rdf:Alt>
- <rdf:li rdf:parseType="Resource">
- <xmpGImg:width>228</xmpGImg:width>
- <xmpGImg:height>256</xmpGImg:height>
- <xmpGImg:format>JPEG</xmpGImg:format>
- <xmpGImg:image>/9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADkAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9Q6jqNhplhPqGoTpa2Vq&#xA;hluLiUhURFFSzE4q+UfzP/5yw17ULmXT/Iw/RmmqSp1SVFa6m7VRXBWJT8i3eq9MUvDdX8x+YNZl&#xA;M2r6ndahIxqWuppJjX/Zk4q7SPMfmDRpRNpGp3WnyKahrWaSE1/2BGKvbvy4/wCcs/MmlyR2XnOI&#xA;6zp5IH1+FUjvIx7qOMco+fE/5RxV9P8AlPzp5X826auo+X9QivrY05hDSSMn9mWM0dG9mGKE7xV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV8k/wDOWH5nXOoa+PI+nyld&#xA;N0zhJqfE7TXTKHVDTqsSsP8AZE1+yMUvnvFXYq7FXYqmfl7zLr/lzU49T0O+m0++i+zNC1Kj+Vh9&#xA;l1PdWBBxV9Nflj/zlrp176Wm+e4VsLk0RdZt1Jt3PSs0Q5NGT/MtV9lGKvoaxv7G/tIr2xuI7qzn&#xA;XnBcQuskbqe6upII+WKFfFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX5r+&#xA;Y9Xl1nzBqerzEtJqF1NdMT1rNIX/AI4pS3FXYq7FXYq7FXYqzDyB+a3nbyJd+roV8RaM3KfTZ6yW&#xA;sv8ArR1HE/5SEN74q+rvyy/5yS8lecPRsNQYaFrr0UWtw49CVzt+5mNBueitQ+FcUPXMVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2KuxV2KvWfyy/5yO87&#xA;eTPSsbxzrmgp8Isrlz6sS/8AFE5DMtOytyXwA64q+r/y+/NvyT58teeiXoF6q8p9MuKR3UfjVKnk&#xA;o/mQlffFDMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2Kux&#xA;V2KuxVWs7y7srqK7s55La6hYPDcQs0ciMOjK6kEH5Yq+hPyy/wCcs9V0/wBLTfPELajZiirq0AAu&#xA;UHQerHsso9xRv9Y4q+nPLnmjy95l01NT0G/h1CyfpLC1eJ68XU0ZG/yWAOKE0xV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxV2KvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FU58q+cPM3lTU11Py/qEu&#xA;n3YoGaM1R1BrxkjaqSL7MCMVfUP5Zf8AOWGg6v6WnedIk0bUDRV1KOpspD/lg8nhPzqveq9MUPfL&#xA;e4t7mCO4tpUmglUPFNGwdGVhUMrCoIOKqmKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV+YuKXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXYq7FXYqzn8uvzl88eQ51XSbz19MLVm0q5rJbtU1PEVrGx/mQj3rir6&#xA;y/LL/nITyP549KyaX9D68+36MumFJG8IJvhWT5bN/k4oen4q7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq/MXFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirYJBqOuKvZfyx/5yb85eVPS0/XC2v6GtFCT&#xA;P/pcK1/3VMalgB+zJXsAVGKvqzyL+Znk3zxY/WvL9+s0igGexkpHcw/8ZIia/wCyFV8DihlGKuxV&#xA;2KuxV2KuxV2KuxV2KuxV2KvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqitM1TUtLv&#xA;ob/TbqWzvYG5Q3MDtHIp9mUg4q+jfyy/5y3uIvR03z7D60WyrrlqlJB7zwLs3+tHQ/5JxV9K6Jr2&#xA;ja7p0WpaNew39hN/d3EDh1r3Bp0YdwdxihHYq7FXYq7FXYq7FXYq7FXYq/MXFLsVdirsVdirsVdi&#xA;rsVdirsVdirsVdirsVdirsVdirsVdirIfJnn3zZ5N1Iah5e1CSzkJHrQj4oZlH7MsTVVx9FR2pir&#xA;6m/LL/nKfyt5gEOn+alTQdXai/WST9Rlb2dqmH5Pt/lYoe5I6SIrowdHAZWU1BB3BBGKt4q7FXYq&#xA;7FXYq7FXYq/MXFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir0T8tfz088+Q&#xA;5I4LS4/SGig/vNIuyWiA7+i32oT/AKu1eqnFX1l+Wv56+RvPiR29pcfo/WyPj0i7IWQnv6L/AGZR&#xA;/q/FTcqMUPRMVdirsVdirsVdir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Ku&#xA;xV2KuxVcjujq6MVdSGVlNCCNwQRir3H8sv8AnKfzT5e9HTvNKvr2kLRRcs3+nRKPCRtpvk+/+Vir&#xA;6n8m+fvKXnLThf8Al7UI7yMAetCDxmiJ/ZliajqfooexOKGQYq7FXYq7FX5i4pdirsVdirsVdirs&#xA;VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqP0TXdZ0LUYtS0e8msL+E1juIHKMPEGnU&#xA;HuDscVfSn5Y/85bwy+lpvn6EQybKuuWqHgfe4gXdfdo9v8kYq+jdM1XTdVsYr/TLqK9spxyhuYHW&#xA;SNh7MpIxQisVdir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kux&#xA;V2KuxVlPkX8y/OXki++teX79oI2NZ7KT95bS/wDGSI7V/wAoUbwOKvr/APJz8+dB/MKL6hNGNM8y&#xA;wpyl08tySZV+1Jbsach3Kn4l9xvih6lir8xcUuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KuxV2KuxV2KovSdV1DSdTttT06dra+s5Fmtp0NGV0NQf7MVfbf/K8tO/5Un/y&#xA;sHgn130fQ+o78f0lX0/S614c/j614YofDOKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FX&#xA;Yq7FXYq7FXYq7FXYq7FXYq7FXYqnX+KdQ/wb/hXkf0d+kP0nxrt63o+h0/1cVSXFXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqnX+FtQ/wb/irif0d+kP0&#xA;Zypt63o+v1/1cVSXFXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7&#xA;FXYq7FUXpOlahq2p22madA1zfXkiw20CCrM7mgH9uKvtv/lRunf8qT/5V9zT676Pr/Xt+P6Sr6nq&#xA;9K8OfwdK8MUPhnFLsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir&#xA;sVZT5F/LTzl54vvqvl+waeNDxuL1/gtoe/7yU7A0/ZFWPYYq+v8A8nPyG0H8vYvr80g1PzLMnGXU&#xA;CvFIVb7UduprxHYsfib2G2KHqWKvzFxS7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY&#xA;q7FXYq7FXYq7FUfomhazruoxabo9nNf38xpHbwIXY+JNOgHcnYYq+lPyx/5xIhi9LUvP0wmk2ZdD&#xA;tXPAe1xOu7e6x7f5RxV9G6ZpWm6VYxWGmWsVlZQDjDbQIscaj2VQBihFYq7FX5i4pdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiq5Ed3VEUs7EKqqKkk7AADFXuP5Y/wDOLPmr&#xA;zD6Wo+aS+g6Q1GFuyj69Kp32jbaH5yb/AOTir6n8m+QfKXk3ThYeXtPjs4yB60wHKaUj9qWVqux+&#xA;mg7AYoZBirsVdirsVfmLil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV6J+W&#xA;v5F+efPkkc9pb/o/RSf3mr3YKxEd/RX7Ux/1dq9WGKvrL8tfyK8jeQ0juLS3/SGtgfHq92A0gPf0&#xA;U+zEP9X4qbFjih6JirsVdirsVdirsVfmLil2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxVkPkzyF5s85akNP8AL2nyXkgI9aYfDDCp/allaioPpqe1cVfU35Y/84seV/L4i1DzUya9q4ow&#xA;tiD9RibwCNvN83FP8nFD3JESNFRFCIgCqqigAGwAAxVvFXYq7FXYq7FXYq7FX5i4pdirsVdirsVd&#xA;irsVdirsVdirsVdirsVdirsVdirsVRWmaXqWqX0NhptrLeXs7cYbaBGkkY+yqCcVfRv5Zf8AOJFx&#xA;L6OpefZvRi2ZdDtXrIfaeddl/wBWOp/yhir6V0TQdG0LTotN0ayhsLCH+7t4ECLXuTTqx7k7nFCO&#xA;xV2KuxV2KuxV2KuxV2KuxV+YuKXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FWwCTQdcVey/lj/z&#xA;jJ5y81+lqGuBtA0NqMHmT/S5lr/uqE0Kgj9qSnYgMMVfVfkT8svJvkex+q+X7BYZHAFxeyfvLmb/&#xA;AIySkVp/kii+AxQynFXYq7FXYq7FXYq7FXYq7FXYq7FX5i4pdirsVdirsVdirsVdirsVdirsVdir&#xA;sVdirOfy6/Jvzx59nVtJtPR0wNxm1a5rHbLQ0YK1KyMP5UB96Yq+svyy/wCce/I/kf0r1ov0xryb&#xA;/pO6UUjbxgh+JY/nu3+Vih6firsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2KuxV2KuxV2Ku&#xA;xV2KuxV2KuxVOfKvk/zN5r1NdM8v6fLqF2aFljFERSacpJGoka+7EDFX1D+WX/OJ+g6R6Wo+dJU1&#xA;nUBRl02Oosoz/lk8XmPzovajdcUPfLe3t7aCO3tokhgiUJFDGoRFVRQKqigAGKqmKuxV2KuxV2Ku&#xA;xV2KuxV2KuxV2KuxV2KuxV+YuKXYq7FXYq7FXYq7FXYq7FXYqrWdnd3t1FaWcElzdTMEht4VaSR2&#xA;PRVRQST8sVfQf5Zf84matqHpal54mbTbQ/EukQEG5cdvVkHJYgfAVb/VOKvp3y55X8veWtNTTNBs&#xA;IdPsk6RQrTkenJ2NWdv8piTihNMVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdir8xcUuxV2Ku&#xA;xV2KuxV2KuxV2KvWfyy/5xx87ec/SvrxDoegv8QvblD6sq/8UQEqzV7M3FfAnpir6v8Ay+/KTyT5&#xA;DteGiWQN6y8Z9TuKSXUnjV6Dip/lQBfbFDMsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs&#xA;Vdir81/MekS6N5g1PSJgVk0+6mtWB61hkKfwxSluKuxV2KuxV2KuxVl/kD8qfOvnu79LQbEm1RuN&#xA;xqU9Y7WI+DSUNT/koC3tir6v/LH/AJxt8leT/Sv9RUa7rqUYXVwgEETDf9zASwqD+01T4UxQ9cxV&#xA;2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kvkn/nLD8sbnT9fHnjT4i2m6nwj1Pi&#xA;NobpVCK5p0WVVH+yBr9oYpfPeKuxV2KuxVM/L3lrX/Mepx6ZodjNqF9L9mGFa0H8zH7KKO7MQBir&#xA;6a/LH/nErTrL0tS89zLf3Io66NbsRboetJpRxaQj+VaL7sMVfQ1jYWNhaRWVjbx2tnAvCC3hRY40&#xA;UdlRQAB8sUK+KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KofUdOsNTsJ9P1&#xA;CBLqyukMVxbygMjowoVYHFXyj+Z3/OJ+v6fcy6h5HP6T01iW/Rkjqt1COtEZyqyqPmG7Ubril4bq&#xA;/lzzBo0ph1fTLrT5FNCt1DJCa/7MDFXaR5c8wazKIdI0y61CRjQLawyTGv8AsAcVe3flx/ziZ5k1&#xA;SSO985ynRtPBB+oQskl5IPdhyjiHz5H/ACRir6f8p+S/K/lLTV07y/p8VjbCnMoKySEftSyGru3u&#xA;xxQneKuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2KuxV2Kv8A/9k=</xmpGImg:image>
- </rdf:li>
- </rdf:Alt>
- </xmp:Thumbnails>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
- xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
- xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#">
- <xmpMM:InstanceID>uuid:c0bf7369-70b8-e149-ba20-879996a952c8</xmpMM:InstanceID>
- <xmpMM:DocumentID>xmp.did:0080117407206811B4F28F4470BB07B1</xmpMM:DocumentID>
- <xmpMM:OriginalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</xmpMM:OriginalDocumentID>
- <xmpMM:RenditionClass>proof:pdf</xmpMM:RenditionClass>
- <xmpMM:DerivedFrom rdf:parseType="Resource">
- <stRef:instanceID>xmp.iid:FD7F117407206811B4F28F4470BB07B1</stRef:instanceID>
- <stRef:documentID>xmp.did:FD7F117407206811B4F28F4470BB07B1</stRef:documentID>
- <stRef:originalDocumentID>uuid:5D20892493BFDB11914A8590D31508C8</stRef:originalDocumentID>
- <stRef:renditionClass>default</stRef:renditionClass>
- </xmpMM:DerivedFrom>
- <xmpMM:History>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:D27F11740720681191099C3B601C4548</stEvt:instanceID>
- <stEvt:when>2008-04-17T14:19:15+05:30</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F97F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
- <stEvt:when>2008-05-15T16:23:06-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FA7F1174072068118D4ED246B3ADB1C6</stEvt:instanceID>
- <stEvt:when>2008-05-15T17:10:45-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:EF7F117407206811A46CA4519D24356B</stEvt:instanceID>
- <stEvt:when>2008-05-15T22:53:33-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F07F117407206811A46CA4519D24356B</stEvt:instanceID>
- <stEvt:when>2008-05-15T23:07:07-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F77F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T10:35:43-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/pdf to &lt;unknown&gt;</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F97F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T10:40:59-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/vnd.adobe.illustrator to &lt;unknown&gt;</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FA7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T11:26:55-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FB7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T11:29:01-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FC7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T11:29:20-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FD7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T11:30:54-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FE7F117407206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T11:31:22-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:B233668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T12:23:46-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:B333668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T13:27:54-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:B433668C16206811BDDDFD38D0CF24DD</stEvt:instanceID>
- <stEvt:when>2008-05-16T13:46:13-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F77F11740720681197C1BF14D1759E83</stEvt:instanceID>
- <stEvt:when>2008-05-16T15:47:57-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F87F11740720681197C1BF14D1759E83</stEvt:instanceID>
- <stEvt:when>2008-05-16T15:51:06-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F97F11740720681197C1BF14D1759E83</stEvt:instanceID>
- <stEvt:when>2008-05-16T15:52:22-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FA7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
- <stEvt:when>2008-05-22T13:28:01-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FF7F117407206811B628E3BF27C8C41B</stEvt:instanceID>
- <stEvt:when>2008-05-22T16:23:53-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:07C3BD25102DDD1181B594070CEB88D9</stEvt:instanceID>
- <stEvt:when>2008-05-28T16:45:26-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>converted</stEvt:action>
- <stEvt:params>from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator</stEvt:params>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F87F1174072068119098B097FDA39BEF</stEvt:instanceID>
- <stEvt:when>2008-06-02T13:25:25-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F77F117407206811BB1DBF8F242B6F84</stEvt:instanceID>
- <stEvt:when>2008-06-09T14:58:36-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F97F117407206811ACAFB8DA80854E76</stEvt:instanceID>
- <stEvt:when>2008-06-11T14:31:27-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:0180117407206811834383CD3A8D2303</stEvt:instanceID>
- <stEvt:when>2008-06-11T22:37:35-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:F77F117407206811818C85DF6A1A75C3</stEvt:instanceID>
- <stEvt:when>2008-06-27T14:40:42-07:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>
- <rdf:Bag>
- <rdf:li>/</rdf:li>
- </rdf:Bag>
- </stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FA7F117407206811B4F28F4470BB07B1</stEvt:instanceID>
- <stEvt:when>2009-01-21T22:25:39-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FB7F117407206811B4F28F4470BB07B1</stEvt:instanceID>
- <stEvt:when>2009-01-21T22:26:20-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FC7F117407206811B4F28F4470BB07B1</stEvt:instanceID>
- <stEvt:when>2009-01-21T22:27:11-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:FD7F117407206811B4F28F4470BB07B1</stEvt:instanceID>
- <stEvt:when>2009-01-21T22:28:03-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- <rdf:li rdf:parseType="Resource">
- <stEvt:action>saved</stEvt:action>
- <stEvt:instanceID>xmp.iid:0080117407206811B4F28F4470BB07B1</stEvt:instanceID>
- <stEvt:when>2009-01-21T22:30:09-08:00</stEvt:when>
- <stEvt:softwareAgent>Adobe Illustrator CS4</stEvt:softwareAgent>
- <stEvt:changed>/</stEvt:changed>
- </rdf:li>
- </rdf:Seq>
- </xmpMM:History>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:illustrator="http://ns.adobe.com/illustrator/1.0/">
- <illustrator:StartupProfile>Print</illustrator:StartupProfile>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"
- xmlns:stDim="http://ns.adobe.com/xap/1.0/sType/Dimensions#"
- xmlns:xmpG="http://ns.adobe.com/xap/1.0/g/">
- <xmpTPg:HasVisibleOverprint>False</xmpTPg:HasVisibleOverprint>
- <xmpTPg:HasVisibleTransparency>False</xmpTPg:HasVisibleTransparency>
- <xmpTPg:NPages>1</xmpTPg:NPages>
- <xmpTPg:MaxPageSize rdf:parseType="Resource">
- <stDim:w>19.000000</stDim:w>
- <stDim:h>19.000000</stDim:h>
- <stDim:unit>Pixels</stDim:unit>
- </xmpTPg:MaxPageSize>
- <xmpTPg:PlateNames>
- <rdf:Seq>
- <rdf:li>Cyan</rdf:li>
- <rdf:li>Magenta</rdf:li>
- <rdf:li>Yellow</rdf:li>
- <rdf:li>Black</rdf:li>
- </rdf:Seq>
- </xmpTPg:PlateNames>
- <xmpTPg:SwatchGroups>
- <rdf:Seq>
- <rdf:li rdf:parseType="Resource">
- <xmpG:groupName>Default Swatch Group</xmpG:groupName>
- <xmpG:groupType>0</xmpG:groupType>
- </rdf:li>
- </rdf:Seq>
- </xmpTPg:SwatchGroups>
- </rdf:Description>
- <rdf:Description rdf:about=""
- xmlns:pdf="http://ns.adobe.com/pdf/1.3/">
- <pdf:Producer>Adobe PDF library 9.00</pdf:Producer>
- </rdf:Description>
- </rdf:RDF>
-</x:xmpmeta>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<?xpacket end="w"?> endstream endobj 3 0 obj <</Count 1/Kids[78 0 R]/Type/Pages>> endobj 78 0 obj <</ArtBox[5.06299 4.16992 14.5635 14.8301]/BleedBox[0.0 0.0 19.0 19.0]/Contents 79 0 R/LastModified(D:20090811102515-07'00')/MediaBox[0.0 0.0 19.0 19.0]/Parent 3 0 R/PieceInfo<</Illustrator 80 0 R>>/Resources<</ExtGState<</GS0 81 0 R>>/Properties<</MC0 76 0 R>>>>/Thumb 82 0 R/TrimBox[0.0 0.0 19.0 19.0]/Type/Page>> endobj 79 0 obj <</Filter/FlateDecode/Length 127>>stream
-H‰Ò÷wVÐ÷u6PprqVà2Ð340S0Ð3°4’Eé\úîÁ
-éÅ\…
-†
-@h¨`h¬gjflª`©gªœËÌåÒ5òtMôŒr (;ƒ++‹ÑAî\F
-&
-¾@#³€ØKl;@Ò ›‚6¹ú}`
-8;Yc,@*f)`0E;+-!*9~> endstream endobj 83 0 obj [/Indexed/DeviceRGB 255 84 0 R] endobj 84 0 obj <</Filter[/ASCII85Decode/FlateDecode]/Length 428>>stream
-8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
-b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
-E1r!/,*0[*9.aFIR2&b-C#s<Xl5FH@[<=!#6V)uDBXnIr.F>oRZ7Dl%MLY\.?d>Mn
-6%Q2oYfNRF$$+ON<+]RUJmC0I<jlL.oXisZ;SYU[/7#<&37rclQKqeJe#,UF7Rgb1
-VNWFKf>nDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j<etJICj7e7nPMb=O6S7UOH<
-PO7r\I.Hu&e0d&E<.')fERr/l+*W,)q^D*ai5<uuLX.7g/>$XKrcYp0n+Xl_nU*O(
-l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 76 0 obj <</Intent 85 0 R/Name(Layer 1)/Type/OCG/Usage 86 0 R>> endobj 85 0 obj [/View/Design] endobj 86 0 obj <</CreatorInfo<</Creator(Adobe Illustrator 14.0)/Subtype/Artwork>>>> endobj 81 0 obj <</AIS false/BM/Normal/CA 1.0/OP false/OPM 1/SA true/SMask/None/Type/ExtGState/ca 1.0/op false>> endobj 80 0 obj <</LastModified(D:20090811102515-07'00')/Private 87 0 R>> endobj 87 0 obj <</AIMetaData 88 0 R/AIPDFPrivateData1 89 0 R/AIPDFPrivateData2 90 0 R/AIPDFPrivateData3 91 0 R/ContainerVersion 11/CreatorVersion 14/NumBlock 3/RoundtripVersion 14>> endobj 88 0 obj <</Length 950>>stream
-%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 14.0 %%AI8_CreatorVersion: 14.0.0 %%For: (Nicholas Jitkoff) () %%Title: (go_Template.pdf) %%CreationDate: 8/11/09 10:25 AM %%Canvassize: 16383 %%BoundingBox: 5 4 15 15 %%HiResBoundingBox: 5.06299 4.16992 14.5635 14.8301 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 10.0 %AI12_BuildNumber: 367 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 0 19 19 %AI3_TemplateBox: 12.5 12.5 12.5 12.5 %AI3_TileBox: -386.5 -296.5 405.5 315.5 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -31 36 16 1320 721 90 0 0 78 169 0 0 0 1 1 0 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:-2.5 -0.5 %AI7_GridSettings: 72 72 72 72 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 89 0 obj <</Length 21280>>stream
-%%BoundingBox: 5 4 15 15 %%HiResBoundingBox: 5.06299 4.16992 14.5635 14.8301 %AI7_Thumbnail: 116 128 8 %%BeginData: 21138 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD07FFA87D5227F827275252A8FD69FF5220FD05F827F8F8F8277D %FD65FFA8F8F8F827F827F827F827F827F8F852A8FD62FF7DF8F8F827F8F8 %F827F8F8F827FD05F852A8FD5FFFA8F827F827F827F827F827F827F827F8 %27F827F8277DFD5DFFA8FD05F827F8F8F827F8F8F827F8F8F827FD04F827 %7DFD5BFF52F8F827F827F827F827F827F827F827F827F827F827F820F852 %A8FD58FFA820F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F852FD57FF7DF827F827F827F827F827F827F827F827F827F827F827F8 %27F827F8F8207DFD55FF27FD04F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827FD05F8277DFD53FF27F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F8F827A8FD51FFF8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F852A8FD4F %FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F82752FD4EFFF8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F87DFD4CFF27F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F8F8F852A8FD4AFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD48FF27F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F8F8F87DFD47FFF827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %7DFD45FF27F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F8F827A8FD43FFF8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827FD05F852A8FD41FF27F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F82752FD40FFF8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F820F8F8F87DFD3EFF27F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F8277DFD3CFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F827A8FD3AFF27F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F820F87DA8FD38FFF827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F82752FD37FF27F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F8F827A8FD35FFF8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F852A8FD33 %FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F82752FD32FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F87DFD30FF27F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F820F827 %7DFD2EFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827FD04F827A8FD2CFF27F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F8F8F8 %52A8FD2AFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F82752FD29FF27F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F8F8277DFD27FFF8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277D %FD25FF27F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F82752FD24FFF8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827FD05F876A8FD21FF27F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F8277DFD20FFF827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F827A8FD1EFF27F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F852A8FD1CFFF827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F852FD1BFF27F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F8F8F87DFD19FFF8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8277DFD17FF27 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F8F827FD16FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F852A8FD13FF27F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F8277DFD12FFF827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27FD04F8277DFD10FF27F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F820F852A8FD0EFFF827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827FD04F852A8FD0CFF27F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F8F8F87DFD0BFFF8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827FD05F8277DFD09FF27F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F82027A8FD07FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD05F852A8FD05FF %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F8277DFD04FFF827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F852FFFFFF27F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F8F87DFFFFF827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F820F827A8FF27F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F852FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F8A827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8F8 %7DF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82727F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F82027F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F82727F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F87D27F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827A8F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827FF27F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F8A8FFF827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F87DFFFF27F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F87DFFFFFFF827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %20F8F8F87DFD04FF27F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F8F852FD06 %FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F8277DFD07FF27F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F8F827A8FD09FFF8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82752FD0B %FF27F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F8F8F852A8FD0CFFF827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827A8 %FD0EFF27F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F8277DFD10FFF827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F87DFD12FF27F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F82752FD14FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827FD05F852A8FD15FF27F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F8F827A8FD17FFF8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8277DFD19FF27F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F8F8F87DFD1BFFF827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD1CFF27F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F852A8FD1EFFF827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F820F8F8F87DFD20FF27F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F82752FD22FFF8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F852A8FD23FF27F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F8F827A8FD25 %FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F8277DFD27FF27F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F8F8F87DFD29FFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F827FD2BFF27F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F852A8FD2CFFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F827A8FD2EFF27F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %7DFD30FFF8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827FD05F852A8FD31FF27F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F82027A8FD33FFF8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277DFD35FF27F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F8F8F87DFD37FFF827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F852FD39FF27 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F8F8F852A8FD3AFF %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827A8FD3CFF27F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F8277DFD3EFFF8F8F827F8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F8F827F8F8F852A8FD3FFF27F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F8F852FD42FFF8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8 %F8277DFD43FF27F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F8F8277DFD45FFF827F8F8 %F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F820F8F852FD47FF27F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F852A8FD48 %FFF827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27F8F8F827F8F8F827F8F827A8FD4AFF27F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F8277DFD4CFFF8 %F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F8 %27FD05F87DA8FD4DFF27F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F82752FD50FFF8F8F827F8F8F827F8F8F827 %F8F8F827F8F8F827F8F8F827F8F8F827FD05F8277DFD51FF52F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F8F827A8FD53FF %52FD04F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F827F8F8F82752 %FD56FFF827F827F827F827F827F827F827F827F827F827F827F827F8F8F8 %7DA8FD57FF52F820F827F8F8F827F8F8F827F8F8F827F8F8F827FD04F827 %A8FD59FFA827F827F827F827F827F827F827F827F827F827F827F8277DFD %5CFF7DFD04F827F8F8F827F8F8F827F8F8F827F8F8F87DFD5FFF7DF8F827 %F827F827F827F827F827F827F82752FD62FF7D27F820F8F8F827F8F8F827 %F8F8F852A8FD64FFA852F8F8F827F827F8F8F82727A8FD68FFA8525220F8 %F82727527DFD62FFFF %%EndData endstream endobj 90 0 obj <</Filter[/FlateDecode]/Length 15923>>stream
-H‰ÜWûsÚ>¿€ÿA77½If
-Øæ‘þD’¦G¿ypözÓé0 "KI&¡ý­ä8}LÚk‚µ«ÝϾׯþÞV»“j£æ Ê«W’`-䲧¨ÇX¬´4GGƒcä6k0u{§£”ñ#‘Š
-~fI–xenÝR&Vè=Õs1™££c ÞSͧbtOˆaMjQ09Î4ƒ¨K8;C§u×­;ä:g^ uo æ ¬ýd·Ý8mÀÙ¹ˆy@ùô\<ž¡j"·ÿð/: jZsÚ^§ƒš5·Ýéxp«Ýh™¿§ Ç…;—ÂCÂu_
-Ÿ(u!˜ê ],1G7x
-ŒþKèœa^G´FW”°9ÄÀt{®7:) nãpLÀö‰9nŒ¬È
-dXóÝŸŒz!œ ‰Ö€/ÞaÀ¡ý9ú< Sj#®úrœŠ•"
-±œ«„Í·uJædë׫µ6>R.0ÁrT§m T½ŽùÓtZðÙp[ßÊAdAÉúœ$^èJ=L"Ól:Nò™P1#ò§еÍQ'qÃþüþÃS•ê®>†{,§DCP‹µÍ¸ÓL¸ù/‰‰•›(¸‹¿-ÆjÃ…
-§\¡›}&R #! !|Õ‡8ÝI:¥ü¬j\XuלŒÞI¬"xâ­þ[j§…ßNö›€»µ&<¹sqSȧv3Íoyp!Bã|eÒ’€C~01MhùwKëq”XaŸG§¾¤ÜȬÜZÊé¨Ïb ½“"Žz|"*GIÅIPB„¢µÙߦÑñÞÛ—d¥°ºžœ¾å ÂDT›Ÿ` ÿ`}/±øÑÝø+ñ5ÈHV߆1Õ%0öæX"{žC¼¦  `ðÑ
-äꬄP¬gÐT.3y\——œ–7ôMRHt.c5C÷B°\ì:)—žÛSÃÿ{èèÛ üŽ'ÚÖ”2lj‚~ðÛiîÝ€ø;K¿ÀŒÑ©ÄÑŒúO)x‚žkJhÏI¬e8Œªp•O…“>–šúŒ —J“pŸ4ã å$¢­íZFf¶£á GÄÊÔ³+Ë9̶FЋ­¯ZÝߟ}¡“PÌìÓKFT¥þÜ> ³ÊÑgh‡8fúË1ªßâ ×•úÂD&‹ƒî*°4À?˜R{¾$?Ÿ0\À…“–ãjû¤Ó>mØ/Žçyf¦8n»™Ž´OÝJ6Háa ïáËW8z€Mé}þâ 
-ªT¡I²O@шX3Ê ÒäækàtwpF’("a܉‘‘¤’ ‡DC`Äœ¨ýÒ}F#ä “øH‚y‚g7`W¬÷À¬Í+CsÕŒz!ÑÃÌöIrgÓúf*ÁLnàP‘H ‡E,á
-"ZÛ0 CcÚ8
-±š'G°:ÖÃY„ƒ 9{cà¢n¬Xœ°ùn¹«ƒ"èM)ÆÌ&o.5¸ƒ Ž–86â\„¥›¥¾ ïD]0v‘™Þ•'V9(ûqm—pœ´]˜õ»³ýÍ©Ûkö4¤¡–fJíɵ)P󎕃Í0y æ×?Ý\ßÂ*ÿdb‚àÇq W!°’ŽcåJÁ”_-â'È/pù3x³“$f–VÕ|èe”:çèŸ\Xª7+‡¯±.0‹3^s®vðq˜y¯ÿxïpx},á&ü9 Êx&ãüI‰ù½va n Û 9àmíÖqؾ"÷O
-ÿzÂÝë‰RöS<f¤LâŒêŸTèg‹Ò¥nX_8£y~¬´_¶“ýº<<SØì'fß‚+›Ž¿¼.
-íK÷ÝfÍmw:‡lY–±eùÒ¶tj-Çi²åzVÆž”ñemrZ»íx‡Œš:•éã9ç ›•½Åî2h,4¬×d¢ï$R^Æ´í;¿ÁØ·ýn(bé“sóàÅç>L§—†Xƒ~Gçqü#~^ªp
-ÌöòçÐ8D¢‹Må|18õáf&­Ûs]t™^D°ßĺb‡„‰ú’(¢Ñêm«Ýj5Z©QÝ^a©ÇË
-¸±& “Ø—É4¶-'k6Á Q34ÀJI¿aceÁàtzMït7h R–W’ ál8k8îbUû‘xÉZb®" ¹â/ ¢ßHI+7ŒHÁ¸ƒ¼¹qîZDlÈA÷äQ£·ÕxLÕË<|©Èí\ºÆ|ã)A}eá>r›5§ærzÞí]ÅŒew?©Àg@Í’í  i‹ÅI€ê·B¯‘Ý"ž·ý!º[&­¶­óP·g‚Ç('4ŠyÖ|]\Æ Çe€dŽ©¯úzý«×ÀÝ&±×{Õ&“ŒÛì[|à]H¥éqjN£1Ã|~¼š$à+EŒ ²¾,‰R¯m÷˜Í›Ùê7y¦Pô^Œ{|"ñîñfH“PlDt½ƒØ˜?7XGŸ{ŒÅ
-ÊRC-\’ Ž™~¢c­1$VèªEÚþ´å1ƒ«y5º0•v)¸ÂaÄÈfƒxÊÙÙÕ­s&EHV÷ÿ¢|»­_.Ùšöi~KÈ…#h¦.ÿãUñ·ŸÖš\¼›L`~\æ®ÔBÎÏí´W£ƒ&ùüiU±.wÜóŒÂ¾ÊHûJ€Ú°Ý|Ò{‘v«f©ܳŠÉZÈ@'ñ%ÐúR
-é´G}Ö—»¾c¬¯ñj74^ë@@WIÔ ¡…tÇbQB¥Íß]¹°_éFêoj}^x«—„ý·nêfÖ?+BÖs·›—¦šµÈö3¶ÊŽùï3Áp6Èa8Oá~ßæ^£M^îöt¹Íð)¹éfôd3<˜¦^Á|‘ŒõbM–¹Í®Ub±{^ʘ÷®Ã`wcôÉŽ,/FNZàÕL˜&c “×'…Ný¬.ÿs²¶\Ÿj¶ìoIjƒ“Ÿî’(M9^ŸûcW"o0ôæüÊk¬½{ˆà0߬w¤[ÂÎ Š#jž§F”Î÷Œ’@9Ã\[–«¡¡Æ<€é°Ÿî% “ÒFÑ8;ˆ@q—ÿ÷Uº•¼²DŸÀwÀÂf1ˆe !„d8gÝ·¿ÕÝçsÏ¿ûÇéêvíª®ú‡$NÙZÇ}ëC‚ø m6§]â[¾×CT¦ëÕ¾ŠÈðÛ,ÙÅü=¥?0à{ˆÚv÷³¨Õ
-ëŽ-îçb9­?CØؘñà<PÈbV}]Ö6 ÛÄpÈŒêü ”Ìërí´¿ç´•Ë9Ï¢>æÒvèga´Â>&«®‘µoE\` ©„¿çÊþ³>¸6л\Ð} ÔF@32MÔ™Útåšž
-¹ÀØéê
-2åÚ¯‘
-ÝpM÷HXs-48Û»€"ÐSIgßô r¯°‚¾05W¶bmd8€wë±m~ºsVóô«È¯[Ž¾n~Ù QuÃ’VŸ–Õ6]ì~KÍÓäø]=;ÚŸóiù–q𤴌asjüý[WœSÒ7šIEM»áOõôé4óçÐêéÇñò³'(A³å×á»^Ë°Cþö5‘혿²$WH%HÚFýsz\M`…+d6’N»¡µ~ŠÓãê)Ô¤BáæZ6cÑa2Wñvi®uëËhíPñÊ[ ‹ü6¿œ¤ÍÕeQ½ ù}ÒT‹ì<LãNaÜi¾‘ÏÞ'séò‹ïžßtVU÷7T<™tÇb;y&›¡˜‡Ïô#Až mvü®”ˆ^P|¦|¹=
-÷¢y÷T湤Q“¦·Y]ŽD|æSåÑ3Øce•J³ü^žõÄd'–ëòN(Ôö:˸ªœô´ÄÙÂ׺ äq¬8üT™‡MÙæS÷E¨K‘æ×FréÏÍÕŸÞE–´¢ª??_P,u
-—bøfæja÷ŠøÐÖF‡ *5óÓº¢_?ù¥Iò5à ԕ—Bš—| U2Ál³èždt]›£¯)­ŒËb9‹jìvꤧýâH\P9_xK¿„rÍû†üð™âäê‚b2Í/¬tß’¾½ÏDÙåËí”e£»ñ•°Õ qzžŽŸ4êrq×ØXŸÁ¶®b£ôTŠjßøý­?2Äû¸$<—)^*pî–J]ï /….ãβҺOsÍQ7º{XmvEA@Y&èF)é2-æi…pÊŠó
-ü‰±R|$¯âóm
-¾ÚYøMã¿ÅMß
-ˆ5ò›¥ G…­ Ûï!:¹üÞh™³°}8–nÎq»¸¯p ÔÈÁŸ®à„›÷÷ù#ŠÜ“‚gÇ÷pÔÒldÁÊy¢>Oí?MÄ»4œ¬$.óG°ÀQK¼›=ât‘³ÿ%|ÁÌA–?úðE,¿I Ž€|5Z§gÿ"Z ¼|AŒohѹ,;£²©ò,|€¬|‰#q„Ã3þTÌ GÌ€'ÄÞG w,{'çÞ8Š”„ÛÍžEúˆÑv׋­ó¬ìF"H|V*VA¢k¨
-ƒDê{9ý‚B½YZ©¼Ï¨Ã¤?N8Œ”°‚·Ò,«ƒûç´zŒÀ+3†é›ãköÀä"Ïù–»aJÓþ+¯èó7/yÊãÄõþñëuÆ9vÐ-¼ÎÀ.v¾Ð`Ge3È‘Ñï±x±ß¸³m+ææ›>Jšª¹Tz‰¯†P]ɾÖßa‚]ðËø¹ïé‡Øâ• ÔõûÓèŸ@–ÐæFÑCõ¨È„aÇÞ‡¦l•;{¶B“Rñ²±¦°—›Šcus°š¢Ý6µP×c2ž}PÐNµð:z_}_0)Á´~Ýù7ËÉ/V4)ýËå䫉5õF¡ ÉüëaSc¶ùÔ}êRno(7‹ÈöÎÊAƒš[óQ»(â1ÖÆÉVõÿµY°Û©gpܧî^ä’ÈøÀ@`(>ñÝ øDõöxŽóqöœœ»¦}–)EäÂŒÕlØ`³@ÀYð «;¶¹(×…J£t‡ê$ä´ùj© xf&x*€¼¸`Ì.žþ/({þÿè¨Q‘ósÊ€òz‚›_èðÚç7†©I>œ«-±¤pÿe½:·å–èôC˜&¥•C2gÌ-ÚÌYßÿ 4:ö|óãþ™Õ³8VSµkï]ƒa²¨¹e}ðëÅ)<mdª¶e£ï›ªŒÏ¡X›˜F\ƒßç*Òß8øå—- Ýá¹A˜}nSöÁ"RScæ€$µÅ@á6‘OÛÏìDr¶ÛZ›
-–ý¬Z"9‰¿‚fJR†¸C÷7˜Êˆ‹Þ% dù¡A‚š–
-\½ÆÖ"XoW¹_ôÖs¡z¥Ù–löøÐYGï5>¸ js›ÔˆÒ1¸Í^ªóóKæûT¾äþgþp™”ØóyÙŠ%ËŒž EdRcm»ã •æó–ØÕ#—ãb7Žû[ÛS
-¢SÅ€ùAŽ‚+¤ïb¢Ÿ=Û 9 Çü1 «ì7þÙÔ©!I#̶Ô^e™‰²g;uŸ;¹ô5W ~ôZǹ…«%¼¨=­hLjšÌ„Âû161mœ4ç÷)Ø¿Mo„Dn]cÿ9¿QA%
-“˜^ËE´é…Uð ò«ËŠ„ÙWð≉HoæEÞ2h٥›ÅÉÆʯaë6PîÇôFÃY¾¸Õ$à [fëÕ®¨Ø ÏŒ6~+3a¶£ýðyí‚êÉŸsb8ØÒÁ`8×öë¥].žœÝó{rµ· 6´¹×mLJËÈXi%†âHq àò {⯩XKwÀº¤Ó• óšæ,ÄI¨¿zö0:cÈ~ÿ¾ëuiN‰ê”Ígí6NRLTœ‹Ju2o’ÒGÅÄ©øB1/]úë$ /pOu°L¦åò»Õ€‹·»ATÇk Ô}Ì‹+;¤¸Mxv¶ZCP>CB~PÂ5³ÑÐ
-3nëÊxžÃ¶Á¼*7(`Ï´V¿ý|50ÖAr‹’jGoØu ^¾ëXL©Qåq$êH\ÁTŽ?£i‹ó0²€¯BSÆß+r(áÏkñÜ+x‹>«¦!ú­òæÜžfŠ›¢j1÷
-¸èiuˆ<]©nq˜Rßö׸vI"}X‰JwÙ ôÞ“­ê`}g˜’ôõkl »¦â”Äâ\ÃVÔ>ÿ?Ê«l+yf‰>ïTd†0O""aRfDAÌÐ@$$|Ýçÿþ‹ó짓0“Î…kI²»v ]»*mòeñýðîÄIæ~½ä$×ùî£è&gÏÑAÄP}ñË7Ë÷ä‰ÿyesÙ\äãê!tÌ·³âÉ’~áÒ‹,3‡·mg'Ñ—j=2s–f&"íÂüIð3U©08ùt¸=º-¹^Ÿ“¤.­ŸrÿÀoÇ–ª ¢úý+r½bl¯ŒGÌêâPˆôøš»©FÕg©§AÛ{os$Z8ÔûA6]d¿|y9go•¾]ã°Ú #æÅ>¥÷îmmO¾2Õf¥O¿¿q$PÚ¬ˆäªmÔâ…ž‘ê“5ÏMFþƒXãéÛq<Ó?i‚7[ÏËQVL$‚hÉC¾ò.Ò!G(–šx‹uoŠt×Gz¨‡Šüc…˜z»_Ý¥ÞŠŸw©Ù
-‹ŠŒ(†Å¬›ò‘·‰D"F«26@uÅŽrå…T‹)Q-À…St˜›
-v1å™…»ÜXQÁgE‘TLŠ’JùpENaJ”)^Y®$â-ÛgâzIu
-" çYY ê
-BT±Õ½6:Ø< çØæKª—„QY
-@Ð^Ó·ƒ$YPäÖ àjüae¹K!F
-hˆš•:ÀCÔ?«
-S‘•¿m]þ/$W$ hèhþžÙGXÚmùQ%ÿŠdªÇ6ø}®9³ÔÌIòÕN­„«ëeÛ0n32DÄ%;D#¦ø* Þj–ŬՑp?Á,&®Žå¼»c“S™NÉuqvžÀÎ2ªNC q&³ûÅ辩@­°œ²–d^£ðà›1k8q"^²Š£Bu <Ù¦ÌÆ7Q_²¤`´R0²Fî¶{NbùÅ&þ„ÙPT º² À)‘йÿÕQFZ¬¢´O‰C[&[ñQbW—· ÎbCЦ-Y2”¯ë}<k ´¯ç5gHÑ°ˆw7 ŽÞ{JZZÝà·Ac×W¤EDyj1}4$Ÿ ˆì„Ö…ÒcS$r,DV=¿ÛcH?]ˆ#ðN$®À£E÷úP(â¦ð% èØë+À{i»Œ=ðú
-ô¡×†2G1®`þYýiÑÇú~¸‚S²sYÀ´­l©j²¾dãøxÒ–3£EžJ’ö1i„œ]#^êö¥k&_Ö[ÚFã´ÏÞ ËÐQÇ.úÎDbÆ`µÉŽ£¦À_À/ÿ.,dpTð|»?d(W¾
-Q-Us©üN1"·ˆ`CÁÀ+P [“öÈæÈWS“¢,Û°^ fX̪C¡É3éu¹G²µ}g ªÏŸPi*˜ïªÕdŒªj©V½±ï„7×ç‚tÐ[÷zssQÿ GÚéÈîE{÷Ÿö"Éõð33M••ÛN–e¦ôðq÷6ìÍvâs»;RÉÚýAgÇæ°{vwã#e÷ÍEòê{°{×é®ÝWgì~º¦ƒÙ¡K£Ù îv…Q8Ç,¢¹æ÷cä9IÆ?âËÿwII "´°KW& `s@ø˜åò¾Uãåé5…“•‡A ¤|DûE8ú ™Ò°WÊæ³|È“OÈ–È]Û[ð{:„¯7 W(©¥îHÆÎ@5aõ‰¯J£]=Œ½g(YÂý𗲸§…ûÆÜÜ›…c=Ûɵ÷±l¿××êÂ,A”,G“2?ägY"§‡Ì1éŽë£¶1i9ñKW¿†¤_wšÍqB»'‹¯e‡1éƒÝQÈI[¡Qô&œöìImŽ=-rúê~ÒØÜÅ:‡EcÒèð.Ñžº!éMIˆÛw‰Ž»a+]ê Òø­£ÕÍçÍH¿éòíÇÛž”Är@[ö?9«\àÝ0Á£6¾!m9'éd°$h¤ä.rÅãšÉM‡_*­û¼ªÏh¶^ðÒ¨rv•¾J¦¤1©yƒ÷¤û›¬Ó²ðëÞÑ7!-ñqÙ’¢ü8bFZ!S>‡Šq¬7.äLÜC#R¸þ9Ü®Üç؈”.¥Š{RÂr\Õ»nfŒI£Ã1]W:†‘Þ”PƱö»F¤6]ö­&±Æo`öÔ4‰Ô„hÕºSI=gém—<¹Ä“½NH+›ã4ÖZây¸!ú]'¤ñnmÑ×I‹£Eé(Ò'ºöYŒ‘Úè¦ò%·í¸F{JZ÷@Ñ”ôi1)äMH?Ýt7 FªÞ±“¿úG¯ðaCÒî$—1%mŒ*/ÏF¤ªòG? tßùž4LðMívÝqBÒ´_ )¦¤oå`YÒHmƒX_éþ*òdBšs÷¿ßyCÒAŽó‘MVi'“<˜$x¥ÇÍžÛ˜´Ñœý¼3CÒ1´5Ru¾œÇºlyïßÍHKô¤ýçÁ˜´ù䆟yT8!%,mñÇ7Ip²b4èšNÊÞàòqÓäàzðUI½gMӼ͸¿ÖË éJá> Ocýötî6¤‹”çdÒÜÓõFL# ;ÿÇzu®¥Îá+ÈE5”l(ÅЛEà€"<âñÀ'ûÿv7!ɆÝðOt’éóÎ;i7ÙîþVÝÐhX3
-¬(
-…]!|S÷ÎÑâÁhtû/PŒ&Û<ÒrWâ¼Ȩ˜éÖëÈ(´"ÇêÃ4;IðÓ×Õß·+Àhü·Óe7ĉd©t 0yЭªDùaÂ>Ä*£Ðž"õ¥…É®å&IAŠ<ËIž<”’¦<]^ß=”Ÿ´«ü½>®2’t¹½i¾•¯ RµúåýþVHÿ¹!]ñ²Ùf¯Ð¦H÷÷µJÕ½#Kk±7†«‡BWŠüzü”M|ií«•¼y ¥·O„ã&ó„ŒÕcµ–áSéµ·;Òéƒÿ5÷ÐˤjÆêR°çÙþ“(_—ùqîúeD–6‹óT@ ¥O°‘ç»q!D‘÷ç?â.§H6«ðbvK–ÞZ×IXþ–±·àPíîӯǛ×#¤“~<åâoŠ´ŒÍúOŽ«9#ý{ûöÍ+.¢”ëµ?_ýìS†$ÝnSã6Éٶßå‘Sy\ª4ÛÒ”ž€Ðöqü³cß|y¢ôð‘ô¹öIO2ä©@0Û N´¯ÓëÀÃZ½øÖ¤ÒweÏ¡W¬üÑÊ©§Ù é4Ó_l°v/°|¾Ócù×wpWŽ?_Xÿ0p€¿Zðþ̱áÚp¡þâFþ,Z-€7ÏYdO³mÜ.}àíбƒ®¤¯Õ¬;ú/5
-¬Üÿ×}ÒÌ »mM6š èF]Å¿1l*q³èv ×$¸¦4£ªQÈÆK±$5VÄH¨F!éÒÒËkFevÇZñª*ð€k óè—Rˆ§Ã§­÷šî™aö)oºš)ÖÆ{ÛÃxÁéÐƬ¢åG5c]ð5ïI«Ý“ÜýàWò¿
-JÌ1³êÄ—šã¯<2±
-L_Ť6¼+|G?O-/€Gß0§ø=éHÀÑä*½ö¾hФš—¢ß³<nÕ@P3€ªçEög˜‚Ò¼_eì¥ÓN÷
-o»’ªB$'°Tó*¤Œ8•…QsoêÂv>†(w ǃ<!w`Rý… ¶éS †&zîkuG¡á[LNõÈmj¯<C4Gb³É¸«E¥ï1,ª€EE†Ñ¿ÆׄE@„)Œò aÔ1Äú<6kE¼8W×—)]mPZ`Æ.HÌWÒÿ‡¶¥ÛjÓðºN™(ËE†6”‘U©c8ýÜMã+ãÜM\õ¹3Ÿ:ÔÉ“¢ú¥–|—J­„%¹-¦¢‹TNÈ”ð‚‡‚‚-ŸØWC öFô{JüBœÜP<‹oâÒŸ»*9H^òX˜±$¨ Ç‹/½¸]J¾înM±Ö.ô” kùŠ”Ådű^ü,ᨪ[K ç°¾‹ÛƒsöDž}àü”5OŒ/jéÒËdWjþØ tÀÞ·›æRV™}»¤R:dÇŸ)çÇ*hEéì×o«®*ñØÉ—(ûôM
-æ~1œ]eVw‡™_*ò«Êh=ï<HÕýBÆp¤½0c8¢9ΘÌ4Ž—úƒ0~¸–᨜³cÍW0•²?û´rè-Çþ–©ôšáN6™+”!^T~g*ÿ–ão©fE÷áC <±"WrŸá´ÜÀXÎÊŽý³äFá–'Ù)µ~¬4™SPbIï4P Í‹2™xGd¦DtÅ
-ì8bä–gåÄjìŽ0GV4Ä%õÇ Ûƒ„.Ék_RC“ƒuQº?¹ƒNutþdüù½3ÁÇi»
-ìäA¸ä
-?^ÔJäÜ 5¹7Tþ®l1íuÑ“Œxõ{C­ÖèÑ1m´ªÆ߬ç$4¿DÇf­ˆ"?y UOÖ29*¯¹Ùª±ÙnÑCìâ¤Zªð*’úZ)Õ¼
-Á<Ýb¢çn“°›jZ•ñÖ:1„èÙùÊE†Ö¬ÃÍäF—"œJ‹™—} §Ò5#•Æ“gß’L+5H¶ÝgæîÈÇdðEhl3&Œån]Ã× ˆßbŽa²ý óR3îÀ3ú<Ùf‘î³N·èóL—mĘwzÍ°ô΀u X1ì»óƒ/:cZ˜ÓUGá²0;7ÎöÊee>†¯º€½”¾+{æǨúÏæsg>ux'¶}æ›MÆaCÌz¦d¾ïÊ¢væEî1*ñP•Å.Åä±ìáÂ^EU3Yy ç@~H:ðíJMÏň´(פ¦E‡ÉNô8Ü{
-S¢(›îÎ^¢ ¾£µ
-¼üP:PXñªb8ÃÂ9wÝ _¿’þ?6,|(ÇDô_l¦RG?NÃ4¢ ˆÖuŽhêõjŒÿuõ ˆ¶[D ׫}OP&˜ƒ£Ã4+DÛ-â—3¥8ž]—Î~—„hgÌ~×9¢©Õ7ê¹Ѻ¢©»ò\=8¢…qUK66Ûw£¨}"0,!P°{|•åZá£ß«Pê8dŽ¢rKÅŸP¥ƒ8¡Ïÿål$PÃÍ }¿¼†Òƒpé"fËIYÈ`Ï€Y Ì È¢Ù§Âì`-zîkõ‹`æË·I0ÜÅT-²‡0–zŒDΑ7 –£žÈ¯DEd‚9ÔCŸ*%×± ƒ2Á¹2Ú.äѼ·aï~5éhƒváe¼°,˜ŠcÖÛ(³s>Rw!vY
-›}K¬Å3¶äìVRFKêEÔ·9ç²2
-0·À
-àò=
-Êë;‚|¤]"©ÜÉ6ÆË°˜"„µ4 ®%ü®´³˜¦;“#—ü ` ^y£×mdCüØÝe©´1\ —ú óÛÈmPì òľ“úãjÑÕEk<‘gÁÇi¢lo»‰-3–I¶(FrC­$ìäɸkS…bä"Q!(Í‹ÔŽ
-´<…Hwݽ B÷º«ÍxlÛc}\^gí&xPB:ýX+$“W‚šƒÀ'†‰Pr~ß$XŸ{P /U#îI ô¸þòïPHKqHŠ4ÿEuêF6l¯øœ tõkêÄœyÜý`ÒíCo<!¹à8N‰C
-%|žŽÓ[çg3X”á«þÑ'UËÆùeÂöEºèHÝ­B ¨ÜÆub°ÆJ¿£\|´q`~$¦ÍRXc¥‰µÆW Ò/ÝŒæ@ï*Y6DÐê”M ÕÙýЃG£ð°¬wøÌÔ†ÿqã.My©á\¬]•Ñ´¤&¤îöVb¾ý”ÔÙ~ªòÌþkXVfGã±vテæîö UM‹;9¬JÒ•µIÄù}²Z-QaüKÓP‚MÕïŽÚ¶)çî¯iÌ©¼—$Ò¬fÊ&~íZ¨vƒÂäÕI—¬‘Ú_ÊŠ^w+!ÙÛJÕF'´øq'0 bò¨Å ¤äìÈìïP.Ÿ&7.¬ ™$ >vš{ù¼ÉfÿFËiûq+6.&ƒŠ¹Cì61eû h
-éÙD¸822f}:19\€ˆ„ÄŠûbF4^ь݊éSE¨»&ö2.ž o’.à­ÄÎ>›ô®h´tŠu9Ňé—8¨Tõ³ÖBPiŸ[ÒAQxOÑA¿uRý;ŠÙŸ[¹rs™iƒû÷÷éÉ"/Ý· ‡Á©mìúýk& ™ºz“üÆ諲eÅ!ªe­Š ç_V1Ñ6­ØŒ´§ƒ9û9ÄŸÕÃÇ6¿ÏòÆÃÂÉ,wÕq.‰QL?“0
-²z ,ö8Þyƒ˜ËÙ
-s¡Râ«òJÀ# ‹q†æ‘ç ä•\‰“<šä‡Å{Dr ¹RÉcJˆBªëÈU.…DÁÿ;çu`#>†BŠKl|°ï¸b`>²ë
-KJ’®„%[§ÜËhxŽ
-Œ‹IÞÂáÚìKM2t‘i²|ºdÉ2šƒ£øVÈ‘åY‡&ËÜœvØ„k7ù¸
-¢F>¡xi­Å%TR°º¥ºÁ⢲ø7U . >u<¾IW§P¿;j‡O2°¿.H¹ÿ£#ÏQ&¯ ô»Ä›Ä¡ v8uU³û&±wâNbý2îŠ{™ý-§íÇÍÙŒh<cØT–g
-ó1€v‚ŒËm?c û¶œ±þµ]m'ogçv*£’„vhѸQ46&o½v4Ã9hÅÉÅ“}î-I‰ŒÑò‘kÊ¿ÈÙtþ§j^¿³—ÿ.ìJ2 c2»†ÈØ 1eƒ™ÍǤoXÊŸâR}q§-ŒD$wìOªGg±¾—Œ0G‹Y» þÆ/&!HÒAOYàÏï|k‰H†Ix¦.–2Ü’,àη±ëF¶ßýƒ_`r;:íà®ýv_ÒΫþÑß0ŸÙvÖ ñ‚h<NáÍ~»¨¤«þ
-ˆ!ê~85ÃFF
-”8uPÀ‹<^äG1ýŒH(à–’åc(ÍÉѹÿê´±Ô+UKaÅœë‹t}±±¤ÀX¾sñ5f¼(Ön^†]M
-‰ƒNz¹x½ÌúÁ‡ŽC¡Þ²G†ôžh¼²’‘ †sJéž×ˆ‹þ8{Ô/“]ì¼Þ¿4ïZ·×§ÙÏú…1¬ +?›“¼oÔ³í_ÍèKûºYK]ÿ¬LŸRûè'³‹¾Ô­þ õ\ЫjÓá„gOQÙû)Š·7‰‰j,¿×zd ùªÄQJÝÝT¥·ÿg½µºD•«Ñ¢Žl·ßP ‡gÕrãÞ
-Æ+{yø®ç²•þr>/%û™âÅë Ïé|ùTÎc„¡ÜNs­ÜÎ%àt?;è%
-Ûxä¢lQ1†(ö ös_V¶/ ‰ùˆ¸°j‚íêÎê!µaÁ„î “!–„Bð¹+ßïêÑÝ<Å» OõQ½=MEy tw6ã„#4$8Ql˜}]]×+b¶èûdêlWRmrýQ¬ÛOb¿ôÒ¸‰’ô¾K Hã•Ãær‰ár›¾ÅW)B.¬éøôÅxR€iwRÊÐRl~ØhÄø`
-H‰¬WéZâJ}‚<KÂ*$ D ŒÈˆ.áŠ×‘QåýowÖî¤;ÝAþôç7ªNÚNM‹r1×U˧×5W_¬ëÅ×Y3¡¦ÎºÅ\ã ÛŸ¥òâ0ÖÈ\—×¥äu®v;5þJk1ç“_ç¹êas.ˆåÚÕSU¾˜ôërûP‹Φi5U“/åbùW&W{Ý”lcêºkþ¦z¬¿]*“dê~R²€x^ªUMÌUóÝ4õüBÿ+ˆJöÇTs]¹à/sÕùñ¥ù‘ ä©]s¼ zòÅx›‚¡å]Hi*$AT·u#”û0y’|<y, b$žJµÛ›./OK‚àIï½W—éç×Än%ÐÜ(Ùú[Ë„²TÒhÉI`ó @E©'$àÅ5^í‡'µ~wÜöAÙß…§Ù†RßbvªËÌéÒýMÁôR=¾H¾9åõÞ–ŸSÍÅXbЦ=Ì[B'û
-Èùl=ÿýÅ€Ú[À˜ö¸ÖCjÇ|tCòê2¦ãÏ2)ç-'1xÏ’‰I¸ã6çãô‹ÇÎK£pÏbg¼Í:¸+ŸEV¤Û¥ÚÍF†~"Æ€U«…8€¶aßÙ%>:H¹« r RÌ–¤Šai¸œÐ€–·;\åôzß_•ëTx.½Ç­—JQB«¤ÍOà «ôðÐðÕI¯Ok¿+´6ž¨Âêfüv!ˆ­ü’ú†—¦ÀlÝÊu ß•;4® BbŽ8ˆA–Ç$¾Ñ)ìL×<•Léßr¾X„3~ÒG£‚ÿF[t‚ȱê\´ @oa=“°_\ùukp
-pêV`
-èMÃÞba> ,Âô&4ÆÜṽ|ó6_HɳÉ8ãBÞÕŽiÅ“¬´ìsÚÙmåaW’iç«hZñÍnwZúìx»dZÊÐaj• ˜ræn —š)P6ù´·ù¬Îy–ηtBÉ”<|îͬÿ¿5‰mø,56‘]óCcj!âî¢Rù6Ëú¨¤å9$CDTk0½î¨—õ<çŒÕXðÂÌÒ:~Iº[w%¡ão;* ’)AT·uƒU”3 +%OŒÎW{=/í(+©jð$ûU9aZɳ²Ïiç û®$Øáj&š¢ïJjÎ=;Å×EîÌ©"öD ‚·¡Š–E¾ž5fí׳n‘§ öÊúÛü›?û…³ o#µ¡¯Øcv¹–{kC`
-oBŽ9FmÃÑ’Ú†üjò͸y
-M{hæq/víÃs½šv¾Ô>öƒvŠ{‰JƬØMU_DioSHƨ¦7¶DKà)“7?ª_$ßÜÎ?ÔcZ¨”΢#ctv¯W_y)ñ=8‰·Œë:á2ÇÃeŽÀ#tcÓÄŽG¨©Ç¾Á ÙÝqR9óàáŠÎÏŠç%Šõüw$4nöq;`¸ ¿¨¡Ç-ƶSIß¡øÔ®9V®®ÝòÉÃ-fÏûmµÀ™®ÑÄ纪›øsy¶‹•<­£½ï¶á¡ ‡ÑÛÐׄ΄¡ËÔ6Äd€·Å°ÍR9^ùn-|‹!àÊ€<›Jäüø24È”i
-ÉKšn¬–Ö fÉÁ”
-4•¡w%0¦–1˜6c¥ÚíMww%ÈdÁÏqWRF*`ô–>˜# CPc”¯&hÁ' …Ÿ0„^Æ.á†#ª0ŒáÃÀ[(Ô¬Ö‡¯1ÚÀFxœ-FÏo£À8‹|ÆàŒhyiy¶/|lc½TŠ†ëˆdj £ÖGq‰½5Þð@®¤`.õÞ;¯1JN×æÊ3{ŸÔìhE°'ÚÈ\7ÔŠ
-ôrgý£×ÜÉ¿W]¤6P§‡¯Yñ4¶@g²çvµ*†t§ñÖs‘êTnÝÔ¯IN¸=JˆWºR¬ÐéSˆSýàqú,I Ïéj]É­M§@Øã'¸<|íœ8Nõ¿¨ÓÓxuZþ•ôœ®¶OJä0f|zòÞwcÅ%ŸGÛ²ÓòèžêÐû®šN==†Æ*·77T§RgöúLs:#9÷‹UJ?¯‡T‚eíç½Nqúý"ùQ:Óœ^›N‘œ0[Ó`þe%"V dŸüÝ õ;AD¿,?t¸,–3=ë;{MvŽ¢ÓiÜÖèdßòd­¨‰´íðó ?sÐ@×0=i~•òíæû¦’­¿µ<„4¥Ûß·%y¬÷¤O^H€±pP˜¸Q€HBF¹ö0oö^Î1\ë¢7ªu™J÷¾©>në ’ Rx*/(<¥bÑS'ˆ$P¸ÌÝ•'o¥#ÙWñ¥žÀÄ$½ &Z$ð¼õ´ðg¤ø¬ÉïF8ZÒÎÇhñùJ“Ð/ܤW¼à„ ¥ÖïŽÛ{é}¶¡:·ðX
-zçà㪰0ÇŠa”_z©¾ˆãêMÑ×:ëÓ IíéÔÖ þ«M¨‚M„Ng1 f?­¬›Õ|ì2C ­”<1:¤Ðð ‚ í!Áç|ú> ¶ê3¡È³ÉxÀŒ*#™Q‘«äï^+ 8ùƒÙ
- ¨Yà9©f½‚äU¥5-‘D…ž bZ^*é;ìÛùjÆ…{ŽHÉÆÊù>*«§ê§BÀ‰Ó ™wÂLÕmxìã
-<öY«Ç$R:¶œÄÇqv"D+æ¸Êþ˜j„æk&(2“á¸BÏ>Ù´”!Ú$ÞU©A_¹30ù´¼õ¸ŒU>Æl¹h'Šå<¢Á_:$F‹¤Gà„!г²] .Z€Uù gwþ}#ˆ,E—_
-Ä·5ÑýÂ_¡ çJ¶þÖâ Èí}@b9¼vØ 2ô?ëÕ¹ž,D¯À‹ÀH
->‹Eœ‘ty7wJ'aU(˜}#˜~„ý˜ÑjÆòÍ ê{úY <ÕÏj¿+Ç⤆ Îr‹ÃC»½,f6CïbÍòòb1”2gõOIzÁ8ÑK±PÁñ¥|¥õ {Ö,ë&§ž›Vë]ç`ß÷Ks-²Zñ‚3™3žçåïN‚•V(;XðŸiÖ¬NÜZ³-Èä¿:øßDko v€¢pÌÎ~Ù¹r7Ð'+8Ô®{û©N˜xuû Ž¾ uSî³Bu
-f"\#ÉÐg }ÿ´5<C/ …a3 –a>óœ0†=«ÆÐF^²†i`šZ¨ åLGžî…‰ƒ*œîZ)°JpÈeèé¬(=m§³¥‹&{Ð}!sL(•/Yó0Ó½7Þ~©\êš”8íá”­c(¨0¦`&MFLuGæMæTs€æܦ,2âBsÿQöy~µ‡²ïÌ–q_? ±räÝP^GhÉá¾_UÞ~› <†ýÏoíÀÏåF󹬡là^WöôZ“,ÌG‚ag™;¦ü ‰§~g‰6 ‚0ÂÍQ·r_*ï%IÜ' ç§ô̹Éð½·Sñ'ýv¿xⶇ Ux9ãGßN<ý0D2×àì½·@ØÑìÜeÈå¦Y¦Þßnh–w£àr^þL,ÇÕEé½
-U‡…]»)|—>š‹ç«Vž«Ú£<CFi–ùêù¿jë:ùøfû‰‰lÒ”$y„}û¾åHÞ±ˆ0ýò¬Í†Ø
-Û9ÖeXûä&#Iñpp¾æ+„˜ª­ØÈÌ—às|<Æç^:9>·­òùZu!Iÿâné°ˆQ{ÊUƒ(l$¶Ë²Ñ‡ê
-në÷k¡(‹ðVÄØÓ7RÁ~fñ+ÓoÁ oÝšþâ
-Ï8xqÕ$³®ó–ˆðm‡–’@2± ¢ ó÷ô*+?@äNáÙÈy ¢ÀÝíÙVD
-ÄZ¾j2ø:§q51ý&a#eþöbr½-ï“¥Ng¬ÒKdóåñè—š01SˆB'ØÁì3ý'Ó>3«ùå«UKDW€É™Ãà »˜e&#ùJüôC?†õ±~¦âV­Ê<Æ2ö˜é*l닚݌#ó/1yÉÇfÛÝ<ËT9K_ÛiaÿTk,úMjdFQS2Ô
-Í/™ñûÁÕc1Áí¿ãHk2‡I½vRf“e3¾¸ÆhŒ Í  –E¤ ìñ¥öˆ†Ë)@ƒÛá®rÊq‡à6(ÉhÁ™ô3à'ú nƒN¬0{Ó‡á µS²Ú:—>ðm Ã{=øˆ%ú£œ \êÏP&¤òµà Z0z… ý°ð)«lùlê ì1–F*G•›.S+û&'¸Þ‚ïÕ‰Û…ôx™œ‡ú’%8f`r*h+At0Y„|‹~
-BËÊë†ÖòR a•4bå1bæÚ=!TVš§3^n`ö1„“4Bhxy ±i••à,×A¨¬<‡ceàÚÿ¡ð’ÿõ*ÛJX¢_À?œ „„Œ ƒæ
-Œ‚òd¬ÛwÓ0vAŽvÞÂCòÄ;<vdòGØw•:ý‰H× Ï|ª;N´£Í!ß«j£ú;‹÷‚²“sbñ¯aY<‘à«ÞÇÞs¤ûöGPØ€PI0JUûd•…âM§ŒíÃc€Q­Ž.©<F-ªWaR½ îÝ®ÞL°Ê£ê¾ ñfmÑǬ%üÅÞ#18Ë0ÈôQ4~ê‚ ªx’!Â*ïž)`LŒo¹T'd¨}oe…Ëň۷yîÕ»0UqÙ,WU#zSÎæÙ©ž¾YåìšMðátcTG‹BnbªÍ–¥6"}lÀß"f/µô–Ð#\R+6¼Ñ}—ÿ5<15ÿÓ”ð/¹µ{­ëçÇçÅ/Ñs摳Um/¦Ks=›]Ïþ³-,ïwo³ÅöWâ—œ½ÊW*±Hav¿œÎàst@£¨S)A¸PסëŽáҹÆ3¤ã¹ÂC¼4/Ÿ´RãƒÒ5«f©¯—SLH´ áŒy’á/nãŒøô ¦ÑƒÄ»Ä#Ö;&¤Ô5¤"^Þ®ÇM#åÊÐs1=vz{úv› Ìeô·®L]«RÎòH>Ô$+®.Î3Õøƈ•“¿%sy¾)®û·JáÖì^›©lê×YÒ‰¿…ëÿ³í’ ïLiØÁK‡oEþw‡áBc/Úß9ºœ1¡¬Þ„]û ÿüj0¡ÅeŸî¥8’TWzý˜’”Ù6Ãuä²;ÆB0ý[ߪÇ@ªÁ "bÖø:Eê­ì”gêÍÜÁ*›9ÖË ÑCÕ+¢Gёϼ„ V–œ©ò¤‘k„9J4§—° ‰ ¥ŒÅA"i2°
-¥ó¦DîvƒŒm¨QÒ|P8XÓè•K¢¶½vÉtÅg
-â(Y©­aa£¹º™°ö®nV€tl¼í‚¤Tš5ÉÈ@ª³Ç–‚è@…Ë=v,·P/ «­ÑxŸÄ“V§[Á')ÐRßmHdŒù³Ù€È?šÜkì$FAí4ÐË[Î𮜋±â“+[®ZòGþ<ì÷=¶ª*Û©D>ÛöŸòOÑê*{]ü¶Ô4× Bëlá—¿ï<ÛÄx­;ðÑç;©‰”hZĤ%YzYìxënì½±4R~…U0]—^6VÜ´ PJVð9ÚÉcÄHÔfâµ%Ô:«pj±
-zk}b§ ¡º)ð°|þv:°“
-Òù÷%•‚4WXã
-*õkö¯.Dþˆêþª¶Å ‡ý©‹Ÿ3Œ(~ââXDˆ¤HÆ>u±á éˆãÔ3—‡9¹§û.~*äÀ…dì{.Ô#RéV®ýCšíâôÄ-¯·TÍï}'Ýï| ý¬I¾3ß´ýï„£0öÕ®äcXÇÃ~é"ôCœË…±ïU¼|4@ŒýáBùé6(Öñ°ßÛ†öO1`ŒF¡ÿ½ÚÊáT=/X1¬ˆ¾ç@;dW‘Í„&þ{ Š¬ýTšô"þPä¯NC;¦¹ÁÄu@[®"kʱ¸<ˆ}ÊÔŸÙ †/gYnën”~“镣ƴ⠑$“\c¶(ÞÏßãŠÜ™‡´ay*â± œ>˜ žBè_ zºíµÆU¸øYënêW¡C„yk•
-“‰^f~:˜¿Ð“I­Å—‘Û‰û@pÐV¡#^¥²7½–à·i¶ è©¢⋹UÅ.XI˜˜.zÉjÚR/Šø.Á¹s`¥¼„¾£×5N¢SÅC9sÚÍïr‰ó—=t|Ì#>òG²íÎRý"ܘ^ê盶1šÊœîTq{Ÿ"þ¨½\;;»qÿôA/ªì§/‡ƒßQ…Vj_Yîß vÓŠ['œöR’V&-M¤@eѧÑlÿðÈ0–iUñ½hFgs¡ ž{Á<º0Œéšz ‹g½}Wø¦OÊàÇGô]z„ç©8}>
-¥d$½ Üo˜æ]³ùÊñ߃­Dø`ø°Ñ°¡&¢š I±$s[Dä@#âeímX™OÂùzåoßQ‰7N¿^A$l=°-"Ð`¬A¥ ˆ= #¾ƒ7ZV lºŽ°ªyC·ØDËSø1L‹˜
-0000000016 00000 n
-0000000201 00000 n
-0000032326 00000 n
-0000000005 00000 f
-0000000006 00000 f
-0000000007 00000 f
-0000000008 00000 f
-0000000010 00000 f
-0000081803 00000 n
-0000000011 00000 f
-0000000012 00000 f
-0000000013 00000 f
-0000000014 00000 f
-0000000015 00000 f
-0000000016 00000 f
-0000000019 00000 f
-0000082434 00000 n
-0000082465 00000 n
-0000000020 00000 f
-0000000021 00000 f
-0000000022 00000 f
-0000000023 00000 f
-0000000024 00000 f
-0000000026 00000 f
-0000081873 00000 n
-0000000027 00000 f
-0000000028 00000 f
-0000000029 00000 f
-0000000030 00000 f
-0000000031 00000 f
-0000000032 00000 f
-0000000033 00000 f
-0000000036 00000 f
-0000082318 00000 n
-0000082349 00000 n
-0000000037 00000 f
-0000000038 00000 f
-0000000039 00000 f
-0000000040 00000 f
-0000000041 00000 f
-0000000043 00000 f
-0000081944 00000 n
-0000000044 00000 f
-0000000045 00000 f
-0000000046 00000 f
-0000000047 00000 f
-0000000048 00000 f
-0000000049 00000 f
-0000000050 00000 f
-0000000053 00000 f
-0000082202 00000 n
-0000082233 00000 n
-0000000054 00000 f
-0000000055 00000 f
-0000000056 00000 f
-0000000057 00000 f
-0000000058 00000 f
-0000000061 00000 f
-0000082015 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000082086 00000 n
-0000082117 00000 n
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000000000 00000 f
-0000033625 00000 n
-0000082550 00000 n
-0000032378 00000 n
-0000032710 00000 n
-0000033925 00000 n
-0000033812 00000 n
-0000032906 00000 n
-0000033064 00000 n
-0000033112 00000 n
-0000033696 00000 n
-0000033727 00000 n
-0000033999 00000 n
-0000034182 00000 n
-0000035182 00000 n
-0000056514 00000 n
-0000072510 00000 n
-0000082575 00000 n
-trailer <</Size 93/Root 1 0 R/Info 92 0 R/ID[<C6F1C27E2DE645E3A73B8440E082EC45><829D094401314C768147F9DE59340F38>]>> startxref 82749 %%EOF \ No newline at end of file
diff --git a/chrome/app/theme/go_d.png b/chrome/app/theme/go_d.png
deleted file mode 100644
index 6b0dabc..0000000
--- a/chrome/app/theme/go_d.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/go_h.png b/chrome/app/theme/go_h.png
deleted file mode 100644
index 1c4ce08..0000000
--- a/chrome/app/theme/go_h.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/go_mask.png b/chrome/app/theme/go_mask.png
deleted file mode 100644
index 32c47c2..0000000
--- a/chrome/app/theme/go_mask.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/go_noborder_center.png b/chrome/app/theme/go_noborder_center.png
deleted file mode 100644
index f856a19..0000000
--- a/chrome/app/theme/go_noborder_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/go_p.png b/chrome/app/theme/go_p.png
deleted file mode 100644
index 5b3aaf8..0000000
--- a/chrome/app/theme/go_p.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/reload.png b/chrome/app/theme/reload.png
index 99550be..c033579 100644
--- a/chrome/app/theme/reload.png
+++ b/chrome/app/theme/reload.png
Binary files differ
diff --git a/chrome/app/theme/reload_d.png b/chrome/app/theme/reload_d.png
index 37a4d1d..ec5811a 100644
--- a/chrome/app/theme/reload_d.png
+++ b/chrome/app/theme/reload_d.png
Binary files differ
diff --git a/chrome/app/theme/reload_h.png b/chrome/app/theme/reload_h.png
index 7ee1024..196727d 100644
--- a/chrome/app/theme/reload_h.png
+++ b/chrome/app/theme/reload_h.png
Binary files differ
diff --git a/chrome/app/theme/reload_mask.png b/chrome/app/theme/reload_mask.png
deleted file mode 100644
index a04c2c6..0000000
--- a/chrome/app/theme/reload_mask.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/reload_p.png b/chrome/app/theme/reload_p.png
index 47aee77..a4d6ddd 100644
--- a/chrome/app/theme/reload_p.png
+++ b/chrome/app/theme/reload_p.png
Binary files differ
diff --git a/chrome/app/theme/stop_noborder_center.png b/chrome/app/theme/stop_noborder_center.png
deleted file mode 100644
index 57996fb..0000000
--- a/chrome/app/theme/stop_noborder_center.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd
index c6c952d..113ddb4 100644
--- a/chrome/app/theme/theme_resources.grd
+++ b/chrome/app/theme/theme_resources.grd
@@ -32,10 +32,6 @@
<include name="IDR_FORWARD_D" file="forward_d.png" type="BINDATA" />
<include name="IDR_FORWARD_H" file="forward_h.png" type="BINDATA" />
<include name="IDR_FORWARD_P" file="forward_p.png" type="BINDATA" />
- <include name="IDR_GO" file="go.png" type="BINDATA" />
- <include name="IDR_GO_NOBORDER_CENTER" file="go_noborder_center.png" type="BINDATA" />
- <include name="IDR_GO_H" file="go_h.png" type="BINDATA" />
- <include name="IDR_GO_P" file="go_p.png" type="BINDATA" />
<include name="IDR_INFO_BUBBLE_CLOSE" file="bubble_close.png" type="BINDATA" />
<include name="IDR_LOCATIONBG" file="locationbg.png" type="BINDATA" />
<include name="IDR_LOCATION_BAR_SELECTED_KEYWORD_BACKGROUND_C" file="location_bar_keyword_search_c.png" type="BINDATA" />
@@ -140,7 +136,6 @@
<include name="IDR_BLOCKED_POPUPS" file="blocked_popups.png" type="BINDATA" />
<include name="IDR_WARNING" file="alert_small.png" type="BINDATA" />
<include name="IDR_STOP" file="stop.png" type="BINDATA" />
- <include name="IDR_STOP_NOBORDER_CENTER" file="stop_noborder_center.png" type="BINDATA" />
<include name="IDR_STOP_H" file="stop_h.png" type="BINDATA" />
<include name="IDR_STOP_P" file="stop_p.png" type="BINDATA" />
<!-- The following (IDR_FIND_DLG_[LEFT|RIGHT|MIDDLE]_[BB]_BACKGROUND) are deprecated but are kept around for the Linux port -->
@@ -309,8 +304,6 @@
<include name="IDR_FORWARD_MASK" file="forward_mask.png" type="BINDATA" />
<include name="IDR_BACK_MASK" file="back_mask.png" type="BINDATA" />
<include name="IDR_BUTTON_MASK" file="button_mask.png" type="BINDATA" />
- <include name="IDR_RELOAD_MASK" file="reload_mask.png" type="BINDATA" />
- <include name="IDR_GO_MASK" file="go_mask.png" type="BINDATA" />
<include name="IDR_NEWTAB_BUTTON_MASK" file="newtab_button_mask.png" type="BINDATA" />
<include name="IDR_CLOSE_BUTTON_MASK" file="close_button_mask.png" type="BINDATA" />
diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc
index 63fbf03..82ddea5 100644
--- a/chrome/browser/browser.cc
+++ b/chrome/browser/browser.cc
@@ -1210,11 +1210,6 @@ void Browser::OpenCurrentURL() {
location_bar->GetPageTransition(), -1, true);
}
-void Browser::Go(WindowOpenDisposition disposition) {
- UserMetrics::RecordAction(UserMetricsAction("Go"), profile_);
- window_->GetLocationBar()->AcceptInputWithDisposition(disposition);
-}
-
void Browser::Stop() {
UserMetrics::RecordAction(UserMetricsAction("Stop"), profile_);
GetSelectedTabContents()->Stop();
@@ -1874,7 +1869,6 @@ void Browser::ExecuteCommandWithDisposition(
case IDC_RELOAD_IGNORING_CACHE: ReloadIgnoringCache(disposition); break;
case IDC_HOME: Home(disposition); break;
case IDC_OPEN_CURRENT_URL: OpenCurrentURL(); break;
- case IDC_GO: Go(disposition); break;
case IDC_STOP: Stop(); break;
// Window management commands
@@ -2308,8 +2302,8 @@ void Browser::TabSelectedAt(TabContents* old_contents,
// Propagate the profile to the location bar.
UpdateToolbar(true);
- // Update stop/go state.
- UpdateStopGoState(new_contents->is_loading(), true);
+ // Update reload/stop state.
+ UpdateReloadStopState(new_contents->is_loading(), true);
// Update commands to reflect current state.
UpdateCommandsForTabState();
@@ -2475,7 +2469,7 @@ void Browser::LoadingStateChanged(TabContents* source) {
window_->UpdateTitleBar();
if (source == GetSelectedTabContents()) {
- UpdateStopGoState(source->is_loading(), false);
+ UpdateReloadStopState(source->is_loading(), false);
if (GetStatusBubble())
GetStatusBubble()->SetStatus(GetSelectedTabContents()->GetStatusText());
@@ -3139,9 +3133,8 @@ void Browser::UpdateCommandsForTabState() {
#endif
}
-void Browser::UpdateStopGoState(bool is_loading, bool force) {
- window_->UpdateStopGoState(is_loading, force);
- command_updater_.UpdateCommandEnabled(IDC_GO, !is_loading);
+void Browser::UpdateReloadStopState(bool is_loading, bool force) {
+ window_->UpdateReloadStopState(is_loading, force);
command_updater_.UpdateCommandEnabled(IDC_STOP, is_loading);
}
diff --git a/chrome/browser/browser.h b/chrome/browser/browser.h
index 49329de..6f4ef76 100644
--- a/chrome/browser/browser.h
+++ b/chrome/browser/browser.h
@@ -435,7 +435,6 @@ class Browser : public TabStripModelDelegate,
void ReloadIgnoringCache(WindowOpenDisposition disposition); // Shift-reload.
void Home(WindowOpenDisposition disposition);
void OpenCurrentURL();
- void Go(WindowOpenDisposition disposition);
void Stop();
// Window management commands
void NewWindow();
@@ -753,10 +752,10 @@ class Browser : public TabStripModelDelegate,
// Update commands whose state depends on the tab's state.
void UpdateCommandsForTabState();
- // Ask the Stop/Go button to change its icon, and update the Go and Stop
- // command states. |is_loading| is true if the current TabContents is
- // loading. |force| is true if the button should change its icon immediately.
- void UpdateStopGoState(bool is_loading, bool force);
+ // Ask the Reload/Stop button to change its icon, and update the Stop command
+ // state. |is_loading| is true if the current TabContents is loading.
+ // |force| is true if the button should change its icon immediately.
+ void UpdateReloadStopState(bool is_loading, bool force);
// UI update coalescing and handling ////////////////////////////////////////
diff --git a/chrome/browser/browser_theme_pack.cc b/chrome/browser/browser_theme_pack.cc
index 31f2866..2d8c7f6 100644
--- a/chrome/browser/browser_theme_pack.cc
+++ b/chrome/browser/browser_theme_pack.cc
@@ -23,7 +23,7 @@ namespace {
// Version number of the current theme pack. We just throw out and rebuild
// theme packs that aren't int-equal to this.
-const int kThemePackVersion = 9;
+const int kThemePackVersion = 10;
// IDs that are in the DataPack won't clash with the positive integer
// int32_t. kHeaderID should always have the maximum value because we want the
@@ -119,30 +119,25 @@ PersistingImagesTable kPersistingImages[] = {
{ 20, IDR_FORWARD_D, NULL },
{ 21, IDR_FORWARD_H, NULL },
{ 22, IDR_FORWARD_P, NULL },
- { 23, IDR_RELOAD, NULL },
- { 24, IDR_RELOAD_H, NULL },
- { 25, IDR_RELOAD_P, NULL },
- { 26, IDR_HOME, NULL },
- { 27, IDR_HOME_H, NULL },
- { 28, IDR_HOME_P, NULL },
- { 29, IDR_GO, NULL },
- { 30, IDR_GO_NOBORDER_CENTER, NULL },
- { 31, IDR_GO_H, NULL },
- { 32, IDR_GO_P, NULL },
- { 33, IDR_STOP, NULL },
- { 34, IDR_STOP_NOBORDER_CENTER, NULL },
- { 35, IDR_STOP_H, NULL },
- { 36, IDR_STOP_P, NULL },
- { 37, IDR_MENU_BOOKMARK, NULL },
- { 38, IDR_MENU_PAGE, NULL },
- { 39, IDR_MENU_PAGE_RTL, NULL },
- { 40, IDR_MENU_CHROME, NULL },
- { 41, IDR_MENU_CHROME_RTL, NULL },
- { 42, IDR_MENU_DROPARROW, NULL },
- { 43, IDR_THROBBER, NULL },
- { 44, IDR_THROBBER_WAITING, NULL },
- { 45, IDR_THROBBER_LIGHT, NULL },
- { 46, IDR_LOCATIONBG, NULL }
+ { 23, IDR_HOME, NULL },
+ { 24, IDR_HOME_H, NULL },
+ { 25, IDR_HOME_P, NULL },
+ { 26, IDR_RELOAD, NULL },
+ { 27, IDR_RELOAD_H, NULL },
+ { 28, IDR_RELOAD_P, NULL },
+ { 29, IDR_STOP, NULL },
+ { 30, IDR_STOP_H, NULL },
+ { 31, IDR_STOP_P, NULL },
+ { 32, IDR_LOCATIONBG, NULL },
+ { 33, IDR_MENU_BOOKMARK, NULL },
+ { 34, IDR_MENU_PAGE, NULL },
+ { 35, IDR_MENU_PAGE_RTL, NULL },
+ { 36, IDR_MENU_CHROME, NULL },
+ { 37, IDR_MENU_CHROME_RTL, NULL },
+ { 38, IDR_MENU_DROPARROW, NULL },
+ { 39, IDR_THROBBER, NULL },
+ { 40, IDR_THROBBER_WAITING, NULL },
+ { 41, IDR_THROBBER_LIGHT, NULL },
};
int GetPersistentIDByName(const std::string& key) {
diff --git a/chrome/browser/browser_theme_provider.cc b/chrome/browser/browser_theme_provider.cc
index cea5568..244d2cf 100644
--- a/chrome/browser/browser_theme_provider.cc
+++ b/chrome/browser/browser_theme_provider.cc
@@ -142,16 +142,15 @@ bool HasThemeableImage(int themeable_image_id) {
const int kToolbarButtonIDs[] = {
IDR_BACK, IDR_BACK_D, IDR_BACK_H, IDR_BACK_P,
IDR_FORWARD, IDR_FORWARD_D, IDR_FORWARD_H, IDR_FORWARD_P,
- IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P,
IDR_HOME, IDR_HOME_H, IDR_HOME_P,
- IDR_GO, IDR_GO_NOBORDER_CENTER, IDR_GO_H, IDR_GO_P,
- IDR_STOP, IDR_STOP_NOBORDER_CENTER, IDR_STOP_H, IDR_STOP_P,
+ IDR_RELOAD, IDR_RELOAD_H, IDR_RELOAD_P,
+ IDR_STOP, IDR_STOP_H, IDR_STOP_P,
+ IDR_LOCATIONBG,
IDR_MENU_BOOKMARK,
IDR_MENU_PAGE, IDR_MENU_PAGE_RTL,
IDR_MENU_CHROME, IDR_MENU_CHROME_RTL,
IDR_MENU_DROPARROW,
IDR_THROBBER, IDR_THROBBER_WAITING, IDR_THROBBER_LIGHT,
- IDR_LOCATIONBG
};
// Writes the theme pack to disk on a separate thread.
diff --git a/chrome/browser/browser_window.h b/chrome/browser/browser_window.h
index ff80ab7..bc2305a 100644
--- a/chrome/browser/browser_window.h
+++ b/chrome/browser/browser_window.h
@@ -133,8 +133,8 @@ class BrowserWindow {
virtual void SetFocusToLocationBar(bool select_all) = 0;
// Informs the view whether or not a load is in progress for the current tab.
- // The view can use this notification to update the go/stop button.
- virtual void UpdateStopGoState(bool is_loading, bool force) = 0;
+ // The view can use this notification to update the reload/stop button.
+ virtual void UpdateReloadStopState(bool is_loading, bool force) = 0;
// Updates the toolbar with the state for the specified |contents|.
virtual void UpdateToolbar(TabContents* contents,
diff --git a/chrome/browser/chromeos/compact_location_bar_view.cc b/chrome/browser/chromeos/compact_location_bar_view.cc
index bec7646f..5456504 100644
--- a/chrome/browser/chromeos/compact_location_bar_view.cc
+++ b/chrome/browser/chromeos/compact_location_bar_view.cc
@@ -96,7 +96,7 @@ void CompactLocationBarView::Init() {
reload_->SetImage(views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_RELOAD_P));
reload_->SetBackground(color, background,
- tp->GetBitmapNamed(IDR_RELOAD_MASK));
+ tp->GetBitmapNamed(IDR_BUTTON_MASK));
AddChildView(reload_);
diff --git a/chrome/browser/cocoa/browser_window_cocoa.h b/chrome/browser/cocoa/browser_window_cocoa.h
index b6aa455..4d8f017 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.h
+++ b/chrome/browser/cocoa/browser_window_cocoa.h
@@ -53,7 +53,7 @@ class BrowserWindowCocoa : public BrowserWindow,
virtual bool IsFullscreenBubbleVisible() const;
virtual LocationBar* GetLocationBar() const;
virtual void SetFocusToLocationBar(bool select_all);
- virtual void UpdateStopGoState(bool is_loading, bool force);
+ virtual void UpdateReloadStopState(bool is_loading, bool force);
virtual void UpdateToolbar(TabContents* contents,
bool should_restore_state);
virtual void FocusToolbar();
diff --git a/chrome/browser/cocoa/browser_window_cocoa.mm b/chrome/browser/cocoa/browser_window_cocoa.mm
index 78f2221..0b8111e 100644
--- a/chrome/browser/cocoa/browser_window_cocoa.mm
+++ b/chrome/browser/cocoa/browser_window_cocoa.mm
@@ -206,7 +206,7 @@ void BrowserWindowCocoa::SetFocusToLocationBar(bool select_all) {
[controller_ focusLocationBar:select_all ? YES : NO];
}
-void BrowserWindowCocoa::UpdateStopGoState(bool is_loading, bool force) {
+void BrowserWindowCocoa::UpdateReloadStopState(bool is_loading, bool force) {
[controller_ setIsLoading:is_loading ? YES : NO];
}
diff --git a/chrome/browser/cocoa/location_bar_view_mac.h b/chrome/browser/cocoa/location_bar_view_mac.h
index 2d8d57e..74c0451 100644
--- a/chrome/browser/cocoa/location_bar_view_mac.h
+++ b/chrome/browser/cocoa/location_bar_view_mac.h
@@ -54,7 +54,6 @@ class LocationBarViewMac : public AutocompleteEditController,
virtual WindowOpenDisposition GetWindowOpenDisposition() const;
virtual PageTransition::Type GetPageTransition() const;
virtual void AcceptInput();
- virtual void AcceptInputWithDisposition(WindowOpenDisposition disposition);
virtual void FocusLocation(bool select_all);
virtual void FocusSearch();
virtual void UpdateContentSettingsIcons();
diff --git a/chrome/browser/cocoa/location_bar_view_mac.mm b/chrome/browser/cocoa/location_bar_view_mac.mm
index ea02141..9be750a 100644
--- a/chrome/browser/cocoa/location_bar_view_mac.mm
+++ b/chrome/browser/cocoa/location_bar_view_mac.mm
@@ -124,11 +124,6 @@ PageTransition::Type LocationBarViewMac::GetPageTransition() const {
void LocationBarViewMac::AcceptInput() {
WindowOpenDisposition disposition =
event_utils::WindowOpenDispositionFromNSEvent([NSApp currentEvent]);
- AcceptInputWithDisposition(disposition);
-}
-
-void LocationBarViewMac::AcceptInputWithDisposition(
- WindowOpenDisposition disposition) {
edit_view_->model()->AcceptInput(disposition, false);
}
diff --git a/chrome/browser/cocoa/side_tabs_toolbar_controller.h b/chrome/browser/cocoa/side_tabs_toolbar_controller.h
index ce1ed7c..9516262 100644
--- a/chrome/browser/cocoa/side_tabs_toolbar_controller.h
+++ b/chrome/browser/cocoa/side_tabs_toolbar_controller.h
@@ -16,6 +16,10 @@
@interface SideTabsToolbarController : ToolbarController {
@private
+ // TODO(shess): |goButton_| no longer exists in ToolbarController.
+ // It's not clear to me that |goButton_| is the right name for this
+ // class to use.
+ IBOutlet NSButton* goButton_;
IBOutlet NSButton* starButton_;
IBOutlet NSTextField* title_;
IBOutlet NSProgressIndicator* loadingSpinner_;
diff --git a/chrome/browser/cocoa/side_tabs_toolbar_controller.mm b/chrome/browser/cocoa/side_tabs_toolbar_controller.mm
index 5e65111..989538d 100644
--- a/chrome/browser/cocoa/side_tabs_toolbar_controller.mm
+++ b/chrome/browser/cocoa/side_tabs_toolbar_controller.mm
@@ -35,6 +35,10 @@ NSString* const kSearchButtonImageName = @"omnibox_search.pdf";
- (void)awakeFromNib {
[super awakeFromNib];
+ // TODO(shess): |goButton_| is no longer in |ToolbarController|.
+ // AFAICT this code partially implements a new feature (see
+ // http://crbug.com/44773) which may be in conflict with
+ // http://crbug.com/45762 .
[goButton_ setImage:nsimage_cache::ImageNamed(kSearchButtonImageName)];
[[locationBar_ autocompleteTextFieldCell] setStarIconView:nil];
}
diff --git a/chrome/browser/cocoa/toolbar_controller.h b/chrome/browser/cocoa/toolbar_controller.h
index 1c81543..86574b5 100644
--- a/chrome/browser/cocoa/toolbar_controller.h
+++ b/chrome/browser/cocoa/toolbar_controller.h
@@ -52,7 +52,6 @@ class ToolbarModel;
IBOutlet DelayedMenuButton* forwardButton_;
IBOutlet NSButton* reloadButton_;
IBOutlet NSButton* homeButton_;
- IBOutlet NSButton* goButton_;
IBOutlet MenuButton* pageButton_;
IBOutlet MenuButton* wrenchButton_;
IBOutlet AutocompleteTextField* locationBar_;
diff --git a/chrome/browser/cocoa/toolbar_controller.mm b/chrome/browser/cocoa/toolbar_controller.mm
index 9d90a0c..a8974de 100644
--- a/chrome/browser/cocoa/toolbar_controller.mm
+++ b/chrome/browser/cocoa/toolbar_controller.mm
@@ -48,17 +48,17 @@ namespace {
// Names of images in the bundle for buttons.
NSString* const kBackButtonImageName = @"back_Template.pdf";
NSString* const kForwardButtonImageName = @"forward_Template.pdf";
-NSString* const kReloadButtonImageName = @"reload_Template.pdf";
+NSString* const kReloadButtonReloadImageName = @"reload_Template.pdf";
+NSString* const kReloadButtonStopImageName = @"stop_Template.pdf";
NSString* const kHomeButtonImageName = @"home_Template.pdf";
-NSString* const kGoButtonGoImageName = @"go_Template.pdf";
-NSString* const kGoButtonStopImageName = @"stop_Template.pdf";
NSString* const kPageButtonImageName = @"menu_page_Template.pdf";
NSString* const kWrenchButtonImageName = @"menu_chrome_Template.pdf";
// Height of the toolbar in pixels when the bookmark bar is closed.
const CGFloat kBaseToolbarHeight = 36.0;
-// The distance from the 'Go' button to the Browser Actions container in pixels.
+// The distance from the location bar to the Browser Actions container
+// in pixels.
const CGFloat kBrowserActionsContainerLeftPadding = 5.0;
// The minimum width of the location bar in pixels.
@@ -75,13 +75,13 @@ const CGFloat kAnimationDuration = 0.2;
- (void)prefChanged:(std::wstring*)prefName;
- (BackgroundGradientView*)backgroundGradientView;
- (void)toolbarFrameChanged;
-- (void)pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate;
+- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate;
- (void)maintainMinimumLocationBarWidth;
- (void)adjustBrowserActionsContainerForNewWindow:(NSNotification*)notification;
- (void)browserActionsContainerDragged:(NSNotification*)notification;
- (void)browserActionsContainerDragFinished:(NSNotification*)notification;
- (void)browserActionsVisibilityChanged:(NSNotification*)notification;
-- (void)adjustLocationAndGoPositionsBy:(CGFloat)dX animate:(BOOL)animate;
+- (void)adjustLocationSizeBy:(CGFloat)dX animate:(BOOL)animate;
@end
namespace ToolbarControllerInternal {
@@ -217,9 +217,9 @@ class PrefObserverBridge : public NotificationObserver {
// the xib, we must set them in code.
[backButton_ setImage:nsimage_cache::ImageNamed(kBackButtonImageName)];
[forwardButton_ setImage:nsimage_cache::ImageNamed(kForwardButtonImageName)];
- [reloadButton_ setImage:nsimage_cache::ImageNamed(kReloadButtonImageName)];
+ [reloadButton_
+ setImage:nsimage_cache::ImageNamed(kReloadButtonReloadImageName)];
[homeButton_ setImage:nsimage_cache::ImageNamed(kHomeButtonImageName)];
- [goButton_ setImage:nsimage_cache::ImageNamed(kGoButtonGoImageName)];
[pageButton_ setImage:nsimage_cache::ImageNamed(kPageButtonImageName)];
[wrenchButton_ setImage:nsimage_cache::ImageNamed(kWrenchButtonImageName)];
@@ -271,9 +271,9 @@ class PrefObserverBridge : public NotificationObserver {
NSView* toolbarView = [self view];
[toolbarView addTrackingArea:trackingArea_.get()];
- // We want a dynamic tooltip on the go button, so tell the go button to ask
- // us for the tooltip.
- [goButton_ addToolTipRect:[goButton_ bounds] owner:self userData:nil];
+ // We want a dynamic tooltip on the reload button, so tell the
+ // reload button to ask us for the tooltip.
+ [reloadButton_ addToolTipRect:[reloadButton_ bounds] owner:self userData:nil];
// If the user has any Browser Actions installed, the container view for them
// may have to be resized depending on the width of the toolbar frame.
@@ -307,10 +307,6 @@ class PrefObserverBridge : public NotificationObserver {
[[locationBar_ cell]
accessibilitySetOverrideValue:description
forAttribute:NSAccessibilityDescriptionAttribute];
- description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_GO);
- [[goButton_ cell]
- accessibilitySetOverrideValue:description
- forAttribute:NSAccessibilityDescriptionAttribute];
description = l10n_util::GetNSStringWithFixup(IDS_ACCNAME_PAGE);
[[pageButton_ cell]
accessibilitySetOverrideValue:description
@@ -410,15 +406,15 @@ class PrefObserverBridge : public NotificationObserver {
}
- (void)setIsLoading:(BOOL)isLoading {
- NSString* imageName = kGoButtonGoImageName;
- NSInteger tag = IDC_GO;
+ NSString* imageName = kReloadButtonReloadImageName;
+ NSInteger tag = IDC_RELOAD;
if (isLoading) {
- imageName = kGoButtonStopImageName;
+ imageName = kReloadButtonStopImageName;
tag = IDC_STOP;
}
NSImage* stopStartImage = nsimage_cache::ImageNamed(imageName);
- [goButton_ setImage:stopStartImage];
- [goButton_ setTag:tag];
+ [reloadButton_ setImage:stopStartImage];
+ [reloadButton_ setTag:tag];
}
- (void)setHasToolbar:(BOOL)toolbar hasLocationBar:(BOOL)locBar {
@@ -472,8 +468,8 @@ class PrefObserverBridge : public NotificationObserver {
// Returns an array of views in the order of the outlets above.
- (NSArray*)toolbarViews {
return [NSArray arrayWithObjects:backButton_, forwardButton_, reloadButton_,
- homeButton_, goButton_, pageButton_, wrenchButton_,
- locationBar_, browserActionsContainerView_, nil];
+ homeButton_, pageButton_, wrenchButton_, locationBar_,
+ browserActionsContainerView_, nil];
}
// Moves |rect| to the right by |delta|, keeping the right side fixed by
@@ -550,20 +546,18 @@ class PrefObserverBridge : public NotificationObserver {
if (hide == [pageButton_ isHidden])
return; // Nothing to do, view state matches pref state.
- // Shift the go button and resize the text field by the width of the
- // page/wrench buttons plus two times the gap width. If we're showing the
- // buttons, we have to reverse the direction of movement (to the left). Unlike
- // the home button above, we only ever have to resize the text field, we don't
- // have to move it.
- CGFloat moveX = 2 * [self interButtonSpacing] + NSWidth([pageButton_ frame]) +
+ // Resize the text field and move the browser actions by the width
+ // of the page/wrench buttons plus two times the gap width.
+ CGFloat dX = 2 * [self interButtonSpacing] + NSWidth([pageButton_ frame]) +
NSWidth([wrenchButton_ frame]);
+ // Larger if hiding menus, smaller if showing.
if (!hide)
- moveX *= -1; // Reverse the direction of the move.
+ dX *= -1;
- [self adjustLocationAndGoPositionsBy:moveX animate:NO];
+ [self adjustLocationSizeBy:dX animate:NO];
[browserActionsContainerView_ setFrame:NSOffsetRect(
- [browserActionsContainerView_ frame], moveX, 0)];
+ [browserActionsContainerView_ frame], dX, 0)];
[browserActionsContainerView_ setRightBorderShown:!hide];
[pageButton_ setHidden:hide];
@@ -608,7 +602,7 @@ class PrefObserverBridge : public NotificationObserver {
CGFloat containerWidth = [browserActionsContainerView_ isHidden] ? 0.0 :
NSWidth([browserActionsContainerView_ frame]);
if (containerWidth > 0.0)
- [self adjustLocationAndGoPositionsBy:(containerWidth * -1) animate:NO];
+ [self adjustLocationSizeBy:(containerWidth * -1) animate:NO];
BOOL rightBorderShown = !([pageButton_ isHidden] && [wrenchButton_ isHidden]);
[browserActionsContainerView_ setRightBorderShown:rightBorderShown];
}
@@ -627,37 +621,37 @@ class PrefObserverBridge : public NotificationObserver {
locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth;
[browserActionsContainerView_ setCanDragLeft:!locationBarAtMinSize_];
[browserActionsContainerView_ setGrippyPinned:locationBarAtMinSize_];
- [self adjustLocationAndGoPositionsBy:
+ [self adjustLocationSizeBy:
[browserActionsContainerView_ resizeDeltaX] animate:NO];
}
- (void)browserActionsContainerDragFinished:(NSNotification*)notification {
[browserActionsController_ resizeContainerAndAnimate:YES];
- [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:YES];
+ [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:YES];
}
- (void)browserActionsVisibilityChanged:(NSNotification*)notification {
- [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:NO];
+ [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO];
}
-- (void)pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate {
- CGFloat goXPos = [goButton_ frame].origin.x + NSWidth([goButton_ frame]);
+- (void)pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:(BOOL)animate {
+ CGFloat locationBarXPos = NSMaxX([locationBar_ frame]);
CGFloat leftPadding;
if ([browserActionsContainerView_ isHidden]) {
CGFloat edgeXPos = [pageButton_ isHidden] ?
- NSWidth([[goButton_ window] frame]) : [pageButton_ frame].origin.x;
- leftPadding = edgeXPos - goXPos;
+ NSWidth([[locationBar_ window] frame]) : [pageButton_ frame].origin.x;
+ leftPadding = edgeXPos - locationBarXPos;
} else {
NSRect containerFrame = animate ?
[browserActionsContainerView_ animationEndFrame] :
[browserActionsContainerView_ frame];
- leftPadding = containerFrame.origin.x - goXPos;
+ leftPadding = containerFrame.origin.x - locationBarXPos;
}
if (leftPadding != kBrowserActionsContainerLeftPadding) {
CGFloat dX = leftPadding - kBrowserActionsContainerLeftPadding;
- [self adjustLocationAndGoPositionsBy:dX animate:animate];
+ [self adjustLocationSizeBy:dX animate:animate];
}
}
@@ -666,7 +660,7 @@ class PrefObserverBridge : public NotificationObserver {
locationBarAtMinSize_ = locationBarWidth <= kMinimumLocationBarWidth;
if (locationBarAtMinSize_) {
CGFloat dX = kMinimumLocationBarWidth - locationBarWidth;
- [self adjustLocationAndGoPositionsBy:dX animate:NO];
+ [self adjustLocationSizeBy:dX animate:NO];
}
}
@@ -684,7 +678,7 @@ class PrefObserverBridge : public NotificationObserver {
NSRect containerFrame = [browserActionsContainerView_ frame];
// Determine how much the container needs to move in case it's overlapping
// with the location bar.
- CGFloat dX = ([goButton_ frame].origin.x + NSWidth([goButton_ frame])) -
+ CGFloat dX = NSMaxX([locationBar_ frame]) -
containerFrame.origin.x + kBrowserActionsContainerLeftPadding;
containerFrame = NSOffsetRect(containerFrame, dX, 0);
containerFrame.size.width -= dX;
@@ -707,31 +701,22 @@ class PrefObserverBridge : public NotificationObserver {
[browserActionsContainerView_ setGrippyPinned:NO];
}
[browserActionsContainerView_ setFrame:containerFrame];
- [self pinGoButtonToLeftOfBrowserActionsContainerAndAnimate:NO];
+ [self pinLocationBarToLeftOfBrowserActionsContainerAndAnimate:NO];
}
}
-- (void)adjustLocationAndGoPositionsBy:(CGFloat)dX animate:(BOOL)animate {
- // Ensure that the 'Go' button is in its proper place.
- NSRect goFrame = [goButton_ frame];
+- (void)adjustLocationSizeBy:(CGFloat)dX animate:(BOOL)animate {
+ // Ensure that the location bar is in its proper place.
NSRect locationFrame = [locationBar_ frame];
- CGFloat rightDelta = (locationFrame.origin.x + NSWidth(locationFrame)) -
- goFrame.origin.x;
- if (rightDelta != 0.0)
- [goButton_ setFrame:NSOffsetRect(goFrame, rightDelta, 0)];
-
- goFrame = NSOffsetRect([goButton_ frame], dX, 0);
locationFrame.size.width += dX;
if (!animate) {
- [goButton_ setFrame:goFrame];
[locationBar_ setFrame:locationFrame];
return;
}
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:kAnimationDuration];
- [[goButton_ animator] setFrame:goFrame];
[[locationBar_ animator] setFrame:locationFrame];
[NSAnimationContext endGrouping];
}
@@ -766,50 +751,10 @@ class PrefObserverBridge : public NotificationObserver {
stringForToolTip:(NSToolTipTag)tag
point:(NSPoint)point
userData:(void*)userData {
- DCHECK(view == goButton_);
-
- // Following chrome/browser/views/go_button.cc: GoButton::GetTooltipText()
-
- // Is it currently 'stop'?
- if ([goButton_ tag] == IDC_STOP) {
- return l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STOP);
- }
-
- // It is 'go', so see what it would do...
-
- // Fetch the EditView and EditModel
- LocationBar* locationBar = [self locationBarBridge];
- DCHECK(locationBar);
- AutocompleteEditView* editView = locationBar->location_entry();
- DCHECK(editView);
- AutocompleteEditModel* editModel = editView->model();
- DCHECK(editModel);
-
- std::wstring currentText(editView->GetText());
- if (currentText.empty()) {
- return nil;
- }
- string16 currentText16(WideToUTF16Hack(currentText));
-
- // It is simply an url it is gonna go to, build the tip with the info.
- if (editModel->CurrentTextIsURL()) {
- return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SITE, currentText16);
- }
-
- // Build the tip based on what provide/template it will get.
- std::wstring keyword(editModel->keyword());
- TemplateURLModel* template_url_model =
- editModel->profile()->GetTemplateURLModel();
- const TemplateURL* provider =
- (keyword.empty() || editModel->is_keyword_hint()) ?
- template_url_model->GetDefaultSearchProvider() :
- template_url_model->GetTemplateURLForKeyword(keyword);
- if (!provider)
- return nil;
- std::wstring shortName(provider->AdjustedShortNameForLocaleDirection());
- return l10n_util::GetNSStringF(IDS_TOOLTIP_GO_SEARCH,
- WideToUTF16(shortName), currentText16);
+ DCHECK(view == reloadButton_);
+ return l10n_util::GetNSStringWithFixup(
+ [reloadButton_ tag] == IDC_STOP ? IDS_TOOLTIP_STOP : IDS_TOOLTIP_RELOAD);
}
// (URLDropTargetController protocol)
diff --git a/chrome/browser/cocoa/toolbar_controller_unittest.mm b/chrome/browser/cocoa/toolbar_controller_unittest.mm
index b02ec0f..b892759 100644
--- a/chrome/browser/cocoa/toolbar_controller_unittest.mm
+++ b/chrome/browser/cocoa/toolbar_controller_unittest.mm
@@ -43,9 +43,8 @@ class ToolbarControllerTest : public CocoaTest {
// Indexes that match the ordering returned by the private ToolbarController
// |-toolbarViews| method.
enum {
- kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex, kGoIndex,
- kPageIndex, kWrenchIndex, kLocationIndex,
- kBrowserActionContainerViewIndex
+ kBackIndex, kForwardIndex, kReloadIndex, kHomeIndex, kPageIndex,
+ kWrenchIndex, kLocationIndex, kBrowserActionContainerViewIndex
};
ToolbarControllerTest() {
@@ -151,14 +150,14 @@ TEST_F(ToolbarControllerTest, FocusLocation) {
}
TEST_F(ToolbarControllerTest, LoadingState) {
- // In its initial state, the go button has a tag of IDC_GO. When loading,
- // it should be IDC_STOP.
- NSButton* go = [[bar_ toolbarViews] objectAtIndex:kGoIndex];
- EXPECT_EQ([go tag], IDC_GO);
+ // In its initial state, the reload button has a tag of
+ // IDC_RELOAD. When loading, it should be IDC_STOP.
+ NSButton* reload = [[bar_ toolbarViews] objectAtIndex:kReloadIndex];
+ EXPECT_EQ([reload tag], IDC_RELOAD);
[bar_ setIsLoading:YES];
- EXPECT_EQ([go tag], IDC_STOP);
+ EXPECT_EQ([reload tag], IDC_STOP);
[bar_ setIsLoading:NO];
- EXPECT_EQ([go tag], IDC_GO);
+ EXPECT_EQ([reload tag], IDC_RELOAD);
}
// Check that toggling the state of the home button changes the visible
@@ -191,9 +190,7 @@ TEST_F(ToolbarControllerTest, TogglePageWrench) {
EXPECT_EQ(showButtons, ![pageButton isHidden]);
EXPECT_EQ(showButtons, ![wrenchButton isHidden]);
- NSView* goButton = [[bar_ toolbarViews] objectAtIndex:kGoIndex];
NSView* locationBar = [[bar_ toolbarViews] objectAtIndex:kLocationIndex];
- NSRect originalGoFrame = [goButton frame];
NSRect originalLocationBarFrame = [locationBar frame];
// Toggle the pref and make sure the buttons changed state and the other
@@ -201,7 +198,6 @@ TEST_F(ToolbarControllerTest, TogglePageWrench) {
prefs->SetBoolean(prefs::kShowPageOptionsButtons, !showButtons);
EXPECT_EQ(showButtons, [pageButton isHidden]);
EXPECT_EQ(showButtons, [wrenchButton isHidden]);
- EXPECT_NE(NSMinX(originalGoFrame), NSMinX([goButton frame]));
EXPECT_NE(NSWidth(originalLocationBarFrame), NSWidth([locationBar frame]));
}
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc
index 30115f3..a3cd9cd 100644
--- a/chrome/browser/gtk/browser_toolbar_gtk.cc
+++ b/chrome/browser/gtk/browser_toolbar_gtk.cc
@@ -29,11 +29,11 @@
#include "chrome/browser/gtk/browser_window_gtk.h"
#include "chrome/browser/gtk/cairo_cached_surface.h"
#include "chrome/browser/gtk/custom_button.h"
-#include "chrome/browser/gtk/go_button_gtk.h"
#include "chrome/browser/gtk/gtk_chrome_button.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/gtk_util.h"
#include "chrome/browser/gtk/location_bar_view_gtk.h"
+#include "chrome/browser/gtk/reload_button_gtk.h"
#include "chrome/browser/gtk/rounded_window.h"
#include "chrome/browser/gtk/tabs/tab_strip_gtk.h"
#include "chrome/browser/gtk/view_id_util.h"
@@ -97,7 +97,6 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window)
upgrade_reminder_animation_(this) {
browser_->command_updater()->AddCommandObserver(IDC_BACK, this);
browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this);
- browser_->command_updater()->AddCommandObserver(IDC_RELOAD, this);
browser_->command_updater()->AddCommandObserver(IDC_HOME, this);
browser_->command_updater()->AddCommandObserver(IDC_BOOKMARK_PAGE, this);
@@ -117,7 +116,6 @@ BrowserToolbarGtk::BrowserToolbarGtk(Browser* browser, BrowserWindowGtk* window)
BrowserToolbarGtk::~BrowserToolbarGtk() {
browser_->command_updater()->RemoveCommandObserver(IDC_BACK, this);
browser_->command_updater()->RemoveCommandObserver(IDC_FORWARD, this);
- browser_->command_updater()->RemoveCommandObserver(IDC_RELOAD, this);
browser_->command_updater()->RemoveCommandObserver(IDC_HOME, this);
browser_->command_updater()->RemoveCommandObserver(IDC_BOOKMARK_PAGE, this);
@@ -174,17 +172,16 @@ void BrowserToolbarGtk::Init(Profile* profile,
gtk_box_pack_start(GTK_BOX(toolbar_left_), back_forward_hbox_, FALSE,
FALSE, kToolbarWidgetSpacing);
+ reload_.reset(new ReloadButtonGtk(location_bar_.get(), browser_));
+ gtk_box_pack_start(GTK_BOX(toolbar_left_), reload_->widget(), FALSE, FALSE,
+ 0);
+
home_.reset(BuildToolbarButton(IDR_HOME, IDR_HOME_P, IDR_HOME_H, 0,
IDR_BUTTON_MASK,
l10n_util::GetStringUTF8(IDS_TOOLTIP_HOME),
GTK_STOCK_HOME, kToolbarWidgetSpacing));
gtk_util::SetButtonTriggersNavigation(home_->widget());
- reload_.reset(BuildToolbarButton(IDR_RELOAD, IDR_RELOAD_P, IDR_RELOAD_H, 0,
- IDR_RELOAD_MASK,
- l10n_util::GetStringUTF8(IDS_TOOLTIP_RELOAD),
- GTK_STOCK_REFRESH, 0));
-
gtk_box_pack_start(GTK_BOX(toolbar_), toolbar_left_, FALSE, FALSE, 0);
location_hbox_ = gtk_hbox_new(FALSE, 0);
@@ -199,9 +196,6 @@ void BrowserToolbarGtk::Init(Profile* profile,
toolbar_right_ = gtk_hbox_new(FALSE, 0);
- go_.reset(new GoButtonGtk(location_bar_.get(), browser_));
- gtk_box_pack_start(GTK_BOX(toolbar_right_), go_->widget(), FALSE, FALSE, 0);
-
if (!ShouldOnlyShowLocation()) {
actions_toolbar_.reset(new BrowserActionsToolbarGtk(browser_));
gtk_box_pack_start(GTK_BOX(toolbar_right_), actions_toolbar_->widget(),
@@ -255,7 +249,6 @@ void BrowserToolbarGtk::Init(Profile* profile,
gtk_widget_show(toolbar_);
gtk_widget_show_all(location_hbox_);
gtk_widget_hide(reload_->widget());
- gtk_widget_hide(go_->widget());
} else {
gtk_widget_show_all(event_box_);
if (actions_toolbar_->button_count() == 0)
@@ -279,7 +272,6 @@ void BrowserToolbarGtk::SetViewIDs() {
ViewIDUtil::SetID(reload_->widget(), VIEW_ID_RELOAD_BUTTON);
ViewIDUtil::SetID(home_->widget(), VIEW_ID_HOME_BUTTON);
ViewIDUtil::SetID(location_bar_->widget(), VIEW_ID_LOCATION_BAR);
- ViewIDUtil::SetID(go_->widget(), VIEW_ID_GO_BUTTON);
if (page_menu_button_.get())
ViewIDUtil::SetID(page_menu_button_.get(), VIEW_ID_PAGE_MENU);
ViewIDUtil::SetID(app_menu_button_.get(), VIEW_ID_APP_MENU);
@@ -325,12 +317,6 @@ void BrowserToolbarGtk::EnabledStateChangedForCommand(int id, bool enabled) {
case IDC_FORWARD:
widget = forward_->widget();
break;
- case IDC_RELOAD:
- widget = reload_->widget();
- break;
- case IDC_GO:
- widget = go_->widget();
- break;
case IDC_HOME:
if (home_.get())
widget = home_->widget();
@@ -430,19 +416,6 @@ void BrowserToolbarGtk::Observe(NotificationType type,
gtk_image_set_from_pixbuf(GTK_IMAGE(app_menu_image_),
theme_provider_->GetRTLEnabledPixbufNamed(IDR_MENU_CHROME));
- // Update the spacing between the reload button and the location bar.
- gtk_box_set_child_packing(
- GTK_BOX(toolbar_), reload_->widget(),
- FALSE, FALSE,
- theme_provider_->UseGtkTheme() ? kToolbarWidgetSpacing : 0,
- GTK_PACK_START);
- gtk_box_set_child_packing(
- GTK_BOX(toolbar_), location_hbox_,
- TRUE, TRUE,
- (theme_provider_->UseGtkTheme() ? kToolbarWidgetSpacing : 0) +
- (ShouldOnlyShowLocation() ? 1 : 0),
- GTK_PACK_START);
-
// Force the height of the toolbar so we get the right amount of padding
// above and below the location bar. We always force the size of the hboxes
// to either side of the location box, but we only force the location box
@@ -705,29 +678,9 @@ void BrowserToolbarGtk::OnButtonClick(GtkWidget* button) {
return;
}
- int command = -1;
- GdkModifierType modifier_state;
- gtk_get_current_event_state(&modifier_state);
- guint modifier_state_uint = modifier_state;
- if (button == reload_->widget()) {
- if (modifier_state_uint & GDK_SHIFT_MASK) {
- command = IDC_RELOAD_IGNORING_CACHE;
- // Mask off shift so it isn't interpreted as affecting the disposition
- // below.
- modifier_state_uint &= ~GDK_SHIFT_MASK;
- } else {
- command = IDC_RELOAD;
- }
- if (event_utils::DispositionFromEventFlags(modifier_state_uint) ==
- CURRENT_TAB)
- location_bar_->Revert();
- } else if (home_.get() && button == home_->widget()) {
- command = IDC_HOME;
- }
-
- DCHECK_NE(command, -1) << "Unexpected button click callback";
- browser_->ExecuteCommandWithDisposition(command,
- event_utils::DispositionFromEventFlags(modifier_state_uint));
+ DCHECK(home_.get() && button == home_->widget()) <<
+ "Unexpected button click callback";
+ browser_->Home(gtk_util::DispositionForCurrentButtonPressEvent());
}
gboolean BrowserToolbarGtk::OnMenuButtonPressEvent(GtkWidget* button,
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.h b/chrome/browser/gtk/browser_toolbar_gtk.h
index 51a25d6..48d984a 100644
--- a/chrome/browser/gtk/browser_toolbar_gtk.h
+++ b/chrome/browser/gtk/browser_toolbar_gtk.h
@@ -30,10 +30,10 @@ class BrowserActionsToolbarGtk;
class BrowserWindowGtk;
class CustomDrawButton;
class GtkThemeProvider;
-class GoButtonGtk;
class LocationBar;
class LocationBarViewGtk;
class Profile;
+class ReloadButtonGtk;
class TabContents;
class ToolbarModel;
@@ -71,7 +71,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver,
virtual LocationBar* GetLocationBar() const;
- GoButtonGtk* GetGoButton() { return go_.get(); }
+ ReloadButtonGtk* GetReloadButton() { return reload_.get(); }
GtkWidget* GetAppMenuButton() { return app_menu_button_.get(); }
@@ -219,8 +219,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver,
// All the buttons in the toolbar.
scoped_ptr<BackForwardButtonGtk> back_, forward_;
scoped_ptr<CustomDrawButton> home_;
- scoped_ptr<CustomDrawButton> reload_;
- scoped_ptr<GoButtonGtk> go_;
+ scoped_ptr<ReloadButtonGtk> reload_;
scoped_ptr<BrowserActionsToolbarGtk> actions_toolbar_;
OwnedWidgetGtk page_menu_button_, app_menu_button_;
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc
index 5d2b7f0..f31b6e8a 100644
--- a/chrome/browser/gtk/browser_window_gtk.cc
+++ b/chrome/browser/gtk/browser_window_gtk.cc
@@ -47,7 +47,6 @@
#include "chrome/browser/gtk/edit_search_engine_dialog.h"
#include "chrome/browser/gtk/find_bar_gtk.h"
#include "chrome/browser/gtk/fullscreen_exit_bubble_gtk.h"
-#include "chrome/browser/gtk/go_button_gtk.h"
#include "chrome/browser/gtk/gtk_floating_container.h"
#include "chrome/browser/gtk/gtk_theme_provider.h"
#include "chrome/browser/gtk/gtk_util.h"
@@ -59,6 +58,7 @@
#include "chrome/browser/gtk/location_bar_view_gtk.h"
#include "chrome/browser/gtk/nine_box.h"
#include "chrome/browser/gtk/options/content_settings_window_gtk.h"
+#include "chrome/browser/gtk/reload_button_gtk.h"
#include "chrome/browser/gtk/repost_form_warning_gtk.h"
#include "chrome/browser/gtk/status_bubble_gtk.h"
#include "chrome/browser/gtk/tab_contents_container_gtk.h"
@@ -828,9 +828,10 @@ void BrowserWindowGtk::SetFocusToLocationBar(bool select_all) {
GetLocationBar()->FocusLocation(select_all);
}
-void BrowserWindowGtk::UpdateStopGoState(bool is_loading, bool force) {
- toolbar_->GetGoButton()->ChangeMode(
- is_loading ? GoButtonGtk::MODE_STOP : GoButtonGtk::MODE_GO, force);
+void BrowserWindowGtk::UpdateReloadStopState(bool is_loading, bool force) {
+ toolbar_->GetReloadButton()->ChangeMode(
+ is_loading ? ReloadButtonGtk::MODE_STOP : ReloadButtonGtk::MODE_RELOAD,
+ force);
}
void BrowserWindowGtk::UpdateToolbar(TabContents* contents,
diff --git a/chrome/browser/gtk/browser_window_gtk.h b/chrome/browser/gtk/browser_window_gtk.h
index 2a66f5f..3f86f43 100644
--- a/chrome/browser/gtk/browser_window_gtk.h
+++ b/chrome/browser/gtk/browser_window_gtk.h
@@ -71,7 +71,7 @@ class BrowserWindowGtk : public BrowserWindow,
virtual bool IsFullscreenBubbleVisible() const;
virtual LocationBar* GetLocationBar() const;
virtual void SetFocusToLocationBar(bool select_all);
- virtual void UpdateStopGoState(bool is_loading, bool force);
+ virtual void UpdateReloadStopState(bool is_loading, bool force);
virtual void UpdateToolbar(TabContents* contents,
bool should_restore_state);
virtual void FocusToolbar();
diff --git a/chrome/browser/gtk/go_button_gtk.cc b/chrome/browser/gtk/go_button_gtk.cc
deleted file mode 100644
index cf0d926..0000000
--- a/chrome/browser/gtk/go_button_gtk.cc
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/gtk/go_button_gtk.h"
-
-#include "app/l10n_util.h"
-#include "base/i18n/rtl.h"
-#include "base/logging.h"
-#include "base/message_loop.h"
-#include "chrome/app/chrome_dll_resource.h"
-#include "chrome/browser/browser.h"
-#include "chrome/browser/gtk/gtk_chrome_button.h"
-#include "chrome/browser/gtk/gtk_theme_provider.h"
-#include "chrome/browser/gtk/gtk_util.h"
-#include "chrome/browser/gtk/location_bar_view_gtk.h"
-#include "chrome/browser/profile.h"
-#include "chrome/browser/search_engines/template_url_model.h"
-#include "chrome/common/notification_service.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-
-// Limit the length of the tooltip text. This applies only to the text in the
-// omnibox (e.g. X in "Go to X");
-const size_t kMaxTooltipTextLength = 400;
-
-GoButtonGtk::GoButtonGtk(LocationBarViewGtk* location_bar, Browser* browser)
- : location_bar_(location_bar),
- browser_(browser),
- button_delay_(0),
- stop_timer_(this),
- intended_mode_(MODE_GO),
- visible_mode_(MODE_GO),
- theme_provider_(browser ?
- GtkThemeProvider::GetFrom(browser->profile()) : NULL),
- go_(theme_provider_, IDR_GO, IDR_GO_P, IDR_GO_H, 0, IDR_GO_MASK),
- stop_(theme_provider_, IDR_STOP, IDR_STOP_P, IDR_STOP_H, 0, IDR_GO_MASK),
- widget_(gtk_chrome_button_new()) {
- gtk_widget_set_size_request(widget_.get(), go_.Width(), go_.Height());
-
- gtk_widget_set_app_paintable(widget_.get(), TRUE);
-
- g_signal_connect(widget_.get(), "expose-event",
- G_CALLBACK(OnExposeThunk), this);
- g_signal_connect(widget_.get(), "leave-notify-event",
- G_CALLBACK(OnLeaveNotifyThunk), this);
- g_signal_connect(widget_.get(), "clicked",
- G_CALLBACK(OnClickedThunk), this);
- GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS);
-
- gtk_widget_set_has_tooltip(widget_.get(), TRUE);
- g_signal_connect(widget_.get(), "query-tooltip",
- G_CALLBACK(OnQueryTooltipThunk), this);
-
- hover_controller_.Init(widget());
- gtk_util::SetButtonTriggersNavigation(widget());
-
- if (theme_provider_) {
- theme_provider_->InitThemesFor(this);
- registrar_.Add(this,
- NotificationType::BROWSER_THEME_CHANGED,
- Source<GtkThemeProvider>(theme_provider_));
- }
-}
-
-GoButtonGtk::~GoButtonGtk() {
- widget_.Destroy();
-}
-
-void GoButtonGtk::ChangeMode(Mode mode, bool force) {
- intended_mode_ = mode;
-
- // If the change is forced, or the user isn't hovering the icon, or it's safe
- // to change it to the other image type, make the change immediately;
- // otherwise we'll let it happen later.
- if (force || GTK_WIDGET_STATE(widget()) == GTK_STATE_NORMAL ||
- ((mode == MODE_STOP) ?
- stop_timer_.empty() : (visible_mode_ != MODE_STOP))) {
- stop_timer_.RevokeAll();
- visible_mode_ = mode;
- gtk_widget_queue_draw(widget_.get());
-
- UpdateThemeButtons();
- }
-}
-
-void GoButtonGtk::Observe(NotificationType type,
- const NotificationSource& source, const NotificationDetails& details) {
- DCHECK(NotificationType::BROWSER_THEME_CHANGED == type);
-
- GtkThemeProvider* provider = static_cast<GtkThemeProvider*>(
- Source<GtkThemeProvider>(source).ptr());
- DCHECK(provider == theme_provider_);
- UpdateThemeButtons();
-}
-
-Task* GoButtonGtk::CreateButtonTimerTask() {
- return stop_timer_.NewRunnableMethod(&GoButtonGtk::OnButtonTimer);
-}
-
-void GoButtonGtk::OnButtonTimer() {
- stop_timer_.RevokeAll();
- ChangeMode(intended_mode_, true);
-}
-
-gboolean GoButtonGtk::OnExpose(GtkWidget* widget,
- GdkEventExpose* e) {
- if (theme_provider_ && theme_provider_->UseGtkTheme()) {
- return FALSE;
- } else {
- double hover_state = hover_controller_.GetCurrentValue();
- if (visible_mode_ == MODE_GO) {
- return go_.OnExpose(widget, e, hover_state);
- } else {
- return stop_.OnExpose(widget, e, hover_state);
- }
- }
-}
-
-gboolean GoButtonGtk::OnLeaveNotify(GtkWidget* widget,
- GdkEventCrossing* event) {
- ChangeMode(intended_mode_, true);
- return FALSE;
-}
-
-void GoButtonGtk::OnClicked(GtkWidget* sender) {
- if (visible_mode_ == MODE_STOP) {
- if (browser_)
- browser_->Stop();
-
- // The user has clicked, so we can feel free to update the button,
- // even if the mouse is still hovering.
- ChangeMode(MODE_GO, true);
- } else if (visible_mode_ == MODE_GO && stop_timer_.empty()) {
- // If the go button is visible and not within the double click timer, go.
- if (browser_) {
- browser_->ExecuteCommandWithDisposition(IDC_GO,
- gtk_util::DispositionForCurrentButtonPressEvent());
- }
-
- // Figure out the system double-click time.
- if (button_delay_ == 0) {
- GtkSettings* settings = gtk_settings_get_default();
- g_object_get(G_OBJECT(settings),
- "gtk-double-click-time",
- &button_delay_,
- NULL);
- }
-
- // Stop any existing timers.
- stop_timer_.RevokeAll();
-
- // Start a timer - while this timer is running, the go button
- // cannot be changed to a stop button. We do not set intended_mode_
- // to MODE_STOP here as we want to wait for the browser to tell
- // us that it has started loading (and this may occur only after
- // some delay).
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- CreateButtonTimerTask(),
- button_delay_);
- }
-}
-
-gboolean GoButtonGtk::OnQueryTooltip(GtkWidget* sender,
- gint x, gint y, gboolean keyboard_mode,
- GtkTooltip* tooltip) {
- // |location_bar_| can be NULL in tests.
- if (!location_bar_)
- return FALSE;
-
- std::string text;
- if (visible_mode_ == MODE_GO) {
- std::wstring current_text_wstr(location_bar_->location_entry()->GetText());
- base::i18n::GetDisplayStringInLTRDirectionality(&current_text_wstr);
- string16 current_text = WideToUTF16Hack(
- l10n_util::TruncateString(current_text_wstr, kMaxTooltipTextLength));
-
- AutocompleteEditModel* edit_model =
- location_bar_->location_entry()->model();
- if (edit_model->CurrentTextIsURL()) {
- text = l10n_util::GetStringFUTF8(IDS_TOOLTIP_GO_SITE, current_text);
- } else {
- std::wstring keyword(edit_model->keyword());
- TemplateURLModel* template_url_model =
- browser_->profile()->GetTemplateURLModel();
- const TemplateURL* provider =
- (keyword.empty() || edit_model->is_keyword_hint()) ?
- template_url_model->GetDefaultSearchProvider() :
- template_url_model->GetTemplateURLForKeyword(keyword);
- if (!provider)
- return FALSE; // Don't show a tooltip.
- text = l10n_util::GetStringFUTF8(IDS_TOOLTIP_GO_SEARCH,
- WideToUTF16Hack(provider->AdjustedShortNameForLocaleDirection()),
- current_text);
- }
- } else {
- text = l10n_util::GetStringUTF8(IDS_TOOLTIP_STOP);
- }
-
- gtk_tooltip_set_text(tooltip, text.c_str());
- return TRUE;
-}
-
-void GoButtonGtk::UpdateThemeButtons() {
- bool use_gtk = theme_provider_ && theme_provider_->UseGtkTheme();
-
- if (use_gtk) {
- GdkPixbuf* pixbuf = NULL;
- if (intended_mode_ == MODE_GO) {
- pixbuf = theme_provider_->GetPixbufNamed(IDR_GO_NOBORDER_CENTER);
- } else {
- pixbuf = theme_provider_->GetPixbufNamed(IDR_STOP_NOBORDER_CENTER);
- }
-
- gtk_button_set_image(
- GTK_BUTTON(widget_.get()),
- gtk_image_new_from_pixbuf(pixbuf));
-
- gtk_widget_set_size_request(widget_.get(), -1, -1);
- gtk_widget_set_app_paintable(widget_.get(), FALSE);
- gtk_widget_set_double_buffered(widget_.get(), TRUE);
- } else {
- gtk_widget_set_size_request(widget_.get(), go_.Width(), go_.Height());
-
- gtk_widget_set_app_paintable(widget_.get(), TRUE);
- // We effectively double-buffer by virtue of having only one image...
- gtk_widget_set_double_buffered(widget_.get(), FALSE);
- }
-
- gtk_chrome_button_set_use_gtk_rendering(
- GTK_CHROME_BUTTON(widget_.get()), use_gtk);
-}
diff --git a/chrome/browser/gtk/go_button_gtk_unittest.cc b/chrome/browser/gtk/go_button_gtk_unittest.cc
deleted file mode 100644
index b714193..0000000
--- a/chrome/browser/gtk/go_button_gtk_unittest.cc
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/gtk/go_button_gtk.h"
-#include "base/task.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-class GoButtonGtkPeer {
- public:
- explicit GoButtonGtkPeer(GoButtonGtk* go) : go_(go) { }
-
- // const accessors for internal state
- GoButtonGtk::Mode intended_mode() const { return go_->intended_mode_; }
- GoButtonGtk::Mode visible_mode() const { return go_->visible_mode_; }
-
- // mutable accessors for internal state
- ScopedRunnableMethodFactory<GoButtonGtk>* stop_timer() {
- return &go_->stop_timer_;
- }
-
- void SetState(GtkStateType state) {
- gtk_widget_set_state(go_->widget(), state);
- }
-
- // mutators for internal state
- void set_intended_mode(GoButtonGtk::Mode mode) { go_->intended_mode_ = mode; }
- void set_visible_mode(GoButtonGtk::Mode mode) { go_->visible_mode_ = mode; }
-
- // forwarders to private methods
- Task* CreateButtonTimerTask() { return go_->CreateButtonTimerTask(); }
- gboolean OnLeave() {
- return go_->OnLeaveNotify(go_->widget(), NULL);
- }
-
- void OnClicked() {
- go_->OnClicked(go_->widget());
- }
-
- private:
- GoButtonGtk* const go_;
-};
-
-namespace {
-
-class GoButtonGtkTest : public testing::Test {
- protected:
- GoButtonGtkTest() : go_(NULL, NULL), peer_(&go_) { }
-
- protected:
- GoButtonGtk go_;
- GoButtonGtkPeer peer_;
-};
-
-TEST_F(GoButtonGtkTest, ChangeModeGo) {
- go_.ChangeMode(GoButtonGtk::MODE_GO, true);
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ChangeModeStop) {
- go_.ChangeMode(GoButtonGtk::MODE_STOP, true);
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ScheduleChangeModeNormalGo) {
- peer_.set_visible_mode(GoButtonGtk::MODE_STOP);
- peer_.SetState(GTK_STATE_NORMAL);
- go_.ChangeMode(GoButtonGtk::MODE_GO, false);
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ScheduleChangeModeHotGo) {
- peer_.set_visible_mode(GoButtonGtk::MODE_STOP);
- peer_.SetState(GTK_STATE_PRELIGHT);
- go_.ChangeMode(GoButtonGtk::MODE_GO, false);
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ScheduleChangeModeNormalStop) {
- peer_.set_visible_mode(GoButtonGtk::MODE_GO);
- peer_.SetState(GTK_STATE_NORMAL);
- go_.ChangeMode(GoButtonGtk::MODE_STOP, false);
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ScheduleChangeModeHotStop) {
- peer_.set_visible_mode(GoButtonGtk::MODE_GO);
- peer_.SetState(GTK_STATE_PRELIGHT);
- go_.ChangeMode(GoButtonGtk::MODE_STOP, false);
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, ScheduleChangeModeTimerHotStop) {
- peer_.set_visible_mode(GoButtonGtk::MODE_GO);
- peer_.SetState(GTK_STATE_PRELIGHT);
- scoped_ptr<Task> task(peer_.CreateButtonTimerTask());
- go_.ChangeMode(GoButtonGtk::MODE_STOP, false);
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode());
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode());
-}
-
-TEST_F(GoButtonGtkTest, OnLeaveIntendedStop) {
- peer_.SetState(GTK_STATE_PRELIGHT);
- peer_.set_visible_mode(GoButtonGtk::MODE_GO);
- peer_.set_intended_mode(GoButtonGtk::MODE_STOP);
- peer_.OnLeave();
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.visible_mode());
- EXPECT_EQ(GoButtonGtk::MODE_STOP, peer_.intended_mode());
-}
-
-TEST_F(GoButtonGtkTest, OnLeaveIntendedGo) {
- peer_.SetState(GTK_STATE_PRELIGHT);
- peer_.set_visible_mode(GoButtonGtk::MODE_STOP);
- peer_.set_intended_mode(GoButtonGtk::MODE_GO);
- peer_.OnLeave();
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode());
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode());
-}
-
-TEST_F(GoButtonGtkTest, OnClickedStop) {
- peer_.set_visible_mode(GoButtonGtk::MODE_STOP);
- peer_.OnClicked();
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.visible_mode());
- EXPECT_EQ(GoButtonGtk::MODE_GO, peer_.intended_mode());
-}
-
-} // namespace
diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc
index 1b89b07..3343615 100644
--- a/chrome/browser/gtk/location_bar_view_gtk.cc
+++ b/chrome/browser/gtk/location_bar_view_gtk.cc
@@ -540,12 +540,7 @@ PageTransition::Type LocationBarViewGtk::GetPageTransition() const {
}
void LocationBarViewGtk::AcceptInput() {
- AcceptInputWithDisposition(CURRENT_TAB);
-}
-
-void LocationBarViewGtk::AcceptInputWithDisposition(
- WindowOpenDisposition disposition) {
- location_entry_->model()->AcceptInput(disposition, false);
+ location_entry_->model()->AcceptInput(CURRENT_TAB, false);
}
void LocationBarViewGtk::FocusLocation(bool select_all) {
diff --git a/chrome/browser/gtk/location_bar_view_gtk.h b/chrome/browser/gtk/location_bar_view_gtk.h
index 4cd11f9..412adf0 100644
--- a/chrome/browser/gtk/location_bar_view_gtk.h
+++ b/chrome/browser/gtk/location_bar_view_gtk.h
@@ -101,7 +101,6 @@ class LocationBarViewGtk : public AutocompleteEditController,
virtual WindowOpenDisposition GetWindowOpenDisposition() const;
virtual PageTransition::Type GetPageTransition() const;
virtual void AcceptInput();
- virtual void AcceptInputWithDisposition(WindowOpenDisposition);
virtual void FocusLocation(bool select_all);
virtual void FocusSearch();
virtual void UpdateContentSettingsIcons();
diff --git a/chrome/browser/gtk/reload_button_gtk.cc b/chrome/browser/gtk/reload_button_gtk.cc
new file mode 100644
index 0000000..8e3cb8f
--- /dev/null
+++ b/chrome/browser/gtk/reload_button_gtk.cc
@@ -0,0 +1,218 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/gtk/reload_button_gtk.h"
+
+#include "app/l10n_util.h"
+#include "base/logging.h"
+#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/gtk/gtk_chrome_button.h"
+#include "chrome/browser/gtk/gtk_theme_provider.h"
+#include "chrome/browser/gtk/gtk_util.h"
+#include "chrome/browser/gtk/location_bar_view_gtk.h"
+#include "chrome/common/notification_service.h"
+#include "grit/generated_resources.h"
+#include "grit/theme_resources.h"
+
+// The width of this button in GTK+ theme mode. The Stop and Refresh stock icons
+// can be different sizes; this variable is used to make sure that the button
+// doesn't change sizes when switching between the two.
+static int GtkButtonWidth = 0;
+
+ReloadButtonGtk::ReloadButtonGtk(LocationBarViewGtk* location_bar,
+ Browser* browser)
+ : location_bar_(location_bar),
+ browser_(browser),
+ button_delay_(0),
+ pretend_timer_is_running_for_unittest_(false),
+ intended_mode_(MODE_RELOAD),
+ visible_mode_(MODE_RELOAD),
+ theme_provider_(browser ?
+ GtkThemeProvider::GetFrom(browser->profile()) : NULL),
+ reload_(theme_provider_, IDR_RELOAD, IDR_RELOAD_P, IDR_RELOAD_H, 0,
+ IDR_BUTTON_MASK),
+ stop_(theme_provider_, IDR_STOP, IDR_STOP_P, IDR_STOP_H, 0,
+ IDR_BUTTON_MASK),
+ widget_(gtk_chrome_button_new()) {
+ gtk_widget_set_size_request(widget_.get(), reload_.Width(), reload_.Height());
+
+ gtk_widget_set_app_paintable(widget_.get(), TRUE);
+
+ g_signal_connect(widget_.get(), "expose-event",
+ G_CALLBACK(OnExposeThunk), this);
+ g_signal_connect(widget_.get(), "leave-notify-event",
+ G_CALLBACK(OnLeaveNotifyThunk), this);
+ g_signal_connect(widget_.get(), "clicked",
+ G_CALLBACK(OnClickedThunk), this);
+ GTK_WIDGET_UNSET_FLAGS(widget_.get(), GTK_CAN_FOCUS);
+
+ gtk_widget_set_has_tooltip(widget_.get(), TRUE);
+ g_signal_connect(widget_.get(), "query-tooltip",
+ G_CALLBACK(OnQueryTooltipThunk), this);
+
+ hover_controller_.Init(widget());
+ gtk_util::SetButtonTriggersNavigation(widget());
+
+ if (theme_provider_) {
+ theme_provider_->InitThemesFor(this);
+ registrar_.Add(this,
+ NotificationType::BROWSER_THEME_CHANGED,
+ Source<GtkThemeProvider>(theme_provider_));
+ }
+}
+
+ReloadButtonGtk::~ReloadButtonGtk() {
+ widget_.Destroy();
+}
+
+void ReloadButtonGtk::ChangeMode(Mode mode, bool force) {
+ intended_mode_ = mode;
+
+ // If the change is forced, or the user isn't hovering the icon, or it's safe
+ // to change it to the other image type, make the change immediately;
+ // otherwise we'll let it happen later.
+ if (force || GTK_WIDGET_STATE(widget()) == GTK_STATE_NORMAL ||
+ ((mode == MODE_STOP) ?
+ !timer_running() : (visible_mode_ != MODE_STOP))) {
+ timer_.Stop();
+ visible_mode_ = mode;
+ gtk_widget_queue_draw(widget_.get());
+
+ UpdateThemeButtons();
+ }
+}
+
+void ReloadButtonGtk::Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details) {
+ DCHECK(NotificationType::BROWSER_THEME_CHANGED == type);
+
+ GtkThemeProvider* provider = static_cast<GtkThemeProvider*>(
+ Source<GtkThemeProvider>(source).ptr());
+ DCHECK_EQ(provider, theme_provider_);
+ GtkButtonWidth = 0;
+ UpdateThemeButtons();
+}
+
+void ReloadButtonGtk::OnButtonTimer() {
+ ChangeMode(intended_mode_, true);
+}
+
+gboolean ReloadButtonGtk::OnExpose(GtkWidget* widget,
+ GdkEventExpose* e) {
+ if (theme_provider_ && theme_provider_->UseGtkTheme())
+ return FALSE;
+ return ((visible_mode_ == MODE_RELOAD) ? reload_ : stop_).OnExpose(
+ widget, e, hover_controller_.GetCurrentValue());
+}
+
+gboolean ReloadButtonGtk::OnLeaveNotify(GtkWidget* widget,
+ GdkEventCrossing* event) {
+ ChangeMode(intended_mode_, true);
+ return FALSE;
+}
+
+void ReloadButtonGtk::OnClicked(GtkWidget* sender) {
+ if (visible_mode_ == MODE_STOP) {
+ if (browser_)
+ browser_->Stop();
+
+ // The user has clicked, so we can feel free to update the button,
+ // even if the mouse is still hovering.
+ ChangeMode(MODE_RELOAD, true);
+ } else if (!timer_running()) {
+ // Shift-clicking or Ctrl-clicking the reload button means we should ignore
+ // any cached content.
+ int command;
+ GdkModifierType modifier_state;
+ gtk_get_current_event_state(&modifier_state);
+ guint modifier_state_uint = modifier_state;
+ if (modifier_state_uint & GDK_SHIFT_MASK) {
+ command = IDC_RELOAD_IGNORING_CACHE;
+ // Mask off shift so it isn't interpreted as affecting the disposition
+ // below.
+ modifier_state_uint &= ~GDK_SHIFT_MASK;
+ } else {
+ command = IDC_RELOAD;
+ }
+
+ WindowOpenDisposition disposition =
+ event_utils::DispositionFromEventFlags(modifier_state_uint);
+ if (disposition == CURRENT_TAB) {
+ // Forcibly reset the location bar, since otherwise it won't discard any
+ // ongoing user edits, since it doesn't realize this is a user-initiated
+ // action.
+ location_bar_->Revert();
+ }
+
+ if (browser_)
+ browser_->ExecuteCommandWithDisposition(command, disposition);
+
+ // Figure out the system double-click time.
+ if (button_delay_ == 0) {
+ GtkSettings* settings = gtk_settings_get_default();
+ g_object_get(G_OBJECT(settings), "gtk-double-click-time", &button_delay_,
+ NULL);
+ }
+
+ // Stop the timer.
+ timer_.Stop();
+
+ // Start a timer - while this timer is running, the reload button cannot be
+ // changed to a stop button. We do not set |intended_mode_| to MODE_STOP
+ // here as we want to wait for the browser to tell us that it has started
+ // loading (and this may occur only after some delay).
+ timer_.Start(base::TimeDelta::FromMilliseconds(button_delay_), this,
+ &ReloadButtonGtk::OnButtonTimer);
+ }
+}
+
+gboolean ReloadButtonGtk::OnQueryTooltip(GtkWidget* sender,
+ gint x,
+ gint y,
+ gboolean keyboard_mode,
+ GtkTooltip* tooltip) {
+ // |location_bar_| can be NULL in tests.
+ if (!location_bar_)
+ return FALSE;
+
+ gtk_tooltip_set_text(tooltip, l10n_util::GetStringUTF8(
+ (visible_mode_ == MODE_RELOAD) ?
+ IDS_TOOLTIP_RELOAD : IDS_TOOLTIP_STOP).c_str());
+ return TRUE;
+}
+
+void ReloadButtonGtk::UpdateThemeButtons() {
+ bool use_gtk = theme_provider_ && theme_provider_->UseGtkTheme();
+
+ if (use_gtk) {
+ GdkPixbuf* pixbuf = gtk_widget_render_icon(widget(),
+ (intended_mode_ == MODE_RELOAD) ? GTK_STOCK_REFRESH : GTK_STOCK_STOP,
+ GTK_ICON_SIZE_SMALL_TOOLBAR, NULL);
+
+ gtk_button_set_image(GTK_BUTTON(widget_.get()),
+ gtk_image_new_from_pixbuf(pixbuf));
+ g_object_unref(pixbuf);
+
+ gtk_widget_set_size_request(widget_.get(), -1, -1);
+ GtkRequisition req;
+ gtk_widget_size_request(widget(), &req);
+ GtkButtonWidth = std::max(GtkButtonWidth, req.width);
+ gtk_widget_set_size_request(widget_.get(), GtkButtonWidth, -1);
+
+ gtk_widget_set_app_paintable(widget_.get(), FALSE);
+ gtk_widget_set_double_buffered(widget_.get(), TRUE);
+ } else {
+ gtk_widget_set_size_request(widget_.get(), reload_.Width(),
+ reload_.Height());
+
+ gtk_widget_set_app_paintable(widget_.get(), TRUE);
+ // We effectively double-buffer by virtue of having only one image...
+ gtk_widget_set_double_buffered(widget_.get(), FALSE);
+ }
+
+ gtk_chrome_button_set_use_gtk_rendering(
+ GTK_CHROME_BUTTON(widget_.get()), use_gtk);
+}
diff --git a/chrome/browser/gtk/go_button_gtk.h b/chrome/browser/gtk/reload_button_gtk.h
index 9626256..6cc3a13 100644
--- a/chrome/browser/gtk/go_button_gtk.h
+++ b/chrome/browser/gtk/reload_button_gtk.h
@@ -2,14 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_
-#define CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_
+#ifndef CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_
+#define CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_
#include <gtk/gtk.h>
#include "app/gtk_signal.h"
#include "base/basictypes.h"
-#include "base/task.h"
+#include "base/timer.h"
#include "chrome/browser/gtk/custom_button.h"
#include "chrome/common/notification_observer.h"
#include "chrome/common/notification_registrar.h"
@@ -20,12 +20,12 @@ class GtkThemeProvider;
class LocationBarViewGtk;
class Task;
-class GoButtonGtk : public NotificationObserver {
+class ReloadButtonGtk : public NotificationObserver {
public:
- enum Mode { MODE_GO = 0, MODE_STOP };
+ enum Mode { MODE_RELOAD = 0, MODE_STOP };
- GoButtonGtk(LocationBarViewGtk* location_bar, Browser* browser);
- ~GoButtonGtk();
+ ReloadButtonGtk(LocationBarViewGtk* location_bar, Browser* browser);
+ ~ReloadButtonGtk();
GtkWidget* widget() const { return widget_.get(); }
@@ -39,18 +39,23 @@ class GoButtonGtk : public NotificationObserver {
const NotificationDetails& details);
private:
- friend class GoButtonGtkPeer;
+ friend class ReloadButtonGtkPeer;
- CHROMEGTK_CALLBACK_1(GoButtonGtk, gboolean, OnExpose, GdkEventExpose*);
- CHROMEGTK_CALLBACK_1(GoButtonGtk, gboolean, OnLeaveNotify, GdkEventCrossing*);
- CHROMEGTK_CALLBACK_0(GoButtonGtk, void, OnClicked);
- CHROMEGTK_CALLBACK_4(GoButtonGtk, gboolean, OnQueryTooltip,
- gint, gint, gboolean, GtkTooltip*);
+ CHROMEGTK_CALLBACK_1(ReloadButtonGtk, gboolean, OnExpose, GdkEventExpose*);
+ CHROMEGTK_CALLBACK_1(ReloadButtonGtk, gboolean, OnLeaveNotify,
+ GdkEventCrossing*);
+ CHROMEGTK_CALLBACK_0(ReloadButtonGtk, void, OnClicked);
+ CHROMEGTK_CALLBACK_4(ReloadButtonGtk, gboolean, OnQueryTooltip, gint, gint,
+ gboolean, GtkTooltip*);
void SetToggled();
- Task* CreateButtonTimerTask();
+ bool timer_running() const {
+ return timer_.IsRunning() || pretend_timer_is_running_for_unittest_;
+ }
+
void OnButtonTimer();
+
void UpdateThemeButtons();
// Used to listen for theme change notifications.
@@ -64,7 +69,8 @@ class GoButtonGtk : public NotificationObserver {
// Delay time to wait before allowing a mode change. This is to prevent a
// mode switch while the user is double clicking.
int button_delay_;
- ScopedRunnableMethodFactory<GoButtonGtk> stop_timer_;
+ base::OneShotTimer<ReloadButtonGtk> timer_;
+ bool pretend_timer_is_running_for_unittest_;
// The mode we should be in.
Mode intended_mode_;
@@ -74,13 +80,13 @@ class GoButtonGtk : public NotificationObserver {
GtkThemeProvider* theme_provider_;
- CustomDrawButtonBase go_;
+ CustomDrawButtonBase reload_;
CustomDrawButtonBase stop_;
CustomDrawHoverController hover_controller_;
OwnedWidgetGtk widget_;
- DISALLOW_COPY_AND_ASSIGN(GoButtonGtk);
+ DISALLOW_IMPLICIT_CONSTRUCTORS(ReloadButtonGtk);
};
-#endif // CHROME_BROWSER_GTK_GO_BUTTON_GTK_H_
+#endif // CHROME_BROWSER_GTK_RELOAD_BUTTON_GTK_H_
diff --git a/chrome/browser/gtk/reload_button_gtk_unittest.cc b/chrome/browser/gtk/reload_button_gtk_unittest.cc
new file mode 100644
index 0000000..12384b6
--- /dev/null
+++ b/chrome/browser/gtk/reload_button_gtk_unittest.cc
@@ -0,0 +1,138 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/gtk/reload_button_gtk.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+class ReloadButtonGtkPeer {
+ public:
+ explicit ReloadButtonGtkPeer(ReloadButtonGtk* reload) : reload_(reload) { }
+
+ // const accessors for internal state
+ ReloadButtonGtk::Mode intended_mode() const {
+ return reload_->intended_mode_;
+ }
+ ReloadButtonGtk::Mode visible_mode() const { return reload_->visible_mode_; }
+
+ // mutators for internal state
+ void SetState(GtkStateType state) {
+ gtk_widget_set_state(reload_->widget(), state);
+ }
+ void set_intended_mode(ReloadButtonGtk::Mode mode) {
+ reload_->intended_mode_ = mode;
+ }
+ void set_visible_mode(ReloadButtonGtk::Mode mode) {
+ reload_->visible_mode_ = mode;
+ }
+ void set_timer_running() {
+ reload_->pretend_timer_is_running_for_unittest_ = true;
+ }
+ void set_timer_stopped() {
+ reload_->pretend_timer_is_running_for_unittest_ = false;
+ }
+
+ // forwarders to private methods
+ gboolean OnLeave() {
+ return reload_->OnLeaveNotify(reload_->widget(), NULL);
+ }
+
+ void OnClicked() {
+ reload_->OnClicked(reload_->widget());
+ }
+
+ private:
+ ReloadButtonGtk* const reload_;
+};
+
+namespace {
+
+class ReloadButtonGtkTest : public testing::Test {
+ protected:
+ ReloadButtonGtkTest() : reload_(NULL, NULL), peer_(&reload_) { }
+
+ protected:
+ ReloadButtonGtk reload_;
+ ReloadButtonGtkPeer peer_;
+};
+
+TEST_F(ReloadButtonGtkTest, ChangeModeReload) {
+ reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, true);
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ChangeModeStop) {
+ reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, true);
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ScheduleChangeModeNormalReload) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP);
+ peer_.SetState(GTK_STATE_NORMAL);
+ reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, false);
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ScheduleChangeModeHotReload) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP);
+ peer_.SetState(GTK_STATE_PRELIGHT);
+ reload_.ChangeMode(ReloadButtonGtk::MODE_RELOAD, false);
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ScheduleChangeModeNormalStop) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD);
+ peer_.SetState(GTK_STATE_NORMAL);
+ reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false);
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ScheduleChangeModeHotStop) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD);
+ peer_.SetState(GTK_STATE_PRELIGHT);
+ reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false);
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, ScheduleChangeModeTimerHotStop) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD);
+ peer_.SetState(GTK_STATE_PRELIGHT);
+ peer_.set_timer_running();
+ reload_.ChangeMode(ReloadButtonGtk::MODE_STOP, false);
+ peer_.set_timer_stopped();
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, OnLeaveIntendedStop) {
+ peer_.SetState(GTK_STATE_PRELIGHT);
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_RELOAD);
+ peer_.set_intended_mode(ReloadButtonGtk::MODE_STOP);
+ peer_.OnLeave();
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.visible_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_STOP, peer_.intended_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, OnLeaveIntendedReload) {
+ peer_.SetState(GTK_STATE_PRELIGHT);
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP);
+ peer_.set_intended_mode(ReloadButtonGtk::MODE_RELOAD);
+ peer_.OnLeave();
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode());
+}
+
+TEST_F(ReloadButtonGtkTest, OnClickedStop) {
+ peer_.set_visible_mode(ReloadButtonGtk::MODE_STOP);
+ peer_.OnClicked();
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.visible_mode());
+ EXPECT_EQ(ReloadButtonGtk::MODE_RELOAD, peer_.intended_mode());
+}
+
+} // namespace
diff --git a/chrome/browser/gtk/view_id_util.cc b/chrome/browser/gtk/view_id_util.cc
index ad4328c..95ef79e 100644
--- a/chrome/browser/gtk/view_id_util.cc
+++ b/chrome/browser/gtk/view_id_util.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -83,9 +83,6 @@ const char* GetNameFromID(ViewID id) {
case VIEW_ID_LOCATION_BAR:
return "chrome-location-bar";
- case VIEW_ID_GO_BUTTON:
- return "chrome-toolbar-go-button";
-
case VIEW_ID_BROWSER_ACTION_TOOLBAR:
return "chrome-toolbar-browser-actions-container";
diff --git a/chrome/browser/location_bar.h b/chrome/browser/location_bar.h
index 0ceee05..8b18be6 100644
--- a/chrome/browser/location_bar.h
+++ b/chrome/browser/location_bar.h
@@ -41,9 +41,6 @@ class LocationBar {
// Accepts the current string of text entered in the location bar.
virtual void AcceptInput() = 0;
- // Accepts the current input, overriding the disposition.
- virtual void AcceptInputWithDisposition(WindowOpenDisposition) = 0;
-
// Focuses the location bar. Optionally also selects its contents.
virtual void FocusLocation(bool select_all) = 0;
diff --git a/chrome/browser/theme_resources_util_unittest.cc b/chrome/browser/theme_resources_util_unittest.cc
index 6153e75..84e9395 100644
--- a/chrome/browser/theme_resources_util_unittest.cc
+++ b/chrome/browser/theme_resources_util_unittest.cc
@@ -19,7 +19,7 @@ struct TestCase {
TEST(ThemeResourcesUtil, SpotCheckIds) {
const TestCase kTestCases[] = {
{"back", IDR_BACK},
- {"go", IDR_GO},
+ {"stop", IDR_STOP},
{"omnibox_star", IDR_OMNIBOX_STAR},
{"sad_tab", IDR_SAD_TAB},
};
diff --git a/chrome/browser/view_ids.h b/chrome/browser/view_ids.h
index 8e788dd..0ce057b 100644
--- a/chrome/browser/view_ids.h
+++ b/chrome/browser/view_ids.h
@@ -39,7 +39,6 @@ enum ViewID {
VIEW_ID_HOME_BUTTON,
VIEW_ID_STAR_BUTTON,
VIEW_ID_LOCATION_BAR,
- VIEW_ID_GO_BUTTON,
VIEW_ID_PAGE_MENU,
VIEW_ID_APP_MENU,
VIEW_ID_AUTOCOMPLETE,
diff --git a/chrome/browser/views/browser_views_accessibility_browsertest.cc b/chrome/browser/views/browser_views_accessibility_browsertest.cc
index 000bc0f..bebb693 100644
--- a/chrome/browser/views/browser_views_accessibility_browsertest.cc
+++ b/chrome/browser/views/browser_views_accessibility_browsertest.cc
@@ -241,14 +241,6 @@ IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest,
ROLE_SYSTEM_GROUPING);
}
-// Retrieve accessibility object for Go button and verify accessibility info.
-IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestGoButtonAccObj) {
- // Verify Go button MSAA name and role.
- TestViewAccessibilityObject(GetToolbarView()->GetViewByID(VIEW_ID_GO_BUTTON),
- l10n_util::GetString(IDS_ACCNAME_GO),
- ROLE_SYSTEM_PUSHBUTTON);
-}
-
// Retrieve accessibility object for Page menu button and verify accessibility
// info.
IN_PROC_BROWSER_TEST_F(BrowserViewsAccessibilityTest, TestPageMenuAccObj) {
diff --git a/chrome/browser/views/frame/browser_view.cc b/chrome/browser/views/frame/browser_view.cc
index 7bc300f..b6d5c94 100644
--- a/chrome/browser/views/frame/browser_view.cc
+++ b/chrome/browser/views/frame/browser_view.cc
@@ -858,9 +858,9 @@ void BrowserView::SetFocusToLocationBar(bool select_all) {
}
}
-void BrowserView::UpdateStopGoState(bool is_loading, bool force) {
- toolbar_->go_button()->ChangeMode(
- is_loading ? GoButton::MODE_STOP : GoButton::MODE_GO, force);
+void BrowserView::UpdateReloadStopState(bool is_loading, bool force) {
+ toolbar_->reload_button()->ChangeMode(
+ is_loading ? ReloadButton::MODE_STOP : ReloadButton::MODE_RELOAD, force);
}
void BrowserView::UpdateToolbar(TabContents* contents,
diff --git a/chrome/browser/views/frame/browser_view.h b/chrome/browser/views/frame/browser_view.h
index a4cdd57..6c6c4b4 100644
--- a/chrome/browser/views/frame/browser_view.h
+++ b/chrome/browser/views/frame/browser_view.h
@@ -283,7 +283,7 @@ class BrowserView : public BrowserBubbleHost,
virtual bool IsFullscreen() const;
virtual LocationBar* GetLocationBar() const;
virtual void SetFocusToLocationBar(bool select_all);
- virtual void UpdateStopGoState(bool is_loading, bool force);
+ virtual void UpdateReloadStopState(bool is_loading, bool force);
virtual void UpdateToolbar(TabContents* contents, bool should_restore_state);
virtual void FocusToolbar();
virtual void FocusPageAndAppMenus();
diff --git a/chrome/browser/views/go_button.cc b/chrome/browser/views/go_button.cc
deleted file mode 100644
index 80d993b..0000000
--- a/chrome/browser/views/go_button.cc
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/views/go_button.h"
-
-#include "app/l10n_util.h"
-#include "base/compiler_specific.h"
-#include "base/i18n/rtl.h"
-#include "base/message_loop.h"
-#include "chrome/app/chrome_dll_resource.h"
-#include "chrome/browser/browser.h"
-#include "chrome/browser/profile.h"
-#include "chrome/browser/search_engines/template_url_model.h"
-#include "chrome/browser/views/event_utils.h"
-#include "chrome/browser/views/location_bar/location_bar_view.h"
-#include "grit/generated_resources.h"
-
-////////////////////////////////////////////////////////////////////////////////
-// GoButton, public:
-
-GoButton::GoButton(LocationBarView* location_bar, Browser* browser)
- : ToggleImageButton(this),
- ALLOW_THIS_IN_INITIALIZER_LIST(stop_timer_(this)),
- location_bar_(location_bar),
- browser_(browser),
- intended_mode_(MODE_GO),
- visible_mode_(MODE_GO) {
- DCHECK(location_bar_);
- set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN |
- views::Event::EF_MIDDLE_BUTTON_DOWN);
-}
-
-GoButton::~GoButton() {
- stop_timer_.RevokeAll();
-}
-
-void GoButton::ChangeMode(Mode mode, bool force) {
- intended_mode_ = mode;
-
- // If the change is forced, or the user isn't hovering the icon, or it's safe
- // to change it to the other image type, make the change immediately;
- // otherwise we'll let it happen later.
- if (force || (state() != BS_HOT) || ((mode == MODE_STOP) ?
- stop_timer_.empty() : (visible_mode_ != MODE_STOP))) {
- stop_timer_.RevokeAll();
- SetToggled(mode == MODE_STOP);
- visible_mode_ = mode;
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// GoButton, views::ButtonListener implementation:
-
-void GoButton::ButtonPressed(views::Button* button, const views::Event& event) {
- if (visible_mode_ == MODE_STOP) {
- browser_->Stop();
-
- // The user has clicked, so we can feel free to update the button,
- // even if the mouse is still hovering.
- ChangeMode(MODE_GO, true);
- } else if (visible_mode_ == MODE_GO && stop_timer_.empty()) {
- // If the go button is visible and not within the double click timer, go.
- browser_->Go(event_utils::DispositionFromEventFlags(mouse_event_flags()));
-
- // Stop any existing timers.
- stop_timer_.RevokeAll();
-
- // Start a timer - while this timer is running, the go button
- // cannot be changed to a stop button. We do not set intended_mode_
- // to MODE_STOP here as we want to wait for the browser to tell
- // us that it has started loading (and this may occur only after
- // some delay).
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- stop_timer_.NewRunnableMethod(&GoButton::OnButtonTimer),
- GetDoubleClickTimeMS());
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// GoButton, View overrides:
-
-void GoButton::OnMouseExited(const views::MouseEvent& e) {
- ChangeMode(intended_mode_, true);
- if (state() != BS_DISABLED)
- SetState(BS_NORMAL);
-}
-
-bool GoButton::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) {
- if (visible_mode_ == MODE_STOP) {
- tooltip->assign(l10n_util::GetString(IDS_TOOLTIP_STOP));
- return true;
- }
-
- std::wstring current_text(location_bar_->location_entry()->GetText());
- if (current_text.empty())
- return false;
-
- // Need to make sure the text direction is adjusted based on the locale so
- // that pure LTR strings are displayed appropriately on RTL locales. For
- // example, not adjusting the string will cause the URL
- // "http://www.google.com/" to be displayed in the tooltip as
- // "/http://www.google.com".
- //
- // Note that we mark the URL's text as LTR (instead of examining the
- // characters and guessing the text directionality) since URLs are always
- // treated as left-to-right text, even when they contain RTL characters.
- base::i18n::GetDisplayStringInLTRDirectionality(&current_text);
-
- AutocompleteEditModel* edit_model = location_bar_->location_entry()->model();
- if (edit_model->CurrentTextIsURL()) {
- tooltip->assign(l10n_util::GetStringF(IDS_TOOLTIP_GO_SITE, current_text));
- } else {
- std::wstring keyword(edit_model->keyword());
- TemplateURLModel* template_url_model =
- location_bar_->profile()->GetTemplateURLModel();
- const TemplateURL* provider =
- (keyword.empty() || edit_model->is_keyword_hint()) ?
- template_url_model->GetDefaultSearchProvider() :
- template_url_model->GetTemplateURLForKeyword(keyword);
- if (!provider)
- return false;
- tooltip->assign(l10n_util::GetStringF(IDS_TOOLTIP_GO_SEARCH,
- provider->AdjustedShortNameForLocaleDirection(), current_text));
- }
- return true;
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// GoButton, private:
-
-void GoButton::OnButtonTimer() {
- stop_timer_.RevokeAll();
- ChangeMode(intended_mode_, true);
-}
diff --git a/chrome/browser/views/location_bar/location_bar_view.cc b/chrome/browser/views/location_bar/location_bar_view.cc
index 828ce02..59dab7e 100644
--- a/chrome/browser/views/location_bar/location_bar_view.cc
+++ b/chrome/browser/views/location_bar/location_bar_view.cc
@@ -892,10 +892,6 @@ void LocationBarView::AcceptInput() {
location_entry_->model()->AcceptInput(CURRENT_TAB, false);
}
-void LocationBarView::AcceptInputWithDisposition(WindowOpenDisposition disp) {
- location_entry_->model()->AcceptInput(disp, false);
-}
-
void LocationBarView::FocusLocation(bool select_all) {
location_entry_->SetFocus();
if (select_all)
diff --git a/chrome/browser/views/location_bar/location_bar_view.h b/chrome/browser/views/location_bar/location_bar_view.h
index 51fa80e..1e40e63 100644
--- a/chrome/browser/views/location_bar/location_bar_view.h
+++ b/chrome/browser/views/location_bar/location_bar_view.h
@@ -184,7 +184,6 @@ class LocationBarView : public LocationBar,
virtual WindowOpenDisposition GetWindowOpenDisposition() const;
virtual PageTransition::Type GetPageTransition() const;
virtual void AcceptInput();
- virtual void AcceptInputWithDisposition(WindowOpenDisposition);
virtual void FocusLocation(bool select_all);
virtual void FocusSearch();
virtual void UpdateContentSettingsIcons();
diff --git a/chrome/browser/views/reload_button.cc b/chrome/browser/views/reload_button.cc
new file mode 100644
index 0000000..5ebd9bd
--- /dev/null
+++ b/chrome/browser/views/reload_button.cc
@@ -0,0 +1,112 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/views/reload_button.h"
+
+#include "app/l10n_util.h"
+#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/views/event_utils.h"
+#include "chrome/browser/views/location_bar/location_bar_view.h"
+#include "grit/generated_resources.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// ReloadButton, public:
+
+ReloadButton::ReloadButton(LocationBarView* location_bar, Browser* browser)
+ : ALLOW_THIS_IN_INITIALIZER_LIST(ToggleImageButton(this)),
+ location_bar_(location_bar),
+ browser_(browser),
+ intended_mode_(MODE_RELOAD),
+ visible_mode_(MODE_RELOAD) {
+ DCHECK(location_bar_);
+}
+
+ReloadButton::~ReloadButton() {
+}
+
+void ReloadButton::ChangeMode(Mode mode, bool force) {
+ intended_mode_ = mode;
+
+ // If the change is forced, or the user isn't hovering the icon, or it's safe
+ // to change it to the other image type, make the change immediately;
+ // otherwise we'll let it happen later.
+ if (force || (state() != BS_HOT) || ((mode == MODE_STOP) ?
+ !timer_.IsRunning() : (visible_mode_ != MODE_STOP))) {
+ timer_.Stop();
+ SetToggled(mode == MODE_STOP);
+ visible_mode_ = mode;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ReloadButton, views::ButtonListener implementation:
+
+void ReloadButton::ButtonPressed(views::Button* button,
+ const views::Event& event) {
+ if (visible_mode_ == MODE_STOP) {
+ browser_->Stop();
+ // The user has clicked, so we can feel free to update the button,
+ // even if the mouse is still hovering.
+ ChangeMode(MODE_RELOAD, true);
+ } else if (!timer_.IsRunning()) {
+ // Shift-clicking or ctrl-clicking the reload button means we should ignore
+ // any cached content.
+ // TODO(avayvod): eliminate duplication of this logic in
+ // CompactLocationBarView.
+ int command;
+ int flags = mouse_event_flags();
+ if (event.IsShiftDown() || event.IsControlDown()) {
+ command = IDC_RELOAD_IGNORING_CACHE;
+ // Mask off shift/ctrl so they aren't interpreted as affecting the
+ // disposition below.
+ flags &= ~(views::Event::EF_SHIFT_DOWN | views::Event::EF_CONTROL_DOWN);
+ } else {
+ command = IDC_RELOAD;
+ }
+
+ WindowOpenDisposition disposition =
+ event_utils::DispositionFromEventFlags(flags);
+ if (disposition == CURRENT_TAB) {
+ // Forcibly reset the location bar, since otherwise it won't discard any
+ // ongoing user edits, since it doesn't realize this is a user-initiated
+ // action.
+ location_bar_->Revert();
+ }
+
+ browser_->ExecuteCommandWithDisposition(command, disposition);
+
+ // Stop the timer.
+ timer_.Stop();
+
+ // Start a timer - while this timer is running, the reload button cannot be
+ // changed to a stop button. We do not set |intended_mode_| to MODE_STOP
+ // here as we want to wait for the browser to tell us that it has started
+ // loading (and this may occur only after some delay).
+ timer_.Start(base::TimeDelta::FromMilliseconds(GetDoubleClickTimeMS()),
+ this, &ReloadButton::OnButtonTimer);
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ReloadButton, View overrides:
+
+void ReloadButton::OnMouseExited(const views::MouseEvent& e) {
+ ChangeMode(intended_mode_, true);
+ if (state() != BS_DISABLED)
+ SetState(BS_NORMAL);
+}
+
+bool ReloadButton::GetTooltipText(const gfx::Point& p, std::wstring* tooltip) {
+ tooltip->assign(l10n_util::GetString((visible_mode_ == MODE_RELOAD) ?
+ IDS_TOOLTIP_RELOAD : IDS_TOOLTIP_STOP));
+ return true;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// ReloadButton, private:
+
+void ReloadButton::OnButtonTimer() {
+ ChangeMode(intended_mode_, true);
+}
diff --git a/chrome/browser/views/go_button.h b/chrome/browser/views/reload_button.h
index 8855b5a..20991f9 100644
--- a/chrome/browser/views/go_button.h
+++ b/chrome/browser/views/reload_button.h
@@ -2,11 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_VIEWS_GO_BUTTON_H__
-#define CHROME_BROWSER_VIEWS_GO_BUTTON_H__
+#ifndef CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__
+#define CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__
#include "base/basictypes.h"
-#include "base/task.h"
+#include "base/timer.h"
#include "views/controls/button/image_button.h"
class Browser;
@@ -14,23 +14,22 @@ class LocationBarView;
////////////////////////////////////////////////////////////////////////////////
//
-// GoButton
+// ReloadButton
//
-// The go button attached to the toolbar. It shows different tooltips
-// according to the content of the location bar and changes to a stop
-// button when a page load is in progress. Trickiness comes from the
-// desire to have the 'stop' button not change back to 'go' if the user's
-// mouse is hovering over it (to prevent mis-clicks).
+// The reload button in the toolbar, which changes to a stop button when a page
+// load is in progress. Trickiness comes from the desire to have the 'stop'
+// button not change back to 'reload' if the user's mouse is hovering over it
+// (to prevent mis-clicks).
//
////////////////////////////////////////////////////////////////////////////////
-class GoButton : public views::ToggleImageButton,
- public views::ButtonListener {
+class ReloadButton : public views::ToggleImageButton,
+ public views::ButtonListener {
public:
- enum Mode { MODE_GO = 0, MODE_STOP };
+ enum Mode { MODE_RELOAD = 0, MODE_STOP };
- GoButton(LocationBarView* location_bar, Browser* Browser);
- virtual ~GoButton();
+ ReloadButton(LocationBarView* location_bar, Browser* Browser);
+ virtual ~ReloadButton();
// Ask for a specified button state. If |force| is true this will be applied
// immediately.
@@ -46,7 +45,7 @@ class GoButton : public views::ToggleImageButton,
private:
void OnButtonTimer();
- ScopedRunnableMethodFactory<GoButton> stop_timer_;
+ base::OneShotTimer<ReloadButton> timer_;
LocationBarView* location_bar_;
Browser* browser_;
@@ -57,7 +56,7 @@ class GoButton : public views::ToggleImageButton,
// The currently-visible mode - this may different from the intended mode
Mode visible_mode_;
- DISALLOW_COPY_AND_ASSIGN(GoButton);
+ DISALLOW_IMPLICIT_CONSTRUCTORS(ReloadButton);
};
-#endif // CHROME_BROWSER_VIEWS_GO_BUTTON_H__
+#endif // CHROME_BROWSER_VIEWS_RELOAD_BUTTON_H__
diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc
index ad6fd6a..2db68f8 100644
--- a/chrome/browser/views/toolbar_view.cc
+++ b/chrome/browser/views/toolbar_view.cc
@@ -74,7 +74,6 @@ ToolbarView::ToolbarView(Browser* browser)
home_(NULL),
reload_(NULL),
location_bar_(NULL),
- go_(NULL),
browser_actions_(NULL),
page_menu_(NULL),
app_menu_(NULL),
@@ -92,7 +91,6 @@ ToolbarView::ToolbarView(Browser* browser)
browser_->command_updater()->AddCommandObserver(IDC_BACK, this);
browser_->command_updater()->AddCommandObserver(IDC_FORWARD, this);
browser_->command_updater()->AddCommandObserver(IDC_HOME, this);
- browser_->command_updater()->AddCommandObserver(IDC_RELOAD, this);
display_mode_ = browser->SupportsWindowFeature(Browser::FEATURE_TABSTRIP) ?
DISPLAYMODE_NORMAL : DISPLAYMODE_LOCATION;
@@ -154,7 +152,13 @@ void ToolbarView::Init(Profile* profile) {
home_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_HOME));
home_->SetID(VIEW_ID_HOME_BUTTON);
- reload_ = new views::ImageButton(this);
+ // Have to create this before |reload_| as |reload_|'s constructor needs it.
+ location_bar_ = new LocationBarView(profile, browser_->command_updater(),
+ model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ?
+ LocationBarView::POPUP : LocationBarView::NORMAL);
+ location_bar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_LOCATION));
+
+ reload_ = new ReloadButton(location_bar_, browser_);
reload_->set_triggerable_event_flags(views::Event::EF_LEFT_BUTTON_DOWN |
views::Event::EF_MIDDLE_BUTTON_DOWN);
reload_->set_tag(IDC_RELOAD);
@@ -162,15 +166,6 @@ void ToolbarView::Init(Profile* profile) {
reload_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_RELOAD));
reload_->SetID(VIEW_ID_RELOAD_BUTTON);
- location_bar_ = new LocationBarView(profile, browser_->command_updater(),
- model_, this, (display_mode_ == DISPLAYMODE_LOCATION) ?
- LocationBarView::POPUP : LocationBarView::NORMAL);
- location_bar_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_LOCATION));
-
- go_ = new GoButton(location_bar_, browser_);
- go_->SetAccessibleName(l10n_util::GetString(IDS_ACCNAME_GO));
- go_->SetID(VIEW_ID_GO_BUTTON);
-
browser_actions_ = new BrowserActionsContainer(browser_, this, true);
bool use_wrench_menu =
@@ -203,7 +198,6 @@ void ToolbarView::Init(Profile* profile) {
AddChildView(home_);
AddChildView(reload_);
AddChildView(location_bar_);
- AddChildView(go_);
AddChildView(browser_actions_);
AddChildView(app_menu_);
@@ -403,9 +397,6 @@ void ToolbarView::EnabledStateChangedForCommand(int id, bool enabled) {
case IDC_HOME:
button = home_;
break;
- case IDC_RELOAD:
- button = reload_;
- break;
}
if (button)
button->SetEnabled(enabled);
@@ -417,31 +408,14 @@ void ToolbarView::EnabledStateChangedForCommand(int id, bool enabled) {
void ToolbarView::ButtonPressed(views::Button* sender,
const views::Event& event) {
int command = sender->tag();
- int flags = sender->mouse_event_flags();
- // Shift-clicking or Ctrl-clicking the reload button means we should ignore
- // any cached content.
- // TODO(avayvod): eliminate duplication of this logic in
- // CompactLocationBarView.
- if ((command == IDC_RELOAD) &&
- (event.IsShiftDown() || event.IsControlDown())) {
- command = IDC_RELOAD_IGNORING_CACHE;
- // Mask off shift/ctrl so they aren't interpreted as affecting the
- // disposition below.
- flags &= ~(views::Event::EF_SHIFT_DOWN | views::Event::EF_CONTROL_DOWN);
- }
WindowOpenDisposition disposition =
- event_utils::DispositionFromEventFlags(flags);
- switch (command) {
- case IDC_BACK:
- case IDC_FORWARD:
- case IDC_RELOAD:
- case IDC_RELOAD_IGNORING_CACHE:
- if (disposition == CURRENT_TAB) {
- // Forcibly reset the location bar, since otherwise it won't discard any
- // ongoing user edits, since it doesn't realize this is a user-initiated
- // action.
- location_bar_->Revert();
- }
+ event_utils::DispositionFromEventFlags(sender->mouse_event_flags());
+ if ((disposition == CURRENT_TAB) &&
+ ((command == IDC_BACK) || (command == IDC_FORWARD))) {
+ // Forcibly reset the location bar, since otherwise it won't discard any
+ // ongoing user edits, since it doesn't realize this is a user-initiated
+ // action.
+ location_bar_->Revert();
}
browser_->ExecuteCommandWithDisposition(command, disposition);
}
@@ -544,9 +518,8 @@ gfx::Size ToolbarView::GetPreferredSize() {
forward_->GetPreferredSize().width() + kControlHorizOffset +
(show_home_button_.GetValue() ?
(home_->GetPreferredSize().width() + kControlHorizOffset) : 0) +
- reload_->GetPreferredSize().width() +
+ reload_->GetPreferredSize().width() + kControlHorizOffset +
browser_actions_->GetPreferredSize().width() +
- go_->GetPreferredSize().width() +
kMenuButtonOffset +
(bookmark_menu_ ? bookmark_menu_->GetPreferredSize().width() : 0) +
(page_menu_ ? page_menu_->GetPreferredSize().width() : 0) +
@@ -620,24 +593,21 @@ void ToolbarView::Layout() {
reload_->SetBounds(home_->x() + home_->width() + kControlHorizOffset, child_y,
reload_->GetPreferredSize().width(), child_height);
- int go_button_width = go_->GetPreferredSize().width();
int browser_actions_width = browser_actions_->GetPreferredSize().width();
int page_menu_width =
page_menu_ ? page_menu_->GetPreferredSize().width() : 0;
int app_menu_width = app_menu_->GetPreferredSize().width();
int bookmark_menu_width = bookmark_menu_ ?
bookmark_menu_->GetPreferredSize().width() : 0;
- int location_x = reload_->x() + reload_->width();
+ int location_x = reload_->x() + reload_->width() + kControlHorizOffset;
int available_width = width() - kPaddingRight - bookmark_menu_width -
app_menu_width - page_menu_width - browser_actions_width -
- kMenuButtonOffset - go_button_width - location_x;
+ kMenuButtonOffset - location_x;
location_bar_->SetBounds(location_x, child_y, std::max(available_width, 0),
child_height);
-
- go_->SetBounds(location_bar_->x() + location_bar_->width(), child_y,
- go_button_width, child_height);
- int next_menu_x = go_->x() + go_->width() + kMenuButtonOffset;
+ int next_menu_x =
+ location_bar_->x() + location_bar_->width() + kMenuButtonOffset;
browser_actions_->SetBounds(next_menu_x, 0, browser_actions_width, height());
// The browser actions need to do a layout explicitly, because when an
@@ -737,20 +707,14 @@ void ToolbarView::LoadImages() {
tp->GetBitmapNamed(IDR_RELOAD_H));
reload_->SetImage(views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_RELOAD_P));
- reload_->SetBackground(color, background,
- tp->GetBitmapNamed(IDR_RELOAD_MASK));
-
- go_->SetImage(views::CustomButton::BS_NORMAL, tp->GetBitmapNamed(IDR_GO));
- go_->SetImage(views::CustomButton::BS_HOT, tp->GetBitmapNamed(IDR_GO_H));
- go_->SetImage(views::CustomButton::BS_PUSHED, tp->GetBitmapNamed(IDR_GO_P));
- go_->SetToggledImage(views::CustomButton::BS_NORMAL,
+ reload_->SetToggledImage(views::CustomButton::BS_NORMAL,
tp->GetBitmapNamed(IDR_STOP));
- go_->SetToggledImage(views::CustomButton::BS_HOT,
+ reload_->SetToggledImage(views::CustomButton::BS_HOT,
tp->GetBitmapNamed(IDR_STOP_H));
- go_->SetToggledImage(views::CustomButton::BS_PUSHED,
+ reload_->SetToggledImage(views::CustomButton::BS_PUSHED,
tp->GetBitmapNamed(IDR_STOP_P));
- go_->SetBackground(color, background,
- tp->GetBitmapNamed(IDR_GO_MASK));
+ reload_->SetBackground(color, background,
+ tp->GetBitmapNamed(IDR_BUTTON_MASK));
// We use different menu button images if the locale is right-to-left.
if (page_menu_) {
diff --git a/chrome/browser/views/toolbar_view.h b/chrome/browser/views/toolbar_view.h
index 60c985c..a99d658 100644
--- a/chrome/browser/views/toolbar_view.h
+++ b/chrome/browser/views/toolbar_view.h
@@ -16,8 +16,8 @@
#include "chrome/browser/page_menu_model.h"
#include "chrome/browser/pref_member.h"
#include "chrome/browser/views/accessible_toolbar_view.h"
-#include "chrome/browser/views/go_button.h"
#include "chrome/browser/views/location_bar/location_bar_view.h"
+#include "chrome/browser/views/reload_button.h"
#include "views/controls/button/menu_button.h"
#include "views/controls/menu/menu.h"
#include "views/controls/menu/menu_wrapper.h"
@@ -85,7 +85,7 @@ class ToolbarView : public AccessibleToolbarView,
// Accessors...
Browser* browser() const { return browser_; }
BrowserActionsContainer* browser_actions() const { return browser_actions_; }
- GoButton* go_button() const { return go_; }
+ ReloadButton* reload_button() const { return reload_; }
LocationBarView* location_bar() const { return location_bar_; }
views::MenuButton* page_menu() const { return page_menu_; }
views::MenuButton* app_menu() const { return app_menu_; }
@@ -194,9 +194,8 @@ class ToolbarView : public AccessibleToolbarView,
views::ImageButton* back_;
views::ImageButton* forward_;
views::ImageButton* home_;
- views::ImageButton* reload_;
+ ReloadButton* reload_;
LocationBarView* location_bar_;
- GoButton* go_;
BrowserActionsContainer* browser_actions_;
views::MenuButton* page_menu_;
views::MenuButton* app_menu_;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 3131dcb..f9ad2d2 100755
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1339,8 +1339,6 @@
'browser/gtk/focus_store_gtk.h',
'browser/gtk/fullscreen_exit_bubble_gtk.cc',
'browser/gtk/fullscreen_exit_bubble_gtk.h',
- 'browser/gtk/go_button_gtk.cc',
- 'browser/gtk/go_button_gtk.h',
'browser/gtk/gtk_chrome_button.cc',
'browser/gtk/gtk_chrome_button.h',
'browser/gtk/gtk_chrome_link_button.cc',
@@ -1439,6 +1437,8 @@
'browser/gtk/page_info_window_gtk.cc',
'browser/gtk/process_singleton_dialog.cc',
'browser/gtk/process_singleton_dialog.h',
+ 'browser/gtk/reload_button_gtk.cc',
+ 'browser/gtk/reload_button_gtk.h',
'browser/gtk/repost_form_warning_gtk.cc',
'browser/gtk/repost_form_warning_gtk.h',
'browser/gtk/rounded_window.cc',
@@ -2402,8 +2402,6 @@
'browser/views/fullscreen_exit_bubble.h',
'browser/views/generic_info_view.cc',
'browser/views/generic_info_view.h',
- 'browser/views/go_button.cc',
- 'browser/views/go_button.h',
'browser/views/html_dialog_view.cc',
'browser/views/html_dialog_view.h',
'browser/views/hung_renderer_view.cc',
@@ -2520,6 +2518,8 @@
'browser/views/page_info_window_view.cc',
'browser/views/pinned_contents_info_bubble.cc',
'browser/views/pinned_contents_info_bubble.h',
+ 'browser/views/reload_button.cc',
+ 'browser/views/reload_button.h',
'browser/views/repost_form_warning_view.cc',
'browser/views/repost_form_warning_view.h',
'browser/views/restart_message_box.cc',
@@ -3056,8 +3056,6 @@
['include', '^browser/views/find_bar_host.h'],
['include', '^browser/views/fullscreen_exit_bubble.cc'],
['include', '^browser/views/fullscreen_exit_bubble.h'],
- ['include', '^browser/views/go_button.cc'],
- ['include', '^browser/views/go_button.h'],
['include', '^browser/views/html_dialog_view.cc'],
['include', '^browser/views/html_dialog_view.h'],
['include', '^browser/views/theme_install_bubble_view.cc'],
@@ -3104,6 +3102,10 @@
['include', '^browser/views/location_bar/star_view.h'],
['include', '^browser/views/location_bar_view.cc'],
['include', '^browser/views/location_bar_view.h'],
+ ['include', '^browser/views/modal_dialog_delegate.cc'],
+ ['include', '^browser/views/modal_dialog_delegate.h'],
+ ['include', '^browser/views/notifications/balloon_view_host.cc'],
+ ['include', '^browser/views/notifications/balloon_view_host.h'],
['include', '^browser/views/options/options_page_view.cc'],
['include', '^browser/views/options/options_page_view.h'],
['include', '^browser/views/page_info_window_view.cc'],
@@ -3113,21 +3115,15 @@
['include', '^browser/views/panels/panel_container.h'],
['include', '^browser/views/panels/panel_scroller.cc'],
['include', '^browser/views/panels/panel_scroller.h'],
- ['include', '^browser/views/panels/panel_scroller_header.cc'],
- ['include', '^browser/views/panels/panel_scroller_header.h'],
- ['include', '^browser/views/modal_dialog_delegate.cc'],
- ['include', '^browser/views/modal_dialog_delegate.h'],
- ['include', '^browser/views/notifications/balloon_view_host.cc'],
- ['include', '^browser/views/notifications/balloon_view_host.h'],
# Not necessary unless you're trying to build ChromeOS+views.
- #['include', '^browser/views/panels/panel_scroller.cc'],
- #['include', '^browser/views/panels/panel_scroller.h'],
#['include', '^browser/views/panels/panel_scroller_container.cc'],
#['include', '^browser/views/panels/panel_scroller_container.h'],
- #['include', '^browser/views/panels/panel_scroller_header.cc'],
- #['include', '^browser/views/panels/panel_scroller_header.h'],
+ ['include', '^browser/views/panels/panel_scroller_header.cc'],
+ ['include', '^browser/views/panels/panel_scroller_header.h'],
['include', '^browser/views/pinned_contents_info_bubble.cc'],
['include', '^browser/views/pinned_contents_info_bubble.h'],
+ ['include', '^browser/views/reload_button.cc'],
+ ['include', '^browser/views/reload_button.h'],
['include', '^browser/views/restart_message_box.cc'],
['include', '^browser/views/restart_message_box.h'],
['include', '^browser/views/sad_tab_view.cc'],
diff --git a/chrome/chrome_dll.gypi b/chrome/chrome_dll.gypi
index faede25..614746f 100644
--- a/chrome/chrome_dll.gypi
+++ b/chrome/chrome_dll.gypi
@@ -251,7 +251,6 @@
'app/theme/find_next_Template.pdf',
'app/theme/find_prev_Template.pdf',
'app/theme/forward_Template.pdf',
- 'app/theme/go_Template.pdf',
'app/theme/home_Template.pdf',
'app/theme/menu_chrome_rtl_Template.pdf',
'app/theme/menu_chrome_Template.pdf',
diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi
index 50c785c..041c8a2 100755
--- a/chrome/chrome_tests.gypi
+++ b/chrome/chrome_tests.gypi
@@ -797,13 +797,13 @@
'browser/gtk/bookmark_bar_gtk_unittest.cc',
'browser/gtk/bookmark_editor_gtk_unittest.cc',
'browser/gtk/bookmark_utils_gtk_unittest.cc',
- 'browser/gtk/go_button_gtk_unittest.cc',
'browser/gtk/gtk_chrome_shrinkable_hbox_unittest.cc',
'browser/gtk/gtk_expanded_container_unittest.cc',
'browser/gtk/gtk_theme_provider_unittest.cc',
'browser/gtk/keyword_editor_view_unittest.cc',
'browser/gtk/options/cookies_view_unittest.cc',
'browser/gtk/options/languages_page_gtk_unittest.cc',
+ 'browser/gtk/reload_button_gtk_unittest.cc',
'browser/gtk/status_icons/status_tray_gtk_unittest.cc',
'browser/gtk/tabs/tab_renderer_gtk_unittest.cc',
'browser/history/expire_history_backend_unittest.cc',
@@ -1095,12 +1095,12 @@
'sources/': [
['exclude', 'browser/gtk/bookmark_bar_gtk_unittest\\.cc$'],
['exclude', 'browser/gtk/bookmark_editor_gtk_unittest\\.cc$'],
- ['exclude', 'browser/gtk/go_button_gtk_unittest\\.cc$'],
['exclude', 'browser/gtk/gtk_chrome_shrinkable_hbox_unittest\\.cc$'],
['exclude', 'browser/gtk/gtk_expanded_container_unittest\\.cc$'],
['exclude', 'browser/gtk/gtk_theme_provider_unittest\\.cc$'],
['exclude', 'browser/gtk/options/cookies_view_unittest\\.cc$'],
['exclude', 'browser/gtk/options/languages_page_gtk_unittest\\.cc$'],
+ ['exclude', 'browser/gtk/reload_button_gtk_unittest\\.cc$'],
['exclude', 'browser/gtk/status_icons/status_tray_gtk_unittest\\.cc$'],
['exclude', 'browser/gtk/tabs/tab_renderer_gtk_unittest\\.cc$'],
['include', 'browser/views/bookmark_context_menu_test.cc$'],
@@ -1131,11 +1131,11 @@
'sources!': [
# Blocked on bookmark manager.
'browser/bookmarks/bookmark_context_menu_controller_unittest.cc',
- 'browser/views/accessibility_event_router_views_unittest.cc',
+ 'browser/gtk/reload_button_gtk_unittest.cc',
+ 'browser/gtk/tabs/tab_renderer_gtk_unittest.cc',
'browser/password_manager/password_store_default_unittest.cc',
+ 'browser/views/accessibility_event_router_views_unittest.cc',
'browser/views/bookmark_context_menu_test.cc',
- 'browser/gtk/go_button_gtk_unittest.cc',
- 'browser/gtk/tabs/tab_renderer_gtk_unittest.cc',
'tools/convert_dict/convert_dict_unittest.cc',
'../third_party/hunspell/google/hunspell_tests.cc',
],
diff --git a/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak b/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak
index 42bd2fd..0de5e42 100644
--- a/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak
+++ b/chrome/test/data/profiles/complex_theme/Default/Extensions/mblmlcbknbnfebdfjnolmcapmdofhmme/1.1/Cached Theme.pak
Binary files differ
diff --git a/chrome/test/test_browser_window.h b/chrome/test/test_browser_window.h
index b35e070..adf3277 100644
--- a/chrome/test/test_browser_window.h
+++ b/chrome/test/test_browser_window.h
@@ -43,7 +43,7 @@ class TestBrowserWindow : public BrowserWindow {
return const_cast<TestLocationBar*>(&location_bar_);
}
virtual void SetFocusToLocationBar(bool select_all) {}
- virtual void UpdateStopGoState(bool is_loading, bool force) {}
+ virtual void UpdateReloadStopState(bool is_loading, bool force) {}
virtual void UpdateToolbar(TabContents* contents,
bool should_restore_state) {}
virtual void FocusToolbar() {}
diff --git a/chrome/test/test_location_bar.h b/chrome/test/test_location_bar.h
index 6face25..3b329bd 100644
--- a/chrome/test/test_location_bar.h
+++ b/chrome/test/test_location_bar.h
@@ -35,7 +35,6 @@ class TestLocationBar : public LocationBar {
}
virtual PageTransition::Type GetPageTransition() const { return transition_; }
virtual void AcceptInput() {}
- virtual void AcceptInputWithDisposition(WindowOpenDisposition) {}
virtual void FocusLocation(bool select_all) {}
virtual void FocusSearch() {}
virtual void UpdateContentSettingsIcons() {}