private async Task OnExecutionContextCreatedAsync(ContextPayload contextPayload)
        {
            var frameId = contextPayload.AuxData?.FrameId;
            var frame   = !string.IsNullOrEmpty(frameId) ? await GetFrameAsync(frameId).ConfigureAwait(false) : null;

            DOMWorld world = null;

            if (frame != null)
            {
                if (contextPayload.AuxData?.IsDefault == true)
                {
                    world = frame.MainWorld;
                }
                else if (contextPayload.Name == UtilityWorldName && !frame.SecondaryWorld.HasContext)
                {
                    // In case of multiple sessions to the same target, there's a race between
                    // connections so we might end up creating multiple isolated worlds.
                    // We can use either.
                    world = frame.SecondaryWorld;
                }
            }

            var context = new ExecutionContext(Client, contextPayload, world);

            if (world != null)
            {
                world.SetContext(context);
            }
            _contextIdToContext[contextPayload.Id] = context;
        }
        private void OnExecutionContextCreated(ContextPayload contextPayload)
        {
            var context = new ExecutionContext(_client, contextPayload, (dynamic remoteObject) =>
            {
                _contextIdToContext.TryGetValue(contextPayload.Id, out var storedContext);

                if (storedContext == null)
                {
                    Console.WriteLine($"INTERNAL ERROR: missing context with id = {contextPayload.Id}");
                }
                if (remoteObject.Subtype == "node")
                {
                    return(new ElementHandle(storedContext, _client, remoteObject, _page));
                }
                return(new JSHandle(storedContext, _client, remoteObject));
            });

            _contextIdToContext[contextPayload.Id] = context;

            var frame = !string.IsNullOrEmpty(context.FrameId) ? Frames[context.FrameId] : null;

            if (frame != null && context.IsDefault)
            {
                frame.SetDefaultContext(context);
            }
        }
        private async Task OnExecutionContextCreatedAsync(ContextPayload contextPayload)
        {
            var frameId = contextPayload.AuxData?.FrameId;
            var frame   = !string.IsNullOrEmpty(frameId) ? await GetFrameAsync(frameId).ConfigureAwait(false) : null;

            DOMWorld world = null;

            if (frame != null)
            {
                if (contextPayload.AuxData?.IsDefault == true)
                {
                    world = frame.MainWorld;
                }
                else if (contextPayload.Name == UtilityWorldName)
                {
                    world = frame.SecondaryWorld;
                }
            }
            if (contextPayload.AuxData?.Type == DOMWorldType.Isolated)
            {
                _isolatedWorlds.Add(contextPayload.Name);
            }
            var context = new ExecutionContext(Client, contextPayload, world);

            if (world != null)
            {
                world.SetContext(context);
            }
            _contextIdToContext[contextPayload.Id] = context;
        }
 public ExecutionContext(Session client, ContextPayload contextPayload, Func <dynamic, JSHandle> objectHandleFactory)
 {
     _client             = client;
     _contextId          = contextPayload.Id;
     FrameId             = contextPayload.AuxData.FrameId;
     IsDefault           = contextPayload.AuxData.IsDefault;
     ObjectHandleFactory = objectHandleFactory;
 }
 internal ExecutionContext(
     CDPSession client,
     ContextPayload contextPayload,
     DOMWorld world)
 {
     _client    = client;
     _contextId = contextPayload.Id;
     World      = world;
 }
示例#6
0
 internal ExecutionContext(
     CDPSession client,
     ContextPayload contextPayload,
     Frame frame)
 {
     _client    = client;
     _contextId = contextPayload.Id;
     Frame      = frame;
 }
 internal ExecutionContext(
     CDPSession client,
     ContextPayload contextPayload,
     Func <ExecutionContext, dynamic, JSHandle> objectHandleFactory,
     Frame frame)
 {
     _client             = client;
     _contextId          = contextPayload.Id;
     ObjectHandleFactory = objectHandleFactory;
     Frame = frame;
 }
示例#8
0
 internal ExecutionContext(
     CDPSession client,
     ContextPayload contextPayload,
     Func <dynamic, JSHandle> objectHandleFactory,
     Frame frame)
 {
     _client             = client;
     _contextId          = contextPayload.Id;
     FrameId             = contextPayload.AuxData.FrameId;
     IsDefault           = contextPayload.AuxData.IsDefault;
     ObjectHandleFactory = objectHandleFactory;
     Frame = frame;
 }
示例#9
0
        private void OnExecutionContextCreated(ContextPayload contextPayload)
        {
            var context = new ExecutionContext(_client, contextPayload,
                                               remoteObject => CreateJsHandle(contextPayload.Id, remoteObject));

            _contextIdToContext[contextPayload.Id] = context;

            var frame = !string.IsNullOrEmpty(context.FrameId) ? Frames[context.FrameId] : null;

            if (frame != null && context.IsDefault)
            {
                frame.SetDefaultContext(context);
            }
        }
示例#10
0
        private void OnExecutionContextCreated(ContextPayload contextPayload)
        {
            var frameId = contextPayload.AuxData.IsDefault ? contextPayload.AuxData.FrameId : null;
            var frame   = !string.IsNullOrEmpty(frameId) ? Frames[frameId] : null;

            var context = new ExecutionContext(
                _client,
                contextPayload,
                frame);

            _contextIdToContext[contextPayload.Id] = context;

            if (frame != null)
            {
                frame.SetDefaultContext(context);
            }
        }
示例#11
0
        private async Task OnExecutionContextCreatedAsync(ContextPayload contextPayload)
        {
            var frameId = contextPayload.AuxData.IsDefault ? contextPayload.AuxData.FrameId : null;
            var frame   = !string.IsNullOrEmpty(frameId) ? await GetFrameAsync(frameId) : null;

            var context = new ExecutionContext(
                Client,
                contextPayload,
                frame);

            _contextIdToContext[contextPayload.Id] = context;

            if (frame != null)
            {
                frame.SetDefaultContext(context);
            }
        }
示例#12
0
 public ExecutionContext(Session client, ContextPayload contextPayload, Func <dynamic, JSHandle> objectHandleFactory)
 {
     _client             = client;
     _contextId          = contextPayload.Id;
     ObjectHandleFactory = objectHandleFactory;
 }