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>()); } }
public void OnContextCreated(ICefBrowser browser, ICefFrame frame, ICefV8Context context) { if (browsers.TryGetValue(browser.Identifier, out var browserController)) { browserController.OnContextCreated(frame, context); } }
public Callback(ICefV8Value function, PromiseService promiseService, ObjectSerializer v8Serializer) { this.function = function; this.promiseService = promiseService; this.v8Serializer = v8Serializer; context = CefV8Context.GetCurrentContext(); }
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); }
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()); } } }
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(); } } }
public ContextHelper(ICefV8Context context) { this.context = context; entered = context.Enter(); }
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()))); }
public bool IsSame(ICefV8Context context) { return(Wrapped.IsSame(context.Unwrap <CefV8Context>())); }