Skip to content

Commit 6582a78

Browse files
[GTK] Make all WebView tests have a WebKitUserContentManager
https://bugs.webkit.org/show_bug.cgi?id=162487 Reviewed by Michael Catanzaro. It simplifies tests using the user content manager, and allows to use it without having to subclass WebViewTest. * TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp: (ConsoleMessageTest::ConsoleMessageTest): (ConsoleMessageTest::~ConsoleMessageTest): * TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp: * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp: (testUserContentManagerInjectedStyleSheet): (testUserContentManagerInjectedScript): (UserScriptMessageTest::UserScriptMessageTest): (beforeAll): * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp: (testWebViewIsPlayingAudio): * TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp: (WebViewTest::WebViewTest): * TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@206302 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent c68c7d1 commit 6582a78

File tree

7 files changed

+56
-54
lines changed

7 files changed

+56
-54
lines changed

Tools/ChangeLog

+24
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
2016-09-23 Carlos Garcia Campos <[email protected]>
2+
3+
[GTK] Make all WebView tests have a WebKitUserContentManager
4+
https://bugs.webkit.org/show_bug.cgi?id=162487
5+
6+
Reviewed by Michael Catanzaro.
7+
8+
It simplifies tests using the user content manager, and allows to use it without having to subclass WebViewTest.
9+
10+
* TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp:
11+
(ConsoleMessageTest::ConsoleMessageTest):
12+
(ConsoleMessageTest::~ConsoleMessageTest):
13+
* TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp:
14+
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp:
15+
(testUserContentManagerInjectedStyleSheet):
16+
(testUserContentManagerInjectedScript):
17+
(UserScriptMessageTest::UserScriptMessageTest):
18+
(beforeAll):
19+
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:
20+
(testWebViewIsPlayingAudio):
21+
* TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:
22+
(WebViewTest::WebViewTest):
23+
* TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
24+
125
2016-09-23 Antoine Quint <[email protected]>
226

327
Add a new runtime flag for work on modern media controls (off by default)

Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp

+4-7
Original file line numberDiff line numberDiff line change
@@ -64,18 +64,15 @@ class ConsoleMessageTest : public WebViewTest {
6464
}
6565

6666
ConsoleMessageTest()
67-
: WebViewTest(webkit_user_content_manager_new())
6867
{
69-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
70-
webkit_user_content_manager_register_script_message_handler(manager, "console");
71-
g_signal_connect(manager, "script-message-received::console", G_CALLBACK(consoleMessageReceivedCallback), this);
68+
webkit_user_content_manager_register_script_message_handler(m_userContentManager.get(), "console");
69+
g_signal_connect(m_userContentManager.get(), "script-message-received::console", G_CALLBACK(consoleMessageReceivedCallback), this);
7270
}
7371

