1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#ifndef CHROME_BROWSER_UI_COCOA_LOCATION_BAR_VIEW_MAC_H_
621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#define CHROME_BROWSER_UI_COCOA_LOCATION_BAR_VIEW_MAC_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#import <Cocoa/Cocoa.h>
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_nsobject.h"
14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
15ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_vector.h"
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autocomplete/autocomplete_edit.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/autocomplete/autocomplete_edit_view_mac.h"
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/extensions/image_loading_tracker.h"
193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "chrome/browser/first_run/first_run.h"
20ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/prefs/pref_member.h"
2121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/omnibox/location_bar.h"
2221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "chrome/browser/ui/toolbar/toolbar_model.h"
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/common/content_settings_types.h"
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@class AutocompleteTextField;
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass CommandUpdater;
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContentSettingDecoration;
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ContentSettingImageModel;
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass EVBubbleDecoration;
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch@class ExtensionPopupController;
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass KeywordHintDecoration;
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocationIconDecoration;
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PageActionDecoration;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass SelectedKeywordDecoration;
363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickclass SkBitmap;
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass StarDecoration;
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass ToolbarModel;
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// A C++ bridge class that represents the location bar UI element to
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the portable code.  Wires up an AutocompleteEditViewMac instance to
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// the location bar text field, which handles most of the work.
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass LocationBarViewMac : public AutocompleteEditController,
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           public LocationBar,
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           public LocationBarTesting,
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                           public NotificationObserver {
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  LocationBarViewMac(AutocompleteTextField* field,
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     CommandUpdater* command_updater,
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     ToolbarModel* toolbar_model,
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     Profile* profile,
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                     Browser* browser);
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~LocationBarViewMac();
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Overridden from LocationBar:
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void ShowFirstRunBubble(FirstRun::BubbleType bubble_type);
58ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual void SetSuggestedText(const string16& text,
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                InstantCompleteBehavior behavior);
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual std::wstring GetInputString() const;
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual WindowOpenDisposition GetWindowOpenDisposition() const;
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual PageTransition::Type GetPageTransition() const;
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void AcceptInput();
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void FocusLocation(bool select_all);
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void FocusSearch();
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void UpdateContentSettingsIcons();
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void UpdatePageActions();
68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void InvalidatePageActions();
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SaveStateToContents(TabContents* contents);
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Revert();
71dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual const AutocompleteEditView* location_entry() const;
72dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual AutocompleteEditView* location_entry();
73dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual LocationBarTesting* GetLocationBarForTesting();
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Overridden from LocationBarTesting:
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual int PageActionCount();
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual int PageActionVisibleCount();
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ExtensionAction* GetPageAction(size_t index);
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ExtensionAction* GetVisiblePageAction(size_t index);
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void TestPageActionPressed(size_t index);
81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Set/Get the editable state of the field.
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetEditable(bool editable);
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool IsEditable();
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Set the starred state of the bookmark star.
87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetStarred(bool starred);
88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Get the point on the star for the bookmark bubble to aim at.
90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NSPoint GetBookmarkBubblePoint() const;
91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
92731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Get the point in the security icon at which the page info bubble aims.
93731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  NSPoint GetPageInfoBubblePoint() const;
94731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
95513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // Get the point in the omnibox at which the first run bubble aims.
96513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  NSPoint GetFirstRunBubblePoint() const;
97513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Updates the location bar.  Resets the bar's permanent text and
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // security style, and if |should_restore_state| is true, restores
100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // saved state from the tab (for tab switching).
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void Update(const TabContents* tab, bool should_restore_state);
102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Layout the various decorations which live in the field.
104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void Layout();
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Returns the current TabContents.
107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  TabContents* GetTabContents() const;
108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Sets preview_enabled_ for the PageActionImageView associated with this
110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // |page_action|. If |preview_enabled|, the location bar will display the
111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // PageAction icon even if it has not been activated by the extension.
112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // This is used by the ExtensionInstalledBubble to preview what the icon
113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // will look like for the user upon installation of the extension.
114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void SetPreviewEnabledPageAction(ExtensionAction* page_action,
115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                                   bool preview_enabled);
116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Return |page_action|'s info-bubble point in window coordinates.
1183345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // This function should always be called with a visible page action.
1193345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // If |page_action| is not a page action or not visible, NOTREACHED()
1203345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // is called and this function returns |NSZeroPoint|.
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NSPoint GetPageActionBubblePoint(ExtensionAction* page_action);
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
1233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // Get the blocked-popup content setting's frame in window
1243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // coordinates.  Used by the blocked-popup animation.  Returns
1253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // |NSZeroRect| if the relevant content setting decoration is not
1263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  // visible.
1273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  NSRect GetBlockedPopupRect() const;
1283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
129731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // AutocompleteEditController implementation.
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnAutocompleteAccept(const GURL& url,
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      WindowOpenDisposition disposition,
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      PageTransition::Type transition,
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      const GURL& alternate_nav_url);
134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnChanged();
1354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  virtual void OnSelectionBoundsChanged();
136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnInputInProgress(bool in_progress);
137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnKillFocus();
138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void OnSetFocus();
139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual SkBitmap GetFavicon() const;
14072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  virtual string16 GetTitle() const;
141dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen  virtual InstantController* GetInstant();
142ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual TabContentsWrapper* GetTabContentsWrapper() const;
143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  NSImage* GetKeywordImage(const string16& keyword);
145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  AutocompleteTextField* GetAutocompleteTextField() { return field_; }
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Overridden from NotificationObserver.
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void Observe(NotificationType type,
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       const NotificationSource& source,
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                       const NotificationDetails& details);
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Posts |notification| to the default notification center.
156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void PostNotification(NSString* notification);
157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Return the decoration for |page_action|.
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PageActionDecoration* GetPageActionDecoration(ExtensionAction* page_action);
160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Clear the page-action decorations.
162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void DeletePageActionDecorations();
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Re-generate the page-action decorations from the profile's
165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // extension service.
166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void RefreshPageActionDecorations();
167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Updates visibility of the content settings icons based on the current
169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // tab contents state.
1703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  bool RefreshContentSettingsDecorations();
171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  void ShowFirstRunBubbleInternal(FirstRun::BubbleType bubble_type);
173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
174ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Checks if the bookmark star should be enabled or not.
175ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool IsStarEnabled();
176ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<AutocompleteEditViewMac> edit_view_;
178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  CommandUpdater* command_updater_;  // Weak, owned by Browser.
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  AutocompleteTextField* field_;  // owned by tab controller
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // When we get an OnAutocompleteAccept notification from the autocomplete
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // edit, we save the input string so we can give it back to the browser on
185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // the LocationBar interface via GetInputString().
186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::wstring location_input_;
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The user's desired disposition for how their input should be opened.
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  WindowOpenDisposition disposition_;
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // A decoration that shows an icon to the left of the address.
192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<LocationIconDecoration> location_icon_decoration_;
193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // A decoration that shows the keyword-search bubble on the left.
195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<SelectedKeywordDecoration> selected_keyword_decoration_;
196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // A decoration that shows a lock icon and ev-cert label in a bubble
198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // on the left.
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<EVBubbleDecoration> ev_bubble_decoration_;
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Bookmark star right of page actions.
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<StarDecoration> star_decoration_;
203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Any installed Page Actions.
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ScopedVector<PageActionDecoration> page_action_decorations_;
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The content blocked decorations.
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ScopedVector<ContentSettingDecoration> content_setting_decorations_;
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Keyword hint decoration displayed on the right-hand side.
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<KeywordHintDecoration> keyword_hint_decoration_;
212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Profile* profile_;
214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  Browser* browser_;
216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ToolbarModel* toolbar_model_;  // Weak, owned by Browser.
218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The transition type to use for the navigation.
220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PageTransition::Type transition_;
221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Used to register for notifications received by NotificationObserver.
223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  NotificationRegistrar registrar_;
224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Used to schedule a task for the first run info bubble.
226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  ScopedRunnableMethodFactory<LocationBarViewMac> first_run_bubble_;
227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
228ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Used to change the visibility of the star decoration.
229ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  BooleanPrefMember edit_bookmarks_enabled_;
230ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(LocationBarViewMac);
232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#endif  // CHROME_BROWSER_UI_COCOA_LOCATION_BAR_VIEW_MAC_H_
235