WebKit Bugzilla
Attachment 359147 Details for
Bug 193439
: [GTK][WPE] Add enable-javascript-markup setting
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
wk-js-markup-setting.diff (text/plain), 11.09 KB, created by
Carlos Garcia Campos
on 2019-01-15 01:19:27 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Carlos Garcia Campos
Created:
2019-01-15 01:19:27 PST
Size:
11.09 KB
patch
obsolete
>diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index b1580fc058b..7cb261bfbe6 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,23 @@ >+2019-01-15 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK][WPE] Add enable-javascript-markup setting >+ https://bugs.webkit.org/show_bug.cgi?id=193439 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Expose JavaScriptMarkupEnabled setting in the GLib API. >+ >+ * UIProcess/API/glib/WebKitSettings.cpp: >+ (webKitSettingsSetProperty): >+ (webKitSettingsGetProperty): >+ (webkit_settings_class_init): >+ (webkit_settings_get_enable_javascript_markup): >+ (webkit_settings_set_enable_javascript_markup): >+ * UIProcess/API/gtk/WebKitSettings.h: >+ * UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: >+ * UIProcess/API/wpe/WebKitSettings.h: >+ * UIProcess/API/wpe/docs/wpe-0.1-sections.txt: >+ > 2019-01-14 Alex Christensen <achristensen@webkit.org> > > Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy >diff --git a/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp b/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp >index 4ec7f98139a..b5d44bc1aaf 100644 >--- a/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp >+++ b/Source/WebKit/UIProcess/API/glib/WebKitSettings.cpp >@@ -162,6 +162,7 @@ enum { > #if PLATFORM(GTK) > PROP_HARDWARE_ACCELERATION_POLICY, > #endif >+ PROP_ENABLE_JAVASCRIPT_MARKUP, > }; > > static void webKitSettingsDispose(GObject* object) >@@ -382,6 +383,9 @@ static void webKitSettingsSetProperty(GObject* object, guint propId, const GValu > webkit_settings_set_hardware_acceleration_policy(settings, static_cast<WebKitHardwareAccelerationPolicy>(g_value_get_enum(value))); > break; > #endif >+ case PROP_ENABLE_JAVASCRIPT_MARKUP: >+ webkit_settings_set_enable_javascript_markup(settings, g_value_get_boolean(value)); >+ break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); > break; >@@ -561,6 +565,9 @@ static void webKitSettingsGetProperty(GObject* object, guint propId, GValue* val > g_value_set_enum(value, webkit_settings_get_hardware_acceleration_policy(settings)); > break; > #endif >+ case PROP_ENABLE_JAVASCRIPT_MARKUP: >+ g_value_set_boolean(value, webkit_settings_get_enable_javascript_markup(settings)); >+ break; > default: > G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, paramSpec); > break; >@@ -1444,6 +1451,23 @@ static void webkit_settings_class_init(WebKitSettingsClass* klass) > WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND, > readWriteConstructParamFlags)); > #endif // PLATFOTM(GTK) >+ >+ /** >+ * WebKitSettings:enable-javascript-markup: >+ * >+ * Determines whether or not JavaScript markup is allowed in document. When this setting is disabled, >+ * all JavaScript related elements and attributes are removed from the document during parsing. Note that >+ * executing JavaScript is still allowed if #WebKitSettings:enable-javascript is %TRUE. >+ * >+ * Since: 2.24 >+ */ >+ g_object_class_install_property(gObjectClass, >+ PROP_ENABLE_JAVASCRIPT_MARKUP, >+ g_param_spec_boolean("enable-javascript-markup", >+ _("Enable JavaScript Markup"), >+ _("Enable JavaScript in document markup."), >+ TRUE, >+ readWriteConstructParamFlags)); > } > > WebPreferences* webkitSettingsGetPreferences(WebKitSettings* settings) >@@ -3548,3 +3572,42 @@ guint32 webkit_settings_font_size_to_pixels(guint32 points) > return std::round(points * WebCore::screenDPI() / 72); > } > #endif // PLATFORM(GTK) >+ >+/** >+ * webkit_settings_get_enable_javascript_markup: >+ * @settings: a #WebKitSettings >+ * >+ * Get the #WebKitSettings:enable-javascript-markup property. >+ * >+ * Returns: %TRUE If JavaScript markup is enabled or %FALSE otherwise. >+ * >+ * Since: 2.24 >+ */ >+gboolean webkit_settings_get_enable_javascript_markup(WebKitSettings* settings) >+{ >+ g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), FALSE); >+ >+ return settings->priv->preferences->javaScriptMarkupEnabled(); >+} >+ >+/** >+ * webkit_settings_set_enable_javascript_markup: >+ * @settings: a #WebKitSettings >+ * @enabled: Value to be set >+ * >+ * Set the #WebKitSettings:enable-javascript-markup property. >+ * >+ * Since: 2.24 >+ */ >+void webkit_settings_set_enable_javascript_markup(WebKitSettings* settings, gboolean enabled) >+{ >+ g_return_if_fail(WEBKIT_IS_SETTINGS(settings)); >+ >+ WebKitSettingsPrivate* priv = settings->priv; >+ bool currentValue = priv->preferences->javaScriptMarkupEnabled(); >+ if (currentValue == enabled) >+ return; >+ >+ priv->preferences->setJavaScriptMarkupEnabled(enabled); >+ g_object_notify(G_OBJECT(settings), "enable-javascript-markup"); >+} >diff --git a/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h b/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h >index cb2c206e2f6..01037d4fd9f 100644 >--- a/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h >+++ b/Source/WebKit/UIProcess/API/gtk/WebKitSettings.h >@@ -478,6 +478,13 @@ webkit_settings_font_size_to_points (guint32 pixels); > WEBKIT_API guint32 > webkit_settings_font_size_to_pixels (guint32 points); > >+WEBKIT_API gboolean >+webkit_settings_get_enable_javascript_markup (WebKitSettings *settings); >+ >+WEBKIT_API void >+webkit_settings_set_enable_javascript_markup (WebKitSettings *settings, >+ gboolean enabled); >+ > G_END_DECLS > > #endif /* WebKitSettings_h */ >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 756aaa4de72..fda7deaa6be 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 >@@ -392,6 +392,8 @@ webkit_settings_get_enable_java > webkit_settings_set_enable_java > webkit_settings_get_enable_javascript > webkit_settings_set_enable_javascript >+webkit_settings_get_enable_javascript_markup >+webkit_settings_set_enable_javascript_markup > webkit_settings_get_enable_offline_web_application_cache > webkit_settings_set_enable_offline_web_application_cache > webkit_settings_get_enable_plugins >diff --git a/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h b/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h >index 2ec0c9e25c3..a7921abfed1 100644 >--- a/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h >+++ b/Source/WebKit/UIProcess/API/wpe/WebKitSettings.h >@@ -442,6 +442,13 @@ WEBKIT_API void > webkit_settings_set_allow_universal_access_from_file_urls (WebKitSettings *settings, > gboolean allowed); > >+WEBKIT_API gboolean >+webkit_settings_get_enable_javascript_markup (WebKitSettings *settings); >+ >+WEBKIT_API void >+webkit_settings_set_enable_javascript_markup (WebKitSettings *settings, >+ gboolean enabled); >+ > G_END_DECLS > > #endif /* WebKitSettings_h */ >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 628db4252a4..6fcf61ad0f4 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 >@@ -375,6 +375,8 @@ webkit_settings_get_enable_java > webkit_settings_set_enable_java > webkit_settings_get_enable_javascript > webkit_settings_set_enable_javascript >+webkit_settings_get_enable_javascript_markup >+webkit_settings_set_enable_javascript_markup > webkit_settings_get_enable_offline_web_application_cache > webkit_settings_set_enable_offline_web_application_cache > webkit_settings_get_enable_plugins >diff --git a/Tools/ChangeLog b/Tools/ChangeLog >index 97b27205c39..a5024dfce55 100644 >--- a/Tools/ChangeLog >+++ b/Tools/ChangeLog >@@ -1,3 +1,17 @@ >+2019-01-15 Carlos Garcia Campos <cgarcia@igalia.com> >+ >+ [GTK][WPE] Add enable-javascript-markup setting >+ https://bugs.webkit.org/show_bug.cgi?id=193439 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add test cases to check the new setting. >+ >+ * TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp: >+ (testWebKitSettings): >+ (testWebKitSettingsJavaScriptMarkup): >+ (beforeAll): >+ > 2019-01-14 Tim Horton <timothy_horton@apple.com> > > Move a test implementation file that got misplaced in the Xcode project >diff --git a/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp b/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp >index 3edd53ced97..69932419831 100644 >--- a/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp >+++ b/Tools/TestWebKitAPI/Tests/WebKitGLib/TestWebKitSettings.cpp >@@ -350,6 +350,11 @@ static void testWebKitSettings(Test*, gconstpointer) > g_assert_cmpuint(webkit_settings_get_hardware_acceleration_policy(settings), ==, WEBKIT_HARDWARE_ACCELERATION_POLICY_ON_DEMAND); > #endif > >+ // JavaScript markup is enabled by default. >+ g_assert_true(webkit_settings_get_enable_javascript_markup(settings)); >+ webkit_settings_set_enable_javascript_markup(settings, FALSE); >+ g_assert_false(webkit_settings_get_enable_javascript_markup(settings)); >+ > g_object_unref(G_OBJECT(settings)); > } > >@@ -420,6 +425,31 @@ static void testWebKitSettingsUserAgent(WebViewTest* test, gconstpointer) > } > #endif // PLATFORM(GTK) > >+static void testWebKitSettingsJavaScriptMarkup(WebViewTest* test, gconstpointer) >+{ >+ webkit_settings_set_enable_javascript_markup(webkit_web_view_get_settings(test->m_webView), FALSE); >+ static const char* html = >+ "<html>" >+ " <head>" >+ " <title>No JavaScript allowed</title>" >+ " <script>document.title = 'JavaScript allowed from head script'</script>" >+ " </head>" >+ " <body onload='document.title = \"JavaScript allowed from body onload attribute\"'>" >+ " <p>No JavaScript markup should be allowed</p>" >+ " <script>document.title = 'JavaScript allowed from body script'</script>" >+ " </body>" >+ "</html>"; >+ test->loadHtml(html, nullptr); >+ test->waitUntilLoadFinished(); >+ >+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, "No JavaScript allowed"); >+ auto* jsResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('script').length", nullptr); >+ g_assert(jsResult); >+ g_assert_cmpfloat(WebViewTest::javascriptResultToNumber(jsResult), ==, 0); >+ >+ webkit_settings_set_enable_javascript_markup(webkit_web_view_get_settings(test->m_webView), TRUE); >+} >+ > static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer) > { > if (message->method != SOUP_METHOD_GET) { >@@ -446,6 +476,7 @@ void beforeAll() > #if PLATFORM(GTK) > WebViewTest::add("WebKitSettings", "user-agent", testWebKitSettingsUserAgent); > #endif >+ WebViewTest::add("WebKitSettings", "javascript-markup", testWebKitSettingsJavaScriptMarkup); > } > > void afterAll()
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+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 193439
: 359147