summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browsing_data_remover.h
diff options
context:
space:
mode:
authorjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-06 03:08:04 +0000
committerjochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-06 03:08:04 +0000
commit72cfd90fdb683cf513e2f50db4ec0488729ed0a3 (patch)
tree35cc742f0d79cd9070e003c0be0eed61304af248 /chrome/browser/browsing_data_remover.h
parent0ecf8bd18d15550e2dc744a38d1665ffc2b958bd (diff)
downloadchromium_src-72cfd90fdb683cf513e2f50db4ec0488729ed0a3.zip
chromium_src-72cfd90fdb683cf513e2f50db4ec0488729ed0a3.tar.gz
chromium_src-72cfd90fdb683cf513e2f50db4ec0488729ed0a3.tar.bz2
Delete HTML5 database in BrowsingDataRemover, part 1.
This part deletes databases except for when they're currently used by a renderer. BUG=34633 TEST=open the webkit html5 database demo, create some notes. close the tab. clear browsing data. open the demo again. notes should be gone. Review URL: http://codereview.chromium.org/570032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38296 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browsing_data_remover.h')
-rw-r--r--chrome/browser/browsing_data_remover.h19
1 files changed, 18 insertions, 1 deletions
diff --git a/chrome/browser/browsing_data_remover.h b/chrome/browser/browsing_data_remover.h
index 8fccfe0..1a9d5fa 100644
--- a/chrome/browser/browsing_data_remover.h
+++ b/chrome/browser/browsing_data_remover.h
@@ -6,9 +6,11 @@
#define CHROME_BROWSER_BROWSING_DATA_REMOVER_H_
#include "base/observer_list.h"
+#include "base/scoped_ptr.h"
#include "base/time.h"
#include "chrome/browser/cancelable_request.h"
#include "chrome/common/notification_registrar.h"
+#include "webkit/database/database_tracker.h"
class Profile;
class URLRequestContextGetter;
@@ -94,13 +96,20 @@ class BrowsingDataRemover : public NotificationObserver {
base::Time delete_begin,
base::Time delete_end);
+ // Callback when HTML5 databases have been deleted. Invokes
+ // NotifyAndDeleteIfDone.
+ void OnClearedDatabases(int rv);
+
+ // Invoked on the FILE thread to delete HTML5 databases.
+ void ClearDatabasesOnFILEThread(base::Time delete_begin);
+
// Calculate the begin time for the deletion range specified by |time_period|.
base::Time CalculateBeginDeleteTime(TimePeriod time_period);
// Returns true if we're all done.
bool all_done() {
return registrar_.IsEmpty() && !waiting_for_clear_cache_ &&
- !waiting_for_clear_history_;
+ !waiting_for_clear_history_ && !waiting_for_clear_databases_;
}
NotificationRegistrar registrar_;
@@ -117,6 +126,14 @@ class BrowsingDataRemover : public NotificationObserver {
// True if Remove has been invoked.
static bool removing_;
+ // Reference to database tracker held while deleting databases.
+ scoped_refptr<webkit_database::DatabaseTracker> database_tracker_;
+
+ net::CompletionCallbackImpl<BrowsingDataRemover> database_cleared_callback_;
+
+ // True if we're waiting for HTML5 databases to be deleted.
+ bool waiting_for_clear_databases_;
+
// True if we're waiting for the history to be deleted.
bool waiting_for_clear_history_;