зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1811290 - [cdp] Implement Target.getBrowserContexts r=webdriver-reviewers,whimboo
Depends on D168203 Differential Revision: https://phabricator.services.mozilla.com/D167293
This commit is contained in:
Родитель
6d2c9f83b7
Коммит
3bf32814f0
|
@ -19,23 +19,31 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
|||
let browserContextIds = 1;
|
||||
|
||||
export class Target extends Domain {
|
||||
#browserContextIds;
|
||||
|
||||
constructor(session) {
|
||||
super(session);
|
||||
|
||||
this.#browserContextIds = new Set();
|
||||
|
||||
this._onTargetCreated = this._onTargetCreated.bind(this);
|
||||
this._onTargetDestroyed = this._onTargetDestroyed.bind(this);
|
||||
}
|
||||
|
||||
getBrowserContexts() {
|
||||
return {
|
||||
browserContextIds: [],
|
||||
};
|
||||
const browserContextIds = lazy.ContextualIdentityService.getPublicUserContextIds().filter(
|
||||
id => this.#browserContextIds.has(id)
|
||||
);
|
||||
|
||||
return { browserContextIds };
|
||||
}
|
||||
|
||||
createBrowserContext() {
|
||||
const identity = lazy.ContextualIdentityService.create(
|
||||
"remote-agent-" + browserContextIds++
|
||||
);
|
||||
|
||||
this.#browserContextIds.add(identity.userContextId);
|
||||
return { browserContextId: identity.userContextId };
|
||||
}
|
||||
|
||||
|
@ -44,6 +52,8 @@ export class Target extends Domain {
|
|||
|
||||
lazy.ContextualIdentityService.remove(browserContextId);
|
||||
lazy.ContextualIdentityService.closeContainerTabs(browserContextId);
|
||||
|
||||
this.#browserContextIds.delete(browserContextId);
|
||||
}
|
||||
|
||||
getTargets() {
|
||||
|
|
|
@ -12,8 +12,29 @@ add_task(async function({ CDP }) {
|
|||
const { Target } = client;
|
||||
await getDiscoveredTargets(Target);
|
||||
|
||||
// Test if Target.getBrowserContexts is empty before creatinga ny
|
||||
const {
|
||||
browserContextIds: browserContextIdsBefore,
|
||||
} = await Target.getBrowserContexts();
|
||||
|
||||
is(
|
||||
browserContextIdsBefore.length,
|
||||
0,
|
||||
"No browser context is open by default"
|
||||
);
|
||||
|
||||
const { browserContextId } = await Target.createBrowserContext();
|
||||
|
||||
// Test if Target.getBrowserContexts includes the context we just created
|
||||
const { browserContextIds } = await Target.getBrowserContexts();
|
||||
|
||||
is(browserContextIds.length, 1, "Got expected length of browser contexts");
|
||||
is(
|
||||
browserContextIds[0],
|
||||
browserContextId,
|
||||
"Got expected browser context id from getBrowserContexts"
|
||||
);
|
||||
|
||||
const targetCreated = Target.targetCreated();
|
||||
const { targetId } = await Target.createTarget({ browserContextId });
|
||||
ok(!!targetId, "Target.createTarget returns a non-empty target id");
|
||||
|
@ -34,6 +55,17 @@ add_task(async function({ CDP }) {
|
|||
// Releasing the browser context is going to remove the tab opened when calling createTarget
|
||||
await Target.disposeBrowserContext({ browserContextId });
|
||||
|
||||
// Test if Target.getBrowserContexts now is empty
|
||||
const {
|
||||
browserContextIds: browserContextIdsAfter,
|
||||
} = await Target.getBrowserContexts();
|
||||
|
||||
is(
|
||||
browserContextIdsAfter.length,
|
||||
0,
|
||||
"After closing all browser contexts none is available anymore"
|
||||
);
|
||||
|
||||
await client.close();
|
||||
info("The client is closed");
|
||||
});
|
||||
|
|
Загрузка…
Ссылка в новой задаче