use-raw-call-func
This commit is contained in:
parent
942b5aedc1
commit
53894f25b1
|
|
@ -156,6 +156,13 @@ export class BidiExecutionContext implements js.ExecutionContextDelegate {
|
||||||
throw new Error('Can\'t get remote object for nodeId');
|
throw new Error('Can\'t get remote object for nodeId');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async contentFrameIdForFrame(handle: dom.ElementHandle) {
|
||||||
|
const contentWindow = await this._rawCallFunction('e => e.contentWindow', { handle: handle._objectId });
|
||||||
|
if (contentWindow?.type === 'window')
|
||||||
|
return contentWindow.value.context;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
async frameIdForWindowHandle(handle: js.JSHandle): Promise<string | null> {
|
async frameIdForWindowHandle(handle: js.JSHandle): Promise<string | null> {
|
||||||
if (!handle._objectId)
|
if (!handle._objectId)
|
||||||
throw new Error('JSHandle is not a DOM node handle');
|
throw new Error('JSHandle is not a DOM node handle');
|
||||||
|
|
|
||||||
|
|
@ -413,17 +413,10 @@ export class BidiPage implements PageDelegate {
|
||||||
|
|
||||||
async getContentFrame(handle: dom.ElementHandle): Promise<frames.Frame | null> {
|
async getContentFrame(handle: dom.ElementHandle): Promise<frames.Frame | null> {
|
||||||
const executionContext = toBidiExecutionContext(handle._context);
|
const executionContext = toBidiExecutionContext(handle._context);
|
||||||
const contentWindow = await handle.evaluateHandle('e => e.contentWindow');
|
const frameId = await executionContext.contentFrameIdForFrame(handle);
|
||||||
if (!contentWindow)
|
if (!frameId)
|
||||||
return null;
|
return null;
|
||||||
try {
|
return this._page._frameManager.frame(frameId);
|
||||||
const frameId = await executionContext.frameIdForWindowHandle(contentWindow);
|
|
||||||
if (!frameId)
|
|
||||||
return null;
|
|
||||||
return this._page._frameManager.frame(frameId);
|
|
||||||
} finally {
|
|
||||||
contentWindow.dispose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async getOwnerFrame(handle: dom.ElementHandle): Promise<string | null> {
|
async getOwnerFrame(handle: dom.ElementHandle): Promise<string | null> {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue