fix(service-worker): ensure initialised in browser only (#20782)

closes #20360

PR Close #20782
This commit is contained in:
Fabian Wiles
2017-11-12 12:39:27 +13:00
committed by Igor Minar
parent da3563ce19
commit 7cabaa0ae7
7 changed files with 39 additions and 18 deletions

View File

@ -6,7 +6,8 @@
* found in the LICENSE file at https://angular.io/license
*/
import {Injectable} from '@angular/core';
import {isPlatformBrowser} from '@angular/common';
import {Inject, Injectable, PLATFORM_ID} from '@angular/core';
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
import {Observable} from 'rxjs/Observable';
import {ConnectableObservable} from 'rxjs/observable/ConnectableObservable';
@ -86,8 +87,11 @@ export class NgswCommChannel {
*/
readonly events: Observable<IncomingEvent>;
constructor(private serviceWorker: ServiceWorkerContainer|undefined) {
if (!serviceWorker) {
constructor(
private serviceWorker: ServiceWorkerContainer|undefined,
@Inject(PLATFORM_ID) platformId: string) {
if (!serviceWorker || !isPlatformBrowser(platformId)) {
this.serviceWorker = undefined;
this.worker = this.events = this.registration = errorObservable(ERR_SW_NOT_SUPPORTED);
} else {
const controllerChangeEvents =