Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6551)

Unified Diff: chrome/browser/omnibox_search_hint.cc

Issue 15822005: Remove omnibox_search_hint.(cc,h). (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: sync+rebase Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/omnibox_search_hint.h ('k') | chrome/browser/ui/browser_tab_contents.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/omnibox_search_hint.cc
diff --git a/chrome/browser/omnibox_search_hint.cc b/chrome/browser/omnibox_search_hint.cc
deleted file mode 100644
index 552aa7c6ac5578fbe735bde35071501b0a0bd5a5..0000000000000000000000000000000000000000
--- a/chrome/browser/omnibox_search_hint.cc
+++ /dev/null
@@ -1,263 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/omnibox_search_hint.h"
-
-#include "base/bind.h"
-#include "base/command_line.h"
-#include "base/memory/weak_ptr.h"
-#include "base/message_loop.h"
-#include "base/metrics/histogram.h"
-#include "base/prefs/pref_service.h"
-#include "chrome/browser/autocomplete/autocomplete_match.h"
-#include "chrome/browser/autocomplete/autocomplete_result.h"
-#include "chrome/browser/infobars/confirm_infobar_delegate.h"
-#include "chrome/browser/infobars/infobar_service.h"
-#include "chrome/browser/omnibox/omnibox_log.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search_engines/template_url.h"
-#include "chrome/browser/search_engines/template_url_service.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
-#include "chrome/browser/ui/browser.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/omnibox/location_bar.h"
-#include "chrome/browser/ui/omnibox/omnibox_view.h"
-#include "chrome/common/chrome_notification_types.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/pref_names.h"
-#include "content/public/browser/navigation_details.h"
-#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_source.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/web_contents.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-
-using content::NavigationController;
-using content::NavigationEntry;
-
-
-// HintInfoBarDelegate ---------------------------------------------------------
-
-class HintInfoBarDelegate : public ConfirmInfoBarDelegate {
- public:
- // If the active entry for |web_contents| is a navigation to the user's
- // default search engine, and the engine is on a small whitelist, creates a
- // "you can search from the omnibox" hint delegate and adds it to the
- // InfoBarService for |web_contents|.
- static void Create(content::WebContents* web_contents,
- OmniboxSearchHint* omnibox_hint);
-
- private:
- HintInfoBarDelegate(OmniboxSearchHint* omnibox_hint,
- InfoBarService* infobar_service);
- virtual ~HintInfoBarDelegate();
-
- void AllowExpiry() { should_expire_ = true; }
-
- // ConfirmInfoBarDelegate:
- virtual void InfoBarDismissed() OVERRIDE;
- virtual int GetIconID() const OVERRIDE;
- virtual Type GetInfoBarType() const OVERRIDE;
- virtual string16 GetMessageText() const OVERRIDE;
- virtual int GetButtons() const OVERRIDE;
- virtual string16 GetButtonLabel(InfoBarButton button) const OVERRIDE;
- virtual bool Accept() OVERRIDE;
- virtual bool ShouldExpireInternal(
- const content::LoadCommittedDetails& details) const OVERRIDE;
-
- // The omnibox hint that shows us.
- OmniboxSearchHint* omnibox_hint_;
-
- // Whether the user clicked one of the buttons.
- bool action_taken_;
-
- // Whether the info-bar should be dismissed on the next navigation.
- bool should_expire_;
-
- // Used to delay the expiration of the info-bar.
- base::WeakPtrFactory<HintInfoBarDelegate> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(HintInfoBarDelegate);
-};
-
-// static
-void HintInfoBarDelegate::Create(content::WebContents* web_contents,
- OmniboxSearchHint* omnibox_hint) {
- // The URLs of search engines for which we want to trigger the infobar.
- const char* const kSearchEngineURLs[] = {
- "http://www.google.com/",
- "http://www.yahoo.com/",
- "http://www.bing.com/",
- "http://www.altavista.com/",
- "http://www.ask.com/",
- "http://www.wolframalpha.com/",
- };
- CR_DEFINE_STATIC_LOCAL(std::set<std::string>, search_engine_urls, ());
- if (search_engine_urls.empty()) {
- for (size_t i = 0; i < arraysize(kSearchEngineURLs); ++i)
- search_engine_urls.insert(kSearchEngineURLs[i]);
- }
-
- content::NavigationEntry* entry =
- web_contents->GetController().GetActiveEntry();
- if (search_engine_urls.find(entry->GetURL().spec()) ==
- search_engine_urls.end()) {
- // The search engine is not in our white-list, bail.
- return;
- }
-
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- const TemplateURL* const default_provider =
- TemplateURLServiceFactory::GetForProfile(profile)->
- GetDefaultSearchProvider();
- if (!default_provider)
- return;
-
- if (default_provider->url_ref().GetHost() == entry->GetURL().host()) {
- InfoBarService* infobar_service =
- InfoBarService::FromWebContents(web_contents);
- infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
- new HintInfoBarDelegate(omnibox_hint, infobar_service)));
- }
-}
-
-HintInfoBarDelegate::HintInfoBarDelegate(OmniboxSearchHint* omnibox_hint,
- InfoBarService* infobar_service)
- : ConfirmInfoBarDelegate(infobar_service),
- omnibox_hint_(omnibox_hint),
- action_taken_(false),
- should_expire_(false),
- weak_factory_(this) {
- // We want the info-bar to stick-around for few seconds and then be hidden
- // on the next navigation after that.
- base::MessageLoop::current()->PostDelayedTask(
- FROM_HERE,
- base::Bind(&HintInfoBarDelegate::AllowExpiry, weak_factory_.GetWeakPtr()),
- base::TimeDelta::FromSeconds(8));
-}
-
-HintInfoBarDelegate::~HintInfoBarDelegate() {
- if (!action_taken_)
- UMA_HISTOGRAM_COUNTS("OmniboxSearchHint.Ignored", 1);
-}
-
-void HintInfoBarDelegate::InfoBarDismissed() {
- action_taken_ = true;
- UMA_HISTOGRAM_COUNTS("OmniboxSearchHint.Closed", 1);
- // User closed the infobar, let's not bug him again with this in the future.
- omnibox_hint_->DisableHint();
-}
-
-int HintInfoBarDelegate::GetIconID() const {
- return IDR_INFOBAR_QUESTION_MARK;
-}
-
-InfoBarDelegate::Type HintInfoBarDelegate::GetInfoBarType() const {
- return PAGE_ACTION_TYPE;
-}
-
-string16 HintInfoBarDelegate::GetMessageText() const {
- return l10n_util::GetStringUTF16(IDS_OMNIBOX_SEARCH_HINT_INFOBAR_TEXT);
-}
-
-int HintInfoBarDelegate::GetButtons() const {
- return BUTTON_OK;
-}
-
-string16 HintInfoBarDelegate::GetButtonLabel(InfoBarButton button) const {
- DCHECK_EQ(BUTTON_OK, button);
- return l10n_util::GetStringUTF16(
- IDS_OMNIBOX_SEARCH_HINT_INFOBAR_BUTTON_LABEL);
-}
-
-bool HintInfoBarDelegate::Accept() {
- action_taken_ = true;
- UMA_HISTOGRAM_COUNTS("OmniboxSearchHint.ShowMe", 1);
- omnibox_hint_->DisableHint();
- omnibox_hint_->ShowEnteringQuery();
- return true;
-}
-
-bool HintInfoBarDelegate::ShouldExpireInternal(
- const content::LoadCommittedDetails& details) const {
- return should_expire_;
-}
-
-
-// OmniboxSearchHint ----------------------------------------------------------
-
-DEFINE_WEB_CONTENTS_USER_DATA_KEY(OmniboxSearchHint);
-
-OmniboxSearchHint::OmniboxSearchHint(content::WebContents* web_contents)
- : web_contents_(web_contents) {
- NavigationController* controller = &(web_contents->GetController());
- notification_registrar_.Add(
- this,
- content::NOTIFICATION_NAV_ENTRY_COMMITTED,
- content::Source<NavigationController>(controller));
-
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- // Listen for omnibox to figure-out when the user searches from the omnibox.
- notification_registrar_.Add(this,
- chrome::NOTIFICATION_OMNIBOX_OPENED_URL,
- content::Source<Profile>(profile));
-}
-
-OmniboxSearchHint::~OmniboxSearchHint() {
-}
-
-void OmniboxSearchHint::Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) {
- if (type == content::NOTIFICATION_NAV_ENTRY_COMMITTED) {
- HintInfoBarDelegate::Create(web_contents_, this);
- } else if (type == chrome::NOTIFICATION_OMNIBOX_OPENED_URL) {
- OmniboxLog* log = content::Details<OmniboxLog>(details).ptr();
- AutocompleteMatch::Type type =
- log->result.match_at(log->selected_index).type;
- if (AutocompleteMatch::IsSearchType(type)) {
- // The user performed a search from the omnibox, don't show the infobar
- // again.
- DisableHint();
- }
- }
-}
-
-void OmniboxSearchHint::ShowEnteringQuery() {
- LocationBar* location_bar = chrome::FindBrowserWithWebContents(
- web_contents_)->window()->GetLocationBar();
- OmniboxView* omnibox_view = location_bar->GetLocationEntry();
- location_bar->FocusLocation(true);
- omnibox_view->SetUserText(
- l10n_util::GetStringUTF16(IDS_OMNIBOX_SEARCH_HINT_OMNIBOX_TEXT));
- omnibox_view->SelectAll(false);
- // Entering text in the omnibox view triggers the suggestion popup that we
- // don't want to show in this case.
- omnibox_view->CloseOmniboxPopup();
-}
-
-void OmniboxSearchHint::DisableHint() {
- // The NAV_ENTRY_COMMITTED notification was needed to show the infobar, the
- // OMNIBOX_OPENED_URL notification was there to set the kShowOmniboxSearchHint
- // prefs to false, none of them are needed anymore.
- notification_registrar_.RemoveAll();
- Profile* profile =
- Profile::FromBrowserContext(web_contents_->GetBrowserContext());
- profile->GetPrefs()->SetBoolean(prefs::kShowOmniboxSearchHint, false);
-}
-
-// static
-bool OmniboxSearchHint::IsEnabled(Profile* profile) {
- // The infobar can only be shown if the correct switch has been provided and
- // the user did not dismiss the infobar before.
- return profile->GetPrefs()->GetBoolean(prefs::kShowOmniboxSearchHint) &&
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kSearchInOmniboxHint);
-}
« no previous file with comments | « chrome/browser/omnibox_search_hint.h ('k') | chrome/browser/ui/browser_tab_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698