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 #ifndef CHROME_BROWSER_OMNIBOX_SEARCH_HINT_H_ 6 #define CHROME_BROWSER_OMNIBOX_SEARCH_HINT_H_ 7 #pragma once 8 9 #include <map> 10 #include <string> 11 12 #include "content/common/notification_observer.h" 13 #include "content/common/notification_registrar.h" 14 15 class Profile; 16 class TabContents; 17 18 // This class is responsible for showing an info-bar that tells the user she 19 // can type her search query directly in the omnibox. 20 // It is displayed when the user visits a known search engine URL and has not 21 // searched from the omnibox before, or has not previously dismissed a similar 22 // info-bar. 23 class OmniboxSearchHint : public NotificationObserver { 24 public: 25 explicit OmniboxSearchHint(TabContents* tab); 26 ~OmniboxSearchHint(); 27 28 // NotificationObserver method: 29 virtual void Observe(NotificationType type, 30 const NotificationSource& source, 31 const NotificationDetails& details); 32 33 // Focus the location bar and displays a message instructing that search 34 // queries can be typed directly in there. 35 void ShowEnteringQuery(); 36 37 TabContents* tab() { return tab_; } 38 39 // Disables the hint infobar permanently, so that it does not show ever again. 40 void DisableHint(); 41 42 // Returns true if the profile and current environment make the showing of the 43 // hint infobar possible. 44 static bool IsEnabled(Profile* profile); 45 46 private: 47 void ShowInfoBar(); 48 49 NotificationRegistrar notification_registrar_; 50 51 // The tab we are associated with. 52 TabContents* tab_; 53 54 // A map containing the URLs of the search engine for which we want to 55 // trigger the hint. 56 std::map<std::string, int> search_engine_urls_; 57 58 DISALLOW_COPY_AND_ASSIGN(OmniboxSearchHint); 59 }; 60 61 #endif // CHROME_BROWSER_OMNIBOX_SEARCH_HINT_H_ 62