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 // Shows the popup for the given |extension| and, if |grant_active_tab| is
65 // true, grants the extension active tab permissions.
66 // Returns true if a popup was shown.
67 virtual bool ShowPageActionPopup(const extensions::Extension
* extension
,
68 bool grant_active_tab
) = 0;
70 // Updates the state of the button to open a PDF in Adobe Reader.
71 virtual void UpdateOpenPDFInReaderPrompt() = 0;
73 // Updates the generated credit card view. This view serves as an anchor for
74 // the generated credit card bubble, which can show on successful generation
75 // of a new credit card number.
76 virtual void UpdateGeneratedCreditCardView() = 0;
78 // Saves the state of the location bar to the specified WebContents, so that
79 // it can be restored later. (Done when switching tabs).
80 virtual void SaveStateToContents(content::WebContents
* contents
) = 0;
82 // Reverts the location bar. The bar's permanent text will be shown.
83 virtual void Revert() = 0;
85 virtual const OmniboxView
* GetOmniboxView() const = 0;
86 virtual OmniboxView
* GetOmniboxView() = 0;
88 // Returns a pointer to the testing interface.
89 virtual LocationBarTesting
* GetLocationBarForTesting() = 0;
91 Profile
* profile() { return profile_
; }
94 virtual ~LocationBar();
96 // Checks if any extension has requested that the bookmark star be hidden.
97 bool IsBookmarkStarHiddenByExtension() const;
102 DISALLOW_COPY_AND_ASSIGN(LocationBar
);
105 class LocationBarTesting
{
107 // Returns the total number of page actions in the Omnibox.
108 virtual int PageActionCount() = 0;
110 // Returns the number of visible page actions in the Omnibox.
111 virtual int PageActionVisibleCount() = 0;
113 // Returns the ExtensionAction at |index|.
114 virtual ExtensionAction
* GetPageAction(size_t index
) = 0;
116 // Returns the visible ExtensionAction at |index|.
117 virtual ExtensionAction
* GetVisiblePageAction(size_t index
) = 0;
119 // Simulates a left mouse pressed on the visible page action at |index|.
120 virtual void TestPageActionPressed(size_t index
) = 0;
122 // Returns whether or not the bookmark star decoration is visible.
123 virtual bool GetBookmarkStarVisibility() = 0;
126 virtual ~LocationBarTesting() {}
129 #endif // CHROME_BROWSER_UI_LOCATION_BAR_LOCATION_BAR_H_