1 // Copyright (c) 2012 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 #include "chrome/browser/ui/webui/options/home_page_overlay_handler.h" 6 7 #include "base/bind.h" 8 #include "base/bind_helpers.h" 9 #include "base/values.h" 10 #include "chrome/browser/autocomplete/autocomplete_classifier.h" 11 #include "chrome/browser/autocomplete/autocomplete_controller.h" 12 #include "chrome/browser/autocomplete/autocomplete_input.h" 13 #include "chrome/browser/autocomplete/autocomplete_result.h" 14 #include "chrome/browser/profiles/profile.h" 15 #include "components/metrics/proto/omnibox_event.pb.h" 16 #include "content/public/browser/web_ui.h" 17 #include "grit/generated_resources.h" 18 #include "ui/base/l10n/l10n_util.h" 19 20 namespace options { 21 22 HomePageOverlayHandler::HomePageOverlayHandler() { 23 } 24 25 HomePageOverlayHandler::~HomePageOverlayHandler() { 26 } 27 28 void HomePageOverlayHandler::RegisterMessages() { 29 web_ui()->RegisterMessageCallback( 30 "requestAutocompleteSuggestionsForHomePage", 31 base::Bind(&HomePageOverlayHandler::RequestAutocompleteSuggestions, 32 base::Unretained(this))); 33 } 34 35 void HomePageOverlayHandler::InitializeHandler() { 36 Profile* profile = Profile::FromWebUI(web_ui()); 37 autocomplete_controller_.reset(new AutocompleteController(profile, this, 38 AutocompleteClassifier::kDefaultOmniboxProviders)); 39 } 40 41 void HomePageOverlayHandler::GetLocalizedValues( 42 base::DictionaryValue* localized_strings) { 43 RegisterTitle(localized_strings, "homePageOverlay", 44 IDS_OPTIONS_HOMEPAGE_TITLE); 45 } 46 47 void HomePageOverlayHandler::RequestAutocompleteSuggestions( 48 const base::ListValue* args) { 49 base::string16 input; 50 CHECK_EQ(args->GetSize(), 1U); 51 CHECK(args->GetString(0, &input)); 52 53 autocomplete_controller_->Start(AutocompleteInput( 54 input, base::string16::npos, base::string16(), GURL(), 55 metrics::OmniboxEventProto::INVALID_SPEC, true, false, false, true)); 56 } 57 58 void HomePageOverlayHandler::OnResultChanged(bool default_match_changed) { 59 const AutocompleteResult& result = autocomplete_controller_->result(); 60 base::ListValue suggestions; 61 OptionsUI::ProcessAutocompleteSuggestions(result, &suggestions); 62 web_ui()->CallJavascriptFunction( 63 "HomePageOverlay.updateAutocompleteSuggestions", suggestions); 64 } 65 66 } // namespace options 67