| // Copyright 2019 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| /** | |
| * @implements {Protocol.BackgroundServiceDispatcher} | |
| * @unrestricted | |
| */ | |
| Resources.BackgroundServiceModel = class extends SDK.SDKModel { | |
| /** | |
| * @param {!SDK.Target} target | |
| */ | |
| constructor(target) { | |
| super(target); | |
| this._backgroundServiceAgent = target.backgroundServiceAgent(); | |
| target.registerBackgroundServiceDispatcher(this); | |
| /** @const {!Map<!Protocol.BackgroundService.ServiceName, Array<!Protocol.BackgroundService.BackgroundServiceEvent>>} */ | |
| this._events = new Map(); | |
| } | |
| /** | |
| * @param {!Protocol.BackgroundService.ServiceName} serviceName | |
| */ | |
| enable(serviceName) { | |
| this._events.set(serviceName, []); | |
| this._backgroundServiceAgent.startObserving(serviceName); | |
| } | |
| /** | |
| * @param {boolean} shouldRecord | |
| * @param {!Protocol.BackgroundService.ServiceName} serviceName | |
| */ | |
| setRecording(shouldRecord, serviceName) { | |
| this._backgroundServiceAgent.setRecording(shouldRecord, serviceName); | |
| } | |
| /** | |
| * @param {!Protocol.BackgroundService.ServiceName} serviceName | |
| */ | |
| clearEvents(serviceName) { | |
| this._events.set(serviceName, []); | |
| this._backgroundServiceAgent.clearEvents(serviceName); | |
| } | |
| /** | |
| * @param {!Protocol.BackgroundService.ServiceName} serviceName | |
| * @return {!Array<!Protocol.BackgroundService.BackgroundServiceEvent>} | |
| */ | |
| getEvents(serviceName) { | |
| return this._events.get(serviceName) || []; | |
| } | |
| /** | |
| * @override | |
| * @param {boolean} isRecording | |
| * @param {!Protocol.BackgroundService.ServiceName} serviceName | |
| */ | |
| recordingStateChanged(isRecording, serviceName) { | |
| this.dispatchEventToListeners( | |
| Resources.BackgroundServiceModel.Events.RecordingStateChanged, {isRecording, serviceName}); | |
| } | |
| /** | |
| * @override | |
| * @param {!Protocol.BackgroundService.BackgroundServiceEvent} backgroundServiceEvent | |
| */ | |
| backgroundServiceEventReceived(backgroundServiceEvent) { | |
| this._events.get(backgroundServiceEvent.service).push(backgroundServiceEvent); | |
| this.dispatchEventToListeners( | |
| Resources.BackgroundServiceModel.Events.BackgroundServiceEventReceived, backgroundServiceEvent); | |
| } | |
| }; | |
| SDK.SDKModel.register(Resources.BackgroundServiceModel, SDK.Target.Capability.Browser, false); | |
| /** @enum {symbol} */ | |
| Resources.BackgroundServiceModel.Events = { | |
| RecordingStateChanged: Symbol('RecordingStateChanged'), | |
| BackgroundServiceEventReceived: Symbol('BackgroundServiceEventReceived'), | |
| }; | |
| /** | |
| * @typedef {!{isRecording: boolean, serviceName: !Protocol.BackgroundService.ServiceName}} | |
| */ | |
| Resources.BackgroundServiceModel.RecordingState; |