summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp')
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp278
1 files changed, 24 insertions, 254 deletions
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
index 2d1d216f4..74e8d6817 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
@@ -24,9 +24,8 @@
#include <gtk/gtk.h>
#include <webkit2/webkit2.h>
#include <wtf/HashMap.h>
-#include <wtf/glib/GRefPtr.h>
-#include <wtf/glib/GUniquePtr.h>
-#include <wtf/text/StringBuilder.h>
+#include <wtf/gobject/GRefPtr.h>
+#include <wtf/gobject/GUniquePtr.h>
#include <wtf/text/StringHash.h>
static WebKitTestServer* kServer;
@@ -35,89 +34,6 @@ static void testWebContextDefault(Test* test, gconstpointer)
{
// Check there's a single instance of the default web context.
g_assert(webkit_web_context_get_default() == webkit_web_context_get_default());
- g_assert(webkit_web_context_get_default() != test->m_webContext.get());
-}
-
-static void testWebContextConfiguration(WebViewTest* test, gconstpointer)
-{
- WebKitWebsiteDataManager* manager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
- g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager));
- test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(manager));
-
- // Base directories are not used by TestMain.
- g_assert(!webkit_website_data_manager_get_base_data_directory(manager));
- g_assert(!webkit_website_data_manager_get_base_cache_directory(manager));
-
- GUniquePtr<char> localStorageDirectory(g_build_filename(Test::dataDirectory(), "local-storage", nullptr));
- g_assert_cmpstr(localStorageDirectory.get(), ==, webkit_website_data_manager_get_local_storage_directory(manager));
- g_assert(g_file_test(localStorageDirectory.get(), G_FILE_TEST_IS_DIR));
-
- test->loadURI(kServer->getURIForPath("/empty").data());
- test->waitUntilLoadFinished();
- test->runJavaScriptAndWaitUntilFinished("window.indexedDB.open('TestDatabase');", nullptr);
- GUniquePtr<char> indexedDBDirectory(g_build_filename(Test::dataDirectory(), "indexeddb", nullptr));
- g_assert_cmpstr(indexedDBDirectory.get(), ==, webkit_website_data_manager_get_indexeddb_directory(manager));
- g_assert(g_file_test(indexedDBDirectory.get(), G_FILE_TEST_IS_DIR));
-
- test->loadURI(kServer->getURIForPath("/appcache").data());
- test->waitUntilLoadFinished();
- GUniquePtr<char> applicationCacheDirectory(g_build_filename(Test::dataDirectory(), "appcache", nullptr));
- g_assert_cmpstr(applicationCacheDirectory.get(), ==, webkit_website_data_manager_get_offline_application_cache_directory(manager));
- GUniquePtr<char> applicationCacheDatabase(g_build_filename(applicationCacheDirectory.get(), "ApplicationCache.db", nullptr));
- unsigned triesCount = 4;
- while (!g_file_test(applicationCacheDatabase.get(), G_FILE_TEST_IS_REGULAR) && --triesCount)
- test->wait(0.25);
- g_assert(triesCount);
-
-
- GUniquePtr<char> webSQLDirectory(g_build_filename(Test::dataDirectory(), "websql", nullptr));
- g_assert_cmpstr(webSQLDirectory.get(), ==, webkit_website_data_manager_get_websql_directory(manager));
- test->runJavaScriptAndWaitUntilFinished("db = openDatabase(\"TestDatabase\", \"1.0\", \"TestDatabase\", 1);", nullptr);
- g_assert(g_file_test(webSQLDirectory.get(), G_FILE_TEST_IS_DIR));
-
- GUniquePtr<char> diskCacheDirectory(g_build_filename(Test::dataDirectory(), "disk-cache", nullptr));
- g_assert_cmpstr(diskCacheDirectory.get(), ==, webkit_website_data_manager_get_disk_cache_directory(manager));
- g_assert(g_file_test(diskCacheDirectory.get(), G_FILE_TEST_IS_DIR));
-
- // The default context should have a different manager with different configuration.
- WebKitWebsiteDataManager* defaultManager = webkit_web_context_get_website_data_manager(webkit_web_context_get_default());
- g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(defaultManager));
- g_assert(manager != defaultManager);
- g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(manager), !=, webkit_website_data_manager_get_local_storage_directory(defaultManager));
- g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(manager), !=, webkit_website_data_manager_get_indexeddb_directory(defaultManager));
- g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(manager), !=, webkit_website_data_manager_get_disk_cache_directory(defaultManager));
- g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(manager), !=, webkit_website_data_manager_get_offline_application_cache_directory(defaultManager));
- g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(manager), !=, webkit_website_data_manager_get_websql_directory(defaultManager));
-
- // Using Test::dataDirectory() we get the default configuration but for a differrent prefix.
- GRefPtr<WebKitWebsiteDataManager> baseDataManager = adoptGRef(webkit_website_data_manager_new("base-data-directory", Test::dataDirectory(), "base-cache-directory", Test::dataDirectory(), nullptr));
- g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(baseDataManager.get()));
-
- localStorageDirectory.reset(g_build_filename(Test::dataDirectory(), "localstorage", nullptr));
- g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(baseDataManager.get()), ==, localStorageDirectory.get());
-
- indexedDBDirectory.reset(g_build_filename(Test::dataDirectory(), "databases", "indexeddb", nullptr));
- g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(baseDataManager.get()), ==, indexedDBDirectory.get());
-
- applicationCacheDirectory.reset(g_build_filename(Test::dataDirectory(), "applications", nullptr));
- g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(baseDataManager.get()), ==, applicationCacheDirectory.get());
-
- webSQLDirectory.reset(g_build_filename(Test::dataDirectory(), "databases", nullptr));
- g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(baseDataManager.get()), ==, webSQLDirectory.get());
-
- g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(baseDataManager.get()), ==, Test::dataDirectory());
-
- // Any specific configuration provided takes precedence over base dirs.
- indexedDBDirectory.reset(g_build_filename(Test::dataDirectory(), "mycustomindexeddb", nullptr));
- applicationCacheDirectory.reset(g_build_filename(Test::dataDirectory(), "mycustomappcache", nullptr));
- baseDataManager = adoptGRef(webkit_website_data_manager_new("base-data-directory", Test::dataDirectory(), "base-cache-directory", Test::dataDirectory(),
- "indexeddb-directory", indexedDBDirectory.get(), "offline-application-cache-directory", applicationCacheDirectory.get(), nullptr));
- g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(baseDataManager.get()), ==, indexedDBDirectory.get());
- g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(baseDataManager.get()), ==, applicationCacheDirectory.get());
- // The resutl should be the same as previous manager.
- g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(baseDataManager.get()), ==, localStorageDirectory.get());
- g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(baseDataManager.get()), ==, webSQLDirectory.get());
- g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(baseDataManager.get()), ==, Test::dataDirectory());
}
class PluginsTest: public Test {
@@ -125,10 +41,11 @@ public:
MAKE_GLIB_TEST_FIXTURE(PluginsTest);
PluginsTest()
- : m_mainLoop(g_main_loop_new(nullptr, TRUE))
- , m_plugins(nullptr)
+ : m_context(webkit_web_context_get_default())
+ , m_mainLoop(g_main_loop_new(0, TRUE))
+ , m_plugins(0)
{
- webkit_web_context_set_additional_plugins_directory(m_webContext.get(), WEBKIT_TEST_PLUGIN_DIR);
+ webkit_web_context_set_additional_plugins_directory(m_context, WEBKIT_TEST_PLUGIN_DIR);
}
~PluginsTest()
@@ -139,18 +56,19 @@ public:
static void getPluginsAsyncReadyCallback(GObject*, GAsyncResult* result, PluginsTest* test)
{
- test->m_plugins = webkit_web_context_get_plugins_finish(test->m_webContext.get(), result, nullptr);
+ test->m_plugins = webkit_web_context_get_plugins_finish(test->m_context, result, 0);
g_main_loop_quit(test->m_mainLoop);
}
GList* getPlugins()
{
g_list_free_full(m_plugins, g_object_unref);
- webkit_web_context_get_plugins(m_webContext.get(), nullptr, reinterpret_cast<GAsyncReadyCallback>(getPluginsAsyncReadyCallback), this);
+ webkit_web_context_get_plugins(m_context, 0, reinterpret_cast<GAsyncReadyCallback>(getPluginsAsyncReadyCallback), this);
g_main_loop_run(m_mainLoop);
return m_plugins;
}
+ WebKitWebContext* m_context;
GMainLoop* m_mainLoop;
GList* m_plugins;
};
@@ -198,10 +116,7 @@ static const char* kBarHTML = "<html><body>Bar</body></html>";
static const char* kEchoHTMLFormat = "<html><body>%s</body></html>";
static const char* errorDomain = "test";
static const int errorCode = 10;
-
-static const char* genericErrorMessage = "Error message.";
-static const char* beforeReceiveResponseErrorMessage = "Error before didReceiveResponse.";
-static const char* afterInitialChunkErrorMessage = "Error after reading the initial chunk.";
+static const char* errorMessage = "Error message.";
class URISchemeTest: public LoadTrackingTest {
public:
@@ -233,38 +148,23 @@ public:
g_assert(webkit_uri_scheme_request_get_web_view(request) == test->m_webView);
- const char* scheme = webkit_uri_scheme_request_get_scheme(request);
- g_assert(scheme);
- g_assert(test->m_handlersMap.contains(String::fromUTF8(scheme)));
-
- const URISchemeHandler& handler = test->m_handlersMap.get(String::fromUTF8(scheme));
-
GRefPtr<GInputStream> inputStream = adoptGRef(g_memory_input_stream_new());
test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(inputStream.get()));
- const gchar* requestPath = webkit_uri_scheme_request_get_path(request);
+ const char* scheme = webkit_uri_scheme_request_get_scheme(request);
+ g_assert(scheme);
+ g_assert(test->m_handlersMap.contains(String::fromUTF8(scheme)));
if (!g_strcmp0(scheme, "error")) {
- if (!g_strcmp0(requestPath, "before-response")) {
- GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, beforeReceiveResponseErrorMessage));
- // We call finish() and then finish_error() to make sure that not even
- // the didReceiveResponse message is processed at the time of failing.
- webkit_uri_scheme_request_finish(request, G_INPUT_STREAM(inputStream.get()), handler.replyLength, handler.mimeType.data());
- webkit_uri_scheme_request_finish_error(request, error.get());
- } else if (!g_strcmp0(requestPath, "after-first-chunk")) {
- g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.data(), handler.reply.length(), 0);
- webkit_uri_scheme_request_finish(request, inputStream.get(), handler.replyLength, handler.mimeType.data());
- // We need to wait until we reach the load-committed state before calling webkit_uri_scheme_request_finish_error(),
- // so we rely on the test using finishOnCommittedAndWaitUntilLoadFinished() to actually call it from loadCommitted().
- } else {
- GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, genericErrorMessage));
- webkit_uri_scheme_request_finish_error(request, error.get());
- }
+ GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, errorMessage));
+ webkit_uri_scheme_request_finish_error(request, error.get());
return;
}
+ const URISchemeHandler& handler = test->m_handlersMap.get(String::fromUTF8(scheme));
+
if (!g_strcmp0(scheme, "echo")) {
- char* replyHTML = g_strdup_printf(handler.reply.data(), requestPath);
+ char* replyHTML = g_strdup_printf(handler.reply.data(), webkit_uri_scheme_request_get_path(request));
g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), replyHTML, strlen(replyHTML), g_free);
} else if (!g_strcmp0(scheme, "closed"))
g_input_stream_close(inputStream.get(), 0, 0);
@@ -277,58 +177,13 @@ public:
void registerURISchemeHandler(const char* scheme, const char* reply, int replyLength, const char* mimeType)
{
m_handlersMap.set(String::fromUTF8(scheme), URISchemeHandler(reply, replyLength, mimeType));
- webkit_web_context_register_uri_scheme(m_webContext.get(), scheme, uriSchemeRequestCallback, this, 0);
- }
-
- virtual void loadCommitted() override
- {
- if (m_finishOnCommitted) {
- GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, afterInitialChunkErrorMessage));
- webkit_uri_scheme_request_finish_error(m_uriSchemeRequest.get(), error.get());
- }
-
- LoadTrackingTest::loadCommitted();
- }
-
- void finishOnCommittedAndWaitUntilLoadFinished()
- {
- m_finishOnCommitted = true;
- waitUntilLoadFinished();
- m_finishOnCommitted = false;
+ webkit_web_context_register_uri_scheme(webkit_web_context_get_default(), scheme, uriSchemeRequestCallback, this, 0);
}
GRefPtr<WebKitURISchemeRequest> m_uriSchemeRequest;
HashMap<String, URISchemeHandler> m_handlersMap;
- bool m_finishOnCommitted { false };
};
-String generateHTMLContent(unsigned contentLength)
-{
- String baseString("abcdefghijklmnopqrstuvwxyz0123457890");
- unsigned baseLength = baseString.length();
-
- StringBuilder builder;
- builder.append("<html><body>");
-
- if (contentLength <= baseLength)
- builder.append(baseString, 0, contentLength);
- else {
- unsigned currentLength = 0;
- while (currentLength < contentLength) {
- if ((currentLength + baseLength) <= contentLength)
- builder.append(baseString);
- else
- builder.append(baseString, 0, contentLength - currentLength);
-
- // Account for the 12 characters of the '<html><body>' prefix.
- currentLength = builder.length() - 12;
- }
- }
- builder.append("</body></html>");
-
- return builder.toString();
-}
-
static void testWebContextURIScheme(URISchemeTest* test, gconstpointer)
{
test->registerURISchemeHandler("foo", kBarHTML, strlen(kBarHTML), "text/html");
@@ -348,16 +203,6 @@ static void testWebContextURIScheme(URISchemeTest* test, gconstpointer)
g_assert_cmpint(mainResourceDataSize, ==, strlen(echoHTML.get()));
g_assert(!strncmp(mainResourceData, echoHTML.get(), mainResourceDataSize));
- test->loadURI("echo:with#fragment");
- test->waitUntilLoadFinished();
- g_assert_cmpstr(webkit_uri_scheme_request_get_path(test->m_uriSchemeRequest.get()), ==, "with");
- g_assert_cmpstr(webkit_uri_scheme_request_get_uri(test->m_uriSchemeRequest.get()), ==, "echo:with#fragment");
- echoHTML.reset(g_strdup_printf(kEchoHTMLFormat, webkit_uri_scheme_request_get_path(test->m_uriSchemeRequest.get())));
- mainResourceDataSize = 0;
- mainResourceData = test->mainResourceData(mainResourceDataSize);
- g_assert_cmpint(mainResourceDataSize, ==, strlen(echoHTML.get()));
- g_assert(!strncmp(mainResourceData, echoHTML.get(), mainResourceDataSize));
-
test->registerURISchemeHandler("nomime", kBarHTML, -1, 0);
test->m_loadEvents.clear();
test->loadURI("nomime:foo-bar");
@@ -371,35 +216,14 @@ static void testWebContextURIScheme(URISchemeTest* test, gconstpointer)
g_assert(!test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadFailed));
- // Anything over 8192 bytes will get multiple calls to g_input_stream_read_async in
- // WebKitURISchemeRequest when reading data, but we still need way more than that to
- // ensure that we reach the load-committed state before failing, so we use an 8MB HTML.
- String longHTMLContent = generateHTMLContent(8 * 1024 * 1024);
- test->registerURISchemeHandler("error", longHTMLContent.utf8().data(), -1, "text/html");
+ test->registerURISchemeHandler("error", 0, 0, 0);
test->m_loadEvents.clear();
test->loadURI("error:error");
test->waitUntilLoadFinished();
g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
g_assert(test->m_loadFailed);
g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
- g_assert_cmpstr(test->m_error->message, ==, genericErrorMessage);
-
- test->m_loadEvents.clear();
- test->loadURI("error:before-response");
- test->waitUntilLoadFinished();
- g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
- g_assert(test->m_loadFailed);
- g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
- g_assert_cmpstr(test->m_error->message, ==, beforeReceiveResponseErrorMessage);
-
- test->m_loadEvents.clear();
- test->loadURI("error:after-first-chunk");
- test->finishOnCommittedAndWaitUntilLoadFinished();
- g_assert(!test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
- g_assert(test->m_loadEvents.contains(LoadTrackingTest::LoadFailed));
- g_assert(test->m_loadFailed);
- g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
- g_assert_cmpstr(test->m_error->message, ==, afterInitialChunkErrorMessage);
+ g_assert_cmpstr(test->m_error->message, ==, errorMessage);
test->registerURISchemeHandler("closed", 0, 0, 0);
test->m_loadEvents.clear();
@@ -412,7 +236,7 @@ static void testWebContextURIScheme(URISchemeTest* test, gconstpointer)
static void testWebContextSpellChecker(Test* test, gconstpointer)
{
- WebKitWebContext* webContext = test->m_webContext.get();
+ WebKitWebContext* webContext = webkit_web_context_get_default();
// Check what happens if no spell checking language has been set.
const gchar* const* currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
@@ -478,7 +302,7 @@ static void testWebContextLanguages(WebViewTest* test, gconstpointer)
g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("ES_es")));
g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("dE")));
g_ptr_array_add(languages.get(), 0);
- webkit_web_context_set_preferred_languages(test->m_webContext.get(), reinterpret_cast<const char* const*>(languages->pdata));
+ webkit_web_context_set_preferred_languages(webkit_web_context_get_default(), reinterpret_cast<const char* const*>(languages->pdata));
static const char* expectedLanguages = "en, es-es;q=0.90, de;q=0.80";
test->loadURI(kServer->getURIForPath("/").data());
@@ -501,25 +325,6 @@ static void serverCallback(SoupServer* server, SoupMessage* message, const char*
soup_message_set_status(message, SOUP_STATUS_OK);
soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, acceptLanguage, strlen(acceptLanguage));
soup_message_body_complete(message->response_body);
- } else if (g_str_equal(path, "/empty")) {
- const char* emptyHTML = "<html><body></body></html>";
- soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, emptyHTML, strlen(emptyHTML));
- soup_message_body_complete(message->response_body);
- soup_message_set_status(message, SOUP_STATUS_OK);
- } else if (g_str_equal(path, "/appcache")) {
- const char* appcacheHTML = "<html manifest=appcache.manifest><body></body></html>";
- soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, appcacheHTML, strlen(appcacheHTML));
- soup_message_body_complete(message->response_body);
- soup_message_set_status(message, SOUP_STATUS_OK);
- } else if (g_str_equal(path, "/appcache.manifest")) {
- const char* appcacheManifest = "CACHE MANIFEST\nCACHE:\nappcache/foo.txt\n";
- soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, appcacheManifest, strlen(appcacheManifest));
- soup_message_body_complete(message->response_body);
- soup_message_set_status(message, SOUP_STATUS_OK);
- } else if (g_str_equal(path, "/appcache/foo.txt")) {
- soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, "foo", 3);
- soup_message_body_complete(message->response_body);
- soup_message_set_status(message, SOUP_STATUS_OK);
} else
soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
}
@@ -538,7 +343,7 @@ public:
};
SecurityPolicyTest()
- : m_manager(webkit_web_context_get_security_manager(m_webContext.get()))
+ : m_manager(webkit_web_context_get_security_manager(webkit_web_context_get_default()))
{
}
@@ -601,52 +406,17 @@ static void testWebContextSecurityPolicy(SecurityPolicyTest* test, gconstpointer
| SecurityPolicyTest::CORSEnabled | SecurityPolicyTest::EmptyDocument);
}
-static void testWebContextSecurityFileXHR(WebViewTest* test, gconstpointer)
-{
- GUniquePtr<char> fileURL(g_strdup_printf("file://%s/simple.html", Test::getResourcesDir(Test::WebKit2Resources).data()));
- test->loadURI(fileURL.get());
- test->waitUntilLoadFinished();
-
- GUniquePtr<char> jsonURL(g_strdup_printf("file://%s/simple.json", Test::getResourcesDir().data()));
- GUniquePtr<char> xhr(g_strdup_printf("var xhr = new XMLHttpRequest; xhr.open(\"GET\", \"%s\"); xhr.send();", jsonURL.get()));
-
- // By default file access is not allowed, this will fail with a cross-origin error.
- GUniqueOutPtr<GError> error;
- WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
- g_assert(!javascriptResult);
- g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
-
- // Allow file access from file URLs.
- webkit_settings_set_allow_file_access_from_file_urls(webkit_web_view_get_settings(test->m_webView), TRUE);
- test->loadURI(fileURL.get());
- test->waitUntilLoadFinished();
- javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
- g_assert(javascriptResult);
- g_assert(!error);
-
- // It isn't still possible to load file from an HTTP URL.
- test->loadURI(kServer->getURIForPath("/").data());
- test->waitUntilLoadFinished();
- javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
- g_assert(!javascriptResult);
- g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
-
- webkit_settings_set_allow_file_access_from_file_urls(webkit_web_view_get_settings(test->m_webView), FALSE);
-}
-
void beforeAll()
{
kServer = new WebKitTestServer();
kServer->run(serverCallback);
Test::add("WebKitWebContext", "default-context", testWebContextDefault);
- WebViewTest::add("WebKitWebContext", "configuration", testWebContextConfiguration);
PluginsTest::add("WebKitWebContext", "get-plugins", testWebContextGetPlugins);
URISchemeTest::add("WebKitWebContext", "uri-scheme", testWebContextURIScheme);
Test::add("WebKitWebContext", "spell-checker", testWebContextSpellChecker);
WebViewTest::add("WebKitWebContext", "languages", testWebContextLanguages);
SecurityPolicyTest::add("WebKitSecurityManager", "security-policy", testWebContextSecurityPolicy);
- WebViewTest::add("WebKitSecurityManager", "file-xhr", testWebContextSecurityFileXHR);
}
void afterAll()