2017-11-22 17:43:48 +01:00
|
|
|
unit uMyV8Handler;
|
2017-07-25 22:50:34 +02:00
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
uses
|
2018-03-21 11:21:41 +01:00
|
|
|
uCEFTypes, uCEFInterfaces, uCEFv8Value, uCEFProcessMessage, uCEFv8Handler, uCEFv8Context;
|
|
|
|
|
|
|
|
const
|
|
|
|
TEST_MESSAGE_NAME = 'test_message';
|
2017-07-25 22:50:34 +02:00
|
|
|
|
|
|
|
type
|
2017-11-22 17:43:48 +01:00
|
|
|
TMyV8Handler = class(TCefv8HandlerOwn)
|
|
|
|
protected
|
|
|
|
function Execute(const name: ustring; const obj: ICefv8Value; const arguments: TCefv8ValueArray; var retval: ICefv8Value; var exception: ustring): Boolean; override;
|
2017-07-25 22:50:34 +02:00
|
|
|
end;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
2017-11-22 17:43:48 +01:00
|
|
|
function TMyV8Handler.Execute(const name : ustring;
|
|
|
|
const obj : ICefv8Value;
|
|
|
|
const arguments : TCefv8ValueArray;
|
|
|
|
var retval : ICefv8Value;
|
|
|
|
var exception : ustring): Boolean;
|
2018-03-21 11:21:41 +01:00
|
|
|
var
|
2019-10-13 18:50:23 +02:00
|
|
|
TempMessage : ICefProcessMessage;
|
|
|
|
TempFrame : ICefFrame;
|
2017-07-25 22:50:34 +02:00
|
|
|
begin
|
2019-10-13 18:50:23 +02:00
|
|
|
Result := False;
|
2018-03-21 11:21:41 +01:00
|
|
|
|
2019-10-13 18:50:23 +02:00
|
|
|
try
|
|
|
|
if (name = 'myfunc') then
|
|
|
|
begin
|
|
|
|
TempMessage := TCefProcessMessageRef.New(TEST_MESSAGE_NAME);
|
|
|
|
TempMessage.ArgumentList.SetString(0, 'Message received!');
|
|
|
|
|
|
|
|
TempFrame := TCefv8ContextRef.Current.Browser.MainFrame;
|
|
|
|
|
|
|
|
if (TempFrame <> nil) and TempFrame.IsValid then
|
|
|
|
TempFrame.SendProcessMessage(PID_BROWSER, TempMessage);
|
|
|
|
|
|
|
|
retval := TCefv8ValueRef.NewString('My Value!');
|
|
|
|
Result := True;
|
|
|
|
end;
|
|
|
|
finally
|
|
|
|
TempMessage := nil;
|
|
|
|
end;
|
2017-07-25 22:50:34 +02:00
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
end.
|