diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/appmanifest/protocol_handlers-member | |
parent | Initial commit. (diff) | |
download | firefox-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')
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 Binary files differnew file mode 100644 index 0000000000..9255547fae --- /dev/null +++ b/testing/web-platform/tests/appmanifest/protocol_handlers-member/resources/icon.png 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 |