16 #ifndef ROOT7_RWebDisplayHandle
17 #define ROOT7_RWebDisplayHandle
26 namespace Experimental {
28 class RWebDisplayHandle {
33 virtual std::unique_ptr<RWebDisplayHandle> Display(
const RWebDisplayArgs &args) = 0;
34 virtual bool IsActive()
const {
return true; }
35 virtual ~Creator() =
default;
38 class BrowserCreator :
public Creator {
42 std::string fBatchExec;
44 void TestProg(
const std::string &nexttry,
bool check_std_paths =
false);
46 virtual void ProcessGeometry(std::string &,
const RWebDisplayArgs &) {}
47 virtual std::string MakeProfile(std::string &,
bool) {
return ""; }
51 BrowserCreator(
bool custom =
true,
const std::string &exec =
"");
53 std::unique_ptr<RWebDisplayHandle> Display(
const RWebDisplayArgs &args)
override;
55 virtual ~BrowserCreator() =
default;
58 class ChromeCreator :
public BrowserCreator {
61 virtual ~ChromeCreator() =
default;
62 bool IsActive()
const override {
return !fProg.empty(); }
63 void ProcessGeometry(std::string &,
const RWebDisplayArgs &args)
override;
64 std::string MakeProfile(std::string &exec,
bool)
override;
67 class FirefoxCreator :
public BrowserCreator {
70 virtual ~FirefoxCreator() =
default;
71 bool IsActive()
const override {
return !fProg.empty(); }
72 std::string MakeProfile(std::string &exec,
bool batch)
override;
77 static std::map<std::string, std::unique_ptr<Creator>> &GetMap();
79 static std::unique_ptr<Creator> &FindCreator(
const std::string &name,
const std::string &libname =
"");
83 RWebDisplayHandle(
const std::string &url) : fUrl(url) {}
86 virtual ~RWebDisplayHandle() =
default;
88 std::string GetUrl()
const {
return fUrl; }
90 static std::unique_ptr<RWebDisplayHandle> Display(
const RWebDisplayArgs &args);
92 static bool DisplayUrl(
const std::string &url);