#pragma once #pragma region stl_headers #include #include #pragma endregion #pragma region cef_headers #include #pragma endregion /// /// /// class CefViewBridgeObject : public CefBaseRefCounted { IMPLEMENT_REFCOUNTING(CefViewBridgeObject); DISALLOW_COPY_AND_ASSIGN(CefViewBridgeObject); /// /// /// typedef struct _EventListener { CefRefPtr callback_; CefRefPtr context_; } EventListener; /// /// /// typedef std::list EventListenerList; /// /// /// typedef std::map> EventListenerListMap; /// /// /// class V8Handler : public CefV8Handler { public: /// /// /// /// V8Handler(CefViewBridgeObject* object); /// /// /// /// /// /// /// /// /// virtual bool Execute(const CefString& function, CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, CefString& exception) override; protected: /// /// /// /// /// /// /// void ExecuteNativeMethod(CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, CefString& exception); /// /// /// /// /// /// /// void ExecuteAddEventListener(CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, CefString& exception); /// /// /// /// /// /// /// void ExecuteRemoveEventListener(CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, CefString& exception); /// /// /// /// /// /// /// void ExecuteReportJSResult(CefRefPtr object, const CefV8ValueList& arguments, CefRefPtr& retval, CefString& exception); private: /// /// /// CefViewBridgeObject* object_; private: IMPLEMENT_REFCOUNTING(V8Handler); }; public: /// /// /// /// /// /// /// CefViewBridgeObject(CefRefPtr browser, CefRefPtr frame, CefRefPtr global, const CefString& name); /// /// /// /// /// /// CefRefPtr CefValueToV8Value(CefValue* cefValue); /// /// /// /// /// CefRefPtr V8ValueToCefValue(CefV8Value* v8Value); /// /// /// /// void AsyncExecuteNativeMethod(const CefV8ValueList& arguments); /// /// /// /// void AsyncExecuteReportJSResult(const CefV8ValueList& arguments); /// /// /// /// /// /// void AddEventListener(const CefString& name, const EventListener& listener); /// /// /// /// /// void RemoveEventListener(const CefString& name, const EventListener& listener); /// /// /// /// /// void ExecuteEventListener(const CefString eventName, CefRefPtr args); private: /// /// /// CefString name_; /// /// /// CefRefPtr bridgeObject_; /// /// /// CefRefPtr reportJSResultFunction_; /// /// /// CefRefPtr browser_; /// /// /// CefRefPtr frame_; /// /// /// CefRefPtr v8Handler_; /// /// /// CefViewBridgeObject::EventListenerListMap eventListenerListMap_; };