internal class CefSharpSchemeHandlerFactory : ISchemeHandlerFactory
{
public const string SchemeName = "http";
public ISchemeHandler Create()
{
return new CefSharpSchemeHandler();
}
}
internal class CefSharpSchemeHandler : ISchemeHandler
{
public bool ProcessRequestAsync(IRequest request, ISchemeHandlerResponse response, OnRequestCompletedHandler requestCompletedCallback)
{
// TODO some stuff ......
// Return false to execute the default behaviour
return false;
}
}
private static void BrowserFrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
if (e.IsMainFrame)
{
browser.FrameLoadEnd -= BrowserFrameLoadEnd;
}
}
static void Main(string[] args)
{
const string testUrl1 = "http://httpbin.org/";
const string testUrl2 = "https://httpbin.org/";
CefSettings set = new CefSettings();
set.RegisterScheme(new CefCustomScheme()
{
SchemeName = CefSharpSchemeHandlerFactory.
schemeName
,
SchemeHandlerFactory = new CefSharpSchemeHandlerFactory()
});
Cef.Initialize(set);
browser = new ChromiumWebBrowser();
browser.FrameLoadEnd += BrowserFrameLoadEnd;
browser.Load(testUrl1);
Console.ReadKey();
Cef.Shutdown();
}