зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1620280 - [devtools] Simplify things around sourceLoading promise. r=jdescottes
This was relevant before as we were calling "ThreadActor.getSources"/"StyleSheets.getStyleSheets", and by the time these requests resolved, we would have navigated to a new URL and need to ignore their response. I think it is safe to drop this now as these requests may still be pending if we use legacy listeners, but the call to unwatchResources should immediately unregister _onResourceAvailable and ignore any pending data coming late. Differential Revision: https://phabricator.services.mozilla.com/D90428
This commit is contained in:
Родитель
b44cfc42a0
Коммит
09ffba351a
|
@ -28,11 +28,11 @@ class SourceMapURLService {
|
|||
this._urlToIDMap = new Map();
|
||||
this._mapsById = new Map();
|
||||
this._sourcesLoading = null;
|
||||
this._onResourceAvailable = this._onResourceAvailable.bind(this);
|
||||
this._runningCallback = false;
|
||||
|
||||
this._syncPrevValue = this._syncPrevValue.bind(this);
|
||||
this._clearAllState = this._clearAllState.bind(this);
|
||||
this._onNewStyleSheet = this._onNewStyleSheet.bind(this);
|
||||
|
||||
this._target.on("will-navigate", this._clearAllState);
|
||||
|
||||
|
@ -416,33 +416,20 @@ class SourceMapURLService {
|
|||
if (!this._prefValue) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!this._sourcesLoading) {
|
||||
const sourcesLoading = (async () => {
|
||||
if (this._target.isWorkerTarget) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this._sourcesLoading) {
|
||||
const { resourceWatcher } = this._toolbox;
|
||||
const { STYLESHEET, SOURCE } = resourceWatcher.TYPES;
|
||||
|
||||
this._onResourceAvailable = resources => {
|
||||
if (this._sourcesLoading === sourcesLoading) {
|
||||
for (const resource of resources) {
|
||||
if (resource.resourceType == STYLESHEET) {
|
||||
this._onNewStyleSheet(resource);
|
||||
} else if (resource.resourceType == SOURCE) {
|
||||
this._onNewJavascript(resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
await resourceWatcher.watchResources([STYLESHEET, SOURCE], {
|
||||
this._sourcesLoading = resourceWatcher.watchResources(
|
||||
[STYLESHEET, SOURCE],
|
||||
{
|
||||
onAvailable: this._onResourceAvailable,
|
||||
});
|
||||
})();
|
||||
this._sourcesLoading = sourcesLoading;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return this._sourcesLoading;
|
||||
|
@ -455,6 +442,18 @@ class SourceMapURLService {
|
|||
return Promise.resolve();
|
||||
}
|
||||
|
||||
_onResourceAvailable(resources) {
|
||||
const { resourceWatcher } = this._toolbox;
|
||||
const { STYLESHEET, SOURCE } = resourceWatcher.TYPES;
|
||||
for (const resource of resources) {
|
||||
if (resource.resourceType == STYLESHEET) {
|
||||
this._onNewStyleSheet(resource);
|
||||
} else if (resource.resourceType == SOURCE) {
|
||||
this._onNewJavascript(resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_convertPendingURLSubscriptionsToID(url, id) {
|
||||
const urlSubscriptions = this._pendingURLSubscriptions.get(url);
|
||||
if (!urlSubscriptions) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче