So far all the examples are C++. It looks like the process is described here (in C++).
https://bitbucket.org/chromiumembedded/ ... t-bindingsMessageRouter Readme:
https://bitbucket.org/xilium/xilium.cef ... ?at=masterXilium.CefGlue.Wrapper.CefMessageRouterBrowserSide is already part of the DemoApp.
- Code: Select all
public abstract class DemoApp : IDisposable
{
public static CefMessageRouterBrowserSide BrowserMessageRouter { get; private set; }
https://bitbucket.org/xilium/xilium.cef ... oApp.cs-12The DemoApp registers the MessageRouter.
- Code: Select all
private void RegisterMessageRouter()
{
if (!CefRuntime.CurrentlyOn(CefThreadId.UI))
{
PostTask(CefThreadId.UI, this.RegisterMessageRouter);
return;
}
// window.cefQuery({ request: 'my_request', onSuccess: function(response) { console.log(response); }, onFailure: function(err,msg) { console.log(err, msg); } });
DemoApp.BrowserMessageRouter = new CefMessageRouterBrowserSide(new CefMessageRouterConfig());
DemoApp.BrowserMessageRouter.AddHandler(new DemoMessageRouterHandler());
}
You can test that JS is able to call the DemoApp by opening the developer console and entering the following command.
- Code: Select all
window.cefQuery({ request: 'noanswer', onSuccess: function(response) { console.log(response); }, onFailure: function(err,msg) { console.log(err, msg); } });
That causes the DemoMessageRouterHandler in DemoApp to be invoked on the C# side.
- Code: Select all
private class DemoMessageRouterHandler : CefMessageRouterBrowserSide.Handler
{
public override bool OnQuery(CefBrowser browser, CefFrame frame, long queryId, string request, bool persistent, CefMessageRouterBrowserSide.Callback callback)
{