summaryrefslogtreecommitdiffstats
path: root/chrome/browser/history/top_sites_backend.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/history/top_sites_backend.h')
-rw-r--r--chrome/browser/history/top_sites_backend.h106
1 files changed, 106 insertions, 0 deletions
diff --git a/chrome/browser/history/top_sites_backend.h b/chrome/browser/history/top_sites_backend.h
new file mode 100644
index 0000000..50d0867
--- /dev/null
+++ b/chrome/browser/history/top_sites_backend.h
@@ -0,0 +1,106 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_HISTORY_TOP_SITES_BACKEND_H_
+#define CHROME_BROWSER_HISTORY_TOP_SITES_BACKEND_H_
+#pragma once
+
+#include "base/file_path.h"
+#include "base/ref_counted.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/cancelable_request.h"
+#include "chrome/browser/history/history_types.h"
+
+class FilePath;
+
+namespace history {
+
+class TopSitesDatabase;
+
+// Service used by TopSites to have db interaction happen on the DB thread. All
+// public methods are invoked on the ui thread and get funneled to the DB
+// thread.
+class TopSitesBackend
+ : public base::RefCountedThreadSafe<TopSitesBackend>,
+ public CancelableRequestProvider {
+ public:
+ TopSitesBackend();
+
+ void Init(const FilePath& path);
+
+ // Schedules the db to be shutdown.
+ void Shutdown();
+
+ // The boolean parameter indicates if the DB existed on disk or needs to be
+ // migrated.
+ typedef Callback3<Handle, scoped_refptr<MostVisitedThumbnails>, bool >::Type
+ GetMostVisitedThumbnailsCallback;
+ typedef CancelableRequest1<TopSitesBackend::GetMostVisitedThumbnailsCallback,
+ scoped_refptr<MostVisitedThumbnails> >
+ GetMostVisitedThumbnailsRequest;
+
+ // Fetches MostVisitedThumbnails.
+ Handle GetMostVisitedThumbnails(CancelableRequestConsumerBase* consumer,
+ GetMostVisitedThumbnailsCallback* callback);
+
+ // Updates top sites database from the specified delta.
+ void UpdateTopSites(const TopSitesDelta& delta);
+
+ // Sets the thumbnail.
+ void SetPageThumbnail(const MostVisitedURL& url,
+ int url_rank,
+ const Images& thumbnail);
+
+ // Deletes the database and recreates it.
+ void ResetDatabase();
+
+ typedef Callback1<Handle>::Type EmptyRequestCallback;
+ typedef CancelableRequest<TopSitesBackend::EmptyRequestCallback>
+ EmptyRequestRequest;
+
+ // Schedules a request that does nothing on the DB thread, but then notifies
+ // the callback on the calling thread. This is used to make sure the db has
+ // finished processing a request.
+ Handle DoEmptyRequest(CancelableRequestConsumerBase* consumer,
+ EmptyRequestCallback* callback);
+
+ private:
+ friend class base::RefCountedThreadSafe<TopSitesBackend>;
+
+ ~TopSitesBackend();
+
+ // Invokes Init on the db_.
+ void InitDBOnDBThread(const FilePath& path);
+
+ // Shuts down the db.
+ void ShutdownDBOnDBThread();
+
+ // Does the work of getting the most visted thumbnails.
+ void GetMostVisitedThumbnailsOnDBThread(
+ scoped_refptr<GetMostVisitedThumbnailsRequest> request);
+
+ // Updates top sites.
+ void UpdateTopSitesOnDBThread(const TopSitesDelta& delta);
+
+ // Sets the thumbnail.
+ void SetPageThumbnailOnDBThread(const MostVisitedURL& url,
+ int url_rank,
+ const Images& thumbnail);
+
+ // Resets the database.
+ void ResetDatabaseOnDBThread(const FilePath& file_path);
+
+ // Notifies the request.
+ void DoEmptyRequestOnDBThread(scoped_refptr<EmptyRequestRequest> request);
+
+ FilePath db_path_;
+
+ scoped_ptr<TopSitesDatabase> db_;
+
+ DISALLOW_COPY_AND_ASSIGN(TopSitesBackend);
+};
+
+} // namespace history
+
+#endif // CHROME_BROWSER_HISTORY_TOP_SITES_BACKEND_H_