WebKit Bugzilla
Attachment 358897 Details for
Bug 193349
: [WPE][GTK] Add a mechanism to reset/clear the Web view session state
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch v3
bug-193349-20190111181051.patch (text/plain), 8.19 KB, created by
Adrian Perez
on 2019-01-11 08:10:52 PST
(
hide
)
Description:
Patch v3
Filename:
MIME Type:
Creator:
Adrian Perez
Created:
2019-01-11 08:10:52 PST
Size:
8.19 KB
patch
obsolete
>Subversion Revision: 239861 >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index c6d17bbf70a8c724db5ab05db7b200321e6f676e..93a8c70db93317ff85a11f5fdade17d16e984907 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,22 @@ >+2019-01-11 Adrian Perez de Castro <aperez@igalia.com> >+ >+ [WPE][GTK] Add a mechanism to reset/clear the Web view session state >+ https://bugs.webkit.org/show_bug.cgi?id=193349 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ This adds a new webkit_web_view_clear_session_state() function to the public API which >+ clears the back/forward navigation list without navigating away from the currently >+ loaded page. Making the web view empty can be achieved by loading about:blank before >+ using the new function to clear the state. >+ >+ * UIProcess/API/glib/WebKitWebView.cpp: >+ (webkit_web_view_clear_session_state): Added. >+ * UIProcess/API/gtk/WebKitWebView.h: Add webkit_web_view_clear_state() prototype. >+ * UIProcess/API/wpe/WebKitWebView.h: Ditto. >+ * UIProcess/WebPageProxy.h: >+ (WebKit::WebPageProxy::clearSessionState): Added. >+ > 2019-01-10 Jiewen Tan <jiewen_tan@apple.com> > > [WebAuthN] Change the nonce in the CTAP kInit command to weak random values >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >index 67201d89eaa1f3f20df8b91f1da15d9c258b638f..e4de745338a0cc3be8931a1b7bc93f2c9ed414c5 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp >@@ -4142,6 +4142,25 @@ void webkit_web_view_restore_session_state(WebKitWebView* webView, WebKitWebView > getPage(webView).restoreFromSessionState(webkitWebViewSessionStateGetSessionState(state), false); > } > >+/** >+ * webkit_web_view_clear_session_state: >+ * @web_view: a #WebKitWebView >+ * >+ * Clear the @web_view session state. >+ * >+ * Note that the currently loaded page is *not* changed, and the back-forward list will contain >+ * one element for it. In order to clear the contents being displayed webkit_web_view_load_uri() >+ * can be used beforehand to load the `about:blank` resource. >+ * >+ * Since: 2.24 >+ */ >+void webkit_web_view_clear_session_state(WebKitWebView* webView) >+{ >+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); >+ >+ getPage(webView).clearSessionState(); >+} >+ > #if PLATFORM(WPE) > /** > * webkit_web_view_add_frame_displayed_callback: >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitWebView.h b/Source/WebKit/UIProcess/API/gtk/WebKitWebView.h >index 8c219a3b008599d5641c9014d5177acd11bb60b5..82d6f4657036d949eeb614f12e4db6e9d38533f2 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitWebView.h >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitWebView.h >@@ -552,6 +552,9 @@ WEBKIT_API void > webkit_web_view_restore_session_state (WebKitWebView *web_view, > WebKitWebViewSessionState *state); > >+WEBKIT_API void >+webkit_web_view_clear_session_state (WebKitWebView *web_view); >+ > G_END_DECLS > > #endif >diff --git a/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt b/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt >index 756aaa4de72da5bb73c70ffa0ce846afee4933ef..013d80da5dd37b9d0005c3539569d8c3718871a6 100644 >--- a/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt >+++ b/Source/WebKit/UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt >@@ -233,6 +233,7 @@ webkit_web_view_is_editable > webkit_web_view_get_editor_state > webkit_web_view_get_session_state > webkit_web_view_restore_session_state >+webkit_web_view_clear_session_state > webkit_web_view_get_main_resource > > <SUBSECTION WebKitJavascriptResult> >diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h b/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h >index 4102a7526d6bdf013cbb904a52425d61d12e3cd9..0a77b48df43b7b6d2230404fe525cf3ea64d0f33 100644 >--- a/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h >+++ b/Source/WebKit/UIProcess/API/wpe/WebKitWebView.h >@@ -507,6 +507,9 @@ WEBKIT_API void > webkit_web_view_restore_session_state (WebKitWebView *web_view, > WebKitWebViewSessionState *state); > >+WEBKIT_API void >+webkit_web_view_clear_session_state (WebKitWebView *web_view); >+ > WEBKIT_API guint > webkit_web_view_add_frame_displayed_callback (WebKitWebView *web_view, > WebKitFrameDisplayedCallback callback, >diff --git a/Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt b/Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt >index 628db4252a4d2bf48f490da54087ac4c2c95bc91..af3421a88bb13ae35e5698c081c2417c775ae229 100644 >--- a/Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt >+++ b/Source/WebKit/UIProcess/API/wpe/docs/wpe-0.1-sections.txt >@@ -203,6 +203,7 @@ webkit_web_view_is_editable > webkit_web_view_get_editor_state > webkit_web_view_get_session_state > webkit_web_view_restore_session_state >+webkit_web_view_clear_session_state > webkit_web_view_get_main_resource > webkit_web_view_add_frame_displayed_callback > webkit_web_view_remove_frame_displayed_callback >diff --git a/Source/WebKit/UIProcess/WebPageProxy.h b/Source/WebKit/UIProcess/WebPageProxy.h >index 232bb175fd182e4859bae352b11f145e1d289c92..0ae225bf8a8c23ce1964c513e39104660112aa4f 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.h >+++ b/Source/WebKit/UIProcess/WebPageProxy.h >@@ -808,6 +808,7 @@ public: > > SessionState sessionState(WTF::Function<bool (WebBackForwardListItem&)>&& = nullptr) const; > RefPtr<API::Navigation> restoreFromSessionState(SessionState, bool navigate); >+ void clearSessionState() { backForwardClear(); } > > bool supportsTextZoom() const; > double textZoomFactor() const { return m_textZoomFactor; } >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 2e3a51c702ebebdbb8a3a13739c60922f35c8c36..3323f4eaa3b82eea6c0223af806aa6ce0b0ffd44 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,15 @@ >+2019-01-11 Adrian Perez de Castro <aperez@igalia.com> >+ >+ [WPE][GTK] Add a mechanism to reset/clear the Web view session state >+ https://bugs.webkit.org/show_bug.cgi?id=193349 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp: >+ (testWebKitWebViewSessionState): Test that the back/forward list has a single item after >+ clearing the session state, and that the functions webkit_web_view_can_go_back() and >+ webkit_web_view_can_go_forward() return false accordingly. >+ > 2019-01-10 Ryan Haddad <ryanhaddad@apple.com> > > Unreviewed, fix typo that breaks dashboard link. >diff --git a/Tools/TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp b/Tools/TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp >index 85d2fc022a019aa17e50beabeb387baa52d7c6be..f3453371dc30b7db0851b7c25837925c6b44cf6e 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp >+++ b/Tools/TestWebKitAPI/Tests/WebKitGLib/TestBackForwardList.cpp >@@ -329,6 +329,14 @@ static void testWebKitWebViewSessionState(BackForwardListTest* test, gconstpoint > BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(bfList), "Page2", uriPage2.data(), uriPage2.data()); > BackForwardListTest::checkItem(webkit_back_forward_list_get_nth_item(bfList, 1), "Page3", uriPage3.data(), uriPage3.data()); > >+ // After clearing the list there will be still one item in it: the currently loaded page. >+ webkit_web_view_clear_session_state(view.get()); >+ bfList = webkit_web_view_get_back_forward_list(view.get()); >+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 1); >+ BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(bfList), "Page2", uriPage2.data(), uriPage2.data()); >+ g_assert_false(webkit_web_view_can_go_back(view.get())); >+ g_assert_false(webkit_web_view_can_go_forward(view.get())); >+ > static const char* invalidSessionData = "invalid session data"; > data = adoptGRef(g_bytes_new_static(invalidSessionData, strlen(invalidSessionData))); > g_assert_null(webkit_web_view_session_state_new(data.get()));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mcatanzaro
:
review-
mcatanzaro
:
commit-queue-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193349
:
358891
|
358893
| 358897