Beispiel #1
0
        protected ScriptDialogDeferral CreateScriptDialogDeferral(CefJSDialogCallback callback)
        {
            var deferral = new ScriptDialogDeferral(this, callback);

            _scriptDialogDeferral = deferral;
            return(deferral);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ScriptDialogOpeningEventArgs"/> class.
 /// </summary>
 /// <param name="kind">The kind of JavaScript dialog box.</param>
 /// <param name="message">The message of the dialog box.</param>
 /// <param name="reload">Indicates that the event is fired before page reloading.</param>
 /// <param name="callback"></param>
 public ScriptDialogOpeningRoutedEventArgs(string message, bool reload, ScriptDialogDeferral callback)
     : base(WebView.ScriptDialogOpeningEvent)
 {
     this.Uri      = null;
     this.Kind     = ScriptDialogKind.BeforeUnload;
     this.Message  = message;
     this.IsReload = reload;
     _callback     = callback;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ScriptDialogOpeningEventArgs"/> class.
 /// </summary>
 /// <param name="originUrl">The URI of the page that requested the dialog box.</param>
 /// <param name="kind">The kind of JavaScript dialog box.</param>
 /// <param name="message">The message of the dialog box.</param>
 /// <param name="defaultText">The default value to use for the result of the prompt JavaScript function.</param>
 /// <param name="callback"></param>
 public ScriptDialogOpeningRoutedEventArgs(string originUrl, ScriptDialogKind kind, string message, string defaultText, ScriptDialogDeferral callback)
     : base(WebView.ScriptDialogOpeningEvent)
 {
     this.Uri         = Uri.TryCreate(originUrl, UriKind.Absolute, out Uri uri) ? uri : null;
     this.Kind        = kind;
     this.Message     = message;
     this.DefaultText = defaultText;
     _callback        = callback;
 }
Beispiel #4
0
        /// <inheritdoc />
        protected override bool OnBeforeUnloadDialog(CefBrowser browser, string messageText, bool isReload, CefJSDialogCallback callback)
        {
            ScriptDialogDeferral dialogDeferral = CreateScriptDialogDeferral(callback);
            var ea = new ScriptDialogOpeningRoutedEventArgs(messageText, isReload, dialogDeferral);

            WebView.RaiseScriptDialogOpening(ea);
            if (!ea.Handled)
            {
                ((IDisposable)dialogDeferral).Dispose();
            }
            return(ea.Handled);
        }
Beispiel #5
0
        /// <inheritdoc />
        protected override bool OnJSDialog(CefBrowser browser, string originUrl, CefJSDialogType dialogType, string messageText, string defaultPromptText, CefJSDialogCallback callback, ref int suppressMessage)
        {
            ScriptDialogDeferral dialogDeferral = CreateScriptDialogDeferral(callback);
            var ea = new ScriptDialogOpeningRoutedEventArgs(originUrl, (ScriptDialogKind)dialogType, messageText, defaultPromptText, dialogDeferral);

            WebView.RaiseScriptDialogOpening(ea);
            suppressMessage = ea.Suppress ? 1 : 0;
            if (!ea.Handled)
            {
                ((IDisposable)dialogDeferral).Dispose();
            }
            return(ea.Handled);
        }
Beispiel #6
0
        private void HandleScriptDialogOpeningEvent(object sender, IScriptDialogOpeningEventArgs e)
        {
            if (e.Kind == ScriptDialogKind.Alert)
            {
                e.Handled = true;

                ScriptDialogDeferral dialogCallback = e.GetDeferral();
                Dispatcher.InvokeAsync(() => MessageBox.Show(e.Message, "WPF dialog")).Task.ContinueWith(t =>
                {
                    dialogCallback.Accept();
                });
            }
        }
Beispiel #7
0
 internal bool ReleaseScriptDialogDeferral(ScriptDialogDeferral deferral)
 {
     return(ReferenceEquals(deferral, Interlocked.CompareExchange(ref _scriptDialogDeferral, null, deferral)));
 }