Example #1
0
 public Promise(ICefV8Value promise, ICefV8Value resolve, ICefV8Value reject, ICefV8Context context)
 {
     this.promise = promise;
     this.resolve = resolve;
     this.reject  = reject;
     this.context = context;
 }
 public void OnContextCreated(ICefFrame frame, ICefV8Context context)
 {
     if (!objectCache.ContainsKey(frame.Identifier))
     {
         objectCache.Add(frame.Identifier, new Dictionary <string, ICefV8Value>());
     }
 }
Example #3
0
 public void OnContextCreated(ICefBrowser browser, ICefFrame frame, ICefV8Context context)
 {
     if (browsers.TryGetValue(browser.Identifier, out var browserController))
     {
         browserController.OnContextCreated(frame, context);
     }
 }
Example #4
0
        public Callback(ICefV8Value function, PromiseService promiseService, ObjectSerializer v8Serializer)
        {
            this.function       = function;
            this.promiseService = promiseService;
            this.v8Serializer   = v8Serializer;

            context = CefV8Context.GetCurrentContext();
        }
Example #5
0
        public Tuple <ICefV8Value, ICefV8Value, ICefV8Value> TryGetPromiseFunc(ICefV8Context ctx)
        {
            var res = promiseFunc.FirstOrDefault(f => f.Item1.IsSame(ctx));

            if (res != null)
            {
                promiseFunc.Remove(res);
                res.Item1.Dispose();
            }
            return(Tuple.Create(res.Item2, res.Item3, res.Item4));
        }
 public void OnContextReleased(ICefFrame frame, ICefV8Context context)
 {
     if (objectCache.TryGetValue(frame.Identifier, out var frameObjectCache))
     {
         frameObjectCache.Values.ToList().ForEach(f => f.Dispose());
         frameObjectCache.Clear();
         objectCache.Remove(frame.Identifier);
     }
     callbackRegistry.Clear(frame.Identifier);
     functionCallPromiseRegistry.Clear(frame.Identifier);
     dynamicObjectPromiseRegistry.Clear(frame.Identifier);
 }
Example #7
0
 public bool IsPromise(ICefV8Value v8Value, ICefV8Context context)
 {
     using (new ContextHelper(context))
         using (var global = context.GetGlobal())
             using (var s = global.GetValue(HelperObjectName))
             {
                 var userData  = s.GetUserData() as PromiseUserData;
                 var isPromise = userData.IsPromise;
                 using (var result = isPromise.ExecuteFunction(null, new[] { v8Value }))
                 {
                     return(result.GetBoolValue());
                 }
             }
 }
Example #8
0
        public void Then(ICefV8Value promise, ICefV8Context context, Action <PromiseResult> continuation)
        {
            var id = pendingPromises.Save(context.GetFrame().Identifier, new PendingPromise
            {
                Continuation = continuation
            });

            using (new ContextHelper(context))
                using (var global = context.GetGlobal())
                    using (var s = global.GetValue(HelperObjectName))
                    {
                        var userData       = s.GetUserData() as PromiseUserData;
                        var waitForPromise = userData.WaitForPromise;
                        using (var idValue = CefV8Value.CreateString(id.ToString()))
                        {
                            waitForPromise.ExecuteFunctionWithContext(context, null, new[] { promise, idValue }).Dispose();
                        }
                    }
        }
Example #9
0
 public ContextHelper(ICefV8Context context)
 {
     this.context = context;
     entered      = context.Enter();
 }
Example #10
0
 public ICefV8Value ExecuteFunctionWithContext(ICefV8Context context, ICefV8Value obj, ICefV8Value[] arguments)
 {
     return(new CefV8ValueImpl(Wrapped.ExecuteFunctionWithContext(context.Unwrap <CefV8Context>(),
                                                                  obj?.Unwrap <CefV8Value>(), arguments.Select(_ => _.Unwrap <CefV8Value>()).ToArray())));
 }
Example #11
0
 public bool IsSame(ICefV8Context context)
 {
     return(Wrapped.IsSame(context.Unwrap <CefV8Context>()));
 }