in_memory_database.h revision 3345a6884c488ff3a535c2c9acdd33d74b37e311
1// Copyright (c) 2010 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_HISTORY_IN_MEMORY_DATABASE_H_
6#define CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
7#pragma once
8
9#include "app/sql/connection.h"
10#include "base/basictypes.h"
11#include "chrome/browser/history/url_database.h"
12
13class FilePath;
14
15namespace history {
16
17// Class used for a fast in-memory cache of typed URLs. Used for inline
18// autocomplete since it is fast enough to be called synchronously as the user
19// is typing.
20class InMemoryDatabase : public URLDatabase {
21 public:
22  InMemoryDatabase();
23  virtual ~InMemoryDatabase();
24
25  // Creates an empty in-memory database.
26  bool InitFromScratch();
27
28  // Initializes the database by directly slurping the data from the given
29  // file. Conceptually, the InMemoryHistoryBackend should do the populating
30  // after this object does some common initialization, but that would be
31  // much slower.
32  bool InitFromDisk(const FilePath& history_name);
33
34 protected:
35  // Implemented for URLDatabase.
36  virtual sql::Connection& GetDB();
37
38 private:
39  // Initializes the database connection, this is the shared code between
40  // InitFromScratch() and InitFromDisk() above. Returns true on success.
41  bool InitDB();
42
43  sql::Connection db_;
44
45  DISALLOW_COPY_AND_ASSIGN(InMemoryDatabase);
46};
47
48}  // namespace history
49
50#endif  // CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
51