chore: extract BrowserContext to its own file (#9133)
This commit is contained in:
parent
7aaa5f8de5
commit
a19b270018
@ -21,6 +21,7 @@ import {Protocol} from 'devtools-protocol';
|
||||
import {EventEmitter} from '../common/EventEmitter.js';
|
||||
import type {Page} from './Page.js'; // TODO: move to ./api
|
||||
import type {Target} from '../common/Target.js'; // TODO: move to ./api
|
||||
import type {BrowserContext} from './BrowserContext.js';
|
||||
|
||||
/**
|
||||
* BrowserContext options.
|
||||
@ -466,163 +467,3 @@ export const enum BrowserContextEmittedEvents {
|
||||
*/
|
||||
TargetDestroyed = 'targetdestroyed',
|
||||
}
|
||||
|
||||
/**
|
||||
* BrowserContexts provide a way to operate multiple independent browser
|
||||
* sessions. When a browser is launched, it has a single BrowserContext used by
|
||||
* default. The method {@link Browser.newPage | Browser.newPage} creates a page
|
||||
* in the default browser context.
|
||||
*
|
||||
* @remarks
|
||||
*
|
||||
* The Browser class extends from Puppeteer's {@link EventEmitter} class and
|
||||
* will emit various events which are documented in the
|
||||
* {@link BrowserContextEmittedEvents} enum.
|
||||
*
|
||||
* If a page opens another page, e.g. with a `window.open` call, the popup will
|
||||
* belong to the parent page's browser context.
|
||||
*
|
||||
* Puppeteer allows creation of "incognito" browser contexts with
|
||||
* {@link Browser.createIncognitoBrowserContext | Browser.createIncognitoBrowserContext}
|
||||
* method. "Incognito" browser contexts don't write any browsing data to disk.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Create a new incognito browser context
|
||||
* const context = await browser.createIncognitoBrowserContext();
|
||||
* // Create a new page inside context.
|
||||
* const page = await context.newPage();
|
||||
* // ... do stuff with page ...
|
||||
* await page.goto('https://example.com');
|
||||
* // Dispose context once it's no longer needed.
|
||||
* await context.close();
|
||||
* ```
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
export class BrowserContext extends EventEmitter {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* An array of all active targets inside the browser context.
|
||||
*/
|
||||
targets(): Target[] {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* This searches for a target in this specific browser context.
|
||||
*
|
||||
* @example
|
||||
* An example of finding a target for a page opened via `window.open`:
|
||||
*
|
||||
* ```ts
|
||||
* await page.evaluate(() => window.open('https://www.example.com/'));
|
||||
* const newWindowTarget = await browserContext.waitForTarget(
|
||||
* target => target.url() === 'https://www.example.com/'
|
||||
* );
|
||||
* ```
|
||||
*
|
||||
* @param predicate - A function to be run for every target
|
||||
* @param options - An object of options. Accepts a timout,
|
||||
* which is the maximum wait time in milliseconds.
|
||||
* Pass `0` to disable the timeout. Defaults to 30 seconds.
|
||||
* @returns Promise which resolves to the first target found
|
||||
* that matches the `predicate` function.
|
||||
*/
|
||||
waitForTarget(
|
||||
predicate: (x: Target) => boolean | Promise<boolean>,
|
||||
options?: {timeout?: number}
|
||||
): Promise<Target>;
|
||||
waitForTarget(): Promise<Target> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* An array of all pages inside the browser context.
|
||||
*
|
||||
* @returns Promise which resolves to an array of all open pages.
|
||||
* Non visible pages, such as `"background_page"`, will not be listed here.
|
||||
* You can find them using {@link Target.page | the target page}.
|
||||
*/
|
||||
pages(): Promise<Page[]> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether BrowserContext is incognito.
|
||||
* The default browser context is the only non-incognito browser context.
|
||||
*
|
||||
* @remarks
|
||||
* The default browser context cannot be closed.
|
||||
*/
|
||||
isIncognito(): boolean {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* const context = browser.defaultBrowserContext();
|
||||
* await context.overridePermissions('https://html5demos.com', [
|
||||
* 'geolocation',
|
||||
* ]);
|
||||
* ```
|
||||
*
|
||||
* @param origin - The origin to grant permissions to, e.g. "https://example.com".
|
||||
* @param permissions - An array of permissions to grant.
|
||||
* All permissions that are not listed here will be automatically denied.
|
||||
*/
|
||||
overridePermissions(origin: string, permissions: Permission[]): Promise<void>;
|
||||
overridePermissions(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all permission overrides for the browser context.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* const context = browser.defaultBrowserContext();
|
||||
* context.overridePermissions('https://example.com', ['clipboard-read']);
|
||||
* // do stuff ..
|
||||
* context.clearPermissionOverrides();
|
||||
* ```
|
||||
*/
|
||||
clearPermissionOverrides(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new page in the browser context.
|
||||
*/
|
||||
newPage(): Promise<Page> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* The browser this browser context belongs to.
|
||||
*/
|
||||
browser(): Browser {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the browser context. All the targets that belong to the browser context
|
||||
* will be closed.
|
||||
*
|
||||
* @remarks
|
||||
* Only incognito browser contexts can be closed.
|
||||
*/
|
||||
close(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
}
|
||||
|
181
packages/puppeteer-core/src/api/BrowserContext.ts
Normal file
181
packages/puppeteer-core/src/api/BrowserContext.ts
Normal file
@ -0,0 +1,181 @@
|
||||
/**
|
||||
* Copyright 2017 Google Inc. All rights reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {EventEmitter} from '../common/EventEmitter.js';
|
||||
import {Page} from './Page.js';
|
||||
import {Target} from '../common/Target.js';
|
||||
import type {Permission, Browser} from './Browser.js';
|
||||
|
||||
/**
|
||||
* BrowserContexts provide a way to operate multiple independent browser
|
||||
* sessions. When a browser is launched, it has a single BrowserContext used by
|
||||
* default. The method {@link Browser.newPage | Browser.newPage} creates a page
|
||||
* in the default browser context.
|
||||
*
|
||||
* @remarks
|
||||
*
|
||||
* The Browser class extends from Puppeteer's {@link EventEmitter} class and
|
||||
* will emit various events which are documented in the
|
||||
* {@link BrowserContextEmittedEvents} enum.
|
||||
*
|
||||
* If a page opens another page, e.g. with a `window.open` call, the popup will
|
||||
* belong to the parent page's browser context.
|
||||
*
|
||||
* Puppeteer allows creation of "incognito" browser contexts with
|
||||
* {@link Browser.createIncognitoBrowserContext | Browser.createIncognitoBrowserContext}
|
||||
* method. "Incognito" browser contexts don't write any browsing data to disk.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* // Create a new incognito browser context
|
||||
* const context = await browser.createIncognitoBrowserContext();
|
||||
* // Create a new page inside context.
|
||||
* const page = await context.newPage();
|
||||
* // ... do stuff with page ...
|
||||
* await page.goto('https://example.com');
|
||||
* // Dispose context once it's no longer needed.
|
||||
* await context.close();
|
||||
* ```
|
||||
*
|
||||
* @public
|
||||
*/
|
||||
|
||||
export class BrowserContext extends EventEmitter {
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
constructor() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* An array of all active targets inside the browser context.
|
||||
*/
|
||||
targets(): Target[] {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* This searches for a target in this specific browser context.
|
||||
*
|
||||
* @example
|
||||
* An example of finding a target for a page opened via `window.open`:
|
||||
*
|
||||
* ```ts
|
||||
* await page.evaluate(() => window.open('https://www.example.com/'));
|
||||
* const newWindowTarget = await browserContext.waitForTarget(
|
||||
* target => target.url() === 'https://www.example.com/'
|
||||
* );
|
||||
* ```
|
||||
*
|
||||
* @param predicate - A function to be run for every target
|
||||
* @param options - An object of options. Accepts a timout,
|
||||
* which is the maximum wait time in milliseconds.
|
||||
* Pass `0` to disable the timeout. Defaults to 30 seconds.
|
||||
* @returns Promise which resolves to the first target found
|
||||
* that matches the `predicate` function.
|
||||
*/
|
||||
waitForTarget(
|
||||
predicate: (x: Target) => boolean | Promise<boolean>,
|
||||
options?: {timeout?: number}
|
||||
): Promise<Target>;
|
||||
waitForTarget(): Promise<Target> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* An array of all pages inside the browser context.
|
||||
*
|
||||
* @returns Promise which resolves to an array of all open pages.
|
||||
* Non visible pages, such as `"background_page"`, will not be listed here.
|
||||
* You can find them using {@link Target.page | the target page}.
|
||||
*/
|
||||
pages(): Promise<Page[]> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether BrowserContext is incognito.
|
||||
* The default browser context is the only non-incognito browser context.
|
||||
*
|
||||
* @remarks
|
||||
* The default browser context cannot be closed.
|
||||
*/
|
||||
isIncognito(): boolean {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* const context = browser.defaultBrowserContext();
|
||||
* await context.overridePermissions('https://html5demos.com', [
|
||||
* 'geolocation',
|
||||
* ]);
|
||||
* ```
|
||||
*
|
||||
* @param origin - The origin to grant permissions to, e.g. "https://example.com".
|
||||
* @param permissions - An array of permissions to grant.
|
||||
* All permissions that are not listed here will be automatically denied.
|
||||
*/
|
||||
overridePermissions(origin: string, permissions: Permission[]): Promise<void>;
|
||||
overridePermissions(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clears all permission overrides for the browser context.
|
||||
*
|
||||
* @example
|
||||
*
|
||||
* ```ts
|
||||
* const context = browser.defaultBrowserContext();
|
||||
* context.overridePermissions('https://example.com', ['clipboard-read']);
|
||||
* // do stuff ..
|
||||
* context.clearPermissionOverrides();
|
||||
* ```
|
||||
*/
|
||||
clearPermissionOverrides(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new page in the browser context.
|
||||
*/
|
||||
newPage(): Promise<Page> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* The browser this browser context belongs to.
|
||||
*/
|
||||
browser(): Browser {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the browser context. All the targets that belong to the browser context
|
||||
* will be closed.
|
||||
*
|
||||
* @remarks
|
||||
* Only incognito browser contexts can be closed.
|
||||
*/
|
||||
close(): Promise<void> {
|
||||
throw new Error('Not implemented');
|
||||
}
|
||||
}
|
@ -48,7 +48,8 @@ import type {Target} from '../common/Target.js';
|
||||
import type {Tracing} from '../common/Tracing.js';
|
||||
import type {EvaluateFunc, HandleFor, NodeFor} from '../common/types.js';
|
||||
import type {WebWorker} from '../common/WebWorker.js';
|
||||
import type {Browser, BrowserContext} from './Browser.js';
|
||||
import type {Browser} from './Browser.js';
|
||||
import type {BrowserContext} from './BrowserContext.js';
|
||||
|
||||
/**
|
||||
* @public
|
||||
|
@ -28,7 +28,6 @@ import {ChromeTargetManager} from './ChromeTargetManager.js';
|
||||
import {FirefoxTargetManager} from './FirefoxTargetManager.js';
|
||||
import {
|
||||
Browser as BrowserBase,
|
||||
BrowserContext,
|
||||
BrowserCloseCallback,
|
||||
TargetFilterCallback,
|
||||
IsPageTargetCallback,
|
||||
@ -39,6 +38,7 @@ import {
|
||||
WaitForTargetOptions,
|
||||
Permission,
|
||||
} from '../api/Browser.js';
|
||||
import {BrowserContext} from '../api/BrowserContext.js';
|
||||
|
||||
/**
|
||||
* @internal
|
||||
|
@ -16,7 +16,8 @@
|
||||
|
||||
import {Protocol} from 'devtools-protocol';
|
||||
import type {Readable} from 'stream';
|
||||
import type {Browser, BrowserContext} from '../api/Browser.js';
|
||||
import type {Browser} from '../api/Browser.js';
|
||||
import type {BrowserContext} from '../api/BrowserContext.js';
|
||||
import {
|
||||
GeolocationOptions,
|
||||
MediaFeature,
|
||||
|
@ -17,11 +17,8 @@
|
||||
import {Page, PageEmittedEvents} from '../api/Page.js';
|
||||
import {WebWorker} from './WebWorker.js';
|
||||
import {CDPSession} from './Connection.js';
|
||||
import type {
|
||||
Browser,
|
||||
BrowserContext,
|
||||
IsPageTargetCallback,
|
||||
} from '../api/Browser.js';
|
||||
import type {Browser, IsPageTargetCallback} from '../api/Browser.js';
|
||||
import type {BrowserContext} from '../api/BrowserContext.js';
|
||||
import {Viewport} from './PuppeteerViewport.js';
|
||||
import {Protocol} from 'devtools-protocol';
|
||||
import {TaskQueue} from './TaskQueue.js';
|
||||
|
@ -18,8 +18,8 @@ import {
|
||||
Browser as BrowserBase,
|
||||
BrowserCloseCallback,
|
||||
BrowserContextOptions,
|
||||
BrowserContext as BrowserContextBase,
|
||||
} from '../../api/Browser.js';
|
||||
import {BrowserContext as BrowserContextBase} from '../../api/BrowserContext.js';
|
||||
import {Connection} from './Connection.js';
|
||||
import {ChildProcess} from 'child_process';
|
||||
import {BrowserContext} from './BrowserContext.js';
|
||||
|
@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {BrowserContext as BrowserContextBase} from '../../api/Browser.js';
|
||||
import {BrowserContext as BrowserContextBase} from '../../api/BrowserContext.js';
|
||||
import {Page as PageBase} from '../../api/Page.js';
|
||||
import {Connection} from './Connection.js';
|
||||
import {Page} from './Page.js';
|
||||
|
@ -1,6 +1,7 @@
|
||||
// AUTOGENERATED - Use `npm run generate:sources` to regenerate.
|
||||
|
||||
export * from './api/Browser.js';
|
||||
export * from './api/BrowserContext.js';
|
||||
export * from './api/Page.js';
|
||||
export * from './common/Accessibility.js';
|
||||
export * from './common/AriaQueryHandler.js';
|
||||
|
@ -1,6 +1,7 @@
|
||||
// AUTOGENERATED - Use `npm run generate:sources` to regenerate.
|
||||
|
||||
export * from 'puppeteer-core/internal/api/Browser.js';
|
||||
export * from 'puppeteer-core/internal/api/BrowserContext.js';
|
||||
export * from 'puppeteer-core/internal/api/Page.js';
|
||||
export * from 'puppeteer-core/internal/common/Accessibility.js';
|
||||
export * from 'puppeteer-core/internal/common/AriaQueryHandler.js';
|
||||
|
@ -16,7 +16,8 @@
|
||||
|
||||
import expect from 'expect';
|
||||
import {TLSSocket} from 'tls';
|
||||
import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {Browser} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {BrowserContext} from 'puppeteer-core/internal/api/BrowserContext.js';
|
||||
import {Page} from 'puppeteer-core/internal/api/Page.js';
|
||||
import {HTTPResponse} from 'puppeteer-core/internal/common/HTTPResponse.js';
|
||||
import {getTestState} from './mocha-utils.js';
|
||||
|
@ -20,7 +20,8 @@ import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
import rimraf from 'rimraf';
|
||||
import sinon from 'sinon';
|
||||
import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {Browser} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {BrowserContext} from 'puppeteer-core/internal/api/BrowserContext.js';
|
||||
import {Page} from 'puppeteer-core/internal/api/Page.js';
|
||||
import {isErrorLike} from 'puppeteer-core/internal/util/ErrorLike.js';
|
||||
import {
|
||||
|
@ -17,7 +17,8 @@
|
||||
import utils from './utils.js';
|
||||
import expect from 'expect';
|
||||
import {getTestState} from './mocha-utils.js';
|
||||
import {Browser, BrowserContext} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {Browser} from 'puppeteer-core/internal/api/Browser.js';
|
||||
import {BrowserContext} from 'puppeteer-core/internal/api/BrowserContext.js';
|
||||
import {Page} from 'puppeteer-core/internal/api/Page.js';
|
||||
|
||||
describe('OOPIF', function () {
|
||||
|
Loading…
Reference in New Issue
Block a user