2019-04-19 17:19:57 +08:00
|
|
|
|
/** @file cef_manager.h
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>١<EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD>
|
|
|
|
|
* @copyright (c) 2016, NetEase Inc. All rights reserved
|
|
|
|
|
* @author Redrain
|
|
|
|
|
* @date 2016/7/19
|
|
|
|
|
*/
|
|
|
|
|
#pragma once
|
|
|
|
|
#include "include/cef_app.h"
|
|
|
|
|
|
2019-09-22 11:08:20 +08:00
|
|
|
|
namespace nim_comp
|
2019-04-19 17:19:57 +08:00
|
|
|
|
{
|
|
|
|
|
/** @class CefMessageLoopDispatcher
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>multi_threaded_message_loopΪfalseʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>Ŀ<EFBFBD>ײ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UI<EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>cef<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD>CefRunMessageLoop<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* CefMessageLoopDispatcher<EFBFBD>̳<EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD>Ƚӿڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĵ<EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD>CefDoMessageLoopWork<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>base<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD>multi_threaded_message_loopΪtrueʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class CefMessageLoopDispatcher : public nbase::Dispatcher
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual bool Dispatch(const MSG &message) override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
// <20>жϵ<D0B6>ǰҪ<C7B0><D2AA><EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD>Ϣ<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>CefDoMessageLoopWork<72><6B><EFBFBD><EFBFBD><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
static BOOL IsIdleMessage(const MSG* pMsg);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** @class CefManager
|
|
|
|
|
* @brief Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
class CefManager : public nbase::SupportWeakCallback
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
SINGLETON_DEFINE(CefManager);
|
|
|
|
|
public:
|
|
|
|
|
CefManager();
|
|
|
|
|
~CefManager(){};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>cef dll<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"path"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dll<EFBFBD>ļ<EFBFBD><EFBFBD>ŵ<EFBFBD>bin<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>ֶ<EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>dll<EFBFBD>ļ<EFBFBD>
|
|
|
|
|
* @return void <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void AddCefDllToPath();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param[in] app_data_dir Ӧ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param[in] settings Cefȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @param[in] is_enable_offset_render <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
|
|
|
|
|
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>false Ӧ<EFBFBD>ý<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
bool Initialize(const std::wstring& app_data_dir, CefSettings &settings, bool is_enable_offset_render = true);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return void <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void UnInitialize();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ
|
|
|
|
|
* @return bool true <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>false <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
bool IsEnableOffsetRender() const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return nbase::Dispatcher* <EFBFBD><EFBFBD>Ϣѭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
nbase::Dispatcher* GetMessageDispatcher();
|
|
|
|
|
|
|
|
|
|
// <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
void AddBrowserCount();
|
|
|
|
|
void SubBrowserCount();
|
|
|
|
|
int GetBrowserCount();
|
|
|
|
|
|
|
|
|
|
// <20><>Cef<65><66><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD><EFBFBD><EFBFBD>WM_QUIT<49><54>Ϣ
|
|
|
|
|
void PostQuitMessage(int nExitCode);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
/**
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
* @param[in] app_data_dir Ӧ<EFBFBD><EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>nim::Client::Init<EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD>
|
|
|
|
|
* @param[out] settings cef<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* @return void <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void GetCefSetting(const std::wstring& app_data_dir, CefSettings &settings);
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
CefMessageLoopDispatcher message_dispatcher_;
|
|
|
|
|
int browser_count_;
|
|
|
|
|
bool is_enable_offset_render_;
|
|
|
|
|
};
|
|
|
|
|
}
|