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
921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen#include "base/compiler_specific.h"
10731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "chrome/browser/autocomplete/autocomplete.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 {
233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public:
243f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen  virtual void DeleteMatch(const AutocompleteMatch& match) OVERRIDE;
253f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen
26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick protected:
27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  enum MatchType {
28731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    NORMAL,
29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    WHAT_YOU_TYPED,
30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick    INLINE_AUTOCOMPLETE
31731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  };
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
33731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  HistoryProvider(ACProviderListener* listener,
34731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                  Profile* profile,
35731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick                  const char* name);
36731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
37731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Fixes up user URL input to make it more possible to match against.  Among
38731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // many other things, this takes care of the following:
39731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Prepending file:// to file URLs
40731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Converting drive letters in file URLs to uppercase
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Converting case-insensitive parts of URLs (like the scheme and domain)
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  //   to lowercase
43731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // * Convert spaces to %20s
44731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Note that we don't do this in AutocompleteInput's constructor, because if
45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // e.g. we convert a Unicode hostname to punycode, other providers will show
46731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // output that surprises the user ("Search Google for xn--6ca.com").
4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  static string16 FixupUserInput(const AutocompleteInput& input);
48731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // Trims "http:" and up to two subsequent slashes from |url|.  Returns the
50731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // number of characters that were trimmed.
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // NOTE: For a view-source: URL, this will trim from after "view-source:" and
52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  // return 0.
5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen  static size_t TrimHttpPrefix(string16* url);
54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick};
55731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#endif  // CHROME_BROWSER_AUTOCOMPLETE_HISTORY_PROVIDER_H_
57