15#pragma GCC diagnostic ignored "-Wunused-parameter"
16#pragma GCC diagnostic ignored "-Wshadow"
39 CefDoMessageLoopWork();
54 void Visit(
const CefString &str)
override
86 auto handle = std::make_unique<RCefWebDisplayHandle>(args.
GetFullUrl());
89 fCefApp->SetNextHandle(handle.get());
105 CefMainArgs main_args(GetModuleHandle(
nullptr));
110 const char *arg2 =
nullptr, *arg3 =
nullptr;
113 arg2 =
"--disable-web-security";
116 arg3 =
"--ozone-platform=headless";
120 char *cef_argv[] = {root_app->
Argv(0), (
char *) arg2, (
char *) arg3,
nullptr};
122 CefMainArgs main_args(cef_argc, cef_argv);
142 CefSettings settings;
145 cef_string_ascii_to_utf16(cef_main.
Data(), cef_main.
Length(), &settings.browser_subprocess_path);
150 cef_string_ascii_to_utf16(path2.
Data(), path2.
Length(), &settings.locales_dir_path);
152 cef_string_ascii_to_utf16(path3.
Data(), path3.
Length(), &settings.resources_dir_path);
158 cef_string_ascii_to_utf16(path2.
Data(), path2.
Length(), &settings.locales_dir_path);
160 cef_string_ascii_to_utf16(path3.
Data(), path3.
Length(), &settings.resources_dir_path);
166 cef_string_ascii_to_utf16(path.
Data(), path.
Length(), &settings.framework_dir_path);
169 settings.no_sandbox =
true;
178 std::string plog =
"cef.log";
179 cef_string_ascii_to_utf16(plog.c_str(), plog.length(), &settings.log_file);
181 settings.log_severity = LOGSEVERITY_ERROR;
199 CefInitialize(main_args, settings,
fCefApp.get(),
nullptr);
232 if (host) host->CloseBrowser(
true);
243 int expired = tmout_sec * 100;
244 bool did_try =
false, print_finished =
false;
246 if (!extra_args.empty() && (extra_args.find(
"--print-to-pdf=")==0))
247 pdffile = extra_args.substr(15);
249 while ((--expired > 0) &&
GetContent().empty() && !print_finished) {
253 CefDoMessageLoopWork();
257 if (pdffile.empty()) {
260 CefPdfPrintSettings settings;
271 CefDoMessageLoopWork();
293 GetMap().emplace(
"cef", std::make_unique<CefCreator>());
struct RCefCreatorReg newRCefCreatorReg
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t rect
Option_t Option_t TPoint TPoint const char mode
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
R__EXTERN TSystem * gSystem
DISALLOW_COPY_AND_ASSIGN(FrameSourceVisitor)
void Visit(const CefString &str) override
FrameSourceVisitor(RCefWebDisplayHandle *handle)
IMPLEMENT_REFCOUNTING(FrameSourceVisitor)
RCefWebDisplayHandle * fHandle
~FrameSourceVisitor() override=default
static bool PlatformResize(CefRefPtr< CefBrowser > browser, int width, int height)
static bool PlatformInit()
void OnPdfPrintFinished(const CefString &, bool ok) override
~HeadlessPrintCallback() override=default
HeadlessPrintCallback(bool *flag)
IMPLEMENT_REFCOUNTING(HeadlessPrintCallback)
DISALLOW_COPY_AND_ASSIGN(HeadlessPrintCallback)
CefRefPtr< SimpleApp > fCefApp
std::unique_ptr< ROOT::RWebDisplayHandle > Display(const ROOT::RWebDisplayArgs &args) override
CefRefPtr< CefBrowser > fBrowser
associated browser
void CloseBrowser()
Closes associated browser window.
static void AddCreator()
Add CEF creator.
bool WaitForContent(int tmout_sec, const std::string &extra_args)
Process system events until browser content is available Used in headless mode for batch production l...
unsigned fValid
used to verify if instance valid or not
~RCefWebDisplayHandle() override
Destructor Closes browser window if any.
bool Resize(int, int) override
Resize browser window.
Holds different arguments for starting browser with RWebDisplayHandle::Display() method.
THttpServer * GetHttpServer() const
returns http server instance, used for window display
int GetWidth() const
returns preferable web window width
int GetY() const
set preferable web window y position
std::string GetFullUrl() const
returns window url with append options
int GetHeight() const
returns preferable web window height
bool IsHeadless() const
returns headless mode
const std::string & GetExtraArgs() const
get extra command line arguments for starting web browser command
int GetX() const
set preferable web window x position
const std::string & GetPageContent() const
returns window url
const std::string & GetContent() const
get content
static std::map< std::string, std::unique_ptr< Creator > > & GetMap()
Static holder of registered creators of web displays.
void SetContent(const std::string &cont)
set content
static std::unique_ptr< Creator > & FindCreator(const std::string &name, const std::string &libname="")
Search for specific browser creator If not found, try to add one.
void SetNextHandle(RCefWebDisplayHandle *handle)
This class creates the ROOT Application Environment that interfaces to the windowing system eventloop...
TCefTimer(Long_t milliSec, Bool_t mode)
virtual Int_t GetValue(const char *name, Int_t dflt) const
Returns the integer value for a resource.
static const TString & GetBinDir()
Get the binary directory in the installation. Static utility function.
static const TString & GetLibDir()
Get the library directory in the installation. Static utility function.
static const TString & GetDataDir()
Get the data directory in the installation. Static utility function.
const char * Data() const
virtual void Sleep(UInt_t milliSec)
Sleep milliSec milli seconds.
virtual Bool_t ProcessEvents()
Process pending events (GUI, timers, sockets).
Handles synchronous and a-synchronous timer events.
virtual void TurnOn()
Add the timer to the system timer list.
Helper struct to add creator.