Make shr respect privacy when viewing documents with SVG images
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 31 Jan 2014 21:44:11 +0000 (13:44 -0800)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 31 Jan 2014 21:44:11 +0000 (13:44 -0800)
(shr-tag-svg): Respect `shr-inhibit-images'.
(shr-dom-to-xml): Respect `shr-blocked-images'.

Fixes: debbugs:15882

lisp/ChangeLog
lisp/net/shr.el

index 9b7e338..f17cbb7 100644 (file)
@@ -2,6 +2,8 @@
 
        * net/shr.el (shr-generic): Make into a defsubst to make the stack
        depth shallower (bug#16587).
+       (shr-tag-svg): Respect `shr-inhibit-images'.
+       (shr-dom-to-xml): Respect `shr-blocked-images' (bug#15882).
 
 2014-01-31  Dmitry Gutov  <dgutov@yandex.ru>
 
index dba0f71..f23faaa 100644 (file)
@@ -972,11 +972,18 @@ ones, in case fg and bg are nil."
 (defun shr-dom-to-xml (dom)
   "Convert DOM into a string containing the xml representation."
   (let ((arg " ")
-        (text ""))
+        (text "")
+       url)
     (dolist (sub (cdr dom))
       (cond
        ((listp (cdr sub))
-        (setq text (concat text (shr-dom-to-xml sub))))
+       ;; Ignore external image definitions if required.
+       ;; <image xlink:href="http://TRACKING_URL/"/>
+       (when (or (not (eq (car sub) 'image))
+                 (not (setq url (cdr (assq ':xlink:href (cdr sub)))))
+                 (not shr-blocked-images)
+                 (not (string-match shr-blocked-images url)))
+         (setq text (concat text (shr-dom-to-xml sub)))))
        ((eq (car sub) 'text)
         (setq text (concat text (cdr sub))))
        (t
@@ -990,7 +997,8 @@ ones, in case fg and bg are nil."
             (car dom))))
 
 (defun shr-tag-svg (cont)
-  (when (image-type-available-p 'svg)
+  (when (and (image-type-available-p 'svg)
+            (not shr-inhibit-images))
     (funcall shr-put-image-function
              (shr-dom-to-xml (cons 'svg cont))
              "SVG Image")))