commit 968813951b4c10005f12ec15afafab97c0e8ee68
parent 93d0d8373e3f7bbf2d7a3cb1be492d9c1b277c7f
Author: Florian Dold <florian@dold.me>
Date: Tue, 23 Jan 2024 21:55:12 +0100
dd39: document decision
Diffstat:
1 file changed, 30 insertions(+), 9 deletions(-)
diff --git a/design-documents/039-taler-browser-integration.rst b/design-documents/039-taler-browser-integration.rst
@@ -81,11 +81,32 @@ Requirements
should work smoothly with future browsers that
have native, built-in support for Taler payments.
+Proposed Solution
+=================
+
+.. note::
+
+ As of 2023-01-23, we've decided to go ahead with the approach
+ described in this section.
+
+Now
+^^^
+
+* Handling ``taler://`` URIs by overriding the onclick handler of ``a`` HTML elements.
+ This requires excessive permissions but would be a viable work-around,
+ at least on pages that opt in with a special ``<meta name="taler-support" content="uri">`` tag.
+ It does not work in all use-cases, for example when a navigation
+ to a ``taler://`` URI is initiated programmatically or by pasting
+ the URI in the browser's address bar.
+
+* Handling a ``taler://`` URI by putting it directly in a meta tag that causes the
+ wallet to get triggered *on page load*.
-Alternatives
-============
-* JavaScript API: The WebExtension could inject a JavaScript API into Websites
+Future (post-1.0)
+^^^^^^^^^^^^^^^^^
+
+* JavaScript API: The WebExtension can inject a JavaScript API into Websites
that allow interacting with the Taler wallet. This is the approach taken by
the MetaMask crypto wallet. It requires excessive permissions, may break
some Websites (https://github.com/brave/browser-laptop/issues/13711) and
@@ -100,12 +121,12 @@ Alternatives
if the Website does not know the extension's ID. Hard-coding
the extension IDs would violate the "no vendor lock-in requirement".
-* Handling ``taler://`` URIs by overriding the onclick handler of ``a`` HTML elements.
- This requires excessive permissions but would be a viable work-around,
- at least on pages that opt in with a special ``<meta name="taler-support" content="uri">`` tag.
- It does not work in all use-cases, for example when a navigation
- to a ``taler://`` URI is initiated programmatically or by pasting
- the URI in the browser's address bar.
+
+
+
+Other Alternatives
+==================
+
* Triggering interactions with the ``taler://`` URI in a ``Taler:`` HTTP
header. This approach would allow browsers with native Taler support