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_HISTORY_ANDROID_FAVICON_SQL_HANDLER_H_
6#define CHROME_BROWSER_HISTORY_ANDROID_FAVICON_SQL_HANDLER_H_
7
8#include "chrome/browser/history/android/sql_handler.h"
9
10namespace history {
11
12class ThumbnailDatabase;
13
14// The SQL handler implementation for icon_mapping and favicon table.
15class FaviconSQLHandler : public SQLHandler {
16 public:
17  explicit FaviconSQLHandler(ThumbnailDatabase* thumbnail_db);
18  virtual ~FaviconSQLHandler();
19
20  // SQLHandler overrides:
21  virtual bool Update(const HistoryAndBookmarkRow& row,
22                      const TableIDRows& ids_set) OVERRIDE;
23  virtual bool Delete(const TableIDRows& ids_set) OVERRIDE;
24  virtual bool Insert(HistoryAndBookmarkRow* row) OVERRIDE;
25
26 private:
27  // Deletes the given favicons if they are not used by any pages. Returns
28  // true if all unused favicons are deleted.
29  bool DeleteUnusedFavicon(const std::vector<favicon_base::FaviconID>& ids);
30
31  ThumbnailDatabase* thumbnail_db_;
32
33  DISALLOW_COPY_AND_ASSIGN(FaviconSQLHandler);
34};
35
36}  // namespace history.
37
38#endif  // CHROME_BROWSER_HISTORY_ANDROID_FAVICON_SQL_HANDLER_H_
39