MCPcopy
hub / github.com/angular/angular / constructor

Method constructor

packages/service-worker/src/low_level.ts:141–213  ·  view source on GitHub ↗
(
    private serviceWorker: ServiceWorkerContainer | undefined,
    injector?: Injector,
  )

Source from the content-addressed store, hash-verified

139 readonly events: Observable<TypedEvent>;
140
141 constructor(
142 private serviceWorker: ServiceWorkerContainer | undefined,
143 injector?: Injector,
144 ) {
145 if (!serviceWorker) {
146 this.worker =
147 this.events =
148 this.registration =
149 new Observable<never>((subscriber) =>
150 subscriber.error(
151 new RuntimeError(
152 RuntimeErrorCode.SERVICE_WORKER_DISABLED_OR_NOT_SUPPORTED_BY_THIS_BROWSER,
153 (typeof ngDevMode === 'undefined' || ngDevMode) && ERR_SW_NOT_SUPPORTED,
154 ),
155 ),
156 );
157 } else {
158 let currentWorker: ServiceWorker | null = null;
159 const workerSubject = new Subject<ServiceWorker>();
160 this.worker = new Observable((subscriber) => {
161 if (currentWorker !== null) {
162 subscriber.next(currentWorker);
163 }
164 return workerSubject.subscribe((v) => subscriber.next(v));
165 });
166 const updateController = () => {
167 const {controller} = serviceWorker;
168 if (controller === null) {
169 return;
170 }
171 currentWorker = controller;
172 workerSubject.next(currentWorker);
173 };
174 serviceWorker.addEventListener('controllerchange', updateController);
175 updateController();
176
177 this.registration = this.worker.pipe(
178 switchMap(() =>
179 serviceWorker.getRegistration().then((registration) => {
180 // The `getRegistration()` method may return undefined in
181 // non-secure contexts or incognito mode, where service worker
182 // registration might not be allowed.
183 if (!registration) {
184 throw new RuntimeError(
185 RuntimeErrorCode.SERVICE_WORKER_DISABLED_OR_NOT_SUPPORTED_BY_THIS_BROWSER,
186 (typeof ngDevMode === 'undefined' || ngDevMode) && ERR_SW_NOT_SUPPORTED,
187 );
188 }
189
190 return registration;
191 }),
192 ),
193 );
194
195 const _events = new Subject<TypedEvent>();
196 this.events = _events.asObservable();
197
198 const messageListener = (event: MessageEvent) => {

Callers

nothing calls this directly

Calls 9

getRegistrationMethod · 0.80
errorMethod · 0.65
subscribeMethod · 0.65
addEventListenerMethod · 0.65
thenMethod · 0.65
getMethod · 0.65
onDestroyMethod · 0.65
removeEventListenerMethod · 0.65
nextMethod · 0.45

Tested by

no test coverage detected