示例#1
0
文件: UnoHostView.cs 项目: zzyzy/uno
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            if (GetTemplateChild("PART_Browser") is ChromiumWebBrowser browser)
            {
                _browser = browser;

                _browser.FrameLoadEnd += Browser_FrameLoadEnd;
                _browser.IsBrowserInitializedChanged += Browser_IsBrowserInitializedChanged;
                _browser.ConsoleMessage        += Browser_ConsoleMessage;
                _browser.DownloadHandler        = new UnoDownloadHandler();
                _browser.ResourceHandlerFactory = _handlerFactory = new UnoResourceHandlerFactory();

                RegisterResourceHandlers();

                _browser.JavascriptObjectRepository.ResolveObject += (sender, e) =>
                {
                    var repo = e.ObjectRepository;

                    if (e.ObjectName == "UnoDispatch")
                    {
                        repo.Register("UnoDispatch", new UnoDispatch(), options: BindingOptions.DefaultBinder);
                    }
                };

                var loop = new System.Reactive.Concurrency.EventLoopScheduler();
                Windows.UI.Core.CoreDispatcher.DispatchOverride = d => loop.Schedule(d);

                Uno.Foundation.WebAssemblyRuntime.InvokeJSOverride = InvokeJS;
            }
            else
            {
                throw new InvalidOperationException("Unable to find PART_Browser");
            }
        }