mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	chore: avoid downcast of delegate to <Browser>Page (#334)
This commit is contained in:
		
							parent
							
								
									27ddb017e2
								
							
						
					
					
						commit
						845c0af42f
					
				| @ -82,18 +82,19 @@ export class CRBrowser extends browser.Browser { | |||||||
|         const target = this._targets.get(targetId); |         const target = this._targets.get(targetId); | ||||||
|         assert(await target._initializedPromise, 'Failed to create target for page'); |         assert(await target._initializedPromise, 'Failed to create target for page'); | ||||||
|         const page = await target.page(); |         const page = await target.page(); | ||||||
|         const session = (page._delegate as CRPage)._client; |         const crPage = target._crPage; | ||||||
|         const promises: Promise<any>[] = [ overrides._applyOverrides(page) ]; |         const session = crPage._client; | ||||||
|  |         const promises: Promise<any>[] = [ overrides._applyOverrides(crPage) ]; | ||||||
|         if (options.bypassCSP) |         if (options.bypassCSP) | ||||||
|           promises.push(session.send('Page.setBypassCSP', { enabled: true })); |           promises.push(session.send('Page.setBypassCSP', { enabled: true })); | ||||||
|         if (options.ignoreHTTPSErrors) |         if (options.ignoreHTTPSErrors) | ||||||
|           promises.push(session.send('Security.setIgnoreCertificateErrors', { ignore: true })); |           promises.push(session.send('Security.setIgnoreCertificateErrors', { ignore: true })); | ||||||
|         if (options.viewport) |         if (options.viewport) | ||||||
|           promises.push(page._delegate.setViewport(options.viewport)); |           promises.push(crPage.setViewport(options.viewport)); | ||||||
|         if (options.javaScriptEnabled === false) |         if (options.javaScriptEnabled === false) | ||||||
|           promises.push(session.send('Emulation.setScriptExecutionDisabled', { value: true })); |           promises.push(session.send('Emulation.setScriptExecutionDisabled', { value: true })); | ||||||
|         if (options.userAgent) |         if (options.userAgent) | ||||||
|           (page._delegate as CRPage)._networkManager.setUserAgent(options.userAgent); |           crPage._networkManager.setUserAgent(options.userAgent); | ||||||
|         if (options.mediaType || options.colorScheme) { |         if (options.mediaType || options.colorScheme) { | ||||||
|           const features = options.colorScheme ? [{ name: 'prefers-color-scheme', value: options.colorScheme }] : []; |           const features = options.colorScheme ? [{ name: 'prefers-color-scheme', value: options.colorScheme }] : []; | ||||||
|           promises.push(session.send('Emulation.setEmulatedMedia', { media: options.mediaType || '', features })); |           promises.push(session.send('Emulation.setEmulatedMedia', { media: options.mediaType || '', features })); | ||||||
|  | |||||||
| @ -44,7 +44,7 @@ const UTILITY_WORLD_NAME = '__playwright_utility_world__'; | |||||||
| 
 | 
 | ||||||
| export class CRPage implements PageDelegate { | export class CRPage implements PageDelegate { | ||||||
|   _client: CRSession; |   _client: CRSession; | ||||||
|   private _page: ChromiumPage; |   private readonly _page: ChromiumPage; | ||||||
|   readonly _networkManager: CRNetworkManager; |   readonly _networkManager: CRNetworkManager; | ||||||
|   private _contextIdToContext = new Map<number, dom.FrameExecutionContext>(); |   private _contextIdToContext = new Map<number, dom.FrameExecutionContext>(); | ||||||
|   private _isolatedWorlds = new Set<string>(); |   private _isolatedWorlds = new Set<string>(); | ||||||
|  | |||||||
| @ -29,14 +29,14 @@ const targetSymbol = Symbol('target'); | |||||||
| 
 | 
 | ||||||
| export class CRTarget { | export class CRTarget { | ||||||
|   private _targetInfo: Protocol.Target.TargetInfo; |   private _targetInfo: Protocol.Target.TargetInfo; | ||||||
|   private _browser: CRBrowser; |   private readonly _browser: CRBrowser; | ||||||
|   private _browserContext: BrowserContext; |   private readonly _browserContext: BrowserContext; | ||||||
|   _targetId: string; |   readonly _targetId: string; | ||||||
|   private _sessionFactory: () => Promise<CRSession>; |   private _sessionFactory: () => Promise<CRSession>; | ||||||
|   private _pagePromise: Promise<Page> | null = null; |   private _pagePromise: Promise<Page> | null = null; | ||||||
|   private _crPage: CRPage | null = null; |   _crPage: CRPage | null = null; | ||||||
|   private _workerPromise: Promise<CRWorker> | null = null; |   private _workerPromise: Promise<CRWorker> | null = null; | ||||||
|   _initializedPromise: Promise<boolean>; |   readonly _initializedPromise: Promise<boolean>; | ||||||
|   _initializedCallback: (value?: unknown) => void; |   _initializedCallback: (value?: unknown) => void; | ||||||
|   _isInitialized: boolean; |   _isInitialized: boolean; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -47,8 +47,8 @@ export class CROverrides { | |||||||
|       await (page._delegate as CRPage)._client.send('Emulation.setGeolocationOverride', this._geolocation); |       await (page._delegate as CRPage)._client.send('Emulation.setGeolocationOverride', this._geolocation); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   async _applyOverrides(page: Page): Promise<void> { |   async _applyOverrides(page: CRPage): Promise<void> { | ||||||
|     if (this._geolocation) |     if (this._geolocation) | ||||||
|       await (page._delegate as CRPage)._client.send('Emulation.setGeolocationOverride', this._geolocation); |       await page._client.send('Emulation.setGeolocationOverride', this._geolocation); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -156,7 +156,7 @@ export class FFBrowser extends browser.Browser { | |||||||
|         }); |         }); | ||||||
|         const target = this._targets.get(targetId); |         const target = this._targets.get(targetId); | ||||||
|         const page = await target.page(); |         const page = await target.page(); | ||||||
|         const session = (page._delegate as FFPage)._session; |         const session = target._ffPage._session; | ||||||
|         const promises: Promise<any>[] = []; |         const promises: Promise<any>[] = []; | ||||||
|         if (options.viewport) |         if (options.viewport) | ||||||
|           promises.push(page._delegate.setViewport(options.viewport)); |           promises.push(page._delegate.setViewport(options.viewport)); | ||||||
| @ -222,14 +222,14 @@ export class FFBrowser extends browser.Browser { | |||||||
| 
 | 
 | ||||||
| export class Target { | export class Target { | ||||||
|   _pagePromise?: Promise<Page>; |   _pagePromise?: Promise<Page>; | ||||||
|   private _ffPage: FFPage | null = null; |   _ffPage: FFPage | null = null; | ||||||
|   private _browser: FFBrowser; |   private readonly _browser: FFBrowser; | ||||||
|   _context: BrowserContext; |   private readonly _context: BrowserContext; | ||||||
|   private _connection: FFConnection; |   private readonly _connection: FFConnection; | ||||||
|   private _targetId: string; |   private readonly _targetId: string; | ||||||
|   private _type: 'page' | 'browser'; |   private readonly _type: 'page' | 'browser'; | ||||||
|   _url: string; |   _url: string; | ||||||
|   private _openerId: string; |   private readonly _openerId: string; | ||||||
| 
 | 
 | ||||||
|   constructor(connection: any, browser: FFBrowser, context: BrowserContext, targetId: string, type: 'page' | 'browser', url: string, openerId: string | undefined) { |   constructor(connection: any, browser: FFBrowser, context: BrowserContext, targetId: string, type: 'page' | 'browser', url: string, openerId: string | undefined) { | ||||||
|     this._browser = browser; |     this._browser = browser; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Yury Semikhatsky
						Yury Semikhatsky