#ifndef CHROMIUM_CMODTOOLS_H #define CHROMIUM_CMODTOOLS_H #include "precompile.h" #include "SpBase.h" #define CHROMIUM_TIMER_ID 0xF001 #include #include "guitask/enum.h" #include //#include //using boost::serialization::singleton; #include "guitask/singleton.hpp" #if (defined _WIN32 || defined _WIN64) #define CEFCLIENT_NAME "cefclient.exe" #else #define CEFCLIENT_NAME "cefclient" #endif namespace Chromium { BETTER_ENUM(ERR_PAGE_REASON, int, CameraConfig, CardStoreIsBusy, MachineTypeError, TerminalManagerKickOut, TerminalManagerOff, breakdown, warnPrompt, disabled, jobuncomplete, ErrNotify, main, Ad, extend, OutsideRequest, SpecialPageFromOtherEntity , Install, startup, performance_monitor, audioErr, redirect) BETTER_ENUM(PAGE_TYPE, int, Deploy, CameraConfig, TerminalManager, errPage, Ad, slv, init, TradeManager , breakdown, extend, CardStoreIsBusy, Install, startup, performance_monitor) BETTER_ENUM(TradeManageCodeEnum, int, Undefined, Trade, JobUncomplete, Disabled) BETTER_ENUM(TerminalManageCodeEnum, int, Off, On, KickOut) class CModTools : public singleton_t::singleton { private: CEntityBase* m_pEntity; public: void InitCModTools(CEntityBase* pEntity); //绝望,c++98没有初始化列表 std::pair StartChromiumBrowser(ERR_PAGE_REASON reason = ERR_PAGE_REASON::main, std::tuple < std::string, std::string> normalParam = std::tuple ("", ""), std::tuple exParam = std::tuple("", "", "", 0, 0)); std::pair startCommonPage(std::string name, std::string url, int width, int height, int point_x, int point_y, std::string top); void stopCommonPage(std::string name); void StopChromiumBrowser(ERR_PAGE_REASON reason, bool stopAll = false); void StopChromiumBrowser_security(ERR_PAGE_REASON reason, int times); void StopSingleChromiumBrowserByName(std::string cefName); bool killAllChromium(); //通过taskkill 关闭掉所有的cefclient void killAllChromiumByThread(int seconds); bool killChromiumByName(std::string name); bool RestartProxyServer(); std::string getMagicStr() { return m_magicStr; }; int getUosBrowser() { return m_UseUOSBrowser; }; bool IsConfigWork() { return ConfigManager::getInstance().m_UserMgrUrlFultureStr.GetLength() > 0; } CSimpleString getFultureUrl() { return ConfigManager::getInstance().m_UserMgrUrlFultureStr; } void lockGuard(); void unlockGuard(); void SetSpecialPageParam(std::string t_name, std::string t_size, std::string t_point, int t_top) { m_specialPage_temp_name = t_name; m_specialPage_temp_size = t_size; m_specialPage_temp_point = t_point; m_specialPage_temp_top = t_top; } private: std::tuple ReadCenterConfigStr(CSimpleStringA entityName = ""); std::pair getMainUrl(); std::pair getAdUrl(); std::pair getErrUrl(ERR_PAGE_REASON errType = ERR_PAGE_REASON::breakdown); std::pair getExtendUrl(); #if defined(RVC_OS_WIN) std::string generateCefclientCmd(bool isExtend, std::string mainUrl); #endif //RVC_OS_WIN std::string generateMainCmd(std::string mainUrl); std::string generateInstallCmd(std::string installUrl); std::string generateAdCmd(std::string AdUrl); std::string generateSpecialPageFromOtherEntityCmd(std::string mainUrl); std::string generateCommonPage(std::string url, std::string name, int width, int height, int point_x, int point_y, int top); #if defined(RVC_OS_LINUX) //pagetype: 0: 首页全屏, 1:副屏全屏,2:错误页;3:外部调用 std::string generateBrowserCMDForEverything(const std::string& url, int pageType, bool ignoreSecurity); #endif //RVC_OS_LINUX /** [Gifur@2022125]*/ /**n [Gifur@2022228]*/ /*! * @brief * @param[in] * nBrowswerType:0:cefclientt,1:UOS;2:UOS2 * nMonitorType:0:通用,1主屏,2:副屏 * @param[out] * @return : */ std::string getAdditionalUOSBrowserSettings(int nBrowswerType, int nMonitorType = 0); std::pair GenerateErrPage(ERR_PAGE_REASON errType, std::tuple < std::string, std::string> norParam, std::tuple exParam); #if defined(_MSC_VER) std::pair openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = true); #else std::pair openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = false); #endif //_MSC_VER void cefClientGuardian(std::string cmdline); std::pair openAdPage(); /** 应该跟健康约定了,准入不过,通过监护进程触发框架重启,这里默认框架启动时间再加上10分钟 [Gifur@2022324]*/ std::string GetSpShellNextRebootTime(); void setLimitReason(const char* reason); int StandardToStamp(const char* str_time, bool dateOnly); void InitBrowserUseMode(); //0: 检测失败;1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser int ToGetUOSBrowserType(); void UploadBrowserInfo(int usingType, LPCTSTR info); bool findRestartCode(DWORD userCode);//if true, restart the terminal DWORD spiltErrMsg(std::string errMsg);//split the errmsg to usercode public: bool notifyExist, breakdownExist, m_isAdOpen; //if notify exist, do not start other err page private: std::string m_magicStr; /** 0:使用CefClient,1:使用旧版UOS浏览器uos-browser-stable ;2:使用新版UOS浏览器org.deepin.browser [Gifur@2022228]*/ int m_UseUOSBrowser; bool m_isGuardMainBrowser; //for special page std::string m_specialPage_temp_name, m_specialPage_temp_size, m_specialPage_temp_point; int m_specialPage_temp_top; }; template class TimerOutHelper : public ITimerListener { public: typedef void (T::* FuncTimer)(void* pUserdata); TimerOutHelper(T* p, FuncTimer pTimerFunc, void* pUserData, bool bDeleteSelf = false) : m_pObject(p), m_pUserData(pUserData), m_pTimer(pTimerFunc), m_bDeleteSelf(bDeleteSelf) {} virtual void OnTimeout(DWORD dwTimerID) { (m_pObject->*m_pTimer)(m_pUserData); if (m_bDeleteSelf) delete this; } private: void* m_pUserData; T* m_pObject; FuncTimer m_pTimer; bool m_bDeleteSelf; }; } #endif