1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_LOCATION_BAR_LOCATION_BAR_H_
6 #define CHROME_BROWSER_UI_LOCATION_BAR_LOCATION_BAR_H_
8 #include "ui/base/page_transition_types.h"
9 #include "ui/base/window_open_disposition.h"
12 class ExtensionAction
;
13 class LocationBarTesting
;
21 namespace extensions
{
25 // The LocationBar class is a virtual interface, defining access to the
26 // window's location bar component. This class exists so that cross-platform
27 // components like the browser command system can talk to the platform
28 // specific implementations of the location bar control. It also allows the
29 // location bar to be mocked for testing.
32 explicit LocationBar(Profile
* profile
);
34 // Shows the first run bubble anchored to the location bar.
35 virtual void ShowFirstRunBubble() = 0;
37 // The details necessary to open the user's desired omnibox match.
38 virtual GURL
GetDestinationURL() const = 0;
39 virtual WindowOpenDisposition
GetWindowOpenDisposition() const = 0;
40 virtual ui::PageTransition
GetPageTransition() const = 0;
42 // Accepts the current string of text entered in the location bar.
43 virtual void AcceptInput() = 0;
45 // Focuses the location bar. Optionally also selects its contents.
46 virtual void FocusLocation(bool select_all
) = 0;
48 // Clears the location bar, inserts an annoying little "?" turd and sets
50 virtual void FocusSearch() = 0;
52 // Updates the state of the images showing the content settings status.
53 virtual void UpdateContentSettingsIcons() = 0;
55 // Updates the password icon and pops up a bubble from the icon if needed.
56 virtual void UpdateManagePasswordsIconAndBubble() = 0;
58 // Updates the state of the page actions.
59 virtual void UpdatePageActions() = 0;
61 // Updates the visibility of the bookmark star.
62 virtual void UpdateBookmarkStarVisibility() = 0;
64 // Updates the visibility of the location bar. Animates the transition if
66 virtual void UpdateLocationBarVisibility(bool visible
, bool animate
) = 0;
68 // Shows the popup for the given |extension| and, if |grant_active_tab| is
69 // true, grants the extension active tab permissions.
70 // Returns true if a popup was shown.
71 virtual bool ShowPageActionPopup(const extensions::Extension
* extension
,
72 bool grant_active_tab
) = 0;
74 // Updates the state of the button to open a PDF in Adobe Reader.
75 virtual void UpdateOpenPDFInReaderPrompt() = 0;
77 // Saves the state of the location bar to the specified WebContents, so that
78 // it can be restored later. (Done when switching tabs).
79 virtual void SaveStateToContents(content::WebContents
* contents
) = 0;
81 // Reverts the location bar. The bar's permanent text will be shown.
82 virtual void Revert() = 0;
84 virtual const OmniboxView
* GetOmniboxView() const = 0;
85 virtual OmniboxView
* GetOmniboxView() = 0;
87 // Returns a pointer to the testing interface.
88 virtual LocationBarTesting
* GetLocationBarForTesting() = 0;
90 Profile
* profile() { return profile_
; }
93 virtual ~LocationBar();
95 // Checks if any extension has requested that the bookmark star be hidden.
96 bool IsBookmarkStarHiddenByExtension() const;
101 DISALLOW_COPY_AND_ASSIGN(LocationBar
);
104 class LocationBarTesting
{
106 // Returns the total number of page actions in the Omnibox.
107 virtual int PageActionCount() = 0;
109 // Returns the number of visible page actions in the Omnibox.
110 virtual int PageActionVisibleCount() = 0;
112 // Returns the ExtensionAction at |index|.
113 virtual ExtensionAction
* GetPageAction(size_t index
) = 0;
115 // Returns the visible ExtensionAction at |index|.
116 virtual ExtensionAction
* GetVisiblePageAction(size_t index
) = 0;
118 // Simulates a left mouse pressed on the visible page action at |index|.
119 virtual void TestPageActionPressed(size_t index
) = 0;
121 // Returns whether or not the bookmark star decoration is visible.
122 virtual bool GetBookmarkStarVisibility() = 0;
125 virtual ~LocationBarTesting() {}
128 #endif // CHROME_BROWSER_UI_LOCATION_BAR_LOCATION_BAR_H_