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#ifndef CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
6#define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
7
8#include "base/compiler_specific.h"
9#include "chrome/browser/history/in_memory_url_index_types.h"
10#include "components/omnibox/autocomplete_provider.h"
11
12class AutocompleteInput;
13class Profile;
14struct AutocompleteMatch;
15
16// This class is a base class for the history autocomplete providers and
17// provides functions useful to all derived classes.
18class HistoryProvider : public AutocompleteProvider {
19 public:
20  virtual void DeleteMatch(const AutocompleteMatch& match) OVERRIDE;
21
22  // Returns true if inline autocompletion should be prevented for URL-like
23  // input.  This method returns true if input.prevent_inline_autocomplete()
24  // is true or the input text contains trailing whitespace.
25  static bool PreventInlineAutocomplete(const AutocompleteInput& input);
26
27 protected:
28  HistoryProvider(Profile* profile, AutocompleteProvider::Type type);
29  virtual ~HistoryProvider();
30
31  // Finds and removes the match from the current collection of matches and
32  // backing data.
33  void DeleteMatchFromMatches(const AutocompleteMatch& match);
34
35  // Fill and return an ACMatchClassifications structure given the |matches|
36  // to highlight.
37  static ACMatchClassifications SpansFromTermMatch(
38      const history::TermMatches& matches,
39      size_t text_length,
40      bool is_url);
41
42  Profile* profile_;
43};
44
45#endif  // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
46