Changeset 47477 in webkit
- Timestamp:
- Aug 18, 2009 7:56:13 PM (15 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r47476 r47477 1 2009-08-18 Dumitru Daniliuc <dumi@chromium.org> 2 3 Reviewed by Dimitri Glazkov. 4 5 Added a client to SQLTransaction. In addition to being a place to 6 get notifications about certain events in a transaction, it is 7 also an abstraction layer that allows us to plug in different 8 implementations for each port for how transactions interract with 9 the main DB. For example, WebCore's default implementation will 10 make direct calls to DatabaseTracker's methods. At the same time, 11 Chromium's implementation will send IPCs to the browser process 12 whenever a transaction needs something from the main DB. 13 14 All storage tests pass. 15 16 https://bugs.webkit.org/show_bug.cgi?id=27967 17 18 * GNUmakefile.am: 19 * WebCore.gypi: 20 * WebCore.pro: 21 * WebCore.vcproj/WebCore.vcproj: 22 * WebCore.xcodeproj/project.pbxproj: 23 * WebCoreSources.bkl: 24 * storage/Database.cpp: 25 (WebCore::Database::transactionClient): 26 * storage/Database.h: 27 * storage/DatabaseThread.cpp: 28 (WebCore::DatabaseThread::DatabaseThread): 29 * storage/DatabaseThread.h: 30 (WebCore::DatabaseThread::transactionClient): 31 * storage/SQLTransaction.cpp: 32 (WebCore::SQLTransaction::runCurrentStatement): 33 (WebCore::SQLTransaction::deliverQuotaIncreaseCallback): 34 (WebCore::SQLTransaction::postflightAndCommit): 35 * storage/SQLTransactionClient.cpp: Added. 36 * storage/SQLTransactionClient.h: Added. 37 1 38 2009-08-18 Julie Parent <jparent@chromium.org> 2 39 -
trunk/WebCore/GNUmakefile.am
r47420 r47477 2125 2125 WebCore/storage/SQLTransaction.h \ 2126 2126 WebCore/storage/SQLTransactionCallback.h \ 2127 WebCore/storage/SQLTransactionClient.cpp \ 2128 WebCore/storage/SQLTransactionClient.h \ 2127 2129 WebCore/storage/SQLTransactionCoordinator.h \ 2128 2130 WebCore/storage/SQLTransactionCoordinator.cpp \ -
trunk/WebCore/WebCore.gypi
r47420 r47477 2966 2966 'storage/SQLTransaction.h', 2967 2967 'storage/SQLTransactionCallback.h', 2968 'storage/SQLTransactionClient.h', 2969 'storage/SQLTransactionClient.cpp', 2968 2970 'storage/SQLTransactionCoordinator.h', 2969 2971 'storage/SQLTransactionCoordinator.cpp', -
trunk/WebCore/WebCore.pro
r47424 r47477 2505 2505 storage/SQLStatement.cpp \ 2506 2506 storage/SQLTransaction.cpp \ 2507 storage/SQLTransactionClient.cpp \ 2507 2508 storage/SQLTransactionCoordinator.cpp \ 2508 2509 bindings/js/JSCustomSQLStatementCallback.cpp \ … … 2533 2534 storage/SQLStatement.h \ 2534 2535 storage/SQLTransaction.h \ 2536 storage/SQLTransactionClient.h \ 2535 2537 storage/SQLTransactionCoordinator.h \ 2536 2538 storage/StorageArea.h \ -
trunk/WebCore/WebCore.vcproj/WebCore.vcproj
r47420 r47477 30817 30817 </File> 30818 30818 <File 30819 RelativePath="..\storage\SQLTransactionClient.h" 30820 > 30821 </File> 30822 <File 30823 RelativePath="..\storage\SQLTransactionClient.cpp" 30824 > 30825 </File> 30826 <File 30819 30827 RelativePath="..\storage\SQLTransactionCoordinator.h" 30820 30828 > -
trunk/WebCore/WebCore.xcodeproj/project.pbxproj
r47440 r47477 3860 3860 B2FA3E190AB75A6F000E5AC4 /* JSSVGZoomEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */; }; 3861 3861 B50F5B810E96CD9900AD71A6 /* WebCoreObjCExtras.mm in Sources */ = {isa = PBXBuildFile; fileRef = B50F5B800E96CD9900AD71A6 /* WebCoreObjCExtras.mm */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; 3862 B51BF6F0102C9E590002C15A /* SQLTransactionClient.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B51BF6EE102C9E590002C15A /* SQLTransactionClient.cpp */; }; 3863 B51BF6F1102C9E590002C15A /* SQLTransactionClient.h in Headers */ = {isa = PBXBuildFile; fileRef = B51BF6EF102C9E590002C15A /* SQLTransactionClient.h */; }; 3862 3864 B5A684220FFABE9800D24689 /* SQLiteFileSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A684210FFABE9800D24689 /* SQLiteFileSystem.h */; }; 3863 3865 B5A684240FFABEAA00D24689 /* SQLiteFileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */; }; … … 8769 8771 B2FA3D310AB75A6F000E5AC4 /* JSSVGZoomEvent.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = JSSVGZoomEvent.h; sourceTree = "<group>"; }; 8770 8772 B50F5B800E96CD9900AD71A6 /* WebCoreObjCExtras.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebCoreObjCExtras.mm; sourceTree = "<group>"; }; 8773 B51BF6EE102C9E590002C15A /* SQLTransactionClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SQLTransactionClient.cpp; sourceTree = "<group>"; }; 8774 B51BF6EF102C9E590002C15A /* SQLTransactionClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLTransactionClient.h; sourceTree = "<group>"; }; 8771 8775 B5A684210FFABE9800D24689 /* SQLiteFileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SQLiteFileSystem.h; path = sql/SQLiteFileSystem.h; sourceTree = "<group>"; }; 8772 8776 B5A684230FFABEAA00D24689 /* SQLiteFileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SQLiteFileSystem.cpp; path = sql/SQLiteFileSystem.cpp; sourceTree = "<group>"; }; … … 9876 9880 isa = PBXGroup; 9877 9881 children = ( 9882 B51BF6EE102C9E590002C15A /* SQLTransactionClient.cpp */, 9883 B51BF6EF102C9E590002C15A /* SQLTransactionClient.h */, 9878 9884 B5C11239102B6C4600096578 /* SQLTransactionCoordinator.cpp */, 9879 9885 B5C1123A102B6C4600096578 /* SQLTransactionCoordinator.h */, … … 17317 17323 D8B6152F1032495100C8554A /* Cookie.h in Headers */, 17318 17324 BCFA930810333193007B25D1 /* RenderOverflow.h in Headers */, 17325 B51BF6F1102C9E590002C15A /* SQLTransactionClient.h in Headers */, 17319 17326 ); 17320 17327 runOnlyForDeploymentPostprocessing = 0; … … 19383 19390 9392262F10321084006E7D5D /* JSCSSRuleListCustom.cpp in Sources */, 19384 19391 B5C1123B102B6C4600096578 /* SQLTransactionCoordinator.cpp in Sources */, 19392 B51BF6F0102C9E590002C15A /* SQLTransactionClient.cpp in Sources */, 19385 19393 ); 19386 19394 runOnlyForDeploymentPostprocessing = 0; -
trunk/WebCore/WebCoreSources.bkl
r47420 r47477 1040 1040 storage/SQLStatement.cpp 1041 1041 storage/SQLTransaction.cpp 1042 storage/SQLTransactionClient.cpp 1043 storage/SQLTransactionCoordinator.cpp 1042 1044 storage/Storage.cpp 1043 1045 storage/StorageAreaImpl.cpp -
trunk/WebCore/storage/Database.cpp
r47458 r47477 51 51 #include "SQLiteStatement.h" 52 52 #include "SQLResultSet.h" 53 #include "SQLTransactionClient.h" 53 54 #include "SQLTransactionCoordinator.h" 54 55 #include <wtf/MainThread.h> … … 590 591 } 591 592 593 SQLTransactionClient* Database::transactionClient() const 594 { 595 return m_document->databaseThread()->transactionClient(); 596 } 597 592 598 SQLTransactionCoordinator* Database::transactionCoordinator() const 593 599 { -
trunk/WebCore/storage/Database.h
r47170 r47477 42 42 #include <wtf/Forward.h> 43 43 #include <wtf/HashSet.h> 44 #include <wtf/OwnPtr.h>45 44 #include <wtf/PassRefPtr.h> 46 45 #include <wtf/RefPtr.h> … … 58 57 class SQLResultSet; 59 58 class SQLTransactionCallback; 59 class SQLTransactionClient; 60 60 class SQLTransactionCoordinator; 61 61 class SQLTransactionErrorCallback; … … 118 118 Vector<String> performGetTableNames(); 119 119 120 SQLTransactionClient* transactionClient() const; 120 121 SQLTransactionCoordinator* transactionCoordinator() const; 121 122 -
trunk/WebCore/storage/DatabaseThread.cpp
r47170 r47477 36 36 #include "DatabaseTask.h" 37 37 #include "Logging.h" 38 #include "SQLTransactionClient.h" 38 39 #include "SQLTransactionCoordinator.h" 39 40 … … 42 43 DatabaseThread::DatabaseThread() 43 44 : m_threadID(0) 45 , m_transactionClient(new SQLTransactionClient()) 44 46 , m_transactionCoordinator(new SQLTransactionCoordinator()) 45 47 { -
trunk/WebCore/storage/DatabaseThread.h
r47170 r47477 44 44 class DatabaseTask; 45 45 class Document; 46 class SQLTransactionClient; 46 47 class SQLTransactionCoordinator; 47 48 … … 63 64 ThreadIdentifier getThreadID() { return m_threadID; } 64 65 66 SQLTransactionClient* transactionClient() { return m_transactionClient.get(); } 65 67 SQLTransactionCoordinator* transactionCoordinator() { return m_transactionCoordinator.get(); } 66 68 … … 81 83 DatabaseSet m_openDatabaseSet; 82 84 85 OwnPtr<SQLTransactionClient> m_transactionClient; 83 86 OwnPtr<SQLTransactionCoordinator> m_transactionCoordinator; 84 87 }; -
trunk/WebCore/storage/SQLTransaction.cpp
r47170 r47477 36 36 #include "DatabaseAuthorizer.h" 37 37 #include "DatabaseDetails.h" 38 #include "DatabaseTracker.h"39 38 #include "Document.h" 40 39 #include "ExceptionCode.h" 41 40 #include "Logging.h" 42 #include "OriginQuotaManager.h"43 41 #include "Page.h" 44 42 #include "PlatformString.h" … … 51 49 #include "SQLStatementCallback.h" 52 50 #include "SQLStatementErrorCallback.h" 51 #include "SQLTransactionClient.h" 53 52 #include "SQLTransactionCoordinator.h" 54 53 #include "SQLValue.h" … … 351 350 m_modifiedDatabase = true; 352 351 // Also dirty the size of this database file for calculating quota usage 353 OriginQuotaManager& manager(DatabaseTracker::tracker().originQuotaManager()); 354 Locker<OriginQuotaManager> locker(manager); 355 356 manager.markDatabase(m_database.get()); 352 m_database->transactionClient()->didExecuteStatement(this); 357 353 } 358 354 … … 415 411 ASSERT(m_currentStatement); 416 412 ASSERT(!m_shouldRetryCurrentStatement); 417 418 Page* page = m_database->document()->page(); 419 ASSERT(page); 420 421 RefPtr<SecurityOrigin> origin = m_database->securityOriginCopy(); 422 423 unsigned long long currentQuota = DatabaseTracker::tracker().quotaForOrigin(origin.get()); 424 page->chrome()->client()->exceededDatabaseQuota(m_database->document()->frame(), m_database->stringIdentifier()); 425 unsigned long long newQuota = DatabaseTracker::tracker().quotaForOrigin(origin.get()); 426 427 // If the new quota ended up being larger than the old quota, we will retry the statement. 428 if (newQuota > currentQuota) 429 m_shouldRetryCurrentStatement = true; 430 413 414 m_shouldRetryCurrentStatement = m_database->transactionClient()->didExceedQuota(this); 415 431 416 m_nextStep = &SQLTransaction::runStatements; 432 417 LOG(StorageAPI, "Scheduling runStatements for transaction %p\n", this); … … 463 448 // The commit was successful, notify the delegates if the transaction modified this database 464 449 if (m_modifiedDatabase) 465 DatabaseTracker::tracker().scheduleNotifyDatabaseChanged(m_database->m_securityOrigin.get(), m_database->m_name);466 450 m_database->transactionClient()->didCommitTransaction(this); 451 467 452 // Now release our unneeded callbacks, to break reference cycles. 468 453 m_callback = 0;
Note: See TracChangeset
for help on using the changeset viewer.