history_provider.h revision 731df977c0511bca2206b5f333555b1205ff1f43
1731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// Use of this source code is governed by a BSD-style license that can be
3731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// found in the LICENSE file.
4731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#ifndef CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
6731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#define CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
7731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#pragma once
8731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
9731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/autocomplete/autocomplete.h"
10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/autocomplete/history_provider_util.h"
11731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
12731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace history {
13731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
14731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass HistoryBackend;
15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass URLDatabase;
16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass URLRow;
17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}  // namespace history
19731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
20731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// This class is a base class for the history autocomplete providers and
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick// provides functions useful to all derived classes.
22731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass HistoryProvider : public AutocompleteProvider {
23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick protected:
24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  enum MatchType {
25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    NORMAL,
26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    WHAT_YOU_TYPED,
27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    INLINE_AUTOCOMPLETE
28731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  };
29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  HistoryProvider(ACProviderListener* listener,
31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                  Profile* profile,
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                  const char* name);
33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Fixes up user URL input to make it more possible to match against.  Among
35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // many other things, this takes care of the following:
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Prepending file:// to file URLs
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Converting drive letters in file URLs to uppercase
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Converting case-insensitive parts of URLs (like the scheme and domain)
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  //   to lowercase
40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Convert spaces to %20s
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Note that we don't do this in AutocompleteInput's constructor, because if
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // e.g. we convert a Unicode hostname to punycode, other providers will show
43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // output that surprises the user ("Search Google for xn--6ca.com").
44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  static std::wstring FixupUserInput(const AutocompleteInput& input);
45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Trims "http:" and up to two subsequent slashes from |url|.  Returns the
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // number of characters that were trimmed.
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // NOTE: For a view-source: URL, this will trim from after "view-source:" and
49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // return 0.
50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  static size_t TrimHttpPrefix(std::wstring* url);
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick};
52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
53731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
54