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