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