Title: [127750] trunk/Source/WebKit2
Revision
127750
Author
carlo...@webkit.org
Date
2012-09-06 09:53:41 -0700 (Thu, 06 Sep 2012)

Log Message

[GTK] [WK2] Crash when navigating between pages
https://bugs.webkit.org/show_bug.cgi?id=95949

Reviewed by Martin Robinson.

Do not trust isMainResource parameter in
webkitWebViewResourceLoadStarted(), because it's always true for
all subresources of pages loaded from the history cache. We can
simply assume that the first resource loaded for the main frame
is the main web view resource.

* UIProcess/API/gtk/WebKitResourceLoadClient.cpp:
(didInitiateLoadForResource):
* UIProcess/API/gtk/WebKitWebView.cpp:
(webkitWebViewResourceLoadStarted):
* UIProcess/API/gtk/WebKitWebViewPrivate.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (127749 => 127750)


--- trunk/Source/WebKit2/ChangeLog	2012-09-06 16:49:30 UTC (rev 127749)
+++ trunk/Source/WebKit2/ChangeLog	2012-09-06 16:53:41 UTC (rev 127750)
@@ -1,3 +1,22 @@
+2012-09-06  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GTK] [WK2] Crash when navigating between pages
+        https://bugs.webkit.org/show_bug.cgi?id=95949
+
+        Reviewed by Martin Robinson.
+
+        Do not trust isMainResource parameter in
+        webkitWebViewResourceLoadStarted(), because it's always true for
+        all subresources of pages loaded from the history cache. We can
+        simply assume that the first resource loaded for the main frame
+        is the main web view resource.
+
+        * UIProcess/API/gtk/WebKitResourceLoadClient.cpp:
+        (didInitiateLoadForResource):
+        * UIProcess/API/gtk/WebKitWebView.cpp:
+        (webkitWebViewResourceLoadStarted):
+        * UIProcess/API/gtk/WebKitWebViewPrivate.h:
+
 2012-09-06  Balazs Kelemen  <kbal...@webkit.org>
 
         [WK2] Crash in WebPageProxy::showPopupMenu if PageClient does not implement createPopupMenuProxy

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResourceLoadClient.cpp (127749 => 127750)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResourceLoadClient.cpp	2012-09-06 16:49:30 UTC (rev 127749)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitResourceLoadClient.cpp	2012-09-06 16:53:41 UTC (rev 127750)
@@ -38,7 +38,7 @@
 static void didInitiateLoadForResource(WKPageRef, WKFrameRef wkFrame, uint64_t resourceIdentifier, WKURLRequestRef wkRequest, bool pageIsProvisionallyLoading, const void* clientInfo)
 {
     GRefPtr<WebKitURIRequest> request = adoptGRef(webkitURIRequestCreateForResourceRequest(toImpl(wkRequest)->resourceRequest()));
-    webkitWebViewResourceLoadStarted(WEBKIT_WEB_VIEW(clientInfo), wkFrame, resourceIdentifier, request.get(), pageIsProvisionallyLoading);
+    webkitWebViewResourceLoadStarted(WEBKIT_WEB_VIEW(clientInfo), wkFrame, resourceIdentifier, request.get());
 }
 
 static void didSendRequestForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, WKURLRequestRef wkRequest, WKURLResponseRef wkRedirectResponse, const void* clientInfo)

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp (127749 => 127750)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-09-06 16:49:30 UTC (rev 127749)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp	2012-09-06 16:53:41 UTC (rev 127750)
@@ -1311,11 +1311,12 @@
         g_signal_connect(priv->mainResource.get(), "notify::response", G_CALLBACK(mainResourceResponseChangedCallback), webView);
 }
 
-void webkitWebViewResourceLoadStarted(WebKitWebView* webView, WKFrameRef wkFrame, uint64_t resourceIdentifier, WebKitURIRequest* request, bool isMainResource)
+void webkitWebViewResourceLoadStarted(WebKitWebView* webView, WKFrameRef wkFrame, uint64_t resourceIdentifier, WebKitURIRequest* request)
 {
     WebKitWebViewPrivate* priv = webView->priv;
+    bool isMainResource = WKFrameIsMainFrame(wkFrame) && !priv->mainResource;
     WebKitWebResource* resource = webkitWebResourceCreate(wkFrame, request, isMainResource);
-    if (WKFrameIsMainFrame(wkFrame) && (isMainResource || !priv->mainResource)) {
+    if (isMainResource) {
         priv->mainResource = resource;
         waitForMainResourceResponseIfWaitingForResource(webView);
     }

Modified: trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h (127749 => 127750)


--- trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h	2012-09-06 16:49:30 UTC (rev 127749)
+++ trunk/Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h	2012-09-06 16:53:41 UTC (rev 127750)
@@ -47,7 +47,7 @@
 void webkitWebViewMakePolicyDecision(WebKitWebView*, WebKitPolicyDecisionType, WebKitPolicyDecision*);
 void webkitWebViewMouseTargetChanged(WebKitWebView*, WKHitTestResultRef, unsigned modifiers);
 void webkitWebViewPrintFrame(WebKitWebView*, WKFrameRef);
-void webkitWebViewResourceLoadStarted(WebKitWebView*, WKFrameRef, uint64_t resourceIdentifier, WebKitURIRequest*, bool isMainResource);
+void webkitWebViewResourceLoadStarted(WebKitWebView*, WKFrameRef, uint64_t resourceIdentifier, WebKitURIRequest*);
 void webkitWebViewRunFileChooserRequest(WebKitWebView*, WebKitFileChooserRequest*);
 WebKitWebResource* webkitWebViewGetLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier);
 void webkitWebViewRemoveLoadingWebResource(WebKitWebView*, uint64_t resourceIdentifier);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to