13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/sql/connection.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/basictypes.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/history/url_database.h"
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass FilePath;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace history {
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Class used for a fast in-memory cache of typed URLs. Used for inline
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// autocomplete since it is fast enough to be called synchronously as the user
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// is typing.
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass InMemoryDatabase : public URLDatabase {
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  InMemoryDatabase();
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~InMemoryDatabase();
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Creates an empty in-memory database.
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool InitFromScratch();
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Initializes the database by directly slurping the data from the given
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // file. Conceptually, the InMemoryHistoryBackend should do the populating
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // after this object does some common initialization, but that would be
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // much slower.
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool InitFromDisk(const FilePath& history_name);
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Implemented for URLDatabase.
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual sql::Connection& GetDB();
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private:
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Initializes the database connection, this is the shared code between
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // InitFromScratch() and InitFromDisk() above. Returns true on success.
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool InitDB();
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  sql::Connection db_;
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  DISALLOW_COPY_AND_ASSIGN(InMemoryDatabase);
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace history
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_HISTORY_IN_MEMORY_DATABASE_H_
51