summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/appmanifest/protocol_handlers-member
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/appmanifest/protocol_handlers-member
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/appmanifest/protocol_handlers-member')
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html34
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js52
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/icon.pngbin0 -> 1520 bytes
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest18
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest.headers1
-rw-r--r--testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers_entry.html19
6 files changed, 124 insertions, 0 deletions
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html b/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html
new file mode 100644
index 0000000000..fa9c958e0e
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <link rel="manifest" href="resources/protocol_handlers-member.webmanifest" />
+ <title>Protocol Handling Web Platform Test</title>
+ <script>
+ navigator.serviceWorker.register(
+ 'protocol_handlers-member-service-worker.js');
+ </script>
+</head>
+<body>
+ <h1>Protocol Handling Web Platform Test</h1>
+ <p>This test validates that an install application can register URL protocol
+ handlers via a property in the web app manifest. The app should open
+ directly when the 'web+testing' custom-scheme URL is visited.
+ </p>
+ <h2>Manual Test Steps:</h2>
+ <p>
+ <ol>
+ <li>Install this app.</li>
+ <li>Launch 'web+testing://test-url/'. Instructions will vary by OS.
+ <ul>
+ <li>On Windows - open a command prompt, and run "start web+testing://test-url/".</li>
+ <li>On MacOS - open a terminal, and "open web+testing://test-url/".</li>
+ <li>On Linux - open a terminal, and "xgd-open web+testing://test-url/".</li>
+ </ul>
+ </li>
+ <li>If your browser prompts you, allow the app to open.</li>
+ <li>The app window that opens should indicate success of this test.</li>
+ </ol>
+ </p>
+</body>
+</html> \ No newline at end of file
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js b/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js
new file mode 100644
index 0000000000..e502e2a985
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js
@@ -0,0 +1,52 @@
+// Some user agents only offer app installation if there is a SW and it handles
+// offline requests.
+
+const cacheVersion = "1.1";
+const CACHE_NAME = `cache-v${cacheVersion}`;
+
+// The resources cached by this service worker.
+const resources = [
+ "protocol_handlers-member-service-worker.js",
+ "protocol_handlers-member-manual.tentative.html",
+ "resources/icon.png",
+ "resources/protocol_handlers_entry.html",
+];
+
+// Load all resources for this service worker.
+const precache = async () => {
+ const cache = await caches.open(CACHE_NAME);
+ await cache.addAll(resources);
+};
+
+// Get a resource from the cache.
+const fromCache = async request => {
+ const cache = await caches.open(CACHE_NAME);
+ return await cache.match(request.url);
+};
+
+// Attempt to get resources from the network first, fallback to the cache if we're
+// offline.
+const networkFallbackToCache = async request => {
+ try {
+ const response = await fetch(request);
+ if (response.ok) return response;
+ } catch (err) {}
+ return await fromCache(request);
+};
+
+// When we have a new service worker, update the caches and swap immediately.
+self.addEventListener("install", e => {
+ e.waitUntil(precache().then(() => self.skipWaiting()));
+});
+
+// Claim existing clients.
+self.addEventListener("activate", e => {
+ e.waitUntil(self.clients.claim());
+});
+
+// When a resource need to be fetched, check whether it is
+// contained in the cache and return the cached version, otherwise
+// get it from the network.
+self.addEventListener("fetch", e => {
+ e.respondWith(networkFallbackToCache(e.request));
+});
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/icon.png b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/icon.png
new file mode 100644
index 0000000000..9255547fae
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/icon.png
Binary files differ
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest
new file mode 100644
index 0000000000..cce6ae1e22
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest
@@ -0,0 +1,18 @@
+{
+ "name": "Protocol_handlers test",
+ "icons": [
+ {
+ "src": "icon.png",
+ "sizes": "144x144"
+ }
+ ],
+ "start_url": "../protocol_handlers-member-manual.tentative.html",
+ "display": "standalone",
+ "scope": "../../protocol_handlers-member/",
+ "protocol_handlers": [
+ {
+ "protocol": "web+testing",
+ "url": "protocol_handlers_entry.html?value=%s"
+ }
+ ]
+} \ No newline at end of file
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest.headers b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest.headers
new file mode 100644
index 0000000000..2bab061d43
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest.headers
@@ -0,0 +1 @@
+Content-Type: application/manifest+json; charset=utf-8
diff --git a/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers_entry.html b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers_entry.html
new file mode 100644
index 0000000000..c5fa629f22
--- /dev/null
+++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/protocol_handlers_entry.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title>Protocol Handling Web Platform Test - Pass</title>
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <script>
+ setup({ single_test: true });
+ const urlParams = new URLSearchParams(window.location.search);
+ assert_equals(urlParams.get('value'), "web+testing://test-url/");
+ done();
+ </script>
+</head>
+<body>
+ <h1>Protocol Handling Page</h1>
+ <p>This test validates that the app was launched with the web+testing://test-url/ URL.</p>
+</body>
+</html> \ No newline at end of file