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_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_ 6 #define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_ 7 #pragma once 8 9 #include <string> 10 11 #include "base/basictypes.h" 12 #include "base/memory/scoped_ptr.h" 13 #include "base/string16.h" 14 15 class AutocompleteController; 16 struct AutocompleteMatch; 17 class GURL; 18 class Profile; 19 20 class AutocompleteClassifier { 21 public: 22 explicit AutocompleteClassifier(Profile* profile); 23 virtual ~AutocompleteClassifier(); 24 25 // Given some string |text| that the user wants to use for navigation, 26 // determines how it should be interpreted. |desired_tld| is the user's 27 // desired TLD, if any; see AutocompleteInput::desired_tld(). 28 // |allow_exact_keyword_match| should be true when treating the string as a 29 // potential keyword search is valid; see 30 // AutocompleteInput::allow_exact_keyword_match(). |match| should be a 31 // non-NULL outparam that will be set to the default match for this input, if 32 // any (for invalid input, there will be no default match, and |match| will be 33 // left unchanged). |alternate_nav_url| is a possibly-NULL outparam that, if 34 // non-NULL, will be set to the navigational URL (if any) in case of an 35 // accidental search; see comments on 36 // AutocompleteResult::alternate_nav_url_ in autocomplete.h. 37 void Classify(const string16& text, 38 const string16& desired_tld, 39 bool allow_exact_keyword_match, 40 AutocompleteMatch* match, 41 GURL* alternate_nav_url); 42 43 private: 44 scoped_ptr<AutocompleteController> controller_; 45 46 // Are we currently in Classify? Used to verify Classify isn't invoked 47 // recursively, since this can corrupt state and cause crashes. 48 bool inside_classify_; 49 50 DISALLOW_IMPLICIT_CONSTRUCTORS(AutocompleteClassifier); 51 }; 52 53 #endif // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_ 54