1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string>
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h"
1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/string16.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutocompleteController;
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct AutocompleteMatch;
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass GURL;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass Profile;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass AutocompleteClassifier {
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  explicit AutocompleteClassifier(Profile* profile);
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~AutocompleteClassifier();
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Given some string |text| that the user wants to use for navigation,
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // determines how it should be interpreted.  |desired_tld| is the user's
274a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // desired TLD, if any; see AutocompleteInput::desired_tld().
284a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // |allow_exact_keyword_match| should be true when treating the string as a
294a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // potential keyword search is valid; see
304a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // AutocompleteInput::allow_exact_keyword_match(). |match| should be a
314a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // non-NULL outparam that will be set to the default match for this input, if
324a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // any (for invalid input, there will be no default match, and |match| will be
334a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // left unchanged).  |alternate_nav_url| is a possibly-NULL outparam that, if
344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // non-NULL, will be set to the navigational URL (if any) in case of an
354a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch  // accidental search; see comments on
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // AutocompleteResult::alternate_nav_url_ in autocomplete.h.
3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  void Classify(const string16& text,
3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen                const string16& desired_tld,
394a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch                bool allow_exact_keyword_match,
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                AutocompleteMatch* match,
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch                GURL* alternate_nav_url);
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  scoped_ptr<AutocompleteController> controller_;
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
46ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // Are we currently in Classify? Used to verify Classify isn't invoked
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  // recursively, since this can corrupt state and cause crashes.
48ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  bool inside_classify_;
49ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_IMPLICIT_CONSTRUCTORS(AutocompleteClassifier);
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_AUTOCOMPLETE_AUTOCOMPLETE_CLASSIFIER_H_
54