From 74f5cc627c6f39f0c0548b0d052e00e4ad43e28b Mon Sep 17 00:00:00 2001 From: "carlosgc@webkit.org" Date: Wed, 8 Nov 2017 07:25:40 +0000 Subject: [PATCH] REGRESSION(r224179): [GTK] Several WebViewEditor tests are failing since r224179 https://bugs.webkit.org/show_bug.cgi?id=179366 Reviewed by Michael Catanzaro. Source/WebKit: In r224179, webkit_web_view_can_execute_editing_command() was optimized to use the sync path for commands supported by the WebViewEditorState, but the state requires a redraw to be up to date. We can't know if WebViewEditorState is in sync, when webkit_web_view_can_execute_editing_command() is called, so we always need to ask the web process. * UIProcess/API/glib/WebKitWebView.cpp: (webkit_web_view_can_execute_editing_command): Tools: Use always a toplevel window for WebViewEditor tests instead of creating and destroying one only to flush editor state. * TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp: git-svn-id: https://svn.webkit.org/repository/webkit/trunk@224567 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- Source/WebKit/ChangeLog | 15 +++++++++++++++ Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp | 22 ++++------------------ Tools/ChangeLog | 12 ++++++++++++ .../Tests/WebKitGtk/TestWebViewEditor.cpp | 14 ++++---------- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog index 8248707..aad0fd2 100644 --- a/Source/WebKit/ChangeLog +++ b/Source/WebKit/ChangeLog @@ -1,5 +1,20 @@ 2017-11-07 Carlos Garcia Campos + REGRESSION(r224179): [GTK] Several WebViewEditor tests are failing since r224179 + https://bugs.webkit.org/show_bug.cgi?id=179366 + + Reviewed by Michael Catanzaro. + + In r224179, webkit_web_view_can_execute_editing_command() was optimized to use the sync path for commands + supported by the WebViewEditorState, but the state requires a redraw to be up to date. We can't know if + WebViewEditorState is in sync, when webkit_web_view_can_execute_editing_command() is called, so we always need + to ask the web process. + + * UIProcess/API/glib/WebKitWebView.cpp: + (webkit_web_view_can_execute_editing_command): + +2017-11-07 Carlos Garcia Campos + [GTK][WPE] Build inspector resources using copy-user-interface-resources.pl script https://bugs.webkit.org/show_bug.cgi?id=179317 diff --git a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp index 79b90d0..c8cb78e 100644 --- a/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp +++ b/Source/WebKit/UIProcess/API/glib/WebKitWebView.cpp @@ -3087,24 +3087,10 @@ void webkit_web_view_can_execute_editing_command(WebKitWebView* webView, const c g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView)); g_return_if_fail(command); - GTask* task = g_task_new(webView, cancellable, callback, userData); - WebKitEditorState* state = webkit_web_view_get_editor_state(webView); - - if (!strcmp(command, WEBKIT_EDITING_COMMAND_CUT)) - g_task_return_boolean(adoptGRef(task).get(), webkit_editor_state_is_cut_available(state)); - else if (!strcmp(command, WEBKIT_EDITING_COMMAND_COPY)) - g_task_return_boolean(adoptGRef(task).get(), webkit_editor_state_is_copy_available(state)); - else if (!strcmp(command, WEBKIT_EDITING_COMMAND_PASTE)) - g_task_return_boolean(adoptGRef(task).get(), webkit_editor_state_is_paste_available(state)); - else if (!strcmp(command, WEBKIT_EDITING_COMMAND_UNDO)) - g_task_return_boolean(adoptGRef(task).get(), webkit_editor_state_is_undo_available(state)); - else if (!strcmp(command, WEBKIT_EDITING_COMMAND_REDO)) - g_task_return_boolean(adoptGRef(task).get(), webkit_editor_state_is_redo_available(state)); - else { - getPage(webView).validateCommand(String::fromUTF8(command), [task](const String&, bool isEnabled, int32_t, WebKit::CallbackBase::Error) { - g_task_return_boolean(adoptGRef(task).get(), isEnabled); - }); - } + GRefPtr task = adoptGRef(g_task_new(webView, cancellable, callback, userData)); + getPage(webView).validateCommand(String::fromUTF8(command), [task = WTFMove(task)](const String&, bool isEnabled, int32_t, WebKit::CallbackBase::Error) { + g_task_return_boolean(task.get(), isEnabled); + }); } /** diff --git a/Tools/ChangeLog b/Tools/ChangeLog index 65eca3c..25c1973 100644 --- a/Tools/ChangeLog +++ b/Tools/ChangeLog @@ -1,5 +1,17 @@ 2017-11-07 Carlos Garcia Campos + REGRESSION(r224179): [GTK] Several WebViewEditor tests are failing since r224179 + https://bugs.webkit.org/show_bug.cgi?id=179366 + + Reviewed by Michael Catanzaro. + + Use always a toplevel window for WebViewEditor tests instead of creating and destroying one only to flush editor + state. + + * TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp: + +2017-11-07 Carlos Garcia Campos + [GTK][WPE] Build inspector resources using copy-user-interface-resources.pl script https://bugs.webkit.org/show_bug.cgi?id=179317 diff --git a/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp b/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp index 862a24d..8871195 100644 --- a/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp +++ b/Tools/TestWebKitAPI/Tests/WebKitGtk/TestWebViewEditor.cpp @@ -34,28 +34,22 @@ public: , m_triesCount(0) , m_editorState(nullptr) { + showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL); gtk_clipboard_clear(m_clipboard); } static gboolean webViewDrawCallback(GMainLoop* mainLoop) { g_main_loop_quit(mainLoop); - return G_SOURCE_REMOVE; + return FALSE; } void flushEditorState() { - // FIXME: It would be better to call WebViewTest::showInWindowAndWaitUntilMapped - // at the start of the test, rather than creating and destroying temporary windows. - showInWindow(GTK_WINDOW_TOPLEVEL); - - g_signal_connect_swapped(m_webView, "draw", G_CALLBACK(webViewDrawCallback), m_mainLoop); + auto signalID = g_signal_connect_swapped(m_webView, "draw", G_CALLBACK(webViewDrawCallback), m_mainLoop); gtk_widget_queue_draw(GTK_WIDGET(m_webView)); g_main_loop_run(m_mainLoop); - - gtk_container_remove(GTK_CONTAINER(m_parentWindow), GTK_WIDGET(m_webView)); - gtk_widget_destroy(m_parentWindow); - m_parentWindow = nullptr; + g_signal_handler_disconnect(m_webView, signalID); } static void canExecuteEditingCommandReadyCallback(GObject*, GAsyncResult* result, EditorTest* test) -- 1.8.3.1