debug-server-next
Version:
Dev server for hippy-core.
43 lines (42 loc) • 1.56 kB
JavaScript
// 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.
import { Capability } from './Target.js';
import { SDKModel } from './SDKModel.js';
/**
* The `IssuesModel` is a thin dispatch that does not store issues, but only creates the representation
* class (usually derived from `Issue`) and passes the instances on via a dispatched event.
* We chose this approach here because the lifetime of the Model is tied to the target, but DevTools
* wants to preserve issues for targets (e.g. iframes) that are already gone as well.
*/
export class IssuesModel extends SDKModel {
disposed = false;
enabled = false;
constructor(target) {
super(target);
this.ensureEnabled();
}
async ensureEnabled() {
if (this.enabled) {
return;
}
this.enabled = true;
this.target().registerAuditsDispatcher(this);
const auditsAgent = this.target().auditsAgent();
await auditsAgent.invoke_enable();
}
issueAdded(issueAddedEvent) {
this.dispatchEventToListeners("IssueAdded" /* IssueAdded */, { issuesModel: this, inspectorIssue: issueAddedEvent.issue });
}
dispose() {
super.dispose();
this.disposed = true;
}
getTargetIfNotDisposed() {
if (!this.disposed) {
return this.target();
}
return null;
}
}
SDKModel.register(IssuesModel, { capabilities: Capability.Audits, autostart: true });