Title: [97546] trunk/Source
Revision
97546
Author
[email protected]
Date
2011-10-15 00:16:21 -0700 (Sat, 15 Oct 2011)

Log Message

[Chromium] Some WebSQLDatabase in worker bug fixes.
https://bugs.webkit.org/show_bug.cgi?id=70071

- Test for a NULL webView WebWorkerClientImpl.
- Avoid altering Database instance lifetimes during WorkerThread::stop().

Source/WebCore:

Existing tests coverage applies.

Reviewed by David Levin.

* storage/chromium/DatabaseTrackerChromium.cpp:
(WebCore::DatabaseTracker::interruptAllDatabasesForContext):

Source/WebKit/chromium:

Reviewed by David Levin.

* src/WebWorkerClientImpl.cpp:
(WebKit::WebWorkerClientImpl::allowFileSystem):
(WebKit::WebWorkerClientImpl::allowDatabase):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (97545 => 97546)


--- trunk/Source/WebCore/ChangeLog	2011-10-15 07:08:39 UTC (rev 97545)
+++ trunk/Source/WebCore/ChangeLog	2011-10-15 07:16:21 UTC (rev 97546)
@@ -1,3 +1,18 @@
+2011-10-15  Michael Nordman  <[email protected]>
+
+        [Chromium] Some WebSQLDatabase in worker bug fixes.
+        https://bugs.webkit.org/show_bug.cgi?id=70071
+
+        - Test for a NULL webView WebWorkerClientImpl.
+        - Avoid altering Database instance lifetimes during WorkerThread::stop().
+
+        Existing tests coverage applies.
+
+        Reviewed by David Levin.
+
+        * storage/chromium/DatabaseTrackerChromium.cpp:
+        (WebCore::DatabaseTracker::interruptAllDatabasesForContext):
+
 2011-10-14  Adam Barth  <[email protected]>
 
         Update expected results.

Modified: trunk/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp (97545 => 97546)


--- trunk/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp	2011-10-15 07:08:39 UTC (rev 97545)
+++ trunk/Source/WebCore/storage/chromium/DatabaseTrackerChromium.cpp	2011-10-15 07:16:21 UTC (rev 97546)
@@ -189,31 +189,24 @@
 
 void DatabaseTracker::interruptAllDatabasesForContext(const ScriptExecutionContext* context)
 {
-    Vector<RefPtr<AbstractDatabase> > openDatabases;
-    {
-        MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard);
+    MutexLocker openDatabaseMapLock(m_openDatabaseMapGuard);
 
-        if (!m_openDatabaseMap)
-            return;
+    if (!m_openDatabaseMap)
+        return;
 
-        DatabaseNameMap* nameMap = m_openDatabaseMap->get(context->securityOrigin()->databaseIdentifier());
-        if (!nameMap)
-            return;
+    DatabaseNameMap* nameMap = m_openDatabaseMap->get(context->securityOrigin()->databaseIdentifier());
+    if (!nameMap)
+        return;
 
-        DatabaseNameMap::const_iterator dbNameMapEndIt = nameMap->end();
-        for (DatabaseNameMap::const_iterator dbNameMapIt = nameMap->begin(); dbNameMapIt != dbNameMapEndIt; ++dbNameMapIt) {
-            DatabaseSet* databaseSet = dbNameMapIt->second;
-            DatabaseSet::const_iterator dbSetEndIt = databaseSet->end();
-            for (DatabaseSet::const_iterator dbSetIt = databaseSet->begin(); dbSetIt != dbSetEndIt; ++dbSetIt) {
-                if ((*dbSetIt)->scriptExecutionContext() == context)
-                    openDatabases.append(*dbSetIt);
-            }
+    DatabaseNameMap::const_iterator dbNameMapEndIt = nameMap->end();
+    for (DatabaseNameMap::const_iterator dbNameMapIt = nameMap->begin(); dbNameMapIt != dbNameMapEndIt; ++dbNameMapIt) {
+        DatabaseSet* databaseSet = dbNameMapIt->second;
+        DatabaseSet::const_iterator end = databaseSet->end();
+        for (DatabaseSet::const_iterator it = databaseSet->begin(); it != end; ++it) {
+            if ((*it)->scriptExecutionContext() == context)
+                (*it)->interrupt();
         }
     }
-
-    Vector<RefPtr<AbstractDatabase> >::const_iterator openDatabasesEndIt = openDatabases.end();
-    for (Vector<RefPtr<AbstractDatabase> >::const_iterator openDatabasesIt = openDatabases.begin(); openDatabasesIt != openDatabasesEndIt; ++openDatabasesIt)
-        (*openDatabasesIt)->interrupt();
 }
 
 }

Modified: trunk/Source/WebKit/chromium/ChangeLog (97545 => 97546)


--- trunk/Source/WebKit/chromium/ChangeLog	2011-10-15 07:08:39 UTC (rev 97545)
+++ trunk/Source/WebKit/chromium/ChangeLog	2011-10-15 07:16:21 UTC (rev 97546)
@@ -1,3 +1,17 @@
+2011-10-15  Michael Nordman  <[email protected]>
+
+        [Chromium] Some WebSQLDatabase in worker bug fixes.
+        https://bugs.webkit.org/show_bug.cgi?id=70071
+
+        - Test for a NULL webView WebWorkerClientImpl.
+        - Avoid altering Database instance lifetimes during WorkerThread::stop().
+
+        Reviewed by David Levin.
+
+        * src/WebWorkerClientImpl.cpp:
+        (WebKit::WebWorkerClientImpl::allowFileSystem):
+        (WebKit::WebWorkerClientImpl::allowDatabase):
+
 2011-10-14  Darin Adler  <[email protected]>
 
        Try to fix Chromium build.

Modified: trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp (97545 => 97546)


--- trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp	2011-10-15 07:08:39 UTC (rev 97545)
+++ trunk/Source/WebKit/chromium/src/WebWorkerClientImpl.cpp	2011-10-15 07:16:21 UTC (rev 97546)
@@ -193,6 +193,8 @@
 bool WebWorkerClientImpl::allowFileSystem() 
 {
     WebKit::WebViewImpl* webView = m_webFrame->viewImpl();
+    if (!webView)
+        return false;
     return !webView->permissionClient() || webView->permissionClient()->allowFileSystem(m_webFrame);
 }
 
@@ -204,8 +206,10 @@
 
 bool WebWorkerClientImpl::allowDatabase(WebFrame*, const WebString& name, const WebString& displayName, unsigned long estimatedSize) 
 {
-     WebKit::WebViewImpl* webView = m_webFrame->viewImpl();
-     return !webView->permissionClient() || webView->permissionClient()->allowDatabase(m_webFrame, name, displayName, estimatedSize);
+    WebKit::WebViewImpl* webView = m_webFrame->viewImpl();
+    if (!webView)
+        return false;
+    return !webView->permissionClient() || webView->permissionClient()->allowDatabase(m_webFrame, name, displayName, estimatedSize);
 }
  
 void WebWorkerClientImpl::dispatchDevToolsMessage(const WebString& message)
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to