• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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.
4 
5 // The LocationBar class is a virtual interface, defining access to the
6 // window's location bar component.  This class exists so that cross-platform
7 // components like the browser command system can talk to the platform
8 // specific implementations of the location bar control.  It also allows the
9 // location bar to be mocked for testing.
10 
11 #ifndef CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_H_
12 #define CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_H_
13 #pragma once
14 
15 #include <string>
16 
17 #include "base/string16.h"
18 #include "chrome/browser/first_run/first_run.h"
19 #include "chrome/browser/instant/instant_delegate.h"
20 #include "content/common/page_transition_types.h"
21 #include "webkit/glue/window_open_disposition.h"
22 
23 class AutocompleteEditView;
24 class ExtensionAction;
25 class InstantController;
26 class LocationBarTesting;
27 class TabContents;
28 class TabContentsWrapper;
29 
30 class LocationBar {
31  public:
32   // Shows the first run information bubble anchored to the location bar.
33   virtual void ShowFirstRunBubble(FirstRun::BubbleType bubble_type) = 0;
34 
35   // Sets the suggested text to show in the omnibox. This is shown in addition
36   // to the current text of the omnibox.
37   virtual void SetSuggestedText(const string16& text,
38                                 InstantCompleteBehavior behavior) = 0;
39 
40   // Returns the string of text entered in the location bar.
41   virtual std::wstring GetInputString() const = 0;
42 
43   // Returns the WindowOpenDisposition that should be used to determine where
44   // to open a URL entered in the location bar.
45   virtual WindowOpenDisposition GetWindowOpenDisposition() const = 0;
46 
47   // Returns the PageTransition that should be recorded in history when the URL
48   // entered in the location bar is loaded.
49   virtual PageTransition::Type GetPageTransition() const = 0;
50 
51   // Accepts the current string of text entered in the location bar.
52   virtual void AcceptInput() = 0;
53 
54   // Focuses the location bar.  Optionally also selects its contents.
55   virtual void FocusLocation(bool select_all) = 0;
56 
57   // Clears the location bar, inserts an annoying little "?" turd and sets
58   // focus to it.
59   virtual void FocusSearch() = 0;
60 
61   // Updates the state of the images showing the content settings status.
62   virtual void UpdateContentSettingsIcons() = 0;
63 
64   // Updates the state of the page actions.
65   virtual void UpdatePageActions() = 0;
66 
67   // Called when the page-action data needs to be refreshed, e.g. when an
68   // extension is unloaded or crashes.
69   virtual void InvalidatePageActions() = 0;
70 
71   // Saves the state of the location bar to the specified TabContents, so that
72   // it can be restored later. (Done when switching tabs).
73   virtual void SaveStateToContents(TabContents* contents) = 0;
74 
75   // Reverts the location bar.  The bar's permanent text will be shown.
76   virtual void Revert() = 0;
77 
78   // Returns a pointer to the text entry view.
79   virtual const AutocompleteEditView* location_entry() const = 0;
80   virtual AutocompleteEditView* location_entry() = 0;
81 
82   // Returns a pointer to the testing interface.
83   virtual LocationBarTesting* GetLocationBarForTesting() = 0;
84 
85  protected:
~LocationBar()86   virtual ~LocationBar() {}
87 };
88 
89 class LocationBarTesting {
90  public:
91   // Returns the total number of page actions in the Omnibox.
92   virtual int PageActionCount() = 0;
93 
94   // Returns the number of visible page actions in the Omnibox.
95   virtual int PageActionVisibleCount() = 0;
96 
97   // Returns the ExtensionAction at |index|.
98   virtual ExtensionAction* GetPageAction(size_t index) = 0;
99 
100   // Returns the visible ExtensionAction at |index|.
101   virtual ExtensionAction* GetVisiblePageAction(size_t index) = 0;
102 
103   // Simulates a left mouse pressed on the visible page action at |index|.
104   virtual void TestPageActionPressed(size_t index) = 0;
105 
106  protected:
~LocationBarTesting()107   virtual ~LocationBarTesting() {}
108 };
109 
110 #endif  // CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_H_
111