first commit
This commit is contained in:
78
node_modules/chromium-bidi/lib/bidiMapper/modules/script/RealmStorage.js
generated
vendored
Normal file
78
node_modules/chromium-bidi/lib/bidiMapper/modules/script/RealmStorage.js
generated
vendored
Normal file
@@ -0,0 +1,78 @@
|
||||
import { NoSuchFrameException, } from '../../../protocol/protocol.js';
|
||||
import { WindowRealm } from './WindowRealm.js';
|
||||
/** Container class for browsing realms. */
|
||||
export class RealmStorage {
|
||||
/** Tracks handles and their realms sent to the client. */
|
||||
#knownHandlesToRealmMap = new Map();
|
||||
/** Map from realm ID to Realm. */
|
||||
#realmMap = new Map();
|
||||
/** List of the internal sandboxed realms which should not be reported to the user. */
|
||||
hiddenSandboxes = new Set();
|
||||
get knownHandlesToRealmMap() {
|
||||
return this.#knownHandlesToRealmMap;
|
||||
}
|
||||
addRealm(realm) {
|
||||
this.#realmMap.set(realm.realmId, realm);
|
||||
}
|
||||
/** Finds all realms that match the given filter. */
|
||||
findRealms(filter) {
|
||||
const sandboxFilterValue = filter.sandbox === null ? undefined : filter.sandbox;
|
||||
return Array.from(this.#realmMap.values()).filter((realm) => {
|
||||
if (filter.realmId !== undefined && filter.realmId !== realm.realmId) {
|
||||
return false;
|
||||
}
|
||||
if (filter.browsingContextId !== undefined &&
|
||||
!realm.associatedBrowsingContexts
|
||||
.map((browsingContext) => browsingContext.id)
|
||||
.includes(filter.browsingContextId)) {
|
||||
return false;
|
||||
}
|
||||
if (filter.sandbox !== undefined &&
|
||||
(!(realm instanceof WindowRealm) ||
|
||||
sandboxFilterValue !== realm.sandbox)) {
|
||||
return false;
|
||||
}
|
||||
if (filter.executionContextId !== undefined &&
|
||||
filter.executionContextId !== realm.executionContextId) {
|
||||
return false;
|
||||
}
|
||||
if (filter.origin !== undefined && filter.origin !== realm.origin) {
|
||||
return false;
|
||||
}
|
||||
if (filter.type !== undefined && filter.type !== realm.realmType) {
|
||||
return false;
|
||||
}
|
||||
if (filter.cdpSessionId !== undefined &&
|
||||
filter.cdpSessionId !== realm.cdpClient.sessionId) {
|
||||
return false;
|
||||
}
|
||||
if (filter.isHidden !== undefined &&
|
||||
filter.isHidden !== realm.isHidden()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
findRealm(filter) {
|
||||
return this.findRealms(filter)[0];
|
||||
}
|
||||
/** Gets the only realm that matches the given filter, if any, otherwise throws. */
|
||||
getRealm(filter) {
|
||||
const maybeRealm = this.findRealm(filter);
|
||||
if (maybeRealm === undefined) {
|
||||
throw new NoSuchFrameException(`Realm ${JSON.stringify(filter)} not found`);
|
||||
}
|
||||
return maybeRealm;
|
||||
}
|
||||
/** Deletes all realms that match the given filter. */
|
||||
deleteRealms(filter) {
|
||||
this.findRealms(filter).map((realm) => {
|
||||
realm.dispose();
|
||||
this.#realmMap.delete(realm.realmId);
|
||||
Array.from(this.knownHandlesToRealmMap.entries())
|
||||
.filter(([, r]) => r === realm.realmId)
|
||||
.map(([handle]) => this.knownHandlesToRealmMap.delete(handle));
|
||||
});
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=RealmStorage.js.map
|
||||
Reference in New Issue
Block a user