7472
~ConsoleMessageTest()
7573
{
76-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
77-
g_signal_handlers_disconnect_matched(manager, G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
78-
webkit_user_content_manager_unregister_script_message_handler(manager, "console");
74+
g_signal_handlers_disconnect_matched(m_userContentManager.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
75+
webkit_user_content_manager_unregister_script_message_handler(m_userContentManager.get(), "console");
7976
}
8077

8178
void waitUntilConsoleMessageReceived()

Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp

+5-8
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,7 @@ class UIClientTest: public WebViewTest {
232232
}
233233

234234
UIClientTest()
235-
: WebViewTest(webkit_user_content_manager_new())
236-
, m_scriptDialogType(WEBKIT_SCRIPT_DIALOG_ALERT)
235+
: m_scriptDialogType(WEBKIT_SCRIPT_DIALOG_ALERT)
237236
, m_scriptDialogConfirmed(true)
238237
, m_allowPermissionRequests(false)
239238
, m_verifyMediaTypes(false)
@@ -246,17 +245,15 @@ class UIClientTest: public WebViewTest {
246245
g_signal_connect(m_webView, "script-dialog", G_CALLBACK(scriptDialog), this);
247246
g_signal_connect(m_webView, "mouse-target-changed", G_CALLBACK(mouseTargetChanged), this);
248247
g_signal_connect(m_webView, "permission-request", G_CALLBACK(permissionRequested), this);
249-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
250-
webkit_user_content_manager_register_script_message_handler(manager, "permission");
251-
g_signal_connect(manager, "script-message-received::permission", G_CALLBACK(permissionResultMessageReceivedCallback), this);
248+
webkit_user_content_manager_register_script_message_handler(m_userContentManager.get(), "permission");
249+
g_signal_connect(m_userContentManager.get(), "script-message-received::permission", G_CALLBACK(permissionResultMessageReceivedCallback), this);
252250
}
253251

254252
~UIClientTest()
255253
{
256254
g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
257-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
258-
g_signal_handlers_disconnect_matched(manager, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
259-
webkit_user_content_manager_unregister_script_message_handler(manager, "permission");
255+
g_signal_handlers_disconnect_matched(m_userContentManager.get(), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
256+
webkit_user_content_manager_unregister_script_message_handler(m_userContentManager.get(), "permission");
260257
}
261258

262259
static void tryWebViewCloseCallback(UIClientTest* test)

Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp

+6-24
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,6 @@
2727
#include <wtf/glib/GRefPtr.h>
2828
#include <wtf/glib/GUniquePtr.h>
2929

30-
class UserContentManagerTest : public WebViewTest {
31-
public:
32-
MAKE_GLIB_TEST_FIXTURE(UserContentManagerTest);
33-
34-
UserContentManagerTest()
35-
: WebViewTest(webkit_user_content_manager_new())
36-
{
37-
// A reference is leaked when passing the result of webkit_user_content_manager_new()
38-
// directly to webkit_web_view_new_with_user_content_manager() above. Adopting the
39-
// reference here avoids the leak.
40-
m_userContentManager = adoptGRef(webkit_web_view_get_user_content_manager(m_webView));
41-
assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_userContentManager.get()));
42-
}
43-
44-
GRefPtr<WebKitUserContentManager> m_userContentManager;
45-
};
46-
4730
static WebKitTestServer* kServer;
4831

4932
// These are all here so that they can be changed easily, if necessary.
@@ -127,7 +110,7 @@ static void removeOldInjectedContentAndResetLists(WebKitUserContentManager* user
127110
}
128111
}
129112

130-
static void testUserContentManagerInjectedStyleSheet(UserContentManagerTest* test, gconstpointer)
113+
static void testUserContentManagerInjectedStyleSheet(WebViewTest* test, gconstpointer)
131114
{
132115
char* whitelist[3] = { 0, 0, 0 };
133116
char* blacklist[3] = { 0, 0, 0 };
@@ -170,7 +153,7 @@ static void testUserContentManagerInjectedStyleSheet(UserContentManagerTest* tes
170153
removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
171154
}
172155

173-
static void testUserContentManagerInjectedScript(UserContentManagerTest* test, gconstpointer)
156+
static void testUserContentManagerInjectedScript(WebViewTest* test, gconstpointer)
174157
{
175158
char* whitelist[3] = { 0, 0, 0 };
176159
char* blacklist[3] = { 0, 0, 0 };
@@ -213,13 +196,12 @@ static void testUserContentManagerInjectedScript(UserContentManagerTest* test, g
213196
removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
214197
}
215198

216-
class UserScriptMessageTest : public UserContentManagerTest {
199+
class UserScriptMessageTest : public WebViewTest {
217200
public:
218201
MAKE_GLIB_TEST_FIXTURE(UserScriptMessageTest);
219202

220203
UserScriptMessageTest()
221-
: UserContentManagerTest()
222-
, m_userScriptMessage(nullptr)
204+
: m_userScriptMessage(nullptr)
223205
{
224206
}
225207

@@ -366,8 +348,8 @@ void beforeAll()
366348
kServer->run(serverCallback);
367349

368350
Test::add("WebKitWebView", "new-with-user-content-manager", testWebViewNewWithUserContentManager);
369-
UserContentManagerTest::add("WebKitUserContentManager", "injected-style-sheet", testUserContentManagerInjectedStyleSheet);
370-
UserContentManagerTest::add("WebKitUserContentManager", "injected-script", testUserContentManagerInjectedScript);
351+
WebViewTest::add("WebKitUserContentManager", "injected-style-sheet", testUserContentManagerInjectedStyleSheet);
352+
WebViewTest::add("WebKitUserContentManager", "injected-script", testUserContentManagerInjectedScript);
371353
UserScriptMessageTest::add("WebKitUserContentManager", "script-message-received", testUserContentManagerScriptMessageReceived);
372354
UserScriptMessageTest::add("WebKitUserContentManager", "script-message-from-dom-bindings", testUserContentManagerScriptMessageFromDOMBindings);
373355
}

Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp

+11-12
Original file line numberDiff line numberDiff line change
@@ -699,23 +699,20 @@ class NotificationWebViewTest: public WebViewTest {
699699
}
700700

701701
NotificationWebViewTest()
702-
: WebViewTest(webkit_user_content_manager_new())
703-
, m_notification(nullptr)
702+
: m_notification(nullptr)
704703
, m_event(None)
705704
{
706705
g_signal_connect(m_webView, "permission-request", G_CALLBACK(permissionRequestCallback), this);
707706
g_signal_connect(m_webView, "show-notification", G_CALLBACK(showNotificationCallback), this);
708-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
709-
webkit_user_content_manager_register_script_message_handler(manager, "notifications");
710-
g_signal_connect(manager, "script-message-received::notifications", G_CALLBACK(notificationsMessageReceivedCallback), this);
707+
webkit_user_content_manager_register_script_message_handler(m_userContentManager.get(), "notifications");
708+
g_signal_connect(m_userContentManager.get(), "script-message-received::notifications", G_CALLBACK(notificationsMessageReceivedCallback), this);
711709
}
712710

713711
~NotificationWebViewTest()
714712
{
715713
g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
716-
WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
717-
g_signal_handlers_disconnect_matched(manager, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
718-
webkit_user_content_manager_unregister_script_message_handler(manager, "notifications");
714+
g_signal_handlers_disconnect_matched(m_userContentManager.get(), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
715+
webkit_user_content_manager_unregister_script_message_handler(m_userContentManager.get(), "notifications");
719716
}
720717

721718
void requestPermissionAndWaitUntilGiven()
@@ -818,13 +815,15 @@ static void testWebViewIsPlayingAudio(IsPlayingAudioWebViewTest* test, gconstpoi
818815
test->waitUntilLoadFinished();
819816
g_assert(!webkit_web_view_is_playing_audio(test->m_webView));
820817

821-
webkit_web_view_run_javascript(test->m_webView, "playVideo();", nullptr, nullptr, nullptr);
822-
test->waitUntilIsPlayingAudioChanged();
818+
test->runJavaScriptAndWaitUntilFinished("playVideo();", nullptr);
819+
if (!webkit_web_view_is_playing_audio(test->m_webView))
820+
test->waitUntilIsPlayingAudioChanged();
823821
g_assert(webkit_web_view_is_playing_audio(test->m_webView));
824822

825823
// Pause the video, and check again.
826-
webkit_web_view_run_javascript(test->m_webView, "document.getElementById('test-video').pause();", nullptr, nullptr, nullptr);
827-
test->waitUntilIsPlayingAudioChanged();
824+
test->runJavaScriptAndWaitUntilFinished("document.getElementById('test-video').pause();", nullptr);
825+
if (webkit_web_view_is_playing_audio(test->m_webView))
826+
test->waitUntilIsPlayingAudioChanged();
828827
g_assert(!webkit_web_view_is_playing_audio(test->m_webView));
829828
}
830829

Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@
2424
#include <JavaScriptCore/JSRetainPtr.h>
2525
#include <WebCore/GUniquePtrGtk.h>
2626

27-
WebViewTest::WebViewTest(WebKitUserContentManager* userContentManager)
28-
: m_webView(WEBKIT_WEB_VIEW(g_object_ref_sink(g_object_new(WEBKIT_TYPE_WEB_VIEW, "web-context", m_webContext.get(), "user-content-manager", userContentManager, nullptr))))
27+
WebViewTest::WebViewTest()
28+
: m_userContentManager(adoptGRef(webkit_user_content_manager_new()))
29+
, m_webView(WEBKIT_WEB_VIEW(g_object_ref_sink(g_object_new(WEBKIT_TYPE_WEB_VIEW, "web-context", m_webContext.get(), "user-content-manager", m_userContentManager.get(), nullptr))))
2930
, m_mainLoop(g_main_loop_new(nullptr, TRUE))
3031
, m_parentWindow(nullptr)
3132
, m_javascriptResult(nullptr)
@@ -34,6 +35,7 @@ WebViewTest::WebViewTest(WebKitUserContentManager* userContentManager)
3435
, m_expectedWebProcessCrash(false)
3536
{
3637
assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_webView));
38+
assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_userContentManager.get()));
3739
g_signal_connect(m_webView, "web-process-crashed", G_CALLBACK(WebViewTest::webProcessCrashed), this);
3840
}
3941

Tools/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
class WebViewTest: public Test {
2929
public:
3030
MAKE_GLIB_TEST_FIXTURE(WebViewTest);
31-
WebViewTest(WebKitUserContentManager* = nullptr);
31+
WebViewTest();
3232
virtual ~WebViewTest();
3333

3434
virtual void loadURI(const char* uri);
@@ -80,6 +80,7 @@ class WebViewTest: public Test {
8080

8181
static gboolean webProcessCrashed(WebKitWebView*, WebViewTest*);
8282

83+
GRefPtr<WebKitUserContentManager> m_userContentManager;
8384
WebKitWebView* m_webView;
8485
GMainLoop* m_mainLoop;
8586
CString m_activeURI;

0 commit comments

Comments
 (0)