diff options
Diffstat (limited to 'Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h')
-rw-r--r-- | Source/WebKit2/UIProcess/Storage/LocalStorageDatabaseTracker.h | 44 |
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 |