summaryrefslogtreecommitdiff
path: root/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h')
-rw-r--r--Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h44
1 files changed, 28 insertions, 16 deletions
diff --git a/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h b/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h
index e16428907..7ceb1916d 100644
--- a/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h
+++ b/Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h
@@ -23,43 +23,51 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef LocalStorageDatabaseTracker_h
-#define LocalStorageDatabaseTracker_h
+#pragma once
#include <WebCore/SQLiteDatabase.h>
#include <wtf/HashSet.h>
-#include <wtf/PassRefPtr.h>
+#include <wtf/Optional.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadSafeRefCounted.h>
+#include <wtf/WorkQueue.h>
#include <wtf/text/StringHash.h>
#include <wtf/text/WTFString.h>
namespace WebCore {
class SecurityOrigin;
+struct SecurityOriginData;
}
-class WorkQueue;
-
namespace WebKit {
+struct LocalStorageDetails;
+
class LocalStorageDatabaseTracker : public ThreadSafeRefCounted<LocalStorageDatabaseTracker> {
public:
- static PassRefPtr<LocalStorageDatabaseTracker> create(PassRefPtr<WorkQueue>);
+ static Ref<LocalStorageDatabaseTracker> create(Ref<WorkQueue>&&, const String& localStorageDirectory);
~LocalStorageDatabaseTracker();
- void setLocalStorageDirectory(const String&);
- String databasePath(WebCore::SecurityOrigin*) const;
+ String databasePath(const WebCore::SecurityOriginData&) const;
- void didOpenDatabaseWithOrigin(WebCore::SecurityOrigin*);
- void deleteDatabaseWithOrigin(WebCore::SecurityOrigin*);
+ void didOpenDatabaseWithOrigin(const WebCore::SecurityOriginData&);
+ void deleteDatabaseWithOrigin(const WebCore::SecurityOriginData&);
void deleteAllDatabases();
- Vector<RefPtr<WebCore::SecurityOrigin>> origins() const;
+ // Returns a vector of the origins whose databases have been deleted.
+ Vector<WebCore::SecurityOriginData> deleteDatabasesModifiedSince(std::chrono::system_clock::time_point);
-private:
- explicit LocalStorageDatabaseTracker(PassRefPtr<WorkQueue>);
+ Vector<WebCore::SecurityOriginData> origins() const;
- void setLocalStorageDirectoryInternal(StringImpl*);
+ struct OriginDetails {
+ String originIdentifier;
+ std::optional<time_t> creationTime;
+ std::optional<time_t> modificationTime;
+ };
+ Vector<OriginDetails> originDetails();
+
+private:
+ LocalStorageDatabaseTracker(Ref<WorkQueue>&&, const String& localStorageDirectory);
String databasePath(const String& filename) const;
String trackerDatabasePath() const;
@@ -82,8 +90,12 @@ private:
WebCore::SQLiteDatabase m_database;
HashSet<String> m_origins;
+
+#if PLATFORM(IOS)
+ void platformMaybeExcludeFromBackup() const;
+
+ mutable bool m_hasExcludedFromBackup { false };
+#endif
};
} // namespace WebKit
-
-#endif // LocalStorageDatabaseTracker_h