Title: [172292] branches/safari-600.1-branch/Source/WebCore
Revision
172292
Author
[email protected]
Date
2014-08-07 15:26:02 -0700 (Thu, 07 Aug 2014)

Log Message

Merged r172275

Modified Paths

Diff

Modified: branches/safari-600.1-branch/Source/WebCore/ChangeLog (172291 => 172292)


--- branches/safari-600.1-branch/Source/WebCore/ChangeLog	2014-08-07 22:25:11 UTC (rev 172291)
+++ branches/safari-600.1-branch/Source/WebCore/ChangeLog	2014-08-07 22:26:02 UTC (rev 172292)
@@ -1,5 +1,38 @@
 2014-08-07  Dana Burkart <[email protected]>
 
+        Merge r172275
+
+    2014-08-07  Daniel Bates  <[email protected]>
+
+            Sometimes Gmail cannot load messages, particularly on refresh ("...the application ran into an unexpected error...")
+            https://bugs.webkit.org/show_bug.cgi?id=135688
+            <rdar://problem/17886686>
+
+            Reviewed by Alexey Proskuryakov.
+
+            Fixes an issue where gmail.com may fail to load the list of messages. In particular, a SQLTransactionCallback
+            function may not be executed and hence Gmail will not display the list of messages and
+            will subsequently display an error message.
+
+            When a WebKit client defers loading of a page (e.g. -[WebView setDefersCallbacks:YES]), WebCore
+            may still load the main resource, say if substitute data is available for it, and defer executing
+            tasks, such as a SQLTransactionCallback function, by appending such tasks to the end of the list
+            of pending tasks for the associated Document. This list of pending tasks is never processed when
+            a client subsequently allows loading (e.g. -[WebView setDefersCallbacks:NO])). Therefore, we never
+            execute a SQLTransactionCallback function that was deferred.
+
+            Ideally WebCore would defer loading of substitute data when a WebKit client requests that loading
+            be deferred and hence a SQLTransactionCallback function would be deferred as a consequence of the
+            lack of _javascript_ script execution (since substitute data wasn't loaded and hence any _javascript_
+            script contained in the substitute data that initiates a SQL transaction isn't executed). For now,
+            it's sufficient to only defer executing tasks when either there are existing pending tasks or the
+            page defers loading and active DOM objects in the document are suspended (e.g. Document::suspendActiveDOMObjects() was called).
+
+            * dom/Document.cpp:
+            (WebCore::Document::postTask):
+
+2014-08-07  Dana Burkart <[email protected]>
+
         Merge r172231
 
     2014-08-07  Roger Fong  <[email protected]>

Modified: branches/safari-600.1-branch/Source/WebCore/dom/Document.cpp (172291 => 172292)


--- branches/safari-600.1-branch/Source/WebCore/dom/Document.cpp	2014-08-07 22:25:11 UTC (rev 172291)
+++ branches/safari-600.1-branch/Source/WebCore/dom/Document.cpp	2014-08-07 22:26:02 UTC (rev 172292)
@@ -4921,7 +4921,7 @@
             return;
 
         Page* page = document->page();
-        if ((page && page->defersLoading()) || !document->m_pendingTasks.isEmpty())
+        if ((page && page->defersLoading() && document->activeDOMObjectsAreSuspended()) || !document->m_pendingTasks.isEmpty())
             document->m_pendingTasks.append(WTF::move(*task.release()));
         else
             task->performTask(*document);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to