Changeset 206304 in webkit


Ignore:
Timestamp:
Sep 23, 2016 8:48:22 AM (8 years ago)
Author:
Carlos Garcia Campos
Message:

REGRESSION(r204163): [GTK] API test /webkit2/WebKitSecurityManager/file-xhr is failing
https://bugs.webkit.org/show_bug.cgi?id=161607

Reviewed by Michael Catanzaro.

Since r204163, in case of cross origin error when loading the XHR, the load fails and an error message is shown
in the console, but there isn't any js expcetion, which is what we were checking. Now, we check that there
aren't exceptions, and that the error message is sent to the console.

  • Scripts/run-gtk-tests:

(TestRunner):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:

(consoleMessageReceivedCallback):
(testWebContextSecurityFileXHR):

Location:
trunk/Tools
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r206303 r206304  
     12016-09-23  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        REGRESSION(r204163): [GTK] API test /webkit2/WebKitSecurityManager/file-xhr is failing
     4        https://bugs.webkit.org/show_bug.cgi?id=161607
     5
     6        Reviewed by Michael Catanzaro.
     7
     8        Since r204163, in case of cross origin error when loading the XHR, the load fails and an error message is shown
     9        in the console, but there isn't any js expcetion, which is what we were checking. Now, we check that there
     10        aren't exceptions, and that the error message is sent to the console.
     11
     12        * Scripts/run-gtk-tests:
     13        (TestRunner):
     14        * TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp:
     15        (consoleMessageReceivedCallback):
     16        (testWebContextSecurityFileXHR):
     17
    1182016-09-23  Ryan Haddad  <ryanhaddad@apple.com>
    219
  • trunk/Tools/Scripts/run-gtk-tests

    r205454 r206304  
    7979        SkippedTest("WebKit2Gtk/TestWebViewEditor", "/webkit2/WebKitWebView/select-all/editable", "Test hits assertion", 161608),
    8080        SkippedTest("WebKit2Gtk/TestWebExtensions", "/webkit2/WebKitWebView/install-missing-plugins-permission-request", "Test times out", 147822),
    81         SkippedTest("WebKit2Gtk/TestWebKitWebContext", "/webkit2/WebKitSecurityManager/file-xhr", "Test hits assertion", 161607),
    8281        SkippedTest("WebKit2/TestWebKit2", "WebKit2.MouseMoveAfterCrash", "Test is flaky", 85066),
    8382        SkippedTest("WebKit2/TestWebKit2", "WebKit2.NewFirstVisuallyNonEmptyLayoutForImages", "Test is flaky", 85066),
  • trunk/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp

    r206295 r206304  
    628628}
    629629
     630static void consoleMessageReceivedCallback(WebKitUserContentManager*, WebKitJavascriptResult* message, WebKitJavascriptResult** result)
     631{
     632    g_assert(result);
     633    g_assert(!*result);
     634    *result = webkit_javascript_result_ref(message);
     635}
     636
    630637static void testWebContextSecurityFileXHR(WebViewTest* test, gconstpointer)
    631638{
     
    637644    GUniquePtr<char> xhr(g_strdup_printf("var xhr = new XMLHttpRequest; xhr.open(\"GET\", \"%s\"); xhr.send();", jsonURL.get()));
    638645
    639     // By default file access is not allowed, this will fail with a cross-origin error.
     646    WebKitJavascriptResult* consoleMessage = nullptr;
     647    webkit_user_content_manager_register_script_message_handler(test->m_userContentManager.get(), "console");
     648    g_signal_connect(test->m_userContentManager.get(), "script-message-received::console", G_CALLBACK(consoleMessageReceivedCallback), &consoleMessage);
     649
     650    // By default file access is not allowed, this will show a console message with a cross-origin error.
    640651    GUniqueOutPtr<GError> error;
    641652    WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
    642     g_assert(!javascriptResult);
    643     g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
     653    g_assert(javascriptResult);
     654    g_assert(!error);
     655    g_assert(consoleMessage);
     656    GUniquePtr<char> messageString(WebViewTest::javascriptResultToCString(consoleMessage));
     657    GRefPtr<GVariant> variant = g_variant_parse(G_VARIANT_TYPE("(uusus)"), messageString.get(), nullptr, nullptr, nullptr);
     658    g_assert(variant.get());
     659    unsigned level;
     660    const char* messageText;
     661    g_variant_get(variant.get(), "(uu&su&s)", nullptr, &level, &messageText, nullptr, nullptr);
     662    g_assert_cmpuint(level, ==, 3); // Console error message.
     663    GUniquePtr<char> expectedErrorMessage(g_strdup_printf("XMLHttpRequest cannot load %s. Cross origin requests are only supported for HTTP.", jsonURL.get()));
     664    g_assert_cmpstr(messageText, ==, expectedErrorMessage.get());
     665    webkit_javascript_result_unref(consoleMessage);
     666    consoleMessage = nullptr;
     667    level = 0;
     668    messageText = nullptr;
     669    variant = nullptr;
    644670
    645671    // Allow file access from file URLs.
     
    655681    test->waitUntilLoadFinished();
    656682    javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
    657     g_assert(!javascriptResult);
    658     g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
     683    g_assert(javascriptResult);
     684    g_assert(!error);
     685    g_assert(consoleMessage);
     686    variant = g_variant_parse(G_VARIANT_TYPE("(uusus)"), messageString.get(), nullptr, nullptr, nullptr);
     687    g_assert(variant.get());
     688    g_variant_get(variant.get(), "(uu&su&s)", nullptr, &level, &messageText, nullptr, nullptr);
     689    g_assert_cmpuint(level, ==, 3); // Console error message.
     690    g_assert_cmpstr(messageText, ==, expectedErrorMessage.get());
     691    webkit_javascript_result_unref(consoleMessage);
     692
     693    g_signal_handlers_disconnect_matched(test->m_userContentManager.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, &consoleMessage);
     694    webkit_user_content_manager_unregister_script_message_handler(test->m_userContentManager.get(), "console");
    659695
    660696    webkit_settings_set_allow_file_access_from_file_urls(webkit_web_view_get_settings(test->m_webView), FALSE);
Note: See TracChangeset for help on using the changeset viewer.