コード例 #1
0
 public FakeHTMLWindow(CfxClient cfxClient, IWebView webview, Uri url) 
 {
     _Uri = url;
     _Webview = webview;
     _CfxClient = cfxClient;
     _CfxClient.GetDisplayHandler += OnGetDisplayHandler;
 }
コード例 #2
0
ファイル: DocModel.cs プロジェクト: yerumaku/DocWriter
 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));
 }
コード例 #3
0
 public FakeHTMLWindow(CfxClient cfxClient, IWebView webview, Uri url)
 {
     _Uri       = url;
     _Webview   = webview;
     _CfxClient = cfxClient;
     _CfxClient.GetDisplayHandler += OnGetDisplayHandler;
 }
コード例 #4
0
ファイル: WebViewBehavior.cs プロジェクト: lbddk/ahzs-client
    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;
    }
コード例 #5
0
        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]);
        }
コード例 #6
0
 public JsResultCommand(IWebView webView, IJavascriptToCSharpConverter converter, IResultCommand resultCommand)
 {
     _WebView = webView;
     _JavascriptToCSharpConverter = converter;
     _JSResultCommand = resultCommand;
     JSValue = _WebView.Factory.CreateObject(true);
 }
コード例 #7
0
        internal IWebView GetContext(CefFrame frame)
        {
            IWebView res = null;

            _Associated.TryGetValue(frame.Identifier, out res);
            return(res);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
 public JsSimpleCommand(IWebView webView, IJavascriptToCSharpConverter converter, ISimpleCommand simpleCommand)
 {
     _WebView = webView;
     _JavascriptToCSharpConverter = converter;
     _JSSimpleCommand             = simpleCommand;
     JSValue = _WebView.Factory.CreateObject(true);
 }
コード例 #10
0
        public WebViewBridge(IWebView webView, ViewModelBase viewModel)
        {
            _webView = webView;
            _bridge  = new Bridge(viewModel, this);

            _webView.NativeViewInitialized += (sender, args) => _webView.DocumentReady += (sender2, args2) => Initialize();
        }
コード例 #11
0
        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;
        }
コード例 #12
0
ファイル: ContentView.cs プロジェクト: mrsteamfist/nwv
 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));
         }
     }
 }
コード例 #13
0
        public WebViewBridge(IWebView webView, ViewModelBase viewModel)
        {
            _webView = webView;
            _bridge = new Bridge(viewModel, this);

            _webView.NativeViewInitialized += (sender, args) => _webView.DocumentReady += (sender2, args2) => Initialize();
        }
コード例 #14
0
 private JSGenericObject(IWebView context, IJavascriptObject value)
 {
     JSValue = value;
     _MappedJSValue = value;
     CValue = null;
     _CefV8Context = context;
 }
コード例 #15
0
        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));
        }
コード例 #16
0
        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();
            }
        }
コード例 #17
0
        public void InvokeNoResult(string functionName, IWebView context, params IJavascriptObject[] parameters)
        {
            var function = _CfrV8Value.GetValue(functionName);
            var res      = function.ExecuteFunction(_CfrV8Value, parameters.Convert());

            res?.Dispose();
        }
コード例 #18
0
 public MobxJavascriptViewModelUpdater(IWebView webView, Lazy <IJavascriptObject> helper, IJavascriptObject listener, IWebSessionLogger logger)
 {
     _WebView        = webView;
     _Listener       = listener;
     _Logger         = logger;
     _MobxHelperLazy = helper;
 }
コード例 #19
0
        private Action GetLast(IWebView view)
        {
            if (ManageWebSession) 
                return () => view.Dispose();

            return null;
        }
コード例 #20
0
        private Action GetFirst(IWebView view)
        {
            if (InjectionTimeOut != -1)
                return () => view.SynchronousMessageTimeout = InjectionTimeOut;

            return null;
        }
コード例 #21
0
 public static Task <T> InvokeScriptFunctionAsync <T>(
     this IWebView webView,
     string function,
     params object[] args)
 {
     return(InvokeScriptFunctionAsync <T>(webView, "window", function, args));
 }
コード例 #22
0
 private JSGenericObject(IWebView context, IJavascriptObject value)
 {
     JSValue        = value;
     _MappedJSValue = value;
     CValue         = null;
     _CefV8Context  = context;
 }
コード例 #23
0
        /// <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);
            }
        }
コード例 #24
0
 public VueJavascriptViewModelUpdater(IWebView webView, IJavascriptObject listener, Lazy<IJavascriptObject> vueHelper, IWebSessionLogger logger)
 {
     _WebView = webView;
     _Listener = listener;
     _VueHelper = vueHelper;
     _Logger = logger;
 }
