- 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);