mirror of
				https://github.com/microsoft/playwright.git
				synced 2025-06-26 21:40:17 +00:00 
			
		
		
		
	fix(bidi): correctly serialize kPlaywrightBinding (#35783)
This commit is contained in:
		
							parent
							
								
									9b59a6aea6
								
							
						
					
					
						commit
						d170bbbcb9
					
				@ -20,7 +20,7 @@ import { BrowserContext, assertBrowserContextIsNotOwned, verifyGeolocation } fro
 | 
			
		||||
import * as network from '../network';
 | 
			
		||||
import { BidiConnection } from './bidiConnection';
 | 
			
		||||
import { bidiBytesValueToString } from './bidiNetworkManager';
 | 
			
		||||
import { addMainBinding, BidiPage, kPlaywrightBindingChannel } from './bidiPage';
 | 
			
		||||
import { addMainBindingSource, BidiPage, kPlaywrightBindingChannel } from './bidiPage';
 | 
			
		||||
import * as bidi from './third_party/bidiProtocol';
 | 
			
		||||
 | 
			
		||||
import type { RegisteredListener } from '../utils/eventsHelper';
 | 
			
		||||
@ -238,7 +238,6 @@ export class BidiBrowserContext extends BrowserContext {
 | 
			
		||||
 | 
			
		||||
  // TODO: consider calling this only when bindings are added.
 | 
			
		||||
  private async _installMainBinding() {
 | 
			
		||||
    const functionDeclaration = addMainBinding.toString();
 | 
			
		||||
    const args: bidi.Script.ChannelValue[] = [{
 | 
			
		||||
      type: 'channel',
 | 
			
		||||
      value: {
 | 
			
		||||
@ -247,7 +246,7 @@ export class BidiBrowserContext extends BrowserContext {
 | 
			
		||||
      }
 | 
			
		||||
    }];
 | 
			
		||||
    await this._browser._browserSession.send('script.addPreloadScript', {
 | 
			
		||||
      functionDeclaration,
 | 
			
		||||
      functionDeclaration: addMainBindingSource,
 | 
			
		||||
      arguments: args,
 | 
			
		||||
      userContexts: [this._userContextId()],
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
@ -328,7 +328,7 @@ export class BidiPage implements PageDelegate {
 | 
			
		||||
    // For non-persistent context, the main binding is installed during context creation.
 | 
			
		||||
    if (this._browserContext._browserContextId)
 | 
			
		||||
      return;
 | 
			
		||||
    const functionDeclaration = addMainBinding.toString();
 | 
			
		||||
    const functionDeclaration = addMainBindingSource;
 | 
			
		||||
    const args: bidi.Script.ChannelValue[] = [{
 | 
			
		||||
      type: 'channel',
 | 
			
		||||
      value: {
 | 
			
		||||
@ -572,9 +572,8 @@ export class BidiPage implements PageDelegate {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function addMainBinding(callback: (arg: any) => void) {
 | 
			
		||||
  (globalThis as any)[PageBinding.kPlaywrightBinding] = callback;
 | 
			
		||||
}
 | 
			
		||||
export const addMainBindingSource =
 | 
			
		||||
  `function addMainBinding(callback) { globalThis['${PageBinding.kPlaywrightBinding}'] = callback; }`;
 | 
			
		||||
 | 
			
		||||
function toBidiExecutionContext(executionContext: dom.FrameExecutionContext): BidiExecutionContext {
 | 
			
		||||
  return executionContext.delegate as BidiExecutionContext;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user