diff options
Diffstat (limited to 'WebCore/storage/DatabaseTracker.h')
| -rw-r--r-- | WebCore/storage/DatabaseTracker.h | 79 |
1 files changed, 49 insertions, 30 deletions
diff --git a/WebCore/storage/DatabaseTracker.h b/WebCore/storage/DatabaseTracker.h index dc50965..4640b18 100644 --- a/WebCore/storage/DatabaseTracker.h +++ b/WebCore/storage/DatabaseTracker.h @@ -31,74 +31,99 @@ #if ENABLE(DATABASE) -#include "DatabaseDetails.h" #include "PlatformString.h" -#include "SQLiteDatabase.h" #include "StringHash.h" +#include <wtf/HashMap.h> #include <wtf/HashSet.h> + +#if !PLATFORM(CHROMIUM) +#include "DatabaseDetails.h" +#include "SQLiteDatabase.h" #include <wtf/OwnPtr.h> +#endif // !PLATFORM(CHROMIUM) namespace WebCore { class Database; -class DatabaseTrackerClient; -class Document; -class OriginQuotaManager; +class ScriptExecutionContext; class SecurityOrigin; struct SecurityOriginHash; + +#if !PLATFORM(CHROMIUM) +class DatabaseTrackerClient; +class OriginQuotaManager; + struct SecurityOriginTraits; +#endif // !PLATFORM(CHROMIUM) -class DatabaseTracker { +class DatabaseTracker : public Noncopyable { public: - void setDatabaseDirectoryPath(const String&); - const String& databaseDirectoryPath() const; + static DatabaseTracker& tracker(); + // FIXME: Due to workers having multiple threads in a single process sharing + // a DatabaseTracker, this singleton will have to be synchronized or moved + // to TLS. - bool canEstablishDatabase(Document*, const String& name, const String& displayName, unsigned long estimatedSize); + bool canEstablishDatabase(ScriptExecutionContext*, const String& name, const String& displayName, unsigned long estimatedSize); void setDatabaseDetails(SecurityOrigin*, const String& name, const String& displayName, unsigned long estimatedSize); String fullPathForDatabase(SecurityOrigin*, const String& name, bool createIfDoesNotExist = true); + void addOpenDatabase(Database*); + void removeOpenDatabase(Database*); + void getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr<Database> >* databases); + + unsigned long long getMaxSizeForDatabase(const Database*); + +private: + DatabaseTracker(); + + typedef HashSet<Database*> DatabaseSet; + typedef HashMap<String, DatabaseSet*> DatabaseNameMap; + typedef HashMap<RefPtr<SecurityOrigin>, DatabaseNameMap*, SecurityOriginHash> DatabaseOriginMap; + + Mutex m_openDatabaseMapGuard; + mutable OwnPtr<DatabaseOriginMap> m_openDatabaseMap; + +#if !PLATFORM(CHROMIUM) +public: + void setDatabaseDirectoryPath(const String&); + const String& databaseDirectoryPath() const; + void origins(Vector<RefPtr<SecurityOrigin> >& result); bool databaseNamesForOrigin(SecurityOrigin*, Vector<String>& result); DatabaseDetails detailsForNameAndOrigin(const String&, SecurityOrigin*); - void addOpenDatabase(Database*); - void removeOpenDatabase(Database*); - unsigned long long usageForDatabase(const String&, SecurityOrigin*); unsigned long long usageForOrigin(SecurityOrigin*); unsigned long long quotaForOrigin(SecurityOrigin*); void setQuota(SecurityOrigin*, unsigned long long); - + void deleteAllDatabases(); void deleteOrigin(SecurityOrigin*); void deleteDatabase(SecurityOrigin*, const String& name); void setClient(DatabaseTrackerClient*); - + // From a secondary thread, must be thread safe with its data void scheduleNotifyDatabaseChanged(SecurityOrigin*, const String& name); - + OriginQuotaManager& originQuotaManager(); - - static DatabaseTracker& tracker(); + bool hasEntryForOrigin(SecurityOrigin*); private: - DatabaseTracker(); - String trackerDatabasePath() const; void openTrackerDatabase(bool createIfDoesNotExist); String originPath(SecurityOrigin*) const; - + bool hasEntryForDatabase(SecurityOrigin*, const String& databaseIdentifier); - + bool addDatabase(SecurityOrigin*, const String& name, const String& path); void populateOrigins(); - + bool deleteDatabaseFile(SecurityOrigin*, const String& name); SQLiteDatabase m_database; @@ -107,17 +132,10 @@ private: Mutex m_quotaMapGuard; mutable OwnPtr<QuotaMap> m_quotaMap; - typedef HashSet<Database*> DatabaseSet; - typedef HashMap<String, DatabaseSet*> DatabaseNameMap; - typedef HashMap<RefPtr<SecurityOrigin>, DatabaseNameMap*, SecurityOriginHash> DatabaseOriginMap; - - Mutex m_openDatabaseMapGuard; - mutable OwnPtr<DatabaseOriginMap> m_openDatabaseMap; - OwnPtr<OriginQuotaManager> m_quotaManager; String m_databaseDirectoryPath; - + DatabaseTrackerClient* m_client; std::pair<SecurityOrigin*, DatabaseDetails>* m_proposedDatabase; @@ -128,6 +146,7 @@ private: static void scheduleForNotification(); static void notifyDatabasesChanged(void*); +#endif // !PLATFORM(CHROMIUM) }; } // namespace WebCore |
