]> git.eshelyaron.com Git - emacs.git/commitdiff
Add user option to disable JavaScript in xwidget webview
authorNoé Lopez <noelopez@free.fr>
Fri, 19 Jan 2024 22:40:53 +0000 (23:40 +0100)
committerEshel Yaron <me@eshelyaron.com>
Fri, 15 Mar 2024 09:03:16 +0000 (10:03 +0100)
* src/xwidget.c: Add the 'xwidget-webkit-disable-javascript'
variable to disable JavaScript in WebKit sessions.  (Bug#68604)

* etc/NEWS:
* doc/emacs/misc.texi (Embedded Webkit Widgets): Document
the change.

(cherry picked from commit f6a27bc32d19727dfcbee65fb9894b53aec46c65)

doc/emacs/misc.texi
etc/NEWS
lisp/xwidget.el
src/xwidget.c

index 7eb28f56826b73c89257f648be43a5d772e76a5a..bfc86e3c9d42471b01abf19258d6e204bf6114f1 100644 (file)
@@ -3009,6 +3009,14 @@ buffer, and lets you navigate to those pages by hitting @kbd{RET}.
 
 It is bound to @kbd{H}.
 
+@vindex xwidget-webkit-disable-javascript
+@cindex disabling javascript in webkit buffers
+  JavaScript is enabled by default inside WebKit buffers, this can be
+undesirable as websites often use it to track your online activity.  It
+can be disabled by setting the variable @code{xwidget-webkit-disable-javascript} to @code{t}.
+You must kill all WebKit buffers for this setting to take effect after
+it is changed.
+
 @node Browse-URL
 @subsection  Following URLs
 @cindex World Wide Web
index c4fe2a4f8a1258b0dfe9bc63eab426bad60f23fb..c4c3726e928bcbc6565a133ce97b456b19985b5d 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1541,6 +1541,12 @@ The new user option 'ielm-history-file-name' is the name of the file
 where IELM input history will be saved.  Customize it to nil to revert
 to the old behavior of not remembering input history between sessions.
 
+** Xwidget Webkit
+
++++
+*** New user option 'xwidget-webkit-disable-javascript'.
+This allows disabling JavaScript in xwidget Webkit sessions.
+
 \f
 * New Modes and Packages in Emacs 30.1
 
index cca01c8cb3a18647fa0af37138c1a2ef055454e9..2fb79bb7b1d4e240bc9f98d6949e7f6eac005477 100644 (file)
@@ -116,6 +116,13 @@ buffers for this setting to take effect after setting it to nil."
   :type '(choice (const :tag "Do not store cookies" nil) file)
   :version "29.1")
 
+(defcustom xwidget-webkit-disable-javascript nil
+  "If non-nil, disables the execution of JavaScript in xwidget webkit sessions.
+You must kill all xwidget-webkit buffers for this setting to take
+effect after changing it."
+  :type '(boolean)
+  :version "30.0")
+
 ;;;###autoload
 (defun xwidget-webkit-browse-url (url &optional new-session)
   "Ask xwidget-webkit to browse URL.
index 589104591423702eb17440881eba1d970ca2df1b..5b82ef6e840a90a84415f684df313f3c382c7656 100644 (file)
@@ -22,7 +22,6 @@ along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
 #include "buffer.h"
 #include "coding.h"
 #include "xwidget.h"
-
 #include "lisp.h"
 #include "blockinput.h"
 #include "dispextern.h"
@@ -379,6 +378,7 @@ fails.  */)
          /* Enable the developer extras.  */
          settings = webkit_web_view_get_settings (WEBKIT_WEB_VIEW (xw->widget_osr));
          g_object_set (G_OBJECT (settings), "enable-developer-extras", TRUE, NULL);
+         g_object_set (G_OBJECT (settings), "enable-javascript", !xwidget_webkit_disable_javascript, NULL);
        }
 
       gtk_widget_set_size_request (GTK_WIDGET (xw->widget_osr), xw->width,
@@ -3972,6 +3972,12 @@ syms_of_xwidget (void)
               doc: /* List of all xwidget views.  */);
   Vxwidget_view_list = Qnil;
 
+  DEFVAR_BOOL("xwidget-webkit-disable-javascript", xwidget_webkit_disable_javascript,
+             doc: /* If non-nil, disables the execution of JavaScript in xwidget webkit sessions.
+You must kill all xwidget-webkit buffers for this setting to take
+effect after changing it.  */);
+  xwidget_webkit_disable_javascript = false;
+
   Fprovide (intern ("xwidget-internal"), Qnil);
 
   id_to_xwidget_map = CALLN (Fmake_hash_table, QCtest, Qeq,