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: 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: 107 virtual ~LocationBarTesting() {} 108 }; 109 110 #endif // CHROME_BROWSER_UI_OMNIBOX_LOCATION_BAR_H_ 111