Disclosure Statement: This site contains affiliate links, which means that I may receive a commission if you make a purchase using these links. As an eBay Partner, I earn from qualifying purchases.
If you find these projects useful please consider becoming a sponsor with Patreon, GitHub or Liberapay.

Help on Using Custom Renderer

Post Reply
User avatar
salvadordf
Posts: 4564
Joined: Thu Feb 02, 2017 12:24 pm
Location: Spain
Contact:

Re: Help on Using Custom Renderer

Post by salvadordf »

Hi,

GlobalCEFApp creates a TCustomCefApp which creates all the handlers internally :
  • ICefResourceBundleHandler
  • ICefBrowserProcessHandler
  • ICefRenderProcessHandler
GlobalCEFApp also creates a ICefRegisterCDMCallback and the internal ICefRenderProcessHandler also creates a ICefLoadHandler.

All the handler events are exposed as GlobalCEFApp events.

For ICefBrowserProcessHandler :
  • GlobalCEFApp.OnContextInitialized
  • GlobalCEFApp.OnBeforeChildProcessLaunch
  • GlobalCEFApp.OnRenderProcessThreadCreated
  • GlobalCEFApp.OnScheduleMessagePumpWork
For ICefResourceBundleHandler :
  • GlobalCEFApp.OnGetLocalizedString
  • GlobalCEFApp.OnGetDataResource
  • GlobalCEFApp.OnGetDataResourceForScale
For ICefRenderProcessHandler :
  • GlobalCEFApp.OnRenderThreadCreated
  • GlobalCEFApp.OnWebKitInitialized
  • GlobalCEFApp.OnBrowserCreated
  • GlobalCEFApp.OnBrowserDestroyed
  • GlobalCEFApp.OnContextCreated
  • GlobalCEFApp.OnContextReleased
  • GlobalCEFApp.OnUncaughtException
  • GlobalCEFApp.OnFocusedNodeChanged
  • GlobalCEFApp.OnProcessMessageReceived

For ICefRegisterCDMCallback :
  • GlobalCEFApp.OnCDMRegistrationComplete
For ICefLoadHandler :
  • GlobalCEFApp.OnLoadingStateChange
  • GlobalCEFApp.OnLoadStart
  • GlobalCEFApp.OnLoadEnd
  • GlobalCEFApp.OnLoadError

If you want to reuse the code inside GlobalCEFApp.OnProcessMessageReceived I would suggest that you assign that event to a local procedure and then call your custom class from that procedure. For example :

Code: Select all

type
TCustomClass = class // It's just a regular TObject subclass
  public
    procedure OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; var aHandled : boolean);
end;    

procedure TCustomClass.OnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; var aHandled : boolean);
begin
// 
end;

Code: Select all

initialization
  MyCustomClass := TCustomClass.Create;

Code: Select all

procedure CreateGlobalCEFApp;
begin
  GlobalCEFApp                          := TCefApplication.Create;
  GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_OnProcessMessageReceived;
end;

Code: Select all

procedure GlobalCEFApp_OnProcessMessageReceived(const browser       : ICefBrowser;
                                                      sourceProcess : TCefProcessId;
                                                const message       : ICefProcessMessage;
                                                var   aHandled      : boolean);
begin
  MyCustomClass.OnProcessMessageReceived(browser, sourceProcess, message, aHandled);
end;
Post Reply