105 lines
3.6 KiB
C#
105 lines
3.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Cef3;
|
|
|
|
namespace Sashulin.common
|
|
{
|
|
public sealed class ClientBrowser : CefClient
|
|
{
|
|
private readonly CwbLifeSpanHandler _lifeSpanHandler;
|
|
private readonly CwbDisplayHandler _displayHandler;
|
|
private readonly CwbLoadHandler _loadHandler;
|
|
private readonly CwbKeyboardHandler _keyboardHandler;
|
|
private readonly FileDownloadHandler _fileDownloadHandler;
|
|
private readonly CwbRequestHandler _requestHandler;
|
|
private readonly CwbRenderHandler _renderHandler;
|
|
private readonly CwbMenuHandler _menuHandler;
|
|
|
|
private ChromeWebBrowser webBrowser;
|
|
public ClientBrowser(ChromeWebBrowser browser)
|
|
{
|
|
webBrowser = browser;
|
|
_lifeSpanHandler = new CwbLifeSpanHandler(browser);
|
|
_displayHandler = new CwbDisplayHandler(browser);
|
|
_loadHandler = new CwbLoadHandler(browser);
|
|
_keyboardHandler = new CwbKeyboardHandler(browser);
|
|
_fileDownloadHandler = new FileDownloadHandler(browser);
|
|
_requestHandler = new CwbRequestHandler(browser);
|
|
_renderHandler = new CwbRenderHandler(browser);
|
|
_menuHandler = new CwbMenuHandler(browser);
|
|
}
|
|
|
|
protected override CefLifeSpanHandler GetLifeSpanHandler()
|
|
{
|
|
return _lifeSpanHandler;
|
|
}
|
|
|
|
protected override CefDisplayHandler GetDisplayHandler()
|
|
{
|
|
return _displayHandler;
|
|
}
|
|
|
|
protected override CefLoadHandler GetLoadHandler()
|
|
{
|
|
return _loadHandler;
|
|
}
|
|
|
|
protected override CefKeyboardHandler GetKeyboardHandler()
|
|
{
|
|
return _keyboardHandler;
|
|
}
|
|
|
|
protected override bool OnProcessMessageReceived(CefBrowser browser, CefProcessId sourceProcess, CefProcessMessage message)
|
|
{
|
|
Console.WriteLine("Client::OnProcessMessageReceived: SourceProcess={0}", sourceProcess);
|
|
Console.WriteLine("Message Name={0} IsValid={1} IsReadOnly={2}", message.Name, message.IsValid, message.IsReadOnly);
|
|
var arguments = message.Arguments;
|
|
for (var i = 0; i < arguments.Count; i++)
|
|
{
|
|
var type = arguments.GetValueType(i);
|
|
object value;
|
|
switch (type)
|
|
{
|
|
case CefValueType.Null: value = null; break;
|
|
case CefValueType.String: value = arguments.GetString(i); break;
|
|
case CefValueType.Int: value = arguments.GetInt(i); break;
|
|
case CefValueType.Double: value = arguments.GetDouble(i); break;
|
|
case CefValueType.Bool: value = arguments.GetBool(i); break;
|
|
default: value = null; break;
|
|
}
|
|
|
|
Console.WriteLine(" [{0}] ({1}) = {2}", i, type, value);
|
|
}
|
|
|
|
if (message.Name == "myMessage2" || message.Name == "myMessage3") return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
protected override CefDownloadHandler GetDownloadHandler()
|
|
{
|
|
return _fileDownloadHandler;
|
|
}
|
|
protected override CefRenderHandler GetRenderHandler()
|
|
{
|
|
return _renderHandler;
|
|
}
|
|
|
|
protected override CefRequestHandler GetRequestHandler()
|
|
{
|
|
return _requestHandler;
|
|
}
|
|
|
|
protected override CefJSDialogHandler GetJSDialogHandler()
|
|
{
|
|
return base.GetJSDialogHandler();
|
|
}
|
|
protected override CefContextMenuHandler GetContextMenuHandler()
|
|
{
|
|
return _menuHandler;
|
|
}
|
|
|
|
}
|
|
}
|