Diff
Modified: trunk/Source/WebKit/ChangeLog (223281 => 223282)
--- trunk/Source/WebKit/ChangeLog 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/ChangeLog 2017-10-13 17:07:32 UTC (rev 223282)
@@ -1,3 +1,22 @@
+2017-10-11 Gustavo Noronha Silva <gustavo.noro...@collabora.co.uk>
+
+ [GLib] WebKitNavigationAction should tell whether it is a redirect
+ https://bugs.webkit.org/show_bug.cgi?id=178178
+
+ There is no good way to know whether a given navigation action has been caused
+ by a redirect through the glib API. This is necessary to implement some app mode
+ heuristics for Epiphany.
+
+ Reviewed by Carlos Garcia Campos.
+
+ * UIProcess/API/glib/WebKitNavigationAction.cpp:
+ (webkit_navigation_action_is_redirect): returns whether the navigation action is a redirect.
+ * UIProcess/API/glib/WebKitNavigationActionPrivate.h: add isRedirect to the wrapper object.
+ (_WebKitNavigationAction::_WebKitNavigationAction):
+ * UIProcess/API/gtk/WebKitNavigationAction.h: add the new API.
+ * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: ditto.
+ * UIProcess/API/wpe/WebKitNavigationAction.h: ditto.
+
2017-10-12 Brady Eidson <beid...@apple.com>
SW "Hello world".
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationAction.cpp (223281 => 223282)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationAction.cpp 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationAction.cpp 2017-10-13 17:07:32 UTC (rev 223282)
@@ -150,3 +150,19 @@
g_return_val_if_fail(navigation, FALSE);
return navigation->isUserGesture;
}
+
+/**
+ * webkit_navigation_action_is_redirect:
+ * @navigation: a #WebKitNavigationAction
+ *
+ * Returns whether the @navigation was redirected.
+ *
+ * Returns: %TRUE if the original navigation was redirected, %FALSE otherwise.
+ *
+ * Since: 2.20
+ */
+gboolean webkit_navigation_action_is_redirect(WebKitNavigationAction* navigation)
+{
+ g_return_val_if_fail(navigation, FALSE);
+ return navigation->isRedirect;
+}
Modified: trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationActionPrivate.h (223281 => 223282)
--- trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationActionPrivate.h 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/UIProcess/API/glib/WebKitNavigationActionPrivate.h 2017-10-13 17:07:32 UTC (rev 223282)
@@ -30,6 +30,7 @@
, mouseButton(toWebKitMouseButton(navigationActionData.mouseButton))
, modifiers(toPlatformModifiers(navigationActionData.modifiers))
, isUserGesture(navigationActionData.userGestureTokenIdentifier)
+ , isRedirect(navigationActionData.isRedirect)
, request(uriRequest)
{
}
@@ -47,6 +48,7 @@
unsigned mouseButton;
unsigned modifiers;
bool isUserGesture : 1;
+ bool isRedirect : 1;
GRefPtr<WebKitURIRequest> request;
};
Modified: trunk/Source/WebKit/UIProcess/API/gtk/WebKitNavigationAction.h (223281 => 223282)
--- trunk/Source/WebKit/UIProcess/API/gtk/WebKitNavigationAction.h 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/UIProcess/API/gtk/WebKitNavigationAction.h 2017-10-13 17:07:32 UTC (rev 223282)
@@ -79,6 +79,9 @@
WEBKIT_API gboolean
webkit_navigation_action_is_user_gesture (WebKitNavigationAction *navigation);
+WEBKIT_API gboolean
+webkit_navigation_action_is_redirect (WebKitNavigationAction *navigation);
+
G_END_DECLS
#endif
Modified: trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt (223281 => 223282)
--- trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt 2017-10-13 17:07:32 UTC (rev 223282)
@@ -649,6 +649,7 @@
webkit_navigation_action_get_modifiers
webkit_navigation_action_get_request
webkit_navigation_action_is_user_gesture
+webkit_navigation_action_is_redirect
<SUBSECTION Standard>
WEBKIT_TYPE_NAVIGATION_ACTION
Modified: trunk/Source/WebKit/UIProcess/API/wpe/WebKitNavigationAction.h (223281 => 223282)
--- trunk/Source/WebKit/UIProcess/API/wpe/WebKitNavigationAction.h 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Source/WebKit/UIProcess/API/wpe/WebKitNavigationAction.h 2017-10-13 17:07:32 UTC (rev 223282)
@@ -79,6 +79,9 @@
WEBKIT_API gboolean
webkit_navigation_action_is_user_gesture (WebKitNavigationAction *navigation);
+WEBKIT_API gboolean
+webkit_navigation_action_is_redirect (WebKitNavigationAction *navigation);
+
G_END_DECLS
#endif
Modified: trunk/Tools/ChangeLog (223281 => 223282)
--- trunk/Tools/ChangeLog 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Tools/ChangeLog 2017-10-13 17:07:32 UTC (rev 223282)
@@ -1,3 +1,16 @@
+2017-10-11 Gustavo Noronha Silva <gustavo.noro...@collabora.co.uk>
+
+ [GLib] WebKitNavigationAction should tell whether it is a redirect
+ https://bugs.webkit.org/show_bug.cgi?id=178178
+
+ Test that WebKitNavigationAction properly reports being a redirect.
+
+ Reviewed by Carlos Garcia Campos.
+
+ * TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp:
+ (testNavigationPolicy): test that loading /redirect leads to a redirect WebKitNavigationAction.
+ (serverCallback): add a /redirect path to the server, which causes a redirect.
+
2017-10-13 Chris Dumez <cdu...@apple.com>
Unreviewed, fix webkitpy failure after r223273
Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp (223281 => 223282)
--- trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp 2017-10-13 17:05:38 UTC (rev 223281)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitPolicyClient.cpp 2017-10-13 17:07:32 UTC (rev 223282)
@@ -121,6 +121,7 @@
g_assert_cmpint(webkit_navigation_action_get_navigation_type(navigationAction), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
g_assert_cmpint(webkit_navigation_action_get_mouse_button(navigationAction), ==, 0);
g_assert_cmpint(webkit_navigation_action_get_modifiers(navigationAction), ==, 0);
+ g_assert_false(webkit_navigation_action_is_redirect(navigationAction));
g_assert(!webkit_navigation_policy_decision_get_frame_name(decision));
WebKitURIRequest* request = webkit_navigation_action_get_request(navigationAction);
g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, "http://webkitgtk.org/");
@@ -131,6 +132,19 @@
test->waitUntilLoadFinished();
g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ test->m_policyDecisionResponse = PolicyClientTest::Use;
+ test->m_respondToPolicyDecisionAsynchronously = false;
+ test->loadURI(kServer->getURIForPath("/redirect").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 4);
+
+ decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get());
+ navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision);
+ g_assert_true(webkit_navigation_action_is_redirect(navigationAction));
+ g_assert(!webkit_navigation_policy_decision_get_frame_name(decision));
+ request = webkit_navigation_action_get_request(navigationAction);
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, kServer->getURIForPath("/").data());
+
// If we are waiting until load completion, it will never complete if we ignore the
// navigation. So we tell the main loop to quit sometime later.
test->m_policyDecisionResponse = PolicyClientTest::Ignore;
@@ -248,6 +262,9 @@
soup_message_set_status(message, SOUP_STATUS_OK);
soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/redirect")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "/");
} else
soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
}