private void Control_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e) { var args = new WebViewLoadingEventArgs(new Uri(e.Uri), true); Callback.OnDocumentLoading(Widget, args); e.Cancel = args.Cancel; }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void E_DocumentLoading(object sender, WebViewLoadingEventArgs e) { Rhino.RhinoApp.WriteLine(e.Uri.ToString()); Rhino.RhinoApp.WriteLine(index); if (e.Uri.AbsolutePath != index && IndexLoaded) { e.Cancel = true; var result = ""; var deserializedObject = new TestObject(); if (e.Uri.ToString().Contains("sayhi")) { result = Wv.ExecuteScript("SayHi(\"Luis\"); return payload;"); deserializedObject = JsonConvert.DeserializeObject <TestObject>(result); } if (e.Uri.ToString().Contains("returndata")) { result = Wv.ExecuteScript("ReturnData(1000); return payload;"); deserializedObject = JsonConvert.DeserializeObject <TestObject>(result); } Rhino.RhinoApp.WriteLine(deserializedObject.ReturnValue); foreach (var num in deserializedObject.Numbers) { Rhino.RhinoApp.Write("{0}{1}", num, ","); } Rhino.RhinoApp.WriteLine(); } }
public override void AttachEvent(string handler) { switch (handler) { case WebView.DocumentLoadedEvent: Control.LoadCompleted += delegate(object sender, swn.NavigationEventArgs e) { var args = new WebViewLoadedEventArgs(e.Uri); Widget.OnDocumentLoaded(args); Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(this.DocumentTitle)); HookDocumentEvents(); }; break; case WebView.DocumentLoadingEvent: Control.Navigating += delegate(object sender, swn.NavigatingCancelEventArgs e) { var args = new WebViewLoadingEventArgs(e.Uri, true); Widget.OnDocumentLoading(args); e.Cancel = args.Cancel; }; break; case WebView.OpenNewWindowEvent: case WebView.DocumentTitleChangedEvent: HookDocumentEvents(handler); break; default: base.AttachEvent(handler); break; } }
public void HandleNavigationPolicyDecisitionRequested(object o, WebKit.NavigationPolicyDecisionRequestedArgs args) { var handler = Handler; if (args.Request.Uri.StartsWith(EtoReturnPrefix, StringComparison.Ordinal)) { // pass back the response to ExecuteScript() handler.scriptReturnValue = Uri.UnescapeDataString(args.Request.Uri.Substring(EtoReturnPrefix.Length).Replace('+', ' ')); handler.returnResetEvent.Set(); args.PolicyDecision.Ignore(); } else { var e = new WebViewLoadingEventArgs(new Uri(args.Request.Uri), false); handler.Callback.OnDocumentLoading(handler.Widget, e); if (e.Cancel) { args.PolicyDecision.Ignore(); } else { args.PolicyDecision.Use(); } } }
private void Browser_DocumentLoading(object sender, WebViewLoadingEventArgs e) { Rhino.RhinoApp.WriteLine("Browser: Document Loading"); Rhino.RhinoApp.WriteLine(e.Uri.ToString()); e.Cancel = true; }
public override void AttachEvent(string handler) { switch (handler) { case WebView.NavigatedEvent: Control.Navigated += (s, e) => Callback.OnNavigated(Widget, new WebViewLoadedEventArgs(e.Url)); break; case WebView.DocumentLoadedEvent: Control.DocumentCompleted += (sender, e) => Callback.OnDocumentLoaded(Widget, new WebViewLoadedEventArgs(e.Url)); break; case WebView.DocumentLoadingEvent: Control.Navigating += (sender, e) => { var args = new WebViewLoadingEventArgs(e.Url, false); Callback.OnDocumentLoading(Widget, args); e.Cancel = args.Cancel; }; break; case WebView.OpenNewWindowEvent: HookDocumentEvents(handler); break; case WebView.DocumentTitleChangedEvent: Control.DocumentTitleChanged += (sender, e) => Callback.OnDocumentTitleChanged(Widget, new WebViewTitleEventArgs(Control.DocumentTitle)); break; default: base.AttachEvent(handler); break; } }
private void WebViewHandler_DecidePolicy(object o, GLib.SignalArgs args) { var decision = (GLib.Object)args.Args[0]; var type = (int)args.Args[1]; if (type != 0 && type != 1) { return; } var request = NativeMethods.webkit_navigation_policy_decision_get_request(decision.Handle); var uri = new Uri(NativeMethods.webkit_uri_request_get_uri(request)); switch (type) { case 0: // WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION var loadingArgs = new WebViewLoadingEventArgs(uri, true); documentLoading?.Invoke(this, loadingArgs); args.RetVal = loadingArgs.Cancel; break; case 1: // WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION var newWindowArgs = new WebViewNewWindowEventArgs(uri, ""); openNewWindow?.Invoke(this, newWindowArgs); args.RetVal = newWindowArgs.Cancel; break; } }
public override void AttachEvent(string handler) { switch (handler) { case WebView.DocumentLoadedEvent: this.Control.FinishedLoad += delegate(object sender, MonoMac.WebKit.WebFrameEventArgs e) { Widget.OnDocumentLoaded(new WebViewLoadedEventArgs(this.Url)); }; break; case WebView.DocumentLoadingEvent: this.Control.DecidePolicyForNavigation += (sender, e) => { var args = new WebViewLoadingEventArgs(new Uri(e.Request.Url.AbsoluteString), e.Frame == Control.MainFrame); Widget.OnDocumentLoading(args); if (args.Cancel) { e.DecisionToken.PerformSelector(new Selector("ignore"), null, 0); } else { e.DecisionToken.PerformSelector(new Selector("use"), null, 0); } }; break; case WebView.OpenNewWindowEvent: this.Control.UICreateWebView = new MonoMac.WebKit.CreateWebViewFromRequest((sender, e) => { newWindowHandler = new NewWindowHandler { Handler = this }; return(newWindowHandler.WebView); }); this.Control.DecidePolicyForNewWindow += (sender, e) => { var args = new WebViewNewWindowEventArgs(new Uri(e.Request.Url.AbsoluteString), e.NewFrameName); Widget.OnOpenNewWindow(args); if (!args.Cancel) { NSWorkspace.SharedWorkspace.OpenUrl(e.Request.Url); } e.DecisionToken.PerformSelector(new Selector("ignore"), null, 0); }; break; case WebView.DocumentTitleChangedEvent: this.Control.ReceivedTitle += delegate(object sender, MonoMac.WebKit.WebFrameTitleEventArgs e) { Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(e.Title)); }; break; default: base.AttachEvent(handler); break; } }
public override void AttachEvent(string handler) { switch (handler) { case WebView.DocumentLoadedEvent: Control.LoadingStateChanged += (sender, e) => { if (!Control.Browser.IsLoading) { Control.Dispatcher.BeginInvoke(new Action(() => { Widget.OnDocumentLoaded(new WebViewLoadedEventArgs(this.Url)); })); } }; break; case WebView.DocumentLoadingEvent: Control.BeforeNavigation += (sender, e) => { var args = new WebViewLoadingEventArgs(new Uri(e.Request.Url), e.Frame.IsMain); Widget.OnDocumentLoading(args); e.Cancel = args.Cancel; }; break; case WebView.OpenNewWindowEvent: Control.BeforePopup += (sender, e) => { var uri = new Uri(e.TargetUrl); if (uri.Scheme != "chrome-devtools") { var args = new WebViewNewWindowEventArgs(uri, null); Widget.OnOpenNewWindow(args); e.Cancel = args.Cancel; } }; break; case WebView.DocumentTitleChangedEvent: Control.TitleChanged += (sender, e) => { Control.Dispatcher.BeginInvoke(new Action(() => { Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(Control.Title)); })); }; break; default: base.AttachEvent(handler); break; } }
bool CefSharp.IRequestHandler.OnBeforeBrowse(CefSharp.IWebBrowser browser, CefSharp.IRequest request, CefSharp.NavigationType navigationType, bool isRedirect) { var uri = new Uri(request.Url); if (uri.Scheme != "chrome-devtools") { // hack since we can't tell if we're loading from an iframe or a new page. grr. if (uri.IsFile || navigationType != CefSharp.NavigationType.Other) { var args = new WebViewLoadingEventArgs(uri, true); Widget.OnDocumentLoading(args); return(args.Cancel); } } return(false); }
public override void AttachEvent(string handler) { switch (handler) { case WebView.DocumentLoadedEvent: Control.LoadingFrameComplete += (sender, e) => { Control.Dispatcher.BeginInvoke(new Action(() => { Widget.OnDocumentLoaded(new WebViewLoadedEventArgs(this.Url)); })); }; break; case WebView.DocumentLoadingEvent: Control.BeginNavigation += (sender, e) => { // this doesn't actually work, but is needed for our use! //Control.LoadingFrame += (sender, e) => { var args = new WebViewLoadingEventArgs(e.Url, true); Widget.OnDocumentLoading(args); if (args.Cancel) { Control.Stop(); // does not work!! } }; break; case WebView.OpenNewWindowEvent: Control.ShowCreatedWebView += (sender, e) => { var args = new WebViewNewWindowEventArgs(e.TargetURL, null); Widget.OnOpenNewWindow(args); e.Cancel = args.Cancel; }; break; case WebView.DocumentTitleChangedEvent: Control.TitleChanged += (sender, e) => { Control.Dispatcher.BeginInvoke(new Action(() => { Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(e.Title)); })); }; break; default: base.AttachEvent(handler); break; } }
static void HandleDecidePolicyForNavigation(object sender, wk.WebNavigationPolicyEventArgs e) { var handler = GetHandler(e.Frame.WebView) as WebViewHandler; if (handler != null) { var args = new WebViewLoadingEventArgs(new Uri(e.Request.Url.AbsoluteString), e.Frame == handler.Control.MainFrame); handler.Widget.OnDocumentLoading(args); if (args.Cancel) { e.DecisionToken.PerformSelector(selIgnore, null, 0); } else { e.DecisionToken.PerformSelector(selUse, null, 0); } } }
public void HandleNavigationRequested(object o, WebKit.NavigationRequestedArgs args) { var handler = Handler; if (args.Request.Uri.StartsWith(EtoReturnPrefix, StringComparison.Ordinal)) { // pass back the response to ExecuteScript() var tcs = handler.jscs?.Count > 0 ? handler.jscs?.Dequeue() : null; tcs?.SetResult(Uri.UnescapeDataString(args.Request.Uri.Substring(EtoReturnPrefix.Length).Replace('+', ' '))); args.RetVal = WebKit.NavigationResponse.Ignore; } else { var e = new WebViewLoadingEventArgs(new Uri(args.Request.Uri), false); handler.Callback.OnDocumentLoading(handler.Widget, e); args.RetVal = e.Cancel ? WebKit.NavigationResponse.Ignore : WebKit.NavigationResponse.Accept; } }
public void HandleNavigationRequested(object o, WebKit.NavigationRequestedArgs args) { var handler = Handler; if (args.Request.Uri.StartsWith(EtoReturnPrefix, StringComparison.Ordinal)) { // pass back the response to ExecuteScript() handler.scriptReturnValue = HttpUtility.UrlDecode(args.Request.Uri.Substring(EtoReturnPrefix.Length)); handler.returnResetEvent.Set(); args.RetVal = WebKit.NavigationResponse.Ignore; } else { var e = new WebViewLoadingEventArgs(new Uri(args.Request.Uri), false); handler.Widget.OnDocumentLoading(e); args.RetVal = e.Cancel ? WebKit.NavigationResponse.Ignore : WebKit.NavigationResponse.Accept; } }
public override void AttachEvent(string handler) { switch (handler) { #if TODO_XAML case WebView.NavigatedEvent: this.Control.Navigated += (sender, e) => { Widget.OnNavigated(new WebViewLoadedEventArgs(e.Url)); }; break; case WebView.DocumentLoadedEvent: this.Control.DocumentCompleted += (sender, e) => { Widget.OnDocumentLoaded(new WebViewLoadedEventArgs(e.Url)); }; break; case WebView.DocumentLoadingEvent: this.Control.Navigating += (sender, e) => { var args = new WebViewLoadingEventArgs(e.Url, false); Widget.OnDocumentLoading(args); e.Cancel = args.Cancel; }; break; case WebView.OpenNewWindowEvent: HookDocumentEvents(handler); break; case WebView.DocumentTitleChangedEvent: this.Control.DocumentTitleChanged += delegate { Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(Control.DocumentTitle)); }; break; #endif default: base.AttachEvent(handler); break; } }
public override void AttachEvent(string id) { switch (id) { case WebView.NavigatedEvent: Control.Navigated += (sender, e) => { var args = new WebViewLoadedEventArgs(e.Uri); Callback.OnNavigated(Widget, args); }; break; case WebView.DocumentLoadedEvent: Control.LoadCompleted += (sender, e) => { var args = new WebViewLoadedEventArgs(e.Uri); Callback.OnDocumentLoaded(Widget, args); Callback.OnDocumentTitleChanged(Widget, new WebViewTitleEventArgs(DocumentTitle)); HookDocumentEvents(); }; break; case WebView.DocumentLoadingEvent: Control.Navigating += (sender, e) => { var args = new WebViewLoadingEventArgs(e.Uri, true); Callback.OnDocumentLoading(Widget, args); e.Cancel = args.Cancel; }; break; case WebView.OpenNewWindowEvent: case WebView.DocumentTitleChangedEvent: HookDocumentEvents(id); HandleEvent(WebView.NavigatedEvent); break; default: base.AttachEvent(id); break; } }
protected override void HandleAction(WebViewLoadingEventArgs e) { var historyIndex = e.Uri.LocalPath.IndexOf(LOAD_HISTORY_PREFIX, StringComparison.Ordinal); if (historyIndex >= 0) { LoadHistory(); return; } var joinRoomIndex = e.Uri.LocalPath.IndexOf(JOIN_ROOM_PREFIX, StringComparison.Ordinal); if (joinRoomIndex >= 0) { Channel.Server.JoinChannel(e.Uri.PathAndQuery.Substring(joinRoomIndex + JOIN_ROOM_PREFIX.Length)); return; } base.HandleAction(e); }
void HandleDocumentLoading(object sender, WebViewLoadingEventArgs e) { if (e.IsMainFrame) { Debug.Print("Loading {0}", e.Uri); if (e.Uri.IsFile || e.Uri.IsLoopback) { Application.Instance.AsyncInvoke(delegate { HandleAction(e); }); e.Cancel = true; } else { Application.Instance.AsyncInvoke(delegate { Application.Instance.Open(e.Uri.AbsoluteUri); }); e.Cancel = true; } } }
protected virtual void HandleAction(WebViewLoadingEventArgs e) { FinishLoad(); }
public override void AttachEvent(string handler) { switch (handler) { case WebView.DocumentLoadedEvent: Control.LoadFinished += delegate(object o, WebKit.LoadFinishedArgs args) { Widget.OnDocumentLoaded(new WebViewLoadedEventArgs(args.Frame.Uri != null ? new Uri(args.Frame.Uri) : null)); }; break; case WebView.DocumentLoadingEvent: Control.NavigationRequested += delegate(object o, WebKit.NavigationRequestedArgs args) { if (args.Request.Uri.StartsWith(EtoReturnPrefix)) { // pass back the response to ExecuteScript() this.scriptReturnValue = HttpUtility.UrlDecode(args.Request.Uri.Substring(EtoReturnPrefix.Length)); returnResetEvent.Set(); args.RetVal = WebKit.NavigationResponse.Ignore; } else { var e = new WebViewLoadingEventArgs(new Uri(args.Request.Uri), false); Widget.OnDocumentLoading(e); if (e.Cancel) { args.RetVal = WebKit.NavigationResponse.Ignore; } else { args.RetVal = WebKit.NavigationResponse.Accept; } } }; break; case WebView.OpenNewWindowEvent: // note: requires libwebkitgtk 1.1.4+ Control.NewWindowPolicyDecisionRequested += (sender, args) => { var e = new WebViewNewWindowEventArgs(new Uri(args.Request.Uri), args.Frame.Name); Widget.OnOpenNewWindow(e); if (e.Cancel) { args.Decision.Ignore(); } else { args.Decision.Use(); } args.RetVal = true; }; break; case WebView.DocumentTitleChangedEvent: Control.TitleChanged += delegate(object o, WebKit.TitleChangedArgs args) { Widget.OnDocumentTitleChanged(new WebViewTitleEventArgs(args.Title)); }; break; default: base.AttachEvent(handler); break; } }