Changeset 109716 in webkit
- Timestamp:
- Mar 5, 2012 12:13:42 AM (12 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r109709 r109716 1 2012-03-05 Adam Barth <abarth@webkit.org> 2 3 allowDatabaseAccess and databaseExceededQuota should be part of DatabaseContext not ScriptExecutionContext 4 https://bugs.webkit.org/show_bug.cgi?id=80178 5 6 Reviewed by Eric Seidel. 7 8 These functions are only used by SQLDatabase, which means we can move 9 them to DatabaseContext, removing one more tendril of the SQLDatabase 10 code. 11 12 * dom/Document.cpp: 13 (WebCore): 14 * dom/Document.h: 15 (Document): 16 * dom/ScriptExecutionContext.h: 17 (ScriptExecutionContext): 18 * storage/DatabaseContext.cpp: 19 (WebCore::DatabaseContext::DatabaseContext): 20 (WebCore::DatabaseContext::from): 21 (WebCore::DatabaseContext::allowDatabaseAccess): 22 (WebCore): 23 (WebCore::DatabaseContext::databaseExceededQuota): 24 * storage/DatabaseContext.h: 25 (DatabaseContext): 26 * storage/DatabaseTracker.cpp: 27 (WebCore::DatabaseTracker::canEstablishDatabase): 28 * storage/SQLTransaction.cpp: 29 (WebCore::SQLTransaction::executeSQL): 30 * storage/SQLTransactionClient.cpp: 31 (WebCore::SQLTransactionClient::didExceedQuota): 32 * storage/SQLTransactionSync.cpp: 33 (WebCore::SQLTransactionSync::executeSQL): 34 * workers/WorkerContext.cpp: 35 (WebCore): 36 * workers/WorkerContext.h: 37 (WorkerContext): 38 1 39 2012-03-04 Sheriff Bot <webkit.review.bot@gmail.com> 2 40 -
trunk/Source/WebCore/dom/Document.cpp
r109656 r109716 4739 4739 } 4740 4740 4741 #if ENABLE(SQL_DATABASE)4742 4743 bool Document::allowDatabaseAccess() const4744 {4745 if (!page() || (page()->settings()->privateBrowsingEnabled() && !SchemeRegistry::allowsDatabaseAccessInPrivateBrowsing(securityOrigin()->protocol())))4746 return false;4747 return true;4748 }4749 4750 void Document::databaseExceededQuota(const String& name)4751 {4752 Page* currentPage = page();4753 if (currentPage)4754 currentPage->chrome()->client()->exceededDatabaseQuota(document()->frame(), name);4755 }4756 4757 #endif4758 4759 4741 bool Document::isContextThread() const 4760 4742 { -
trunk/Source/WebCore/dom/Document.h
r109656 r109716 1029 1029 bool loadEventFinished() const { return m_loadEventFinished; } 1030 1030 1031 #if ENABLE(SQL_DATABASE)1032 virtual bool allowDatabaseAccess() const;1033 virtual void databaseExceededQuota(const String& name);1034 #endif1035 1036 1031 virtual bool isContextThread() const; 1037 1032 virtual bool isJSExecutionForbidden() const { return false; } -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r109319 r109716 71 71 virtual bool isWorkerContext() const { return false; } 72 72 73 #if ENABLE(SQL_DATABASE)74 virtual bool allowDatabaseAccess() const = 0;75 virtual void databaseExceededQuota(const String& name) = 0;76 #endif77 73 virtual bool isContextThread() const { return true; } 78 74 virtual bool isJSExecutionForbidden() const = 0; -
trunk/Source/WebCore/storage/DatabaseContext.cpp
r109319 r109716 31 31 #if ENABLE(SQL_DATABASE) 32 32 33 #include "Chrome.h" 34 #include "ChromeClient.h" 33 35 #include "Database.h" 34 36 #include "DatabaseTask.h" 35 37 #include "DatabaseThread.h" 38 #include "DatabaseTracker.h" 39 #include "Document.h" 40 #include "Page.h" 41 #include "SchemeRegistry.h" 42 #include "SecurityOrigin.h" 43 #include "Settings.h" 36 44 37 45 namespace WebCore { … … 42 50 } 43 51 44 DatabaseContext::DatabaseContext() 45 : m_hasOpenDatabases(false) 52 DatabaseContext::DatabaseContext(ScriptExecutionContext* context) 53 : m_scriptExecutionContext(context) 54 , m_hasOpenDatabases(false) 46 55 { 47 56 } … … 59 68 DatabaseContext* supplement = existingDatabaseContextFrom(context); 60 69 if (!supplement) { 61 supplement = new DatabaseContext( );70 supplement = new DatabaseContext(context); 62 71 provideTo(context, "DatabaseContext", adoptPtr(supplement)); 63 72 ASSERT(supplement == existingDatabaseContextFrom(context)); … … 101 110 } 102 111 112 bool DatabaseContext::allowDatabaseAccess() const 113 { 114 if (m_scriptExecutionContext->isDocument()) { 115 Document* document = static_cast<Document*>(m_scriptExecutionContext); 116 if (!document->page() || (document->page()->settings()->privateBrowsingEnabled() && !SchemeRegistry::allowsDatabaseAccessInPrivateBrowsing(document->securityOrigin()->protocol()))) 117 return false; 118 return true; 119 } 120 ASSERT(m_scriptExecutionContext->isWorkerContext()); 121 // allowDatabaseAccess is not yet implemented for workers. 122 return true; 123 } 124 125 void DatabaseContext::databaseExceededQuota(const String& name) 126 { 127 if (m_scriptExecutionContext->isDocument()) { 128 Document* document = static_cast<Document*>(m_scriptExecutionContext); 129 if (Page* page = document->page()) 130 page->chrome()->client()->exceededDatabaseQuota(document->frame(), name); 131 return; 132 } 133 ASSERT(m_scriptExecutionContext->isWorkerContext()); 134 #if !PLATFORM(CHROMIUM) 135 // FIXME: This needs a real implementation; this is a temporary solution for testing. 136 const unsigned long long defaultQuota = 5 * 1024 * 1024; 137 DatabaseTracker::tracker().setQuota(m_scriptExecutionContext->securityOrigin(), defaultQuota); 138 #endif 139 } 140 103 141 } // namespace WebCore 104 142 -
trunk/Source/WebCore/storage/DatabaseContext.h
r109319 r109716 54 54 static void stopDatabases(ScriptExecutionContext*, DatabaseTaskSynchronizer*); 55 55 56 bool allowDatabaseAccess() const; 57 void databaseExceededQuota(const String& name); 58 56 59 private: 57 DatabaseContext();60 explicit DatabaseContext(ScriptExecutionContext*); 58 61 62 ScriptExecutionContext* m_scriptExecutionContext; 59 63 RefPtr<DatabaseThread> m_databaseThread; 60 64 bool m_hasOpenDatabases; // This never changes back to false, even after the database thread is closed. -
trunk/Source/WebCore/storage/DatabaseTracker.cpp
r98316 r109716 35 35 #include "Chrome.h" 36 36 #include "ChromeClient.h" 37 #include "DatabaseContext.h" 37 38 #include "DatabaseThread.h" 38 39 #include "DatabaseTrackerClient.h" … … 176 177 } 177 178 // Drop all locks before calling out; we don't know what they'll do. 178 context->databaseExceededQuota(name);179 DatabaseContext::from(context)->databaseExceededQuota(name); 179 180 180 181 MutexLocker lockDatabase(m_databaseGuard); -
trunk/Source/WebCore/storage/SQLTransaction.cpp
r109319 r109716 99 99 100 100 int permissions = DatabaseAuthorizer::ReadWriteMask; 101 if (!m_database-> scriptExecutionContext()->allowDatabaseAccess())101 if (!m_database->databaseContext()->allowDatabaseAccess()) 102 102 permissions |= DatabaseAuthorizer::NoAccessMask; 103 103 else if (m_readOnly) -
trunk/Source/WebCore/storage/SQLTransactionClient.cpp
r95901 r109716 35 35 36 36 #include "AbstractDatabase.h" 37 #include "DatabaseContext.h" 37 38 #include "DatabaseTracker.h" 38 39 #include "ScriptExecutionContext.h" … … 56 57 ASSERT(database->scriptExecutionContext()->isContextThread()); 57 58 unsigned long long currentQuota = DatabaseTracker::tracker().quotaForOrigin(database->securityOrigin()); 58 database-> scriptExecutionContext()->databaseExceededQuota(database->stringIdentifier());59 database->databaseContext()->databaseExceededQuota(database->stringIdentifier()); 59 60 unsigned long long newQuota = DatabaseTracker::tracker().quotaForOrigin(database->securityOrigin()); 60 61 return (newQuota > currentQuota); -
trunk/Source/WebCore/storage/SQLTransactionSync.cpp
r101492 r109716 35 35 36 36 #include "DatabaseAuthorizer.h" 37 #include "DatabaseContext.h" 37 38 #include "DatabaseSync.h" 38 39 #include "PlatformString.h" … … 95 96 96 97 int permissions = DatabaseAuthorizer::ReadWriteMask; 97 if (!m_database-> scriptExecutionContext()->allowDatabaseAccess())98 if (!m_database->databaseContext()->allowDatabaseAccess()) 98 99 permissions |= DatabaseAuthorizer::NoAccessMask; 99 100 else if (m_readOnly) -
trunk/Source/WebCore/workers/WorkerContext.cpp
r109556 r109716 320 320 } 321 321 322 void WorkerContext::databaseExceededQuota(const String&)323 {324 #if !PLATFORM(CHROMIUM)325 // FIXME: This needs a real implementation; this is a temporary solution for testing.326 const unsigned long long defaultQuota = 5 * 1024 * 1024;327 DatabaseTracker::tracker().setQuota(securityOrigin(), defaultQuota);328 #endif329 }330 331 322 PassRefPtr<DatabaseSync> WorkerContext::openDatabaseSync(const String& name, const String& version, const String& displayName, unsigned long estimatedSize, PassRefPtr<DatabaseCallback> creationCallback, ExceptionCode& ec) 332 323 { -
trunk/Source/WebCore/workers/WorkerContext.h
r109556 r109716 117 117 PassRefPtr<Database> openDatabase(const String& name, const String& version, const String& displayName, unsigned long estimatedSize, PassRefPtr<DatabaseCallback> creationCallback, ExceptionCode&); 118 118 PassRefPtr<DatabaseSync> openDatabaseSync(const String& name, const String& version, const String& displayName, unsigned long estimatedSize, PassRefPtr<DatabaseCallback> creationCallback, ExceptionCode&); 119 120 // Not implemented yet.121 virtual bool allowDatabaseAccess() const { return true; }122 // Not implemented for real yet.123 virtual void databaseExceededQuota(const String&);124 119 #endif 125 120 virtual bool isContextThread() const;
Note: See TracChangeset
for help on using the changeset viewer.