chore: rename CR/FF/WKFrameManager to CR/FF/WKPage (#333)
This commit is contained in:
parent
c301623e9e
commit
27ddb017e2
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
export { CRBrowser as ChromiumBrowser } from './crBrowser';
|
||||
export { CRSession as ChromiumSession } from './crConnection';
|
||||
export { CRPage as ChromiumPage } from './crFrameManager';
|
||||
export { ChromiumPage } from './crPage';
|
||||
export { CRPlaywright as ChromiumPlaywright } from './crPlaywright';
|
||||
export { CRTarget as ChromiumTarget } from './crTarget';
|
||||
export { CRAccessibility as ChromiumAccessibility } from './features/crAccessibility';
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import { CRConnection, ConnectionEvents, CRSession } from './crConnection';
|
|||
import { Page } from '../page';
|
||||
import { CRTarget } from './crTarget';
|
||||
import { Protocol } from './protocol';
|
||||
import { CRFrameManager } from './crFrameManager';
|
||||
import { CRPage } from './crPage';
|
||||
import * as browser from '../browser';
|
||||
import * as network from '../network';
|
||||
import { CROverrides } from './features/crOverrides';
|
||||
|
|
@ -82,7 +82,7 @@ export class CRBrowser extends browser.Browser {
|
|||
const target = this._targets.get(targetId);
|
||||
assert(await target._initializedPromise, 'Failed to create target for page');
|
||||
const page = await target.page();
|
||||
const session = (page._delegate as CRFrameManager)._client;
|
||||
const session = (page._delegate as CRPage)._client;
|
||||
const promises: Promise<any>[] = [ overrides._applyOverrides(page) ];
|
||||
if (options.bypassCSP)
|
||||
promises.push(session.send('Page.setBypassCSP', { enabled: true }));
|
||||
|
|
@ -93,7 +93,7 @@ export class CRBrowser extends browser.Browser {
|
|||
if (options.javaScriptEnabled === false)
|
||||
promises.push(session.send('Emulation.setScriptExecutionDisabled', { value: true }));
|
||||
if (options.userAgent)
|
||||
(page._delegate as CRFrameManager)._networkManager.setUserAgent(options.userAgent);
|
||||
(page._delegate as CRPage)._networkManager.setUserAgent(options.userAgent);
|
||||
if (options.mediaType || options.colorScheme) {
|
||||
const features = options.colorScheme ? [{ name: 'prefers-color-scheme', value: options.colorScheme }] : [];
|
||||
promises.push(session.send('Emulation.setEmulatedMedia', { media: options.mediaType || '', features }));
|
||||
|
|
@ -262,7 +262,7 @@ export class CRBrowser extends browser.Browser {
|
|||
|
||||
async startTracing(page: Page | undefined, options: { path?: string; screenshots?: boolean; categories?: string[]; } = {}) {
|
||||
assert(!this._tracingRecording, 'Cannot start recording trace while already recording trace.');
|
||||
this._tracingClient = page ? (page._delegate as CRFrameManager)._client : this._client;
|
||||
this._tracingClient = page ? (page._delegate as CRPage)._client : this._client;
|
||||
|
||||
const defaultCategories = [
|
||||
'-*', 'devtools.timeline', 'v8.execute', 'disabled-by-default-devtools.timeline',
|
||||
|
|
|
|||
|
|
@ -42,9 +42,9 @@ import { ConsoleMessage } from '../console';
|
|||
|
||||
const UTILITY_WORLD_NAME = '__playwright_utility_world__';
|
||||
|
||||
export class CRFrameManager implements PageDelegate {
|
||||
export class CRPage implements PageDelegate {
|
||||
_client: CRSession;
|
||||
private _page: CRPage;
|
||||
private _page: ChromiumPage;
|
||||
readonly _networkManager: CRNetworkManager;
|
||||
private _contextIdToContext = new Map<number, dom.FrameExecutionContext>();
|
||||
private _isolatedWorlds = new Set<string>();
|
||||
|
|
@ -58,7 +58,7 @@ export class CRFrameManager implements PageDelegate {
|
|||
this._browser = browser;
|
||||
this.rawKeyboard = new RawKeyboardImpl(client);
|
||||
this.rawMouse = new RawMouseImpl(client);
|
||||
this._page = new CRPage(client, this, browserContext);
|
||||
this._page = new ChromiumPage(client, this, browserContext);
|
||||
this._networkManager = this._page._networkManager;
|
||||
|
||||
this._eventListeners = [
|
||||
|
|
@ -449,7 +449,7 @@ export class CRFrameManager implements PageDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
export class CRPage extends Page {
|
||||
export class ChromiumPage extends Page {
|
||||
readonly accessibility: CRAccessibility;
|
||||
readonly coverage: CRCoverage;
|
||||
readonly interception: CRInterception;
|
||||
|
|
@ -457,7 +457,7 @@ export class CRPage extends Page {
|
|||
private _workers: CRWorkers;
|
||||
_networkManager: CRNetworkManager;
|
||||
|
||||
constructor(client: CRSession, delegate: CRFrameManager, browserContext: BrowserContext) {
|
||||
constructor(client: CRSession, delegate: CRPage, browserContext: BrowserContext) {
|
||||
super(delegate, browserContext);
|
||||
this.accessibility = new CRAccessibility(client);
|
||||
this.coverage = new CRCoverage(client);
|
||||
|
|
@ -23,7 +23,7 @@ import { CRWorker } from './features/crWorkers';
|
|||
import { Page } from '../page';
|
||||
import { Protocol } from './protocol';
|
||||
import { debugError } from '../helper';
|
||||
import { CRFrameManager } from './crFrameManager';
|
||||
import { CRPage } from './crPage';
|
||||
|
||||
const targetSymbol = Symbol('target');
|
||||
|
||||
|
|
@ -34,7 +34,7 @@ export class CRTarget {
|
|||
_targetId: string;
|
||||
private _sessionFactory: () => Promise<CRSession>;
|
||||
private _pagePromise: Promise<Page> | null = null;
|
||||
private _frameManager: CRFrameManager | null = null;
|
||||
private _crPage: CRPage | null = null;
|
||||
private _workerPromise: Promise<CRWorker> | null = null;
|
||||
_initializedPromise: Promise<boolean>;
|
||||
_initializedCallback: (value?: unknown) => void;
|
||||
|
|
@ -73,15 +73,15 @@ export class CRTarget {
|
|||
}
|
||||
|
||||
_didClose() {
|
||||
if (this._frameManager)
|
||||
this._frameManager.didClose();
|
||||
if (this._crPage)
|
||||
this._crPage.didClose();
|
||||
}
|
||||
|
||||
async page(): Promise<Page | null> {
|
||||
if ((this._targetInfo.type === 'page' || this._targetInfo.type === 'background_page') && !this._pagePromise) {
|
||||
this._pagePromise = this._sessionFactory().then(async client => {
|
||||
this._frameManager = new CRFrameManager(client, this._browser, this._browserContext);
|
||||
const page = this._frameManager.page();
|
||||
this._crPage = new CRPage(client, this._browser, this._browserContext);
|
||||
const page = this._crPage.page();
|
||||
(page as any)[targetSymbol] = this;
|
||||
client.once(CRSessionEvents.Disconnected, () => page._didDisconnect());
|
||||
client.on('Target.attachedToTarget', event => {
|
||||
|
|
@ -90,7 +90,7 @@ export class CRTarget {
|
|||
client.send('Target.detachFromTarget', { sessionId: event.sessionId }).catch(debugError);
|
||||
}
|
||||
});
|
||||
await this._frameManager.initialize();
|
||||
await this._crPage.initialize();
|
||||
await client.send('Target.setAutoAttach', {autoAttach: true, waitForDebuggerOnStart: false, flatten: true});
|
||||
return page;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
*/
|
||||
|
||||
import { BrowserContext } from '../../browserContext';
|
||||
import { CRFrameManager } from '../crFrameManager';
|
||||
import { CRPage } from '../crPage';
|
||||
import { Page } from '../../page';
|
||||
|
||||
export class CROverrides {
|
||||
|
|
@ -30,7 +30,7 @@ export class CROverrides {
|
|||
async setGeolocation(options: { longitude?: number; latitude?: number; accuracy?: (number | undefined); } | null) {
|
||||
if (!options) {
|
||||
for (const page of await this._context.pages())
|
||||
await (page._delegate as CRFrameManager)._client.send('Emulation.clearGeolocationOverride', {});
|
||||
await (page._delegate as CRPage)._client.send('Emulation.clearGeolocationOverride', {});
|
||||
this._geolocation = null;
|
||||
return;
|
||||
}
|
||||
|
|
@ -44,11 +44,11 @@ export class CROverrides {
|
|||
throw new Error(`Invalid accuracy "${accuracy}": precondition 0 <= ACCURACY failed.`);
|
||||
this._geolocation = { longitude, latitude, accuracy };
|
||||
for (const page of await this._context.pages())
|
||||
await (page._delegate as CRFrameManager)._client.send('Emulation.setGeolocationOverride', this._geolocation);
|
||||
await (page._delegate as CRPage)._client.send('Emulation.setGeolocationOverride', this._geolocation);
|
||||
}
|
||||
|
||||
async _applyOverrides(page: Page): Promise<void> {
|
||||
if (this._geolocation)
|
||||
await (page._delegate as CRFrameManager)._client.send('Emulation.setGeolocationOverride', this._geolocation);
|
||||
await (page._delegate as CRPage)._client.send('Emulation.setGeolocationOverride', this._geolocation);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ import * as js from '../../javascript';
|
|||
import * as console from '../../console';
|
||||
import { CRExecutionContext } from '../crExecutionContext';
|
||||
import { toConsoleMessageLocation, exceptionToError } from '../crProtocolHelper';
|
||||
import { CRPage } from '../crFrameManager';
|
||||
import { ChromiumPage } from '../crPage';
|
||||
|
||||
type AddToConsoleCallback = (type: string, args: js.JSHandle[], location: console.ConsoleMessageLocation) => void;
|
||||
type HandleExceptionCallback = (error: Error) => void;
|
||||
|
|
@ -33,7 +33,7 @@ type HandleExceptionCallback = (error: Error) => void;
|
|||
export class CRWorkers {
|
||||
private _workers = new Map<string, CRWorker>();
|
||||
|
||||
constructor(client: CRSession, page: CRPage, addToConsole: AddToConsoleCallback, handleException: HandleExceptionCallback) {
|
||||
constructor(client: CRSession, page: ChromiumPage, addToConsole: AddToConsoleCallback, handleException: HandleExceptionCallback) {
|
||||
client.on('Target.attachedToTarget', event => {
|
||||
if (event.targetInfo.type !== 'worker')
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import * as network from '../network';
|
|||
import { Page } from '../page';
|
||||
import { ConnectionTransport } from '../transport';
|
||||
import { ConnectionEvents, FFConnection, FFSessionEvents } from './ffConnection';
|
||||
import { FFFrameManager } from './ffFrameManager';
|
||||
import { FFPage } from './ffPage';
|
||||
|
||||
export class FFBrowser extends browser.Browser {
|
||||
_connection: FFConnection;
|
||||
|
|
@ -156,7 +156,7 @@ export class FFBrowser extends browser.Browser {
|
|||
});
|
||||
const target = this._targets.get(targetId);
|
||||
const page = await target.page();
|
||||
const session = (page._delegate as FFFrameManager)._session;
|
||||
const session = (page._delegate as FFPage)._session;
|
||||
const promises: Promise<any>[] = [];
|
||||
if (options.viewport)
|
||||
promises.push(page._delegate.setViewport(options.viewport));
|
||||
|
|
@ -222,7 +222,7 @@ export class FFBrowser extends browser.Browser {
|
|||
|
||||
export class Target {
|
||||
_pagePromise?: Promise<Page>;
|
||||
private _frameManager: FFFrameManager | null = null;
|
||||
private _ffPage: FFPage | null = null;
|
||||
private _browser: FFBrowser;
|
||||
_context: BrowserContext;
|
||||
private _connection: FFConnection;
|
||||
|
|
@ -242,8 +242,8 @@ export class Target {
|
|||
}
|
||||
|
||||
_didClose() {
|
||||
if (this._frameManager)
|
||||
this._frameManager.didClose();
|
||||
if (this._ffPage)
|
||||
this._ffPage.didClose();
|
||||
}
|
||||
|
||||
opener(): Target | null {
|
||||
|
|
@ -266,10 +266,10 @@ export class Target {
|
|||
if (this._type === 'page' && !this._pagePromise) {
|
||||
this._pagePromise = new Promise(async f => {
|
||||
const session = await this._connection.createSession(this._targetId);
|
||||
this._frameManager = new FFFrameManager(session, this._context);
|
||||
const page = this._frameManager._page;
|
||||
this._ffPage = new FFPage(session, this._context);
|
||||
const page = this._ffPage._page;
|
||||
session.once(FFSessionEvents.Disconnected, () => page._didDisconnect());
|
||||
await this._frameManager._initialize();
|
||||
await this._ffPage._initialize();
|
||||
f(page);
|
||||
});
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import { FFAccessibility } from './features/ffAccessibility';
|
|||
import * as network from '../network';
|
||||
import * as types from '../types';
|
||||
|
||||
export class FFFrameManager implements PageDelegate {
|
||||
export class FFPage implements PageDelegate {
|
||||
readonly rawMouse: RawMouseImpl;
|
||||
readonly rawKeyboard: RawKeyboardImpl;
|
||||
readonly _session: FFSession;
|
||||
|
|
@ -125,7 +125,7 @@ export class WKBrowser extends browser.Browser {
|
|||
const opener = this._targets.get(targetInfo.openerId);
|
||||
if (!opener)
|
||||
return;
|
||||
const openerPage = opener._frameManager ? opener._frameManager._page : null;
|
||||
const openerPage = opener._wkPage ? opener._wkPage._page : null;
|
||||
if (!openerPage || !openerPage.listenerCount(Events.Page.Popup))
|
||||
return;
|
||||
target.page().then(page => openerPage.emit(Events.Page.Popup, page));
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ import { PNG } from 'pngjs';
|
|||
const UTILITY_WORLD_NAME = '__playwright_utility_world__';
|
||||
const BINDING_CALL_MESSAGE = '__playwright_binding_call__';
|
||||
|
||||
export class WKFrameManager implements PageDelegate {
|
||||
export class WKPage implements PageDelegate {
|
||||
readonly rawMouse: RawMouseImpl;
|
||||
readonly rawKeyboard: RawKeyboardImpl;
|
||||
_session: WKTargetSession;
|
||||
|
|
@ -106,7 +106,7 @@ export class WKFrameManager implements PageDelegate {
|
|||
if (this._page._state.extraHTTPHeaders !== null)
|
||||
promises.push(this._setExtraHTTPHeaders(session, this._page._state.extraHTTPHeaders));
|
||||
if (this._page._state.viewport)
|
||||
promises.push(WKFrameManager._setViewport(session, this._page._state.viewport));
|
||||
promises.push(WKPage._setViewport(session, this._page._state.viewport));
|
||||
await Promise.all(promises);
|
||||
}
|
||||
|
||||
|
|
@ -290,7 +290,7 @@ export class WKFrameManager implements PageDelegate {
|
|||
}
|
||||
|
||||
async setViewport(viewport: types.Viewport): Promise<void> {
|
||||
return WKFrameManager._setViewport(this._session, viewport);
|
||||
return WKPage._setViewport(this._session, viewport);
|
||||
}
|
||||
|
||||
private static async _setViewport(session: WKTargetSession, viewport: types.Viewport): Promise<void> {
|
||||
|
|
@ -19,7 +19,7 @@ import { BrowserContext } from '../browserContext';
|
|||
import { Page } from '../page';
|
||||
import { Protocol } from './protocol';
|
||||
import { WKTargetSession, WKTargetSessionEvents } from './wkConnection';
|
||||
import { WKFrameManager } from './wkFrameManager';
|
||||
import { WKPage } from './wkPage';
|
||||
import { WKBrowser } from './wkBrowser';
|
||||
|
||||
export class WKTarget {
|
||||
|
|
@ -29,7 +29,7 @@ export class WKTarget {
|
|||
private readonly _session: WKTargetSession;
|
||||
private _pagePromise: Promise<Page> | null = null;
|
||||
private _browser: WKBrowser;
|
||||
_frameManager: WKFrameManager | null = null;
|
||||
_wkPage: WKPage | null = null;
|
||||
|
||||
constructor(browser: WKBrowser, session: WKTargetSession, targetInfo: Protocol.Target.TargetInfo, browserContext: BrowserContext) {
|
||||
const {targetId, type} = targetInfo;
|
||||
|
|
@ -43,17 +43,17 @@ export class WKTarget {
|
|||
}
|
||||
|
||||
_didClose() {
|
||||
if (this._frameManager)
|
||||
this._frameManager.didClose();
|
||||
if (this._wkPage)
|
||||
this._wkPage.didClose();
|
||||
}
|
||||
|
||||
async _initializeSession(session: WKTargetSession) {
|
||||
if (!this._frameManager)
|
||||
if (!this._wkPage)
|
||||
return;
|
||||
await this._frameManager._initializeSession(session).catch(e => {
|
||||
await this._wkPage._initializeSession(session).catch(e => {
|
||||
// Swallow initialization errors due to newer target swap in,
|
||||
// since we will reinitialize again.
|
||||
if (this._frameManager)
|
||||
if (this._wkPage)
|
||||
throw e;
|
||||
});
|
||||
}
|
||||
|
|
@ -62,29 +62,29 @@ export class WKTarget {
|
|||
if (!oldTarget._pagePromise)
|
||||
return;
|
||||
this._pagePromise = oldTarget._pagePromise;
|
||||
this._frameManager = oldTarget._frameManager;
|
||||
this._wkPage = oldTarget._wkPage;
|
||||
// Swapped out target should not be accessed by anyone. Reset page promise so that
|
||||
// old target does not close the page on connection reset.
|
||||
oldTarget._pagePromise = null;
|
||||
oldTarget._frameManager = null;
|
||||
oldTarget._wkPage = null;
|
||||
this._adoptPage();
|
||||
}
|
||||
|
||||
private _adoptPage() {
|
||||
this._session.once(WKTargetSessionEvents.Disconnected, () => {
|
||||
// Once swapped out, we reset _page and won't call _didDisconnect for old session.
|
||||
if (this._frameManager)
|
||||
this._frameManager._page._didDisconnect();
|
||||
if (this._wkPage)
|
||||
this._wkPage._page._didDisconnect();
|
||||
});
|
||||
this._frameManager.setSession(this._session);
|
||||
this._wkPage.setSession(this._session);
|
||||
}
|
||||
|
||||
async page(): Promise<Page> {
|
||||
if (this._type === 'page' && !this._pagePromise) {
|
||||
this._frameManager = new WKFrameManager(this._browser, this._browserContext);
|
||||
this._wkPage = new WKPage(this._browser, this._browserContext);
|
||||
// Reference local page variable as |this._frameManager| may be
|
||||
// cleared on swap.
|
||||
const page = this._frameManager._page;
|
||||
const page = this._wkPage._page;
|
||||
this._pagePromise = new Promise(async f => {
|
||||
this._adoptPage();
|
||||
await this._initializeSession(this._session);
|
||||
|
|
|
|||
Loading…
Reference in a new issue