コード例 #25
0
 public static Task <JToken> InvokeJavaScriptFunctionWithJTokenResponse(
     this IWebView webView,
     string function,
     params object[] args)
 {
     return(InvokeJavaScriptFunctionWithJTokenResponse(webView, "window", function, args));
 }
コード例 #26
0
        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));
        }
コード例 #27
0
ファイル: WebViewExtensions.cs プロジェクト: hevey/maui
 public static void UpdateSource(this WKWebView nativeWebView, IWebView webView, IWebViewDelegate?webViewDelegate)
 {
     if (webViewDelegate != null)
     {
         webView.Source?.Load(webViewDelegate);
     }
 }
コード例 #28
0
        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());
        }
コード例 #29
0
 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));
 }
コード例 #30
0
        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;
        }
コード例 #31
0
 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();
 }
コード例 #32
0
        /// <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);
        }
コード例 #33
0
 public JsResultCommand(IWebView webView, IJavascriptToCSharpConverter converter, IResultCommand resultCommand)
 {
     _WebView = webView;
     _JavascriptToCSharpConverter = converter;
     _JSResultCommand             = resultCommand;
     JSValue = _WebView.Factory.CreateObject(true);
 }
コード例 #34
0
        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);
        }
コード例 #35
0
        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);
        }
コード例 #36
0
 public static void CaptchaSolved(this IWebView view)
 {
     if (captchaSolvedSignal != null)
     {
         captchaSolvedSignal.Release();
     }
 }
コード例 #37
0
 public AwesomiumWebView(IWebView iwebview)
 {
     _IWebView   = iwebview;
     _Dispatcher = new AwesomiumDispatcher();
     _AwesomiumJavascriptObjectConverter = new AwesomiumJavascriptObjectConverter(_IWebView);
     _AwesomiumJavascriptObjectFactory   = new AwesomiumJavascriptObjectFactory(_IWebView);
 }
コード例 #38
0
 public JavascriptObjectBulkBuilderStrategy(IWebView webView, ISessionCache cache, bool mapping)
 {
     _Mapping = mapping;
     _WebView = webView;
     _Cache   = cache;
     _Factory = new Lazy <BulkJsHelper>(FactoryBuilder);
 }
コード例 #39
0
 public static Task <Dictionary <string, object> > InvokeScriptFunctionWithDicionaryResponseAsync(
     this IWebView webView,
     string function,
     params object[] args)
 {
     return(InvokeScriptFunctionWithDicionaryResponseAsync(webView, "window", function, args));
 }
コード例 #40
0
        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));
        }
コード例 #41
0
 public VueJavascriptViewModelUpdater(IWebView webView, IJavascriptObject listener, Lazy <IJavascriptObject> vueHelper, IWebSessionLogger logger)
 {
     _WebView   = webView;
     _Listener  = listener;
     _VueHelper = vueHelper;
     _Logger    = logger;
 }
コード例 #42
0
        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));
        }
コード例 #43
0
 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);    
 }
コード例 #44
0
 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);
         });
 }
コード例 #45
0
ファイル: WoodCore.cs プロジェクト: wnf0000/Wood
 public WoodCore(IWebView webView)
 {
     Instances.Add (this);
     Addr = Guid.NewGuid().ToString("N");
     FullPrefix = BasePrefix + Addr + "/";
     this.webView = webView;
     HttpListener.Prefixes.Add(FullPrefix);
     Start();
 }
コード例 #46
0
        public AwesomiumHTMLWindow(WebControl iWebControl)
        {
            _WebControl = iWebControl;
            _WebControl.SynchronousMessageTimeout = 0;
            _WebControl.ExecuteWhenReady(FireLoaded);
            _WebControl.ConsoleMessage += _WebControl_ConsoleMessage;
            _WebControl.Crashed += _WebControl_Crashed;

            MainFrame = new AwesomiumWebView(_WebControl);
        }
コード例 #47
0
 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);
     }           
 }
コード例 #48
0
 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;
 }
コード例 #49
0
 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);
         }
         );
 }
コード例 #50
0
 /// <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));
 }
コード例 #51
0
    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;
    }
コード例 #52
0
        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();
        }
コード例 #53
0
        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;
        }
コード例 #54
0
        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);
        }
コード例 #55
0
ファイル: SpeechHelper.cs プロジェクト: N0NamedGuy/KinectTV
        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);
        }
コード例 #56
0
        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()));
                    }
                });
        }
コード例 #57
0
        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;
        }      
コード例 #59
0
        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]);
        }
コード例 #60
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;
        }