import { IFrame, IFrameEvents, ILifecycleEvents } from '@unblocked-web/specifications/agent/browser/IFrame'; import Protocol from 'devtools-protocol'; import { TypedEventEmitter } from '@ulixee/commons/lib/eventUtils'; import { NavigationReason } from '@unblocked-web/specifications/agent/browser/NavigationReason'; import { IBoundLog } from '@ulixee/commons/interfaces/ILog'; import IPoint from '@unblocked-web/specifications/agent/browser/IPoint'; import IWindowOffset from '@unblocked-web/specifications/agent/browser/IWindowOffset'; import { IInteractionGroups } from '@unblocked-web/specifications/agent/interact/IInteractions'; import { IInteractHooks } from '@unblocked-web/specifications/agent/hooks/IHooks'; import { ILoadStatus, ILocationTrigger } from '@unblocked-web/specifications/agent/browser/Location'; import INavigation from '@unblocked-web/specifications/agent/browser/INavigation'; import DevtoolsSession from './DevtoolsSession'; import FramesManager from './FramesManager'; import { NavigationLoader } from './NavigationLoader'; import { JsPath } from './JsPath'; import Page from './Page'; import Interactor from './Interactor'; import FrameNavigations from './FrameNavigations'; import FrameNavigationsObserver from './FrameNavigationsObserver'; import IWaitForOptions from '../interfaces/IWaitForOptions'; import PageFrame = Protocol.Page.Frame; export default class Frame extends TypedEventEmitter implements IFrame { #private; readonly frameId: number; get id(): string; get name(): string; get parentId(): string; url: string; get isDefaultUrl(): boolean; get securityOrigin(): string; navigationReason?: string; disposition?: string; get isAttached(): boolean; get activeLoader(): NavigationLoader; get page(): Page; interactor: Interactor; jsPath: JsPath; activeLoaderId: string; navigationLoadersById: { [loaderId: string]: NavigationLoader; }; readonly logger: IBoundLog; get hooks(): IInteractHooks; navigations: FrameNavigations; navigationsObserver: FrameNavigationsObserver; private waitTimeouts; private frameElementDevtoolsNodeId?; private readonly parentFrame; private readonly devtoolsSession; private defaultLoaderId; private startedLoaderId; private defaultContextId; private isolatedContextId; private readonly activeContextIds; private internalFrame; private closedWithError; private isClosing; private defaultContextCreated; private readonly checkIfAttached; private inPageCounter; private events; private devtoolsNodeIdByNodePointerId; constructor(framesManager: FramesManager, internalFrame: PageFrame, activeContextIds: Set, devtoolsSession: DevtoolsSession, logger: IBoundLog, checkIfAttached: () => boolean, parentFrame: Frame | null); close(error?: Error): void; runPendingNewDocumentScripts(): Promise; evaluate(expression: string, isolateFromWebPageEnvironment?: boolean, options?: { shouldAwaitExpression?: boolean; retriesWaitingForLoad?: number; returnByValue?: boolean; includeCommandLineAPI?: boolean; }): Promise; waitForLoad(options?: IWaitForOptions & { loadStatus?: ILoadStatus; }): Promise; waitForLocation(trigger: ILocationTrigger, options?: IWaitForOptions): Promise; interact(...interactionGroups: IInteractionGroups): Promise; waitForScrollStop(timeoutMs?: number): Promise<[scrollX: number, scrollY: number]>; getWindowOffset(): Promise; getNodePointerId(devtoolsObjectId: string): Promise; getFrameElementNodePointerId(): Promise; getContainerOffset(): Promise; outerHTML(): Promise; waitForLifecycleEvent(event?: keyof ILifecycleEvents, loaderId?: string, timeoutMs?: number): Promise; setFileInputFiles(nodePointerId: number, files: string[]): Promise; evaluateOnNode(devtoolsObjectId: string, expression: string): Promise; getFrameElementDevtoolsNodeId(): Promise; resolveDevtoolsNodeId(backendNodeId: number, resolveInIsolatedContext?: boolean): Promise; trackBackendNodeAsNodePointer(backendNodeId: number): Promise; initiateNavigation(url: string, loaderId: string): void; requestedNavigation(url: string, reason: NavigationReason, disposition: string): void; onAttached(internalFrame: PageFrame): void; onNavigated(frame: PageFrame): void; onNavigatedWithinDocument(url: string): void; onStoppedLoading(): void; waitForDefaultLoader(): Promise; waitForNavigationLoader(loaderId?: string, timeoutMs?: number): Promise; onLifecycleEvent(name: string, timestamp?: number, pageLoaderId?: string): void; hasContextId(executionContextId: number): boolean; removeContextId(executionContextId: number): void; clearContextIds(): void; addContextId(executionContextId: number, isDefault: boolean): void; getActiveContextId(isolatedContext: boolean): number | undefined; waitForActiveContextId(isolatedContext?: boolean): Promise; canEvaluate(isolatedFromWebPageEnvironment: boolean): boolean; toJSON(): Pick; private setLoader; private createIsolatedWorld; private waitForDefaultContext; private updateUrl; private triggerLifecycleEvent; }