Modified: trunk/Source/WebKit2/ChangeLog (199663 => 199664)
--- trunk/Source/WebKit2/ChangeLog 2016-04-18 10:01:45 UTC (rev 199663)
+++ trunk/Source/WebKit2/ChangeLog 2016-04-18 10:36:29 UTC (rev 199664)
@@ -1,5 +1,28 @@
2016-04-18 Carlos Garcia Campos <[email protected]>
+ Pending API Request URL is wrong after reloading
+ https://bugs.webkit.org/show_bug.cgi?id=139342
+
+ Reviewed by Darin Adler.
+
+ It happens when reloading a web view loaded with anything but a
+ URL, because the bf list is not updated for those cases and
+ WebPageProxy::reload() is setting the current bf list item URL as
+ pending API request URL. This also causes that progress is
+ reported wrongly, because
+ WebPageProxy::decidePolicyForNavigationAction() resets the pending
+ API request URL when it's different than the requested URL. The
+ page load transaction causes the progress to be changed, reporting
+ 1.0 (the previous one), but later something < 1.0 is reported
+ again by the progress tracker.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::reload): Use the current active URL as
+ pending API request URL, falling back to the current bf list item
+ URL when empty.
+
+2016-04-18 Carlos Garcia Campos <[email protected]>
+
Pending API request URL no set when loading Data, Alternate HTML or plain text
https://bugs.webkit.org/show_bug.cgi?id=136916
Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (199663 => 199664)
--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2016-04-18 10:01:45 UTC (rev 199663)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp 2016-04-18 10:36:29 UTC (rev 199664)
@@ -1091,8 +1091,11 @@
{
SandboxExtension::Handle sandboxExtensionHandle;
- if (m_backForwardList->currentItem()) {
- String url = ""
+ String url = ""
+ if (url.isEmpty() && m_backForwardList->currentItem())
+ url = ""
+
+ if (!url.isEmpty()) {
auto transaction = m_pageLoadState.transaction();
m_pageLoadState.setPendingAPIRequestURL(transaction, url);
Modified: trunk/Tools/ChangeLog (199663 => 199664)
--- trunk/Tools/ChangeLog 2016-04-18 10:01:45 UTC (rev 199663)
+++ trunk/Tools/ChangeLog 2016-04-18 10:36:29 UTC (rev 199664)
@@ -1,5 +1,18 @@
2016-04-18 Carlos Garcia Campos <[email protected]>
+ Pending API Request URL is wrong after reloading
+ https://bugs.webkit.org/show_bug.cgi?id=139342
+
+ Reviewed by Darin Adler.
+
+ Update test case to check that the active URL should remain the
+ same after a reload.
+
+ * TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp:
+ (TestWebKitAPI::TEST):
+
+2016-04-18 Carlos Garcia Campos <[email protected]>
+
Pending API request URL no set when loading Data, Alternate HTML or plain text
https://bugs.webkit.org/show_bug.cgi?id=136916
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp (199663 => 199664)
--- trunk/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp 2016-04-18 10:01:45 UTC (rev 199663)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp 2016-04-18 10:36:29 UTC (rev 199664)
@@ -34,11 +34,19 @@
namespace TestWebKitAPI {
+static bool done;
+
TEST(WebKit2, PendingAPIRequestURL)
{
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = [](WKPageRef, WKFrameRef, WKTypeRef, const void*) { done = true; };
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
WKRetainPtr<WKURLRef> activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
EXPECT_NULL(activeURL.get());
@@ -47,49 +55,105 @@
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
WKRetainPtr<WKStringRef> htmlString = Util::toWK("<body>Hello, World</body>");
WKRetainPtr<WKURLRef> blankURL = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
WKPageLoadHTMLString(webView.page(), htmlString.get(), nullptr);
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
- url = ""
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ url = "" "html"));
WKPageLoadHTMLString(webView.page(), htmlString.get(), url.get());
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
WKRetainPtr<WKDataRef> data = "" 0));
WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, nullptr);
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, url.get());
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
WKPageLoadAlternateHTMLString(webView.page(), htmlString.get(), nullptr, url.get());
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
WKRetainPtr<WKStringRef> plainTextString = Util::toWK("Hello, World");
WKPageLoadPlainTextString(webView.page(), plainTextString.get());
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
ASSERT_NOT_NULL(activeURL.get());
EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
- WKPageStopLoading(webView.page());
+ Util::run(&done);
+ done = false;
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
url = ""
WKPageLoadFile(webView.page(), url.get(), nullptr);
activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));