#include #include #include #include #include #include #include "WebClient.h" #include "WebBrowserHost.h" class SimpleApp : public CefApp, public CefBrowserProcessHandler { public: SimpleApp(); // CefApp methods: virtual CefRefPtr GetBrowserProcessHandler() OVERRIDE { return this; } // CefBrowserProcessHandler methods: virtual void OnContextInitialized() OVERRIDE; private: // Include the default reference counting implementation. IMPLEMENT_REFCOUNTING(SimpleApp); }; SimpleApp::SimpleApp() { } void SimpleApp::OnContextInitialized() { CEF_REQUIRE_UI_THREAD(); } namespace Atomic { WebBrowserHost::WebBrowserHost(Context* context) : Object (context) { const Vector& arguments = GetArguments(); const char** _argv { 0 }; PODVector argv; for (unsigned i = 0; i < arguments.Size(); i++) argv.Push(arguments[i].CString()); CefMainArgs args(arguments.Size(), arguments.Size() ? (char**) &argv[0] : (char **) _argv); int result = CefExecuteProcess(args, nullptr, nullptr); if (result >= 0) { LOGERROR("CEFExecuteProcess - Error"); } CefSettings settings; settings.windowless_rendering_enabled = true; // If losing OSX system menu, it means we're calling this // before initializing graphics subsystem if (!CefInitialize(args, settings, nullptr, nullptr)) { LOGERROR("CefInitialize - Error"); } } WebBrowserHost::~WebBrowserHost() { } bool WebBrowserHost::CreateBrowser(WebClient* webClient) { CefWindowInfo windowInfo; CefBrowserSettings browserSettings; CefBrowserHost::CreateBrowser(windowInfo, (CefClient*) webClient->d_, "http://www.atomicgameengine.com", browserSettings, nullptr); return true; } }