Home | History | Annotate | Download | only in browser
      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