public FakeHTMLWindow(CfxClient cfxClient, IWebView webview, Uri url) { _Uri = url; _Webview = webview; _CfxClient = cfxClient; _CfxClient.GetDisplayHandler += OnGetDisplayHandler; }
public bool Save(IWebView webView, out string error) { error = null; if (!UpdateNode(webView, MemberElement, "Docs/summary", "summary", out error)) { return(false); } if (Remarks != null && !UpdateNode(webView, MemberElement, "Docs/remarks", "remarks", out error)) { return(false); } if (Value != null && !UpdateNode(webView, MemberElement, "Docs/value", "value", out error)) { return(false); } if (ReturnValue != null && !UpdateNode(webView, MemberElement, "Docs/returns", "return", out error)) { return(false); } if (Params != null) { foreach (var p in Params) { string name = "param-" + p.Attribute("name").Value; if (!UpdateNode(webView, p, ".", name, out error)) { return(false); } } } return(Type.SaveDoc(out error)); }
public FakeHTMLWindow(CfxClient cfxClient, IWebView webview, Uri url) { _Uri = url; _Webview = webview; _CfxClient = cfxClient; _CfxClient.GetDisplayHandler += OnGetDisplayHandler; }
public void Awake() { if (Application.platform == RuntimePlatform.Android) { #if UNITY_ANDROID webView = new WebViewAndroid(); #endif } else if (Application.platform == RuntimePlatform.IPhonePlayer) { #if UNITY_IPHONE webView = new WebViewIOS(); #endif } else { webView = new WebViewNull(); } webView.Init(name); callback = null; }
public Test_ConvertToJSO() { _WebView = WebCore.CreateWebView(500, 500, WebViewType.Offscreen); _IJSOBuilder = new LocalBuilder(_WebView); _ICSharpMapper = Substitute.For <IJSCBridgeCache>(); _ICSharpMapper.GetCached(Arg.Any <object>()).Returns((IJSCSGlue)null); _ConverTOJSO = new CSharpToJavascriptMapper(_IJSOBuilder, _ICSharpMapper); _Test = new Test { S1 = "string", I1 = 25 }; _Tests = new List <Test>(); _Tests.Add(new Test() { S1 = "string1", I1 = 1 }); _Tests.Add(new Test() { S1 = "string2", I1 = 2 }); _Test2 = new Test2() { T1 = _Test, T2 = _Test }; _Tests_NG = new ArrayList(); _Tests_NG.Add(_Tests[0]); _Tests_NG.Add(_Tests[0]); }
public JsResultCommand(IWebView webView, IJavascriptToCSharpConverter converter, IResultCommand resultCommand) { _WebView = webView; _JavascriptToCSharpConverter = converter; _JSResultCommand = resultCommand; JSValue = _WebView.Factory.CreateObject(true); }
internal IWebView GetContext(CefFrame frame) { IWebView res = null; _Associated.TryGetValue(frame.Identifier, out res); return(res); }
private static Task <T> EvaluateSafeAsync <T>(this IWebView iwb, Func <T> evaluate) { TaskCompletionSource <T> tcs = new TaskCompletionSource <T>(); WebCore.QueueWork(iwb, () => tcs.SetResult(evaluate())); return(tcs.Task); }
public JsSimpleCommand(IWebView webView, IJavascriptToCSharpConverter converter, ISimpleCommand simpleCommand) { _WebView = webView; _JavascriptToCSharpConverter = converter; _JSSimpleCommand = simpleCommand; JSValue = _WebView.Factory.CreateObject(true); }
public WebViewBridge(IWebView webView, ViewModelBase viewModel) { _webView = webView; _bridge = new Bridge(viewModel, this); _webView.NativeViewInitialized += (sender, args) => _webView.DocumentReady += (sender2, args2) => Initialize(); }
private OidcClientOptions(string clientId, string clientSecret, string scope, string redirectUri, IWebView webView = null, IIdentityTokenValidator validator = null) { if (string.IsNullOrWhiteSpace(clientId)) { throw new ArgumentNullException(nameof(clientId)); } if (string.IsNullOrWhiteSpace(clientSecret)) { throw new ArgumentNullException(nameof(clientSecret)); } if (string.IsNullOrWhiteSpace(scope)) { throw new ArgumentNullException(nameof(scope)); } if (string.IsNullOrWhiteSpace(redirectUri)) { throw new ArgumentNullException(nameof(redirectUri)); } ClientId = clientId; ClientSecret = clientSecret; Scope = scope; RedirectUri = redirectUri; IdentityTokenValidator = validator ?? new DefaultIdentityTokenValidator(); WebView = webView; }
private void _webView_ReceivedMsg(IWebView sender, String e) { if (String.IsNullOrWhiteSpace(e)) { return; } else if (e == "Loaded") { HasLoaded = true; _htmlDocument.Body.PropertyChanged += Body_PropertyChanged; if (PageLoaded != null) { PageLoaded(this); } } else if (DisplayEventFired != null) { var jsonReply = new JsonHelper(e); //get the element that fired is var source = from element in _elements where element.Id == jsonReply.Id select element; if (source.Any() && jsonReply.Data.Any()) { DisplayEventFired(source.First(), (HtmlEventType)Enum.Parse(typeof(HtmlEventType), jsonReply.Data.First(), false)); } } }
public WebViewBridge(IWebView webView, ViewModelBase viewModel) { _webView = webView; _bridge = new Bridge(viewModel, this); _webView.NativeViewInitialized += (sender, args) => _webView.DocumentReady += (sender2, args2) => Initialize(); }
private JSGenericObject(IWebView context, IJavascriptObject value) { JSValue = value; _MappedJSValue = value; CValue = null; _CefV8Context = context; }
public OidcClientOptions(string authority, string clientId, string clientSecret, string scope, string redirectUri, IWebView webView) : this(clientId, clientSecret, scope, redirectUri, webView) { if (string.IsNullOrWhiteSpace(authority)) throw new ArgumentNullException(nameof(authority)); _endpoints = new Lazy<Task<Endpoints>>(async () => await Endpoints.LoadFromMetadataAsync(authority)); }
private void OnV8ContextCreated(object sender, CfrOnContextCreatedEventArgs e) { if (!e.Frame.IsMain) { return; } MainFrame = new ChromiumFxWebView(e.Browser, _Logger); var beforeJavascriptExecuted = BeforeJavascriptExecuted; if (beforeJavascriptExecuted == null) { return; } void Execute(string code) => e.Frame.ExecuteJavaScript(code, String.Empty, 0); beforeJavascriptExecuted(this, new BeforeJavascriptExcecutionArgs(MainFrame, Execute)); if (_SendLoadOnContextCreated) { SendLoad(); } }
public void InvokeNoResult(string functionName, IWebView context, params IJavascriptObject[] parameters) { var function = _CfrV8Value.GetValue(functionName); var res = function.ExecuteFunction(_CfrV8Value, parameters.Convert()); res?.Dispose(); }
public MobxJavascriptViewModelUpdater(IWebView webView, Lazy <IJavascriptObject> helper, IJavascriptObject listener, IWebSessionLogger logger) { _WebView = webView; _Listener = listener; _Logger = logger; _MobxHelperLazy = helper; }
private Action GetLast(IWebView view) { if (ManageWebSession) return () => view.Dispose(); return null; }
private Action GetFirst(IWebView view) { if (InjectionTimeOut != -1) return () => view.SynchronousMessageTimeout = InjectionTimeOut; return null; }
public static Task <T> InvokeScriptFunctionAsync <T>( this IWebView webView, string function, params object[] args) { return(InvokeScriptFunctionAsync <T>(webView, "window", function, args)); }
private JSGenericObject(IWebView context, IJavascriptObject value) { JSValue = value; _MappedJSValue = value; CValue = null; _CefV8Context = context; }
/// <summary> /// Dispatch a <see cref="JavaScriptBridgeMessage" />. /// </summary> /// <param name="webView">A <see cref="IWebView" /> instance.</param> /// <param name="javaScriptBridgeMessage">The message.</param> internal static void DispatchMessage(this IWebView webView, JavaScriptBridgeMessage javaScriptBridgeMessage) { var json = javaScriptBridgeMessage?.Serialize(); if (!string.IsNullOrEmpty(json)) { Trace.WriteLine( $"Calling {Constants.BridgeJavaScript} JavaScriptBridge.handleNativeMessage", Constants.TraceName); Trace.WriteLine(javaScriptBridgeMessage, Constants.TraceName); // Need to sanitize message sent to bridge // Escape any single quotes, since that's what we're using json = json.Replace("'", "\\'"); // Escape any CL/LF json = json.Replace(Environment.NewLine, "\\\\n"); json = json.Replace("\n", "\\\\n"); var command = $"JavaScriptBridge.handleNativeMessage('{json}');"; // in WPF ensure UI access webView.TryEvalAsync(command); } }
public VueJavascriptViewModelUpdater(IWebView webView, IJavascriptObject listener, Lazy<IJavascriptObject> vueHelper, IWebSessionLogger logger) { _WebView = webView; _Listener = listener; _VueHelper = vueHelper; _Logger = logger; }
public static Task <JToken> InvokeJavaScriptFunctionWithJTokenResponse( this IWebView webView, string function, params object[] args) { return(InvokeJavaScriptFunctionWithJTokenResponse(webView, "window", function, args)); }
public IDisposable Connect(IWebView first, IWebView second) { var subscribe1 = SubscribeAll(first, GetDispatchAction(second, PostMessage)); var subscribe2 = SubscribeAll(second, GetDispatchAction(first, PostMessage)); return(new ComposedDisposable(subscribe1, subscribe2)); }
public static void UpdateSource(this WKWebView nativeWebView, IWebView webView, IWebViewDelegate?webViewDelegate) { if (webViewDelegate != null) { webView.Source?.Load(webViewDelegate); } }
public static async Task <decimal> RedeemAmazonAsync(this IWebView view, string claimcode, CancellationToken ct, int delayMS) { string amazonCashInUrl = "https://www.amazon.com/gc/redeem/"; if (view.Source.ToString().ToLower().Contains(amazonCashInUrl) == false) { await view.WaitPageLoadComplete(() => { view.Source = amazonCashInUrl.ToUri(); }, ct : ct); } else { await view.WaitPageLoadComplete(() => { view.Reload(false); }, ct : ct); } view.ExecuteJavascript(string.Format("document.querySelector('#gc-redemption-input').value='{0}'", claimcode)); await view.WaitPageLoadComplete(() => { view.ExecuteJavascript("document.querySelector(\"#gc-redemption-apply input\").click()"); }, ct : ct); await Task.Delay(delayMS); return(await view.GetAmazonBalanceAsync()); }
private async Task InitAsync(string path, IWebSessionLogger logger ) { var taskload = _WpfThread.Dispatcher.Invoke(() => RawInit(path)); WebView = await _ChromiumFXWebViewTask; await taskload; _ChromiumFXHTMLWindowProvider = new ChromiumFXHTMLWindowProvider(_CfxClient, WebView, new Uri(path)); }
private OidcClientOptions(string clientId, string clientSecret, string scope, string redirectUri, IWebView webView = null, IIdentityTokenValidator validator = null) { if (string.IsNullOrWhiteSpace(clientId)) { throw new ArgumentNullException(nameof(clientId)); } if (string.IsNullOrWhiteSpace(scope)) { throw new ArgumentNullException(nameof(scope)); } if (string.IsNullOrWhiteSpace(redirectUri)) { throw new ArgumentNullException(nameof(redirectUri)); } // make sure the scopes contain openid if (!scope.FromSpaceSeparatedString().Contains("openid")) { throw new ArgumentException("Scope must include openid", nameof(scope)); } ClientId = clientId; ClientSecret = clientSecret; Scope = scope; RedirectUri = redirectUri; IdentityTokenValidator = validator ?? new DefaultIdentityTokenValidator(); WebView = webView; }
public IJavascriptObject Invoke(string functionName, IWebView context, params IJavascriptObject[] parameters) { var function = _CfrV8Value.GetValue(functionName); if (function.IsUndefined) return CfrV8Value.CreateUndefined().Convert(); return function.ExecuteFunctionWithContext(context.Convert().V8Context, _CfrV8Value, parameters.Convert()).Convert(); }
/// <summary> /// Creates an instance of <see cref="JavaScriptBridge"/> and starts listening to <see cref="IWebView.ScriptNotify"/> messages. /// </summary> /// <param name="webView">A <see cref="IWebView"/> instance.</param> /// <param name="allowedOrigins">The set of allowed origins for <see cref="IWebView.ScriptNotify"/> events.</param> /// <returns>An instance of <see cref="JavaScriptBridge" />.</returns> /// <exception cref="ArgumentNullException"> /// Occurs when <paramref name="webView"/> or <paramref name="allowedOrigins" /> is null. /// </exception> /// <exception cref="ArgumentOutOfRangeException">allowedOrigins - Must have at least one origin.</exception> /// <seealso cref="Start"/> /// <seealso cref="AllowedScriptNotifyUris"/> public static JavaScriptBridge CreateAndStart( IWebView webView, params Uri[] allowedOrigins ) { if (allowedOrigins == null) { throw new ArgumentNullException(nameof(allowedOrigins)); } if (!allowedOrigins.Any()) { throw new ArgumentOutOfRangeException(nameof(allowedOrigins), "Must have at least one origin."); } var retval = new JavaScriptBridge(webView); foreach (var origin in allowedOrigins) { retval.AllowedScriptNotifyUris.Add(origin); } retval.Start(); return(retval); }
public JsResultCommand(IWebView webView, IJavascriptToCSharpConverter converter, IResultCommand resultCommand) { _WebView = webView; _JavascriptToCSharpConverter = converter; _JSResultCommand = resultCommand; JSValue = _WebView.Factory.CreateObject(true); }
public void Dispose() { if (!IsDisposed) { selectionChangedHandler = null; if (isRegistered && (view != null)) { try { view.DestroyObject(SELECTION_OBJECT); view.SetObjectCallback(SELECTION_OBJECT, SELECTION_TEXT_CALLBACK, null); view.SetObjectCallback(SELECTION_OBJECT, SELECTION_HTML_CALLBACK, null); } catch { } finally { view = null; isRegistered = false; } } IsDisposed = true; } GC.SuppressFinalize(this); }
public static async Task <bool> WaitPageLoadComplete(this IWebView view, Action TriggerPageChangeAction, int timeOutSec = 0, CancellationToken ct = new CancellationToken()) { SemaphoreSlim signal = new SemaphoreSlim(0, 1); bool result = false; FrameEventHandler frameEvent = (o, e) => { if (e.IsMainFrame) { result = true; signal.Release(); } }; view.LoadingFrameComplete += frameEvent; TriggerPageChangeAction.Invoke(); if (timeOutSec > 0) { await signal.WaitAsync(TimeSpan.FromSeconds(timeOutSec), ct); } else { await signal.WaitAsync(ct); } view.LoadingFrameComplete -= frameEvent; return(result); }
public static void CaptchaSolved(this IWebView view) { if (captchaSolvedSignal != null) { captchaSolvedSignal.Release(); } }
public AwesomiumWebView(IWebView iwebview) { _IWebView = iwebview; _Dispatcher = new AwesomiumDispatcher(); _AwesomiumJavascriptObjectConverter = new AwesomiumJavascriptObjectConverter(_IWebView); _AwesomiumJavascriptObjectFactory = new AwesomiumJavascriptObjectFactory(_IWebView); }
public JavascriptObjectBulkBuilderStrategy(IWebView webView, ISessionCache cache, bool mapping) { _Mapping = mapping; _WebView = webView; _Cache = cache; _Factory = new Lazy <BulkJsHelper>(FactoryBuilder); }
public static Task <Dictionary <string, object> > InvokeScriptFunctionWithDicionaryResponseAsync( this IWebView webView, string function, params object[] args) { return(InvokeScriptFunctionWithDicionaryResponseAsync(webView, "window", function, args)); }
public void Inject(Key KeyToInject) { IWebView wv = _WebControl; var kev = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, KeyToInject); wv.InjectKeyboardEvent(kev.GetKeyboardEvent(WebKeyboardEventType.KeyDown)); }
public VueJavascriptViewModelUpdater(IWebView webView, IJavascriptObject listener, Lazy <IJavascriptObject> vueHelper, IWebSessionLogger logger) { _WebView = webView; _Listener = listener; _VueHelper = vueHelper; _Logger = logger; }
public OidcClientOptions(Endpoints endpoints, string clientId, string clientSecret, string scope, string redirectUri, IWebView webView) : this(clientId, clientSecret, scope, redirectUri, webView) { if (endpoints == null) throw new ArgumentNullException(nameof(endpoints)); endpoints.Validate(); _endpoints = new Lazy<Task<Endpoints>>(() => Task.FromResult(endpoints)); }
public VueVmManager(IWebView webView, IJavascriptObject listener, IWebSessionLogger logger) { _WebView = webView; _Logger = logger; _VueHelperLazy = new Lazy<IJavascriptObject>(GetVueHelper); _VueJavascriptSessionInjector = new VueJavascriptSessionInjector(webView, listener, _VueHelperLazy, _Logger); _VueJavascriptViewModelUpdater = new VueJavascriptViewModelUpdater(webView, listener, _VueHelperLazy, _Logger); }
public static void Bind(this CefV8Value @this, string functionname, IWebView iCefV8Context, Action<string, CefV8Value, CefV8Value[]> iaction) { iCefV8Context.RunAsync(() => { var function = CefV8Value.CreateFunction(functionname, new CefV8Handler_Action(iaction)); @this.SetValue(functionname, function, CefV8PropertyAttribute.None); }); }
public WoodCore(IWebView webView) { Instances.Add (this); Addr = Guid.NewGuid().ToString("N"); FullPrefix = BasePrefix + Addr + "/"; this.webView = webView; HttpListener.Prefixes.Add(FullPrefix); Start(); }
public AwesomiumHTMLWindow(WebControl iWebControl) { _WebControl = iWebControl; _WebControl.SynchronousMessageTimeout = 0; _WebControl.ExecuteWhenReady(FireLoaded); _WebControl.ConsoleMessage += _WebControl_ConsoleMessage; _WebControl.Crashed += _WebControl_Crashed; MainFrame = new AwesomiumWebView(_WebControl); }
public void Bind(string functionName, IWebView context, Action<string, IJavascriptObject, IJavascriptObject[]> action) { lock (this) { var cfrV8Handler = action.Convert(functionName); _Functions.Value.Add(cfrV8Handler); var func = CfrV8Value.CreateFunction(functionName, cfrV8Handler); _CfrV8Value.SetValue(functionName, func, CfxV8PropertyAttribute.ReadOnly | CfxV8PropertyAttribute.DontDelete); } }
public HTMLViewContext(IWebView webView, IDispatcher uiDispatcher, IJavascriptFrameworkManager javascriptFrameworkManager, IJavascriptChangesObserver javascriptChangesObserver, IWebSessionLogger logger) { WebView = webView; _logger = logger; UIDispatcher = uiDispatcher; var builder = new BinderBuilder(webView, javascriptChangesObserver); _Listener = builder.BuildListener(); _VmManager = javascriptFrameworkManager.CreateManager(WebView, _Listener, _logger); ViewModelUpdater = _VmManager.ViewModelUpdater; JavascriptSessionInjector = _VmManager.Injector; }
public static Task<CefV8Value> InvokeAsync(this CefV8Value @this, string functionname, IWebView context, params CefV8Value[] args) { return context.EvaluateAsync(() => { var fn = @this.GetValue(functionname); if ((fn==null) || !fn.IsFunction) return CefV8Value.CreateUndefined(); return fn.ExecuteFunction(@this, args); } ); }
/// <summary> /// Initializes a new instance of the SongDisplayController class. /// </summary> /// <param name="control">The web view that is controlled by this instance. Its IsProcessCreated property must be true.</param> /// <param name="features">The desired feature level.</param> public SongDisplayController(IWebView control, FeatureLevel features = FeatureLevel.None) { this.control = control; this.features = features; this.control.ConsoleMessage += (obj, target) => { System.Windows.MessageBox.Show("SongDisplayController encountered JS error in " + target.Source + " (line " + target.LineNumber + "): " + target.Message); }; // FIXME: sometimes throws exception saying that "bridge" object already exists bridge = this.control.CreateGlobalJavascriptObject("bridge"); bridge.BindAsync("callbackLoaded", (sender, args) => OnSongLoaded()); bridge["featureLevel"] = new JSValue(JsonConvert.SerializeObject(features)); }
public void Awake() { #if UNITY_ANDROID && !UNITY_EDITOR webView = new WebViewAndroid(); #elif UNITY_IPHONE && !UNITY_EDITOR webView = new WebViewIOS(); #else webView = new WebViewNull(); #endif webView.Init( name ); callback = null; }
private void OnV8ContextCreated(object sender, CfrOnContextCreatedEventArgs e) { MainFrame = new ChromiumFxWebView(e.Browser, _Logger); var beforeJavascriptExecuted = BeforeJavascriptExecuted; if (beforeJavascriptExecuted == null) return; Action<string> excecute = (code) => e.Frame.ExecuteJavaScript(code, String.Empty, 0); beforeJavascriptExecuted(this, new BeforeJavascriptExcecutionArgs(excecute)); if (_SendLoadOnContextCreated) SendLoad(); }
private OidcClientOptions(string clientId, string clientSecret, string scope, string redirectUri, IWebView webView) { if (string.IsNullOrWhiteSpace(clientId)) throw new ArgumentNullException(nameof(clientId)); if (string.IsNullOrWhiteSpace(clientSecret)) throw new ArgumentNullException(nameof(clientSecret)); if (string.IsNullOrWhiteSpace(scope)) throw new ArgumentNullException(nameof(scope)); if (string.IsNullOrWhiteSpace(redirectUri)) throw new ArgumentNullException(nameof(redirectUri)); if (webView == null) throw new ArgumentNullException(nameof(webView)); ClientId = clientId; ClientSecret = clientSecret; Scope = scope; RedirectUri = redirectUri; WebView = webView; }
internal BidirectionalMapper(object iRoot, IWebView iwebview, IDispatcher UIDispatcher, JavascriptBindingMode iMode, object iadd) { _IWebView = iwebview; _JSObjectBuilder = new CSharpToJavascriptMapper(iwebview,UIDispatcher, this); _Root = _JSObjectBuilder.Map(iRoot, iadd); _UnrootedEntities = new List<IJSCSGlue>(); _BindingMode = iMode; IJavascriptListener JavascriptObjecChanges = null; if (iMode == JavascriptBindingMode.TwoWay) JavascriptObjecChanges = this; _SessionInjector = new JavascriptSessionInjector(iwebview, JavascriptObjecChanges); }
public SpeechHelper(IWebView wv) { this.wv = wv; reco = new SpeechRecognitionEngine(); GrammarBuilder gb = new GrammarBuilder(); gb.Append(getCommands()); Grammar g = new Grammar(gb); reco.LoadGrammar(g); reco.SpeechRecognized += reco_SpeechRecognized; reco.SetInputToDefaultAudioDevice(); reco.RecognizeAsync(RecognizeMode.Multiple); }
internal JavascriptSessionInjector(IWebView iWebView, IJavascriptListener iJavascriptListener) { _IWebView = iWebView; _IJavascriptListener = iJavascriptListener; _IWebView.Run(() => { _Listener = _IWebView.Factory.CreateObject(false); if (_IJavascriptListener != null) { _Listener.Bind("TrackChanges", _IWebView, (c, o, e) => _IJavascriptListener.OnJavaScriptObjectChanges(e[0], e[1].GetStringValue(), e[2])); _Listener.Bind("TrackCollectionChanges", _IWebView, (c, o, e) => _IJavascriptListener.OnJavaScriptCollectionChanges(e[0], e[1].GetArrayElements(), e[2].GetArrayElements(), e[3].GetArrayElements())); } }); }
internal JavascriptSessionInjector(IWebView iWebView, IJSOBuilder iGlobalBuilder, IJavascriptListener iJavascriptListener) { _IWebView = iWebView; _GlobalBuilder = iGlobalBuilder; _IJavascriptListener = iJavascriptListener; if (_IJavascriptListener != null) { _Listener = _GlobalBuilder.CreateJSO(); _Listener.Bind("TrackChanges", false, (o, e) => _IJavascriptListener.OnJavaScriptObjectChanges((JSObject)e.Arguments[0], (string)e.Arguments[1], e.Arguments[2])); _Listener.Bind("TrackCollectionChanges", false, (o, e) => _IJavascriptListener.OnJavaScriptCollectionChanges((JSObject)e.Arguments[0], (JSValue[])e.Arguments[1], (JSValue[])e.Arguments[2], (JSValue[])e.Arguments[3])); } else _Listener = new JSObject(); }
private async Task InitAsync(string ipath, IWebSessionLogger logger) { var taskLoaded = new TaskCompletionSource<object>(); WebCore.QueueWork( () => { _CurrentWebView = WebCore.CreateWebView(500, 500); var uri = new Uri(ipath); _CurrentWebView.Source = uri; WebView = new AwesomiumWebView(_CurrentWebView); _AwesomiumTestHTMLWindowProvider = new AwesomiumTestHTMLWindowProvider(WebView, uri); var viewReadyExecuter = new ViewReadyExecuter(_CurrentWebView, () => { taskLoaded.TrySetResult(null); }); viewReadyExecuter.Do(); }); await taskLoaded.Task; }
public Test_ConvertToJSO() { _WebView = WebCore.CreateWebView(500, 500, WebViewType.Offscreen); _IJSOBuilder = new LocalBuilder(_WebView); _ICSharpMapper = Substitute.For<IJSCBridgeCache>(); _ICSharpMapper.GetCached(Arg.Any<object>()).Returns((IJSCSGlue)null); _ConverTOJSO = new CSharpToJavascriptMapper(_IJSOBuilder, _ICSharpMapper); _Test = new Test { S1 = "string", I1 = 25 }; _Tests = new List<Test>(); _Tests.Add(new Test() { S1 = "string1", I1 = 1 }); _Tests.Add(new Test() { S1 = "string2", I1 = 2 }); _Test2 = new Test2() { T1 = _Test, T2 = _Test }; _Tests_NG = new ArrayList(); _Tests_NG.Add(_Tests[0]); _Tests_NG.Add(_Tests[0]); }
public static Task<IAwesomeBinding> Bind(IWebView view, string iViewModel, Action First = null, Action CleanUp = null) { TaskCompletionSource<IAwesomeBinding> tcs = new TaskCompletionSource<IAwesomeBinding>(); view.ExecuteWhenReady(() => { if (First != null) First(); JSObject json = view.ExecuteJavascriptWithResult("JSON"); var root = json.Invoke("parse", new JSValue(iViewModel)); var injector = new JavascriptSessionInjector(view, new GlobalBuilder(view, "MVVMGlue"), null); var mappedroot = injector.Map(root, null); injector.RegisterInSession(mappedroot); tcs.SetResult(new StringBinding(mappedroot, injector, CleanUp)); }); return tcs.Task; }