{
  "collectedAt": "2026-10-20T07:31:16.031Z",
  "href": "https://openpwa.net/demo/",
  "title": "Does it work on mine? — OpenPWA Demo",
  "userAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 18_6_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.6 Mobile/15E148 Safari/604.1",
  "platform": "iPhone",
  "vendor": "Apple Computer, Inc.",
  "language": "zh-CN",
  "languages": [
    "zh-CN"
  ],
  "maxTouchPoints": 5,
  "hardwareConcurrency": 4,
  "deviceMemory": "undefined",
  "navigator.standalone": false,
  "displayModes": {
    "browser": true,
    "minimal-ui": false,
    "standalone": false,
    "fullscreen": false,
    "window-controls-overlay": false,
    "picture-in-picture": false,
    "application": false
  },
  "features": {
    "'serviceWorker' in navigator": true,
    "serviceWorker.controller": true,
    "serviceWorkerRegistrations": [
      {
        "scope": "https://openpwa.net/demo/",
        "active": true,
        "state": "activated"
      },
      {
        "scope": "https://openpwa.net/lab/device-tests/",
        "active": true,
        "state": "activated"
      }
    ],
    "'PushManager' in window": false,
    "'pushManager' in window": true,
    "typeof window.pushManager?.subscribe": "function",
    "typeof window.pushManager?.permissionState": "function",
    "typeof window.pushManager?.getSubscription": "function",
    "PushManager.supportedContentEncodings": "n/a",
    "'Notification' in window": false,
    "Notification.permission": "n/a",
    "typeof Notification.requestPermission": "undefined",
    "'setAppBadge' in navigator": false,
    "'clearAppBadge' in navigator": false,
    "'install' in navigator": false,
    "typeof navigator.install": "undefined",
    "'BeforeInstallPromptEvent' in window": false,
    "'onbeforeinstallprompt' in window": false,
    "'onappinstalled' in window": false,
    "'getInstalledRelatedApps' in navigator": false,
    "'share' in navigator": true,
    "'canShare' in navigator": true,
    "canShare({url})": true,
    "canShare({files:[txt]})": true,
    "'launchQueue' in window": false,
    "'showOpenFilePicker' in window": false,
    "'showSaveFilePicker' in window": false,
    "'showDirectoryPicker' in window": false,
    "typeof navigator.storage?.getDirectory (OPFS)": "function",
    "'storage' in navigator": true,
    "storage.estimate()": {
      "quota": 41231686042,
      "usage": 86592
    },
    "storage.persisted()": false,
    "typeof navigator.storage?.persist": "function",
    "'cookieStore' in window": true,
    "'CookieStore' in window": true,
    "'BroadcastChannel' in window": true,
    "'wakeLock' in navigator": true,
    "'contacts' in navigator": false,
    "'getBattery' in navigator": false,
    "'vibrate' in navigator": false,
    "'bluetooth' in navigator": false,
    "'usb' in navigator": false,
    "'serial' in navigator": false,
    "'hid' in navigator": false,
    "'NDEFReader' in window": false,
    "'PaymentRequest' in window": true,
    "'PublicKeyCredential' in window": true,
    "'IdentityCredential' in window": false,
    "'DigitalCredential' in window": false,
    "'credentials' in navigator": true,
    "'clipboard' in navigator": true,
    "'mediaSession' in navigator": true,
    "'periodicSync' in ServiceWorkerRegistration.prototype": false,
    "'sync' in ServiceWorkerRegistration.prototype": false,
    "'navigationPreload' in ServiceWorkerRegistration.prototype": true,
    "'windowControlsOverlay' in navigator": false,
    "'documentPictureInPicture' in window": false,
    "'ViewTransition' in window": true,
    "'startViewTransition' in document": true,
    "'navigation' in window": false,
    "'scheduler' in window": false,
    "'userActivation' in navigator": true,
    "'virtualKeyboard' in navigator": false,
    "'screen.orientation.lock'": "undefined",
    "'requestFullscreen' in documentElement": false,
    "'webkitRequestFullscreen' in documentElement": false,
    "'xr' in navigator": false
  },
  "css": {
    "env(safe-area-inset-top)": true,
    "env(titlebar-area-height)": true,
    "env(viewport-segment-width 0 0)": false,
    "height: 100dvh": true,
    "@supports selector(:has(a))": true,
    "color: oklch()": true,
    "safeAreaInsetsComputed": {
      "top": "0px",
      "right": "0px",
      "bottom": "0px",
      "left": "0px"
    }
  },
  "viewportSegments": {
    "window.viewport": "undefined",
    "window.viewport?.segments": "n/a",
    "(horizontal-viewport-segments: 1)": false,
    "(horizontal-viewport-segments: 2)": false,
    "(vertical-viewport-segments: 1)": false,
    "(vertical-viewport-segments: 2)": false,
    "getWindowSegments": "undefined"
  },
  "screen": {
    "width": 402,
    "height": 874,
    "availWidth": 402,
    "availHeight": 874,
    "colorDepth": 24,
    "orientation": "portrait-primary",
    "angle": 0
  },
  "devicePixelRatio": 3,
  "innerWidth": 402,
  "innerHeight": 678,
  "outerWidth": 402,
  "outerHeight": 874,
  "documentElementClient": {
    "w": 402,
    "h": 678
  },
  "visualViewport": {
    "width": 402,
    "height": 678,
    "scale": 1,
    "offsetTop": 0,
    "offsetLeft": 0,
    "pageTop": 0
  },
  "mediaQueries": {
    "(prefers-color-scheme: dark)": false,
    "(prefers-reduced-motion: reduce)": false,
    "(prefers-contrast: more)": false,
    "(dynamic-range: high)": true,
    "(color-gamut: p3)": true,
    "(hover: hover)": false,
    "(pointer: coarse)": true,
    "(orientation: portrait)": true
  },
  "declarations": {
    "manifest": "/demo/manifest.webmanifest",
    "appleTouchIcon": [
      "/demo/icons/icon-192.png"
    ],
    "icons": [
      "/demo/icons/icon.svg"
    ],
    "themeColor": "#161616",
    "appleCapable": "yes",
    "appleStatusBarStyle": null,
    "appleTitle": "OpenPWA",
    "viewportMeta": "width=device-width, initial-scale=1"
  },
  "pageText": "OpenPWA Demo\nopenpwa.net\n中文\nDoes it work on mine?\n\nA small installable web app that exercises five PWA capabilities on this origin. Every page feature-detects first, states what must be true for the call to work, shows the exact function it runs, and prints the result. Nothing is sent anywhere; there are no analytics and no third-party requests.\n\nThis is the companion demo for the openpwa.net reference. Each capability below links to the entry that explains the API, and each entry links back here.\n\nInstall this demo\nBadging, push on iOS, and file handling only behave like an app once the demo is installed. Install it first, then open the capability pages from the installed window.\n\nInstallability status\nYes\nSecure context (HTTPS or localhost)\nYes\nManifest linked from this page\n/demo/manifest.webmanifest\nYes\nService worker registered for /demo/\nscope: https://openpwa.net/demo/\nPartial\nRunning as an installed app\ndisplay-mode: browser\nPartial\nBrowser offered an install prompt (beforeinstallprompt)\nNot fired yet. Chromium fires it after the manifest and service worker checks pass; Safari and Firefox never fire it.\nInstall\n尚无结果。请点击运行按钮。\nNo install button on iOS or Safari? Add to Home Screen instead\nOpen this page in Safari (other iOS browsers cannot add web apps to the Home Screen).\nTap the Share button in the toolbar.\nChoose \"Add to Home Screen\" and confirm. The label depends on the OS language.\nLaunch the demo from its new Home Screen icon; the pages then run in standalone mode.\nCapability pages\nEach page is reachable directly and from a hash on this page, for example /demo/#share.\n\nInstall\nInstallability status, beforeinstallprompt capture, getInstalledRelatedApps, display-mode detection.\n\nReference entry\nShare\nnavigator.share with text and URL, and with a file when canShare allows it.\n\nReference entry\nBadging\nnavigator.setAppBadge and clearAppBadge driven by a counter.\n\nReference entry\nPush permission\nNotification.requestPermission and PushManager.subscribe with a demo VAPID key; the subscription is shown, never sent.\n\nReference entry\nFile handling\nshowOpenFilePicker and launchQueue for the .txt and .md handlers declared in the manifest; only name and size are read.\n\nReference entry\nPart of openpwa.net. Static files, no build step, no dependencies. manifest.webmanifest · sw.js",
  "localStorageDump": {
    "openpwa-lab-marker": "TAB-2026-10-20T07:13:46Z",
    "starlight-theme": "",
    "openpwa-demo-lang": "en"
  },
  "documentCookieNames": [],
  "labJsonTextarea": null,
  "labNotifyOut": null,
  "labEventsOut": null,
  "labProbeOut": null,
  "variantProbe": null
}
