Browse Source

* Corrections to serviceworker object

Michaël Van Canneyt 3 years ago
parent
commit
f41b417f2a

+ 5 - 5
packages/fcl-base/serviceworkerapp.pas

@@ -162,9 +162,9 @@ end;
 function TServiceWorkerApplication.EnableNavigationPreload: jsvalue;
 begin
   Result:=nil;
-  if jsvalue(serviceWorker.registration.navigationPreload) then
+  if jsvalue(self_.registration.navigationPreload) then
     // Enable navigation preloads!
-    await(serviceWorker.registration.navigationPreload.enable());
+    await(self_.registration.navigationPreload.enable());
 end;
 
 procedure TServiceWorkerApplication.DeleteCache(key: string);
@@ -189,9 +189,9 @@ end;
 
 procedure TServiceWorkerApplication.DoRun;
 begin
-  ServiceWorker.addEventListener('activate', @Activate);
-  ServiceWorker.addEventListener('install', @Install);
-  ServiceWorker.addEventListener('fetch', @Fetch);
+  self_.addEventListener('activate', @Activate);
+  self_.addEventListener('install', @Install);
+  self_.addEventListener('fetch', @Fetch);
 end;
 
 procedure TServiceWorkerApplication.Activate(Event: TJSExtendableEvent);

+ 1 - 1
packages/rtl/web.pas

@@ -3414,7 +3414,7 @@ var
   window : TJSWindow; external name 'window';
   console : TJSConsole; external name 'window.console';
   caches : TJSCacheStorage; external name 'caches';
-  serviceWorker : TJSServiceWorker; external name 'self';
+  serviceWorker : TJSServiceWorker; external name 'window.navigator.serviceWorker';
 
 Function HasServiceWorker : Boolean;
 

+ 1 - 1
packages/rtl/weborworker.pas

@@ -956,7 +956,7 @@ type
 
   { TWindowOrWorkerGlobalScope }
 
-  TWindowOrWorkerGlobalScope = Class external name 'Object' (TJSObject)
+  TWindowOrWorkerGlobalScope = Class external name 'Object' (TJSEventTarget)
   Private
     FCrypto: TJSCrypto; external name 'crypto';
     FisSecureContext : boolean; external name 'isSecureContext';

+ 26 - 2
packages/rtl/webworker.pas

@@ -70,12 +70,36 @@ Type
     Property Self_ : TJSWorkerGlobalScope Read FSelf;
   end;
 
+  TJSClientsMatchAllOptions = class external name 'Object'
+    includeUncontrolled : Boolean;
+    type_ : string; external name 'type';
+  end;
+
+  TJSClients = class external name 'Clients' (TJSObject)
+    function claim : TJSPromise;
+    function get(ID : String) : TJSPromise;
+    function matchAll : TJSPromise;
+    function matchAll(Options : TJSClientsMatchAllOptions) : TJSPromise;
+    function matchAll(Options : TJSObject) : TJSPromise;
+    function openWindow(url : string) : TJSPromise;
+  end;
+
+  { TJSServiceworkerGlobalScope }
+
+  TJSServiceworkerGlobalScope = class external name 'ServiceWorkerGlobalScope' (TJSWorkerGlobalScope)
+  private
+    FClients: TJSClients; external name 'clients';
+    FRegistration: TJSServiceWorkerRegistration; external name 'registration';
+  Public
+    property registration : TJSServiceWorkerRegistration Read FRegistration;
+    property clients : TJSClients Read FClients;
+  end;
+
 Var
-  Self_ : TJSWorkerGlobalScope; external name 'self';
+  Self_ : TJSServiceWorkerGlobalScope; external name 'self';
   location : TJSWorkerLocation;
   console : TJSConsole;
   navigator : TJSWorkerNavigator;
-  serviceWorker : TJSServiceWorker;
   caches : TJSCacheStorage;
 
 function fetch(resource: String; init: TJSObject): TJSPromise; overload; external name 'fetch';