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 #include "chrome/browser/autocomplete/autocomplete_classifier.h" 6 7 #include "base/auto_reset.h" 8 #include "chrome/browser/autocomplete/autocomplete.h" 9 #include "chrome/browser/autocomplete/autocomplete_match.h" 10 #include "googleurl/src/gurl.h" 11 12 AutocompleteClassifier::AutocompleteClassifier(Profile* profile) 13 : controller_(new AutocompleteController(profile, NULL)), 14 inside_classify_(false) { 15 } 16 17 AutocompleteClassifier::~AutocompleteClassifier() { 18 } 19 20 void AutocompleteClassifier::Classify(const string16& text, 21 const string16& desired_tld, 22 bool allow_exact_keyword_match, 23 AutocompleteMatch* match, 24 GURL* alternate_nav_url) { 25 DCHECK(!inside_classify_); 26 AutoReset<bool> reset(&inside_classify_, true); 27 controller_->Start(text, desired_tld, true, false, allow_exact_keyword_match, 28 AutocompleteInput::BEST_MATCH); 29 DCHECK(controller_->done()); 30 const AutocompleteResult& result = controller_->result(); 31 if (result.empty()) { 32 if (alternate_nav_url) 33 *alternate_nav_url = GURL(); 34 return; 35 } 36 37 DCHECK(result.default_match() != result.end()); 38 *match = *result.default_match(); 39 if (alternate_nav_url) 40 *alternate_nav_url = result.alternate_nav_url(); 41 } 42