123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #ifndef CHROMIUM_CMODTOOLS_H
- #define CHROMIUM_CMODTOOLS_H
- #include "precompile.h"
- #include "SpBase.h"
- #define CHROMIUM_TIMER_ID 0xF001
- #include <tuple>
- #include "guitask/enum.h"
- #include <memory>
- //#include <boost/serialization/singleton.hpp>
- //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<CModTools>
- {
- private:
- CEntityBase* m_pEntity;
- public:
- void InitCModTools(CEntityBase* pEntity);
- //绝望,c++98没有初始化列表
- std::pair<ErrorCodeEnum, int> StartChromiumBrowser(ERR_PAGE_REASON reason = ERR_PAGE_REASON::main,
- std::tuple < std::string, std::string> normalParam = std::tuple <std::string, std::string>("", ""),
- std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam = std::tuple<std::string, std::string, std::string, DWORD, DWORD>("", "", "", 0, 0));
- std::pair<ErrorCodeEnum, int> 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<CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA, CSimpleStringA> ReadCenterConfigStr(CSimpleStringA entityName = "");
- std::pair<bool, std::string> getMainUrl();
- std::pair<bool, std::string> getAdUrl();
- std::pair<bool, std::string> getErrUrl(ERR_PAGE_REASON errType = ERR_PAGE_REASON::breakdown);
- std::pair<bool, std::string> 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<bool, std::string> GenerateErrPage(ERR_PAGE_REASON errType,
- std::tuple < std::string, std::string> norParam, std::tuple<std::string, std::string, std::string, DWORD, DWORD> exParam);
- #if defined(_MSC_VER)
- std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = true);
- #else
- std::pair<ErrorCodeEnum, int> openCef(std::string cmdline, bool isGuard = false, bool usingSystemCmd = false);
- #endif //_MSC_VER
- void cefClientGuardian(std::string cmdline);
- std::pair<bool, std::string> openAdPage();
- /** 应该跟健康约定了,准入不过,通过监护进程触发框架重启,这里默认框架启动时间再加上10分钟 [Gifur@2022324]*/
- std::string GetSpShellNextRebootTime();
- void setLimitReason(const char* reason);
- int StandardToStamp(const char* str_time, bool dateOnly);
- bool CheckTradeRecord();
- 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 T>
- 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
|