Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
gui_handler.h
Go to the documentation of this file.
1// Author: Sergey Linev <S.Linev@gsi.de>
2// Date: 2017-06-29
3// Warning: This is part of the ROOT 7 prototype! It will change without notice. It might trigger earthquakes. Feedback is welcome!
4
5/*************************************************************************
6 * Copyright (C) 1995-2023, Rene Brun and Fons Rademakers. *
7 * All rights reserved. *
8 * *
9 * For the licensing terms see $ROOTSYS/LICENSE. *
10 * For the list of contributors see $ROOTSYS/README/CREDITS. *
11 *************************************************************************/
12
13#ifndef ROOT_cef_gui_handler_h
14#define ROOT_cef_gui_handler_h
15
16#include "include/cef_client.h"
17#include "include/base/cef_ref_counted.h"
18#include "include/cef_version.h"
19#include "include/wrapper/cef_resource_manager.h"
20#include <list>
21#include <vector>
22
23namespace ROOT {
24class RLogChannel;
25}
26
28
29class THttpServer;
30
31/** \class GuiHandler
32\ingroup cefwebdisplay
33*/
34
35class GuiHandler : public CefClient,
36 public CefLifeSpanHandler,
37 public CefLoadHandler,
38 public CefDisplayHandler,
39 public CefRequestHandler,
41protected:
42
43 bool fUseViews{false}; ///<! if view framework is used, required for true headless mode
44 int fConsole{0}; ///<! console parameter, assigned via WebGui.Console rootrc parameter
45 typedef std::list<CefRefPtr<CefBrowser>> BrowserList; ///<! List of existing browser windows. Only accessed on the CEF UI thread.
47
48 std::vector<THttpServer *> fServers;
49
50 bool is_closing_{false};
51
52public:
53 explicit GuiHandler(bool use_views = false);
54
55 // Provide access to the single global instance of this object.
56 // static BaseHandler *GetInstance();
57
58 // CefClient methods:
60 CefRefPtr<CefLoadHandler> GetLoadHandler() override { return this; }
63
64 // CefLifeSpanHandler methods:
68
69 // CefLoadHandler methods:
71 const CefString &errorText, const CefString &failedUrl) override;
72
73 // CefDisplayHandler methods:
74 void OnTitleChange(CefRefPtr<CefBrowser> browser, const CefString &title) override;
75
78 const CefString &message, const CefString &source,
79 int line) override;
80
81 // Request that all existing browser windows close.
83
84 bool IsClosing() const { return is_closing_; }
85
86 // CefRequestHandler methods:
95
96 // CefResourceRequestHandler methods:
100 CefRefPtr<CefRequest> request,
101 CefRefPtr<CefCallback> callback) override;
102
106 CefRefPtr<CefRequest> request) override;
107
108 std::string AddBatchPage(const std::string &cont);
109
110 std::string MakePageUrl(THttpServer *serv, const std::string &addr);
111
112 static void PlatformInit();
113
114 static std::string GetDataURI(const std::string& data, const std::string& mime_type);
115
117
118private:
119
120 // Platform-specific implementation.
122
125
126 // Include the default reference counting implementation.
129};
130
131
132#endif // ROOT_cef_gui_handler_h
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t width
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t height
const char * mime_type
Definition civetweb.c:8517
CefRefPtr< CefResourceManager > fResourceManager
bool is_closing_
Definition gui_handler.h:50
int fConsole
! console parameter, assigned via WebGui.Console rootrc parameter
Definition gui_handler.h:44
GuiHandler(bool use_views=false)
std::vector< THttpServer * > fServers
Definition gui_handler.h:48
void OnBeforeClose(CefRefPtr< CefBrowser > browser) override
CefRefPtr< CefResourceHandler > GetResourceHandler(CefRefPtr< CefBrowser > browser, CefRefPtr< CefFrame > frame, CefRefPtr< CefRequest > request) override
bool DoClose(CefRefPtr< CefBrowser > browser) override
CefRefPtr< CefLifeSpanHandler > GetLifeSpanHandler() override
Definition gui_handler.h:59
BrowserList fBrowserList
Definition gui_handler.h:46
static bool PlatformResize(CefRefPtr< CefBrowser > browser, int width, int height)
void CloseAllBrowsers(bool force_close)
CefRefPtr< CefRequestHandler > GetRequestHandler() override
Definition gui_handler.h:62
IMPLEMENT_REFCOUNTING(GuiHandler)
int fBatchPageCount
CefRefPtr< CefResourceRequestHandler > GetResourceRequestHandler(CefRefPtr< CefBrowser > browser, CefRefPtr< CefFrame > frame, CefRefPtr< CefRequest > request, bool is_navigation, bool is_download, const CefString &request_initiator, bool &disable_default_handling) override
Definition gui_handler.h:87
void PlatformTitleChange(CefRefPtr< CefBrowser > browser, const CefString &title)
CefRefPtr< CefDisplayHandler > GetDisplayHandler() override
Definition gui_handler.h:61
cef_return_value_t OnBeforeResourceLoad(CefRefPtr< CefBrowser > browser, CefRefPtr< CefFrame > frame, CefRefPtr< CefRequest > request, CefRefPtr< CefCallback > callback) override
static void PlatformInit()
bool IsClosing() const
Definition gui_handler.h:84
void OnLoadError(CefRefPtr< CefBrowser > browser, CefRefPtr< CefFrame > frame, ErrorCode errorCode, const CefString &errorText, const CefString &failedUrl) override
static std::string GetDataURI(const std::string &data, const std::string &mime_type)
bool fUseViews
! if view framework is used, required for true headless mode
Definition gui_handler.h:43
std::string AddBatchPage(const std::string &cont)
Generate URL for batch page Uses file:/// prefix to let access JSROOT scripts placed on file system R...
std::string MakePageUrl(THttpServer *serv, const std::string &addr)
Generate URL for RWebWindow page Register server instance and assign it with the index Produced URL o...
bool OnConsoleMessage(CefRefPtr< CefBrowser > browser, cef_log_severity_t level, const CefString &message, const CefString &source, int line) override
CefRefPtr< CefLoadHandler > GetLoadHandler() override
Definition gui_handler.h:60
DISALLOW_COPY_AND_ASSIGN(GuiHandler)
std::list< CefRefPtr< CefBrowser > > BrowserList
! List of existing browser windows. Only accessed on the CEF UI thread.
Definition gui_handler.h:45
void OnTitleChange(CefRefPtr< CefBrowser > browser, const CefString &title) override
void OnAfterCreated(CefRefPtr< CefBrowser > browser) override
A log configuration for a channel, e.g.
Definition RLogger.hxx:97
Online http server for arbitrary ROOT application.
Definition THttpServer.h:31
TLine * line
ROOT::RLogChannel & CefWebDisplayLog()