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:
59 CefRefPtr<CefLifeSpanHandler> GetLifeSpanHandler() override { return this; }
60 CefRefPtr<CefLoadHandler> GetLoadHandler() override { return this; }
61 CefRefPtr<CefDisplayHandler> GetDisplayHandler() override { return this; }
62 CefRefPtr<CefRequestHandler> GetRequestHandler() override { return this; }
63
64 // CefLifeSpanHandler methods:
65 void OnAfterCreated(CefRefPtr<CefBrowser> browser) override;
66 bool DoClose(CefRefPtr<CefBrowser> browser) override;
67 void OnBeforeClose(CefRefPtr<CefBrowser> browser) override;
68
69 // CefLoadHandler methods:
70 void OnLoadError(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame, ErrorCode errorCode,
71 const CefString &errorText, const CefString &failedUrl) override;
72
73 // CefDisplayHandler methods:
74 void OnTitleChange(CefRefPtr<CefBrowser> browser, const CefString &title) override;
75
76 bool OnConsoleMessage(CefRefPtr<CefBrowser> browser,
77 cef_log_severity_t level,
78 const CefString &message, const CefString &source,
79 int line) override;
80
81 // Request that all existing browser windows close.
82 void CloseAllBrowsers(bool force_close);
83
84 bool IsClosing() const { return is_closing_; }
85
86 // CefRequestHandler methods:
87 CefRefPtr<CefResourceRequestHandler> GetResourceRequestHandler(
88 CefRefPtr<CefBrowser> browser,
89 CefRefPtr<CefFrame> frame,
90 CefRefPtr<CefRequest> request,
91 bool is_navigation,
92 bool is_download,
93 const CefString& request_initiator,
94 bool& disable_default_handling) override { return this; }
95
96 // CefResourceRequestHandler methods:
97 cef_return_value_t OnBeforeResourceLoad(
98 CefRefPtr<CefBrowser> browser,
99 CefRefPtr<CefFrame> frame,
100 CefRefPtr<CefRequest> request,
101 CefRefPtr<CefCallback> callback) override;
102
103 CefRefPtr<CefResourceHandler> GetResourceHandler(
104 CefRefPtr<CefBrowser> browser,
105 CefRefPtr<CefFrame> frame,
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
116 static bool PlatformResize(CefRefPtr<CefBrowser> browser, int width, int height);
117
118private:
119
120 // Platform-specific implementation.
121 void PlatformTitleChange(CefRefPtr<CefBrowser> browser, const CefString &title);
122
123 CefRefPtr<CefResourceManager> fResourceManager;
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()