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