From 64e47ffd900e2d9b5b6ad308e42e090c66a6d2fc Mon Sep 17 00:00:00 2001
From: Mike Jackson
Date: Fri, 24 Sep 2021 11:52:05 -0700
Subject: [PATCH] dwpas: Add tentative WPT test for protocol_handler
Adding manual WPT test for new protocol_handler field.
https://github.com/w3c/manifest/issues/846
Bug: 1019239
Change-Id: I49bbcae9ff1925fb2799d1462fca936147f2e118
---
...ocol_handlers-member-manual.tentative.html | 34 ++++++++++++
...protocol_handlers-member-service-worker.js | 52 ++++++++++++++++++
.../resources/icon.png | Bin 0 -> 1520 bytes
.../protocol_handlers-member.webmanifest | 18 ++++++
...otocol_handlers-member.webmanifest.headers | 1 +
.../resources/protocol_handlers_entry.html | 19 +++++++
6 files changed, 124 insertions(+)
create mode 100644 appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html
create mode 100644 appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js
create mode 100644 appmanifest/protocol_handlers-member/resources/icon.png
create mode 100644 appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest
create mode 100644 appmanifest/protocol_handlers-member/resources/protocol_handlers-member.webmanifest.headers
create mode 100644 appmanifest/protocol_handlers-member/resources/protocol_handlers_entry.html
diff --git a/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html b/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html
new file mode 100644
index 000000000000000..fa9c958e0e4ba03
--- /dev/null
+++ b/appmanifest/protocol_handlers-member/protocol_handlers-member-manual.tentative.html
@@ -0,0 +1,34 @@
+
+
+
+
+
+ Protocol Handling Web Platform Test
+
+
+
+
Protocol Handling Web Platform Test
+
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.
+
+
Manual Test Steps:
+
+
+
Install this app.
+
Launch 'web+testing://test-url/'. Instructions will vary by OS.
+
+
On Windows - open a command prompt, and run "start web+testing://test-url/".
+
On MacOS - open a terminal, and "open web+testing://test-url/".
+
On Linux - open a terminal, and "xgd-open web+testing://test-url/".
+
+
+
If your browser prompts you, allow the app to open.
+
The app window that opens should indicate success of this test.
+
+
+
+
\ No newline at end of file
diff --git a/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js b/appmanifest/protocol_handlers-member/protocol_handlers-member-service-worker.js
new file mode 100644
index 000000000000000..e502e2a9859f6df
--- /dev/null
+++ b/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/appmanifest/protocol_handlers-member/resources/icon.png b/appmanifest/protocol_handlers-member/resources/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..9255547fae08775cce76b769ad4c6d13cc9b241a
GIT binary patch
literal 1520
zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q2}owBl)eX2jKx9jP7LeL$-D$|SkfJR9T^xl
z_H+M9WCij$3p^r=85qP=L734qNaX_q18b|Ni(^Pd+}pXfd5=8=TEC~wKIbU%Q_ibI
zfO%ItgX(0fk_3)|6(JAv`fsr9?)v-L%Vg{Cp6fr9c%z-K9bcyvHSPEM{q=vvTs$Ns
zh1}X&CMqVT5X0o>sIIoX|4*{#_VK4>R`u`V?}=TO-cwWeWM}4`xOg%4FP1USUrv8*
zXEnEd$A-hE$5~~!U;bG8{9a0D?d{8ng$~p2Zrs!UXkTST(}v#?_r40XZH&7y|4sUd
z_4>z4-``v1a>(EsSGH@}_fK`Zo+Ljj{F(F2jq~sguNy7BkLO>si92MlO?29g`JX3N
zZV{W=l9;1+=G*H`lSP_|61Ta%&*yHNado+e#4+KPpI&N-*+2MOYGtzR|4lI9S!-Z4
zPw|Xtm(aGh=jO7#8D0{{z8!k=v5GJHc_r(9s4~`6WsQo$8T-bsb^o*z
zC8Rm4Z_9W4i|lthzpf>5jp(#RkL}`4>g&51OZow=sY*PtV=mv~`=SkEdBUc$xlM=c
z&K-EquA;(|ES#umIPcv2^@l@4m4N1$$`-2dI3GGO!N5qRhlf)c3$tg(hNe0Ux`~)Z}H=I*|RP2
z_hPNjz5n<3IwN=SY?0D!d8--z=e}htTirBkL&22U*2TA~v%hw*X7S7uioLM=x3blr
zzL3{7;m_^1>15q+`)7D)gREuN6(@m{U14mSuAiIom*?l#rxAB5?NwCO?o2(f{E_*~
z-Tm&h=03NJv-eh3q@R;|{AZ7|#CE&&)ey%GaYKbrY+9iuUeVMUL
zdEdnsF0H!XS`Thknrcu#_wZ$1?ucF88=Fj$``_P@PfV