| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ | 5 #ifndef CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ |
| 6 #define CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ | 6 #define CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <map> | 9 #include <map> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #import <Cocoa/Cocoa.h> | 12 #import <Cocoa/Cocoa.h> |
| 13 | 13 |
| 14 #include "base/scoped_nsobject.h" | 14 #include "base/scoped_nsobject.h" |
| 15 #include "base/scoped_ptr.h" | 15 #include "base/scoped_ptr.h" |
| 16 #include "base/scoped_vector.h" |
| 16 #include "chrome/browser/autocomplete/autocomplete_edit.h" | 17 #include "chrome/browser/autocomplete/autocomplete_edit.h" |
| 17 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" | 18 #include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h" |
| 18 #include "chrome/browser/extensions/image_loading_tracker.h" | 19 #include "chrome/browser/extensions/image_loading_tracker.h" |
| 19 #include "chrome/browser/location_bar.h" | 20 #include "chrome/browser/location_bar.h" |
| 20 #include "chrome/browser/toolbar_model.h" | 21 #include "chrome/browser/toolbar_model.h" |
| 22 #include "chrome/common/content_settings_types.h" |
| 21 #include "third_party/skia/include/core/SkBitmap.h" | 23 #include "third_party/skia/include/core/SkBitmap.h" |
| 22 | 24 |
| 23 @class AutocompleteTextField; | 25 @class AutocompleteTextField; |
| 24 class BubblePositioner; | 26 class BubblePositioner; |
| 25 class CommandUpdater; | 27 class CommandUpdater; |
| 26 @class ExtensionPopupController; | 28 @class ExtensionPopupController; |
| 27 class Profile; | 29 class Profile; |
| 28 class ToolbarModel; | 30 class ToolbarModel; |
| 29 | 31 |
| 30 // A C++ bridge class that represents the location bar UI element to | 32 // A C++ bridge class that represents the location bar UI element to |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 void SetLabel(NSString* text, NSFont* baseFont, NSColor* color); | 145 void SetLabel(NSString* text, NSFont* baseFont, NSColor* color); |
| 144 | 146 |
| 145 // Sets the visibility. SetImage() should be called with a valid image | 147 // Sets the visibility. SetImage() should be called with a valid image |
| 146 // before the visibility is set to |true|. | 148 // before the visibility is set to |true|. |
| 147 void SetVisible(bool visible); | 149 void SetVisible(bool visible); |
| 148 | 150 |
| 149 const NSImage* GetImage() const { return image_; } | 151 const NSImage* GetImage() const { return image_; } |
| 150 const NSAttributedString* GetLabel() const { return label_; } | 152 const NSAttributedString* GetLabel() const { return label_; } |
| 151 bool IsVisible() const { return visible_; } | 153 bool IsVisible() const { return visible_; } |
| 152 | 154 |
| 155 // Returns the tooltip for this image view or |nil| if there is none. |
| 156 virtual const NSString* GetToolTip() { return nil; } |
| 157 |
| 158 // Called on mouse down. |
| 159 virtual void OnMousePressed(NSRect bounds) {} |
| 160 |
| 161 // Called to get the icon's context menu. Return |nil| for no menu. |
| 162 virtual NSMenu* GetMenu() { return nil; } |
| 163 |
| 153 private: | 164 private: |
| 154 scoped_nsobject<NSImage> image_; | 165 scoped_nsobject<NSImage> image_; |
| 155 | 166 |
| 156 // The label shown next to the icon, or nil if none. | 167 // The label shown next to the icon, or nil if none. |
| 157 scoped_nsobject<NSAttributedString> label_; | 168 scoped_nsobject<NSAttributedString> label_; |
| 158 | 169 |
| 159 bool visible_; | 170 bool visible_; |
| 160 | 171 |
| 161 DISALLOW_COPY_AND_ASSIGN(LocationBarImageView); | 172 DISALLOW_COPY_AND_ASSIGN(LocationBarImageView); |
| 162 }; | 173 }; |
| 163 | 174 |
| 164 // SecurityImageView is used to display the lock or warning icon when the | 175 // SecurityImageView is used to display the lock or warning icon when the |
| 165 // current URL's scheme is https. | 176 // current URL's scheme is https. |
| 166 class SecurityImageView : public LocationBarImageView { | 177 class SecurityImageView : public LocationBarImageView { |
| 167 public: | 178 public: |
| 168 enum Image { | 179 enum Image { |
| 169 LOCK = 0, | 180 LOCK = 0, |
| 170 WARNING | 181 WARNING |
| 171 }; | 182 }; |
| 172 | 183 |
| 173 SecurityImageView(LocationBarViewMac* owner, | 184 SecurityImageView(LocationBarViewMac* owner, |
| 174 Profile* profile, | 185 Profile* profile, |
| 175 ToolbarModel* model); | 186 ToolbarModel* model); |
| 176 virtual ~SecurityImageView(); | 187 virtual ~SecurityImageView(); |
| 177 | 188 |
| 178 // Sets the image to the appropriate icon. | 189 // Sets the image to the appropriate icon. |
| 179 void SetImageShown(Image image); | 190 void SetImageShown(Image image); |
| 180 | 191 |
| 181 // Shows the page info dialog. Virtual so it can be overridden for testing. | 192 // Shows the page info dialog. |
| 182 virtual bool OnMousePressed(); | 193 virtual void OnMousePressed(NSRect bounds); |
| 183 | 194 |
| 184 private: | 195 private: |
| 185 // The lock icon shown when using HTTPS. Loaded lazily, the first time it's | 196 // The lock icon shown when using HTTPS. Loaded lazily, the first time it's |
| 186 // needed. | 197 // needed. |
| 187 scoped_nsobject<NSImage> lock_icon_; | 198 scoped_nsobject<NSImage> lock_icon_; |
| 188 | 199 |
| 189 // The warning icon shown when HTTPS is broken. Loaded lazily, the first | 200 // The warning icon shown when HTTPS is broken. Loaded lazily, the first |
| 190 // time it's needed. | 201 // time it's needed. |
| 191 scoped_nsobject<NSImage> warning_icon_; | 202 scoped_nsobject<NSImage> warning_icon_; |
| 192 | 203 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 216 | 227 |
| 217 void set_preview_enabled(bool enabled) { preview_enabled_ = enabled; } | 228 void set_preview_enabled(bool enabled) { preview_enabled_ = enabled; } |
| 218 | 229 |
| 219 bool preview_enabled() { return preview_enabled_; } | 230 bool preview_enabled() { return preview_enabled_; } |
| 220 | 231 |
| 221 // Return the size of the image, or a default size if no image available | 232 // Return the size of the image, or a default size if no image available |
| 222 // and preview is enabled. | 233 // and preview is enabled. |
| 223 virtual NSSize GetImageSize(); | 234 virtual NSSize GetImageSize(); |
| 224 | 235 |
| 225 // Either notify listeners or show a popup depending on the Page Action. | 236 // Either notify listeners or show a popup depending on the Page Action. |
| 226 // Virtual so it can be overridden for testing. | 237 virtual void OnMousePressed(NSRect bounds); |
| 227 virtual bool OnMousePressed(NSRect bounds); | |
| 228 | 238 |
| 229 // Overridden from ImageLoadingTracker. | 239 // Overridden from ImageLoadingTracker. |
| 230 virtual void OnImageLoaded(SkBitmap* image, size_t index); | 240 virtual void OnImageLoaded(SkBitmap* image, size_t index); |
| 231 | 241 |
| 232 // Called to notify the Page Action that it should determine whether to be | 242 // Called to notify the Page Action that it should determine whether to be |
| 233 // visible or hidden. |contents| is the TabContents that is active, |url| | 243 // visible or hidden. |contents| is the TabContents that is active, |url| |
| 234 // is the current page URL. | 244 // is the current page URL. |
| 235 void UpdateVisibility(TabContents* contents, const GURL& url); | 245 void UpdateVisibility(TabContents* contents, const GURL& url); |
| 236 | 246 |
| 237 // Sets the tooltip for this Page Action image. | 247 // Sets the tooltip for this Page Action image. |
| 238 void SetToolTip(NSString* tooltip); | 248 void SetToolTip(NSString* tooltip); |
| 239 void SetToolTip(std::string tooltip); | 249 void SetToolTip(std::string tooltip); |
| 240 | 250 |
| 241 // Returns the tooltip for this Page Action image or |nil| if there is none. | 251 // Returns the tooltip for this Page Action image or |nil| if there is none. |
| 242 const NSString* GetToolTip(); | 252 virtual const NSString* GetToolTip(); |
| 253 |
| 254 // Overridden to return a menu. |
| 255 virtual NSMenu* GetMenu(); |
| 243 | 256 |
| 244 protected: | 257 protected: |
| 245 // For unit testing only. | 258 // For unit testing only. |
| 246 PageActionImageView() : owner_(NULL), | 259 PageActionImageView() : owner_(NULL), |
| 247 profile_(NULL), | 260 profile_(NULL), |
| 248 page_action_(NULL), | 261 page_action_(NULL), |
| 249 tracker_(NULL), | 262 tracker_(NULL), |
| 250 current_tab_id_(-1), | 263 current_tab_id_(-1), |
| 251 preview_enabled_(false) {} | 264 preview_enabled_(false) {} |
| 252 | 265 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 // This is used for post-install visual feedback. The page_action icon | 299 // This is used for post-install visual feedback. The page_action icon |
| 287 // is briefly shown even if it hasn't been enabled by its extension. | 300 // is briefly shown even if it hasn't been enabled by its extension. |
| 288 bool preview_enabled_; | 301 bool preview_enabled_; |
| 289 | 302 |
| 290 // Used to register for notifications received by NotificationObserver. | 303 // Used to register for notifications received by NotificationObserver. |
| 291 NotificationRegistrar registrar_; | 304 NotificationRegistrar registrar_; |
| 292 | 305 |
| 293 DISALLOW_COPY_AND_ASSIGN(PageActionImageView); | 306 DISALLOW_COPY_AND_ASSIGN(PageActionImageView); |
| 294 }; | 307 }; |
| 295 | 308 |
| 309 // ContentBlockedImageView is used to display the content settings images |
| 310 // when types of contents are blocked on the current page. |
| 311 class ContentBlockedImageView : public LocationBarImageView { |
| 312 public: |
| 313 ContentBlockedImageView(ContentSettingsType settings_type, |
| 314 LocationBarViewMac* owner, |
| 315 Profile* profile); |
| 316 virtual ~ContentBlockedImageView(); |
| 317 |
| 318 // Shows a content settings bubble. |
| 319 void OnMousePressed(NSRect bounds); |
| 320 |
| 321 // Returns the settings type this shows up for. |
| 322 ContentSettingsType settings_type() { return settings_type_; } |
| 323 |
| 324 // Returns the tooltip for this Page Action image or |nil| if there is none. |
| 325 virtual const NSString* GetToolTip(); |
| 326 |
| 327 private: |
| 328 void SetToolTip(NSString* tooltip); |
| 329 |
| 330 // The type of content handled by this view. |
| 331 ContentSettingsType settings_type_; |
| 332 |
| 333 LocationBarViewMac* owner_; |
| 334 Profile* profile_; |
| 335 scoped_nsobject<NSString> tooltip_; |
| 336 |
| 337 DISALLOW_COPY_AND_ASSIGN(ContentBlockedImageView); |
| 338 }; |
| 339 typedef ScopedVector<ContentBlockedImageView> ContentBlockedViews; |
| 340 |
| 296 class PageActionViewList { | 341 class PageActionViewList { |
| 297 public: | 342 public: |
| 298 PageActionViewList(LocationBarViewMac* location_bar, | 343 PageActionViewList(LocationBarViewMac* location_bar, |
| 299 Profile* profile, | 344 Profile* profile, |
| 300 ToolbarModel* toolbar_model) | 345 ToolbarModel* toolbar_model) |
| 301 : owner_(location_bar), | 346 : owner_(location_bar), |
| 302 profile_(profile), | 347 profile_(profile), |
| 303 toolbar_model_(toolbar_model) {} | 348 toolbar_model_(toolbar_model) {} |
| 304 ~PageActionViewList() { | 349 ~PageActionViewList() { |
| 305 DeleteAll(); | 350 DeleteAll(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 334 private: | 379 private: |
| 335 // Sets the SSL icon we should be showing. | 380 // Sets the SSL icon we should be showing. |
| 336 void SetSecurityIcon(ToolbarModel::Icon icon); | 381 void SetSecurityIcon(ToolbarModel::Icon icon); |
| 337 | 382 |
| 338 // Sets the label for the SSL icon. | 383 // Sets the label for the SSL icon. |
| 339 void SetSecurityIconLabel(); | 384 void SetSecurityIconLabel(); |
| 340 | 385 |
| 341 // Posts |notification| to the default notification center. | 386 // Posts |notification| to the default notification center. |
| 342 void PostNotification(const NSString* notification); | 387 void PostNotification(const NSString* notification); |
| 343 | 388 |
| 389 // Updates visibility of the content blocked icons based on the current |
| 390 // tab contents state. |
| 391 void RefreshContentBlockedViews(); |
| 392 |
| 344 scoped_ptr<AutocompleteEditViewMac> edit_view_; | 393 scoped_ptr<AutocompleteEditViewMac> edit_view_; |
| 345 | 394 |
| 346 CommandUpdater* command_updater_; // Weak, owned by Browser. | 395 CommandUpdater* command_updater_; // Weak, owned by Browser. |
| 347 | 396 |
| 348 AutocompleteTextField* field_; // owned by tab controller | 397 AutocompleteTextField* field_; // owned by tab controller |
| 349 | 398 |
| 350 // When we get an OnAutocompleteAccept notification from the autocomplete | 399 // When we get an OnAutocompleteAccept notification from the autocomplete |
| 351 // edit, we save the input string so we can give it back to the browser on | 400 // edit, we save the input string so we can give it back to the browser on |
| 352 // the LocationBar interface via GetInputString(). | 401 // the LocationBar interface via GetInputString(). |
| 353 std::wstring location_input_; | 402 std::wstring location_input_; |
| 354 | 403 |
| 355 // The user's desired disposition for how their input should be opened. | 404 // The user's desired disposition for how their input should be opened. |
| 356 WindowOpenDisposition disposition_; | 405 WindowOpenDisposition disposition_; |
| 357 | 406 |
| 358 // The view that shows the lock/warning when in HTTPS mode. | 407 // The view that shows the lock/warning when in HTTPS mode. |
| 359 SecurityImageView security_image_view_; | 408 SecurityImageView security_image_view_; |
| 360 | 409 |
| 361 // Any installed Page Actions. | 410 // Any installed Page Actions. |
| 362 PageActionViewList page_action_views_; | 411 PageActionViewList page_action_views_; |
| 363 | 412 |
| 413 // The content blocked views. |
| 414 ContentBlockedViews content_blocked_views_; |
| 415 |
| 364 Profile* profile_; | 416 Profile* profile_; |
| 365 | 417 |
| 366 Browser* browser_; | 418 Browser* browser_; |
| 367 | 419 |
| 368 ToolbarModel* toolbar_model_; // Weak, owned by Browser. | 420 ToolbarModel* toolbar_model_; // Weak, owned by Browser. |
| 369 | 421 |
| 370 // Image used in drawing keyword hint. | 422 // Image used in drawing keyword hint. |
| 371 scoped_nsobject<NSImage> tab_button_image_; | 423 scoped_nsobject<NSImage> tab_button_image_; |
| 372 | 424 |
| 373 // The transition type to use for the navigation. | 425 // The transition type to use for the navigation. |
| 374 PageTransition::Type transition_; | 426 PageTransition::Type transition_; |
| 375 | 427 |
| 376 // Used to register for notifications received by NotificationObserver. | 428 // Used to register for notifications received by NotificationObserver. |
| 377 NotificationRegistrar registrar_; | 429 NotificationRegistrar registrar_; |
| 378 | 430 |
| 379 DISALLOW_COPY_AND_ASSIGN(LocationBarViewMac); | 431 DISALLOW_COPY_AND_ASSIGN(LocationBarViewMac); |
| 380 }; | 432 }; |
| 381 | 433 |
| 382 #endif // CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ | 434 #endif // CHROME_BROWSER_COCOA_LOCATION_BAR_VIEW_MAC_H_ |
| OLD | NEW |