15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_COCOA_LOCATION_BAR_LOCATION_BAR_VIEW_MAC_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_LOCATION_BAR_VIEW_MAC_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#import <Cocoa/Cocoa.h>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_vector.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/prefs/pref_member.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/cocoa/omnibox/omnibox_view_mac.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/omnibox/location_bar.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/omnibox/omnibox_edit_controller.h"
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "chrome/browser/ui/search/search_model_observer.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/content_settings_types.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)@class AutocompleteTextField;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class CommandUpdater;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ContentSettingDecoration;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class EVBubbleDecoration;
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class GeneratedCreditCardDecoration;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class KeywordHintDecoration;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarDecoration;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationIconDecoration;
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class MicSearchDecoration;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class PageActionDecoration;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class Profile;
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class SearchButtonDecoration;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class SelectedKeywordDecoration;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class StarDecoration;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ZoomDecoration;
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ZoomDecorationTest;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A C++ bridge class that represents the location bar UI element to
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the portable code.  Wires up an OmniboxViewMac instance to
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the location bar text field, which handles most of the work.
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class LocationBarViewMac : public LocationBar,
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           public LocationBarTesting,
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           public OmniboxEditController,
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                           public content::NotificationObserver,
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                           public SearchModelObserver {
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LocationBarViewMac(AutocompleteTextField* field,
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     CommandUpdater* command_updater,
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     Profile* profile,
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                     Browser* browser);
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~LocationBarViewMac();
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from LocationBar:
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ShowFirstRunBubble() OVERRIDE;
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual GURL GetDestinationURL() const OVERRIDE;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual WindowOpenDisposition GetWindowOpenDisposition() const OVERRIDE;
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual content::PageTransition GetPageTransition() const OVERRIDE;
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void AcceptInput() OVERRIDE;
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void FocusLocation(bool select_all) OVERRIDE;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void FocusSearch() OVERRIDE;
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateContentSettingsIcons() OVERRIDE;
65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual void UpdateManagePasswordsIconAndBubble() OVERRIDE {};
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdatePageActions() OVERRIDE;
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void InvalidatePageActions() OVERRIDE;
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void UpdateOpenPDFInReaderPrompt() OVERRIDE;
69ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch  virtual void UpdateGeneratedCreditCardView() OVERRIDE;
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void SaveStateToContents(content::WebContents* contents) OVERRIDE;
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Revert() OVERRIDE;
72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual const OmniboxView* GetOmniboxView() const OVERRIDE;
73f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual OmniboxView* GetOmniboxView() OVERRIDE;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual LocationBarTesting* GetLocationBarForTesting() OVERRIDE;
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Overridden from LocationBarTesting:
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int PageActionCount() OVERRIDE;
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual int PageActionVisibleCount() OVERRIDE;
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ExtensionAction* GetPageAction(size_t index) OVERRIDE;
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ExtensionAction* GetVisiblePageAction(size_t index) OVERRIDE;
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void TestPageActionPressed(size_t index) OVERRIDE;
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual bool GetBookmarkStarVisibility() OVERRIDE;
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set/Get the editable state of the field.
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetEditable(bool editable);
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsEditable();
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Set the starred state of the bookmark star.
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetStarred(bool starred);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Happens when the zoom changes for the active tab. |can_show_bubble| is
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // false when the change in zoom for the active tab wasn't an explicit user
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // action (e.g. switching tabs, creating a new tab, creating a new browser).
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Additionally, |can_show_bubble| will only be true when the bubble wouldn't
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // be obscured by other UI (wrench menu) or redundant (+/- from wrench).
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ZoomChangedForActiveTab(bool can_show_bubble);
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get the point in window coordinates on the star for the bookmark bubble to
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // aim at.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NSPoint GetBookmarkBubblePoint() const;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Get the point in window coordinates in the security icon at which the page
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // info bubble aims.
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NSPoint GetPageInfoBubblePoint() const;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
106f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Get the point in window coordinates in the "generated cc" icon at which the
107f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // corresponding info bubble aims.
108f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  NSPoint GetGeneratedCreditCardBubblePoint() const;
109f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When any image decorations change, call this to ensure everything is
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // redrawn and laid out if necessary.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void OnDecorationsChanged();
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Layout the various decorations which live in the field.
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void Layout();
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Re-draws |decoration| if it's already being displayed.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RedrawDecoration(LocationBarDecoration* decoration);
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets preview_enabled_ for the PageActionImageView associated with this
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // |page_action|. If |preview_enabled|, the location bar will display the
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // PageAction icon even if it has not been activated by the extension.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This is used by the ExtensionInstalledBubble to preview what the icon
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // will look like for the user upon installation of the extension.
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetPreviewEnabledPageAction(ExtensionAction* page_action,
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   bool preview_enabled);
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Retrieve the frame for the given |page_action|.
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NSRect GetPageActionFrame(ExtensionAction* page_action);
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Return |page_action|'s info-bubble point in window coordinates.
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This function should always be called with a visible page action.
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // If |page_action| is not a page action or not visible, NOTREACHED()
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // is called and this function returns |NSZeroPoint|.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NSPoint GetPageActionBubblePoint(ExtensionAction* page_action);
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // OmniboxEditController:
1384e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  virtual void Update(const content::WebContents* contents) OVERRIDE;
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnChanged() OVERRIDE;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void OnSetFocus() OVERRIDE;
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual InstantController* GetInstant() OVERRIDE;
1423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual content::WebContents* GetWebContents() OVERRIDE;
1433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual ToolbarModel* GetToolbarModel() OVERRIDE;
1443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual const ToolbarModel* GetToolbarModel() const OVERRIDE;
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
146a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)  NSImage* GetKeywordImage(const base::string16& keyword);
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutocompleteTextField* GetAutocompleteTextField() { return field_; }
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // content::NotificationObserver:
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void Observe(int type,
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationSource& source,
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                       const content::NotificationDetails& details) OVERRIDE;
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // SearchModelObserver:
1573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual void ModelChanged(const SearchModel::State& old_state,
1583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                            const SearchModel::State& new_state) OVERRIDE;
1593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* browser() const { return browser_; }
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  friend ZoomDecorationTest;
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Posts |notification| to the default notification center.
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void PostNotification(NSString* notification);
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Return the decoration for |page_action|.
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PageActionDecoration* GetPageActionDecoration(ExtensionAction* page_action);
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Clear the page-action decorations.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void DeletePageActionDecorations();
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  void OnEditBookmarksEnabledChanged();
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Re-generate the page-action decorations from the profile's
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // extension service.
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void RefreshPageActionDecorations();
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates visibility of the content settings icons based on the current
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // tab contents state.
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool RefreshContentSettingsDecorations();
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void ShowFirstRunBubbleInternal();
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Checks if the bookmark star should be enabled or not.
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool IsStarEnabled();
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Updates the zoom decoration in the omnibox with the current zoom level.
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateZoomDecoration();
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Ensures the star decoration is visible or hidden, as required.
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void UpdateStarDecorationVisibility();
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1953551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Updates the voice search decoration. Returns true if the visible state was
1963551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // changed.
1973551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  bool UpdateMicSearchDecorationVisibility();
1983551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
199d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  // Checks if an extension has specified the bookmark star be hidden.
200d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)  bool IsBookmarkStarHiddenByExtension();
201d57369da7c6519fef57db42085f7b42d4c8845c1Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<OmniboxViewMac> omnibox_view_;
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  AutocompleteTextField* field_;  // owned by tab controller
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A decoration that shows an icon to the left of the address.
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<LocationIconDecoration> location_icon_decoration_;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A decoration that shows the keyword-search bubble on the left.
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SelectedKeywordDecoration> selected_keyword_decoration_;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A decoration that shows a lock icon and ev-cert label in a bubble
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // on the left.
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<EVBubbleDecoration> ev_bubble_decoration_;
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Bookmark star right of page actions.
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<StarDecoration> star_decoration_;
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // A zoom icon at the end of the omnibox, which shows at non-standard zoom
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // levels.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<ZoomDecoration> zoom_decoration_;
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The installed page actions.
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::vector<ExtensionAction*> page_actions_;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Decorations for the installed Page Actions.
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ScopedVector<PageActionDecoration> page_action_decorations_;
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The content blocked decorations.
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ScopedVector<ContentSettingDecoration> content_setting_decorations_;
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Keyword hint decoration displayed on the right-hand side.
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<KeywordHintDecoration> keyword_hint_decoration_;
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // The voice search icon.
2363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  scoped_ptr<MicSearchDecoration> mic_search_decoration_;
2373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
238f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // Generated CC hint decoration.
239f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<GeneratedCreditCardDecoration> generated_credit_card_decoration_;
240f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
241f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  // The right-hand-side search button that is shown on search result pages.
242f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  scoped_ptr<SearchButtonDecoration> search_button_decoration_;
243f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Profile* profile_;
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Browser* browser_;
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to register for notifications received by NotificationObserver.
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::NotificationRegistrar registrar_;
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to schedule a task for the first run info bubble.
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::WeakPtrFactory<LocationBarViewMac> weak_ptr_factory_;
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Used to change the visibility of the star decoration.
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BooleanPrefMember edit_bookmarks_enabled_;
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(LocationBarViewMac);
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_LOCATION_BAR_VIEW_MAC_H_
261