Changeset 61154 in webkit
- Timestamp:
- Jun 14, 2010 3:07:58 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r61153 r61154 1 2010-06-14 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Get DatabaseTracker ready for sync DBs. 6 https://bugs.webkit.org/show_bug.cgi?id=39041 7 8 * storage/AbstractDatabase.cpp: 9 (WebCore::AbstractDatabase::~AbstractDatabase): 10 * storage/AbstractDatabase.h: 11 * storage/Database.cpp: 12 (WebCore::Database::closeImmediately): 13 * storage/Database.h: 14 (WebCore::Database::scriptExecutionContext): 15 * storage/DatabaseTracker.cpp: 16 (WebCore::DatabaseTracker::getMaxSizeForDatabase): 17 (WebCore::DatabaseTracker::databaseChanged): 18 (WebCore::DatabaseTracker::addOpenDatabase): 19 (WebCore::DatabaseTracker::removeOpenDatabase): 20 (WebCore::DatabaseTracker::getOpenDatabases): 21 (WebCore::DatabaseTracker::deleteDatabaseFile): 22 * storage/DatabaseTracker.h: 23 * storage/OriginQuotaManager.cpp: 24 (WebCore::OriginQuotaManager::markDatabase): 25 * storage/OriginQuotaManager.h: 26 * storage/chromium/DatabaseObserver.h: 27 * storage/chromium/DatabaseTrackerChromium.cpp: 28 (WebCore::DatabaseTracker::addOpenDatabase): 29 (WebCore::TrackerRemoveOpenDatabaseTask::create): 30 (WebCore::TrackerRemoveOpenDatabaseTask::TrackerRemoveOpenDatabaseTask): 31 (WebCore::DatabaseTracker::removeOpenDatabase): 32 (WebCore::DatabaseTracker::getOpenDatabases): 33 (WebCore::DatabaseTracker::getMaxSizeForDatabase): 34 1 35 2010-06-14 Alexey Proskuryakov <ap@apple.com> 2 36 -
trunk/WebCore/storage/AbstractDatabase.cpp
r59349 r61154 34 34 namespace WebCore { 35 35 36 AbstractDatabase::~AbstractDatabase() 37 { 38 } 39 36 40 } // namespace WebCore 37 41 -
trunk/WebCore/storage/AbstractDatabase.h
r59349 r61154 32 32 #if ENABLE(DATABASE) 33 33 34 #include "PlatformString.h" 35 #include <wtf/ThreadSafeShared.h> 36 34 37 namespace WebCore { 35 38 36 class AbstractDatabase { 39 class ScriptExecutionContext; 40 class SecurityOrigin; 41 42 class AbstractDatabase : public ThreadSafeShared<AbstractDatabase> { 43 public: 44 virtual ~AbstractDatabase(); 45 46 virtual ScriptExecutionContext* scriptExecutionContext() const = 0; 47 virtual SecurityOrigin* securityOrigin() const = 0; 48 virtual String stringIdentifier() const = 0; 49 virtual String displayName() const = 0; 50 virtual unsigned long estimatedSize() const = 0; 51 virtual String fileName() const = 0; 52 53 virtual void markAsDeletedAndClose() = 0; 54 virtual void closeImmediately() = 0; 37 55 }; 38 56 -
trunk/WebCore/storage/Database.cpp
r60683 r61154 452 452 } 453 453 454 void Database::closeImmediately() 455 { 456 DatabaseThread* databaseThread = scriptExecutionContext()->databaseThread(); 457 if (databaseThread && !databaseThread->terminationRequested()) { 458 stop(); 459 databaseThread->scheduleTask(DatabaseCloseTask::create(this, Database::RemoveDatabaseFromContext, 0)); 460 } 461 } 462 454 463 void Database::stop() 455 464 { -
trunk/WebCore/storage/Database.h
r60513 r61154 31 31 32 32 #if ENABLE(DATABASE) 33 #include "AbstractDatabase.h" 33 34 #include "PlatformString.h" 34 35 #include "SQLiteDatabase.h" … … 56 57 typedef int ExceptionCode; 57 58 58 class Database : public ThreadSafeShared<Database>{59 class Database : public AbstractDatabase { 59 60 public: 60 61 static void setIsAvailable(bool); 61 62 static bool isAvailable(); 62 63 63 ~Database();64 virtual ~Database(); 64 65 65 66 // Direct support for the DOM API … … 85 86 Vector<String> tableNames(); 86 87 87 ScriptExecutionContext* scriptExecutionContext() const { return m_scriptExecutionContext.get(); }88 SecurityOrigin* securityOrigin() const;88 virtual ScriptExecutionContext* scriptExecutionContext() const { return m_scriptExecutionContext.get(); } 89 virtual SecurityOrigin* securityOrigin() const; 89 90 SQLiteDatabase& sqliteDatabase() { return m_sqliteDatabase; } 90 String stringIdentifier() const;91 String displayName() const;92 unsigned long estimatedSize() const;93 String fileName() const;91 virtual String stringIdentifier() const; 92 virtual String displayName() const; 93 virtual unsigned long estimatedSize() const; 94 virtual String fileName() const; 94 95 95 96 bool getVersionFromDatabase(String&); … … 98 99 bool versionMatchesExpected() const; 99 100 100 v oid markAsDeletedAndClose();101 virtual void markAsDeletedAndClose(); 101 102 bool deleted() const { return m_deleted; } 102 103 103 104 enum ClosePolicy { DoNotRemoveDatabaseFromContext, RemoveDatabaseFromContext }; 104 105 void close(ClosePolicy); 106 virtual void closeImmediately(); 105 107 bool opened() const { return m_opened; } 106 108 -
trunk/WebCore/storage/DatabaseTracker.cpp
r60408 r61154 32 32 #if ENABLE(DATABASE) 33 33 34 #include "AbstractDatabase.h" 34 35 #include "Chrome.h" 35 36 #include "ChromeClient.h" 36 #include "Database.h"37 37 #include "DatabaseThread.h" 38 38 #include "DatabaseTrackerClient.h" … … 220 220 } 221 221 222 unsigned long long DatabaseTracker::getMaxSizeForDatabase(const Database* database)222 unsigned long long DatabaseTracker::getMaxSizeForDatabase(const AbstractDatabase* database) 223 223 { 224 224 ASSERT(currentThread() == database->scriptExecutionContext()->databaseThread()->getThreadID()); … … 231 231 } 232 232 233 void DatabaseTracker::databaseChanged( Database* database)233 void DatabaseTracker::databaseChanged(AbstractDatabase* database) 234 234 { 235 235 Locker<OriginQuotaManager> quotaManagerLocker(originQuotaManager()); … … 480 480 } 481 481 482 void DatabaseTracker::addOpenDatabase( Database* database)482 void DatabaseTracker::addOpenDatabase(AbstractDatabase* database) 483 483 { 484 484 if (!database) … … 513 513 } 514 514 515 void DatabaseTracker::removeOpenDatabase( Database* database)515 void DatabaseTracker::removeOpenDatabase(AbstractDatabase* database) 516 516 { 517 517 if (!database) … … 560 560 } 561 561 562 void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr< Database> >* databases)562 void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr<AbstractDatabase> >* databases) 563 563 { 564 564 MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard); … … 974 974 #endif 975 975 976 Vector<RefPtr< Database> > deletedDatabases;976 Vector<RefPtr<AbstractDatabase> > deletedDatabases; 977 977 978 978 // Make sure not to hold the any locks when calling -
trunk/WebCore/storage/DatabaseTracker.h
r60092 r61154 45 45 namespace WebCore { 46 46 47 class Database;47 class AbstractDatabase; 48 48 class ScriptExecutionContext; 49 49 class SecurityOrigin; … … 71 71 String fullPathForDatabase(SecurityOrigin*, const String& name, bool createIfDoesNotExist = true); 72 72 73 void addOpenDatabase( Database*);74 void removeOpenDatabase( Database*);75 void getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr< Database> >* databases);73 void addOpenDatabase(AbstractDatabase*); 74 void removeOpenDatabase(AbstractDatabase*); 75 void getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr<AbstractDatabase> >* databases); 76 76 77 unsigned long long getMaxSizeForDatabase(const Database*);78 void databaseChanged( Database*);77 unsigned long long getMaxSizeForDatabase(const AbstractDatabase*); 78 void databaseChanged(AbstractDatabase*); 79 79 80 80 private: 81 81 DatabaseTracker(const String& databasePath); 82 82 83 typedef HashSet< Database*> DatabaseSet;83 typedef HashSet<AbstractDatabase*> DatabaseSet; 84 84 typedef HashMap<String, DatabaseSet*> DatabaseNameMap; 85 85 typedef HashMap<RefPtr<SecurityOrigin>, DatabaseNameMap*, SecurityOriginHash> DatabaseOriginMap; -
trunk/WebCore/storage/OriginQuotaManager.cpp
r56293 r61154 31 31 #if ENABLE(DATABASE) 32 32 33 #include " Database.h"33 #include "AbstractDatabase.h" 34 34 #include "OriginUsageRecord.h" 35 35 … … 113 113 } 114 114 115 void OriginQuotaManager::markDatabase( Database* database)115 void OriginQuotaManager::markDatabase(AbstractDatabase* database) 116 116 { 117 117 ASSERT(database); -
trunk/WebCore/storage/OriginQuotaManager.h
r56293 r61154 39 39 namespace WebCore { 40 40 41 class Database;41 class AbstractDatabase; 42 42 class OriginUsageRecord; 43 43 … … 56 56 void removeOrigin(SecurityOrigin*); 57 57 58 void markDatabase( Database*); // Mark dirtiness of a specific database.58 void markDatabase(AbstractDatabase*); // Mark dirtiness of a specific database. 59 59 unsigned long long diskUsage(SecurityOrigin*) const; 60 60 -
trunk/WebCore/storage/chromium/DatabaseObserver.h
r56548 r61154 34 34 namespace WebCore { 35 35 36 class Database;36 class AbstractDatabase; 37 37 class ScriptExecutionContext; 38 38 class String; … … 43 43 public: 44 44 static bool canEstablishDatabase(ScriptExecutionContext*, const String&, const String&, unsigned long); 45 static void databaseOpened( Database*);46 static void databaseModified( Database*);47 static void databaseClosed( Database*);45 static void databaseOpened(AbstractDatabase*); 46 static void databaseModified(AbstractDatabase*); 47 static void databaseClosed(AbstractDatabase*); 48 48 }; 49 49 -
trunk/WebCore/storage/chromium/DatabaseTrackerChromium.cpp
r60092 r61154 32 32 #include "DatabaseTracker.h" 33 33 34 #include " Database.h"34 #include "AbstractDatabase.h" 35 35 #include "DatabaseObserver.h" 36 36 #include "DatabaseThread.h" … … 73 73 } 74 74 75 void DatabaseTracker::addOpenDatabase( Database* database)75 void DatabaseTracker::addOpenDatabase(AbstractDatabase* database) 76 76 { 77 77 ASSERT(database->scriptExecutionContext()->isContextThread()); … … 100 100 class TrackerRemoveOpenDatabaseTask : public ScriptExecutionContext::Task { 101 101 public: 102 static PassOwnPtr<TrackerRemoveOpenDatabaseTask> create(PassRefPtr< Database> database)102 static PassOwnPtr<TrackerRemoveOpenDatabaseTask> create(PassRefPtr<AbstractDatabase> database) 103 103 { 104 104 return new TrackerRemoveOpenDatabaseTask(database); … … 111 111 112 112 private: 113 TrackerRemoveOpenDatabaseTask(PassRefPtr< Database> database)113 TrackerRemoveOpenDatabaseTask(PassRefPtr<AbstractDatabase> database) 114 114 : m_database(database) 115 115 { 116 116 } 117 117 118 RefPtr< Database> m_database;118 RefPtr<AbstractDatabase> m_database; 119 119 }; 120 120 121 void DatabaseTracker::removeOpenDatabase( Database* database)121 void DatabaseTracker::removeOpenDatabase(AbstractDatabase* database) 122 122 { 123 123 if (!database->scriptExecutionContext()->isContextThread()) { … … 148 148 149 149 150 void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr< Database> >* databases)150 void DatabaseTracker::getOpenDatabases(SecurityOrigin* origin, const String& name, HashSet<RefPtr<AbstractDatabase> >* databases) 151 151 { 152 152 MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard); … … 166 166 } 167 167 168 unsigned long long DatabaseTracker::getMaxSizeForDatabase(const Database* database)168 unsigned long long DatabaseTracker::getMaxSizeForDatabase(const AbstractDatabase* database) 169 169 { 170 170 ASSERT(currentThread() == database->scriptExecutionContext()->databaseThread()->getThreadID()); -
trunk/WebKit/chromium/ChangeLog
r61151 r61154 1 2010-06-14 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Adam Barth. 4 5 Get DatabaseTracker ready for sync DBs. 6 https://bugs.webkit.org/show_bug.cgi?id=39041 7 8 * public/WebDatabase.h: 9 * src/DatabaseObserver.cpp: 10 (WebCore::DatabaseObserver::databaseOpened): 11 (WebCore::DatabaseObserver::databaseModified): 12 (WebCore::DatabaseObserver::databaseClosed): 13 * src/WebDatabase.cpp: 14 (WebKit::WebDatabase::closeDatabaseImmediately): 15 (WebKit::WebDatabase::WebDatabase): 16 (WebKit::WebDatabase::operator=): 17 (WebKit::WebDatabase::operator WTF::PassRefPtr<AbstractDatabase>): 18 1 19 2010-06-14 Chris Fleizach <cfleizach@apple.com> 2 20 -
trunk/WebKit/chromium/public/WebDatabase.h
r54506 r61154 36 36 37 37 #if WEBKIT_IMPLEMENTATION 38 namespace WebCore { class Database; }38 namespace WebCore { class AbstractDatabase; } 39 39 namespace WTF { template <typename T> class PassRefPtr; } 40 40 #endif … … 77 77 78 78 #if WEBKIT_IMPLEMENTATION 79 WebDatabase(const WTF::PassRefPtr<WebCore:: Database>&);80 WebDatabase& operator=(const WTF::PassRefPtr<WebCore:: Database>&);81 operator WTF::PassRefPtr<WebCore:: Database>() const;79 WebDatabase(const WTF::PassRefPtr<WebCore::AbstractDatabase>&); 80 WebDatabase& operator=(const WTF::PassRefPtr<WebCore::AbstractDatabase>&); 81 operator WTF::PassRefPtr<WebCore::AbstractDatabase>() const; 82 82 #endif 83 83 -
trunk/WebKit/chromium/src/DatabaseObserver.cpp
r60330 r61154 32 32 #include "DatabaseObserver.h" 33 33 34 #include " Database.h"34 #include "AbstractDatabase.h" 35 35 #include "Document.h" 36 36 #include "ScriptExecutionContext.h" … … 66 66 } 67 67 68 void DatabaseObserver::databaseOpened( Database* database)68 void DatabaseObserver::databaseOpened(AbstractDatabase* database) 69 69 { 70 70 ASSERT(database->scriptExecutionContext()->isContextThread()); … … 72 72 } 73 73 74 void DatabaseObserver::databaseModified( Database* database)74 void DatabaseObserver::databaseModified(AbstractDatabase* database) 75 75 { 76 76 ASSERT(database->scriptExecutionContext()->isContextThread()); … … 78 78 } 79 79 80 void DatabaseObserver::databaseClosed( Database* database)80 void DatabaseObserver::databaseClosed(AbstractDatabase* database) 81 81 { 82 82 ASSERT(database->scriptExecutionContext()->isContextThread()); -
trunk/WebKit/chromium/src/WebDatabase.cpp
r57768 r61154 32 32 #include "WebDatabase.h" 33 33 34 #include " Database.h"34 #include "AbstractDatabase.h" 35 35 #include "DatabaseTask.h" 36 36 #include "DatabaseThread.h" … … 51 51 static WebDatabaseObserver* databaseObserver = 0; 52 52 53 class WebDatabasePrivate : public Database {53 class WebDatabasePrivate : public AbstractDatabase { 54 54 }; 55 55 … … 111 111 void WebDatabase::closeDatabaseImmediately(const WebString& originIdentifier, const WebString& databaseName) 112 112 { 113 HashSet<RefPtr<Database> > databaseHandles; 114 PassRefPtr<SecurityOrigin> originPrp(WebSecurityOrigin::createFromDatabaseIdentifier(originIdentifier)); 115 RefPtr<SecurityOrigin> origin = originPrp; 113 HashSet<RefPtr<AbstractDatabase> > databaseHandles; 114 RefPtr<SecurityOrigin> origin = SecurityOrigin::createFromDatabaseIdentifier(originIdentifier); 116 115 DatabaseTracker::tracker().getOpenDatabases(origin.get(), databaseName, &databaseHandles); 117 for (HashSet<RefPtr<Database> >::iterator it = databaseHandles.begin(); it != databaseHandles.end(); ++it) { 118 Database* database = it->get(); 119 DatabaseThread* databaseThread = database->scriptExecutionContext()->databaseThread(); 120 if (databaseThread && !databaseThread->terminationRequested()) { 121 database->stop(); 122 databaseThread->scheduleTask(DatabaseCloseTask::create(database, Database::RemoveDatabaseFromContext, 0)); 123 } 124 } 116 for (HashSet<RefPtr<AbstractDatabase> >::iterator it = databaseHandles.begin(); it != databaseHandles.end(); ++it) 117 it->get()->closeImmediately(); 125 118 } 126 119 127 WebDatabase::WebDatabase(const WTF::PassRefPtr< Database>& database)120 WebDatabase::WebDatabase(const WTF::PassRefPtr<AbstractDatabase>& database) 128 121 : m_private(static_cast<WebDatabasePrivate*>(database.releaseRef())) 129 122 { 130 123 } 131 124 132 WebDatabase& WebDatabase::operator=(const WTF::PassRefPtr< Database>& database)125 WebDatabase& WebDatabase::operator=(const WTF::PassRefPtr<AbstractDatabase>& database) 133 126 { 134 127 assign(static_cast<WebDatabasePrivate*>(database.releaseRef())); … … 136 129 } 137 130 138 WebDatabase::operator WTF::PassRefPtr< Database>() const131 WebDatabase::operator WTF::PassRefPtr<AbstractDatabase>() const 139 132 { 140 return PassRefPtr< Database>(const_cast<WebDatabasePrivate*>(m_private));133 return PassRefPtr<AbstractDatabase>(const_cast<WebDatabasePrivate*>(m_private)); 141 134 } 142 135
Note: See TracChangeset
for help on using the changeset viewer.