1717
1818#include " browser-app.hpp"
1919
20+ #include < iostream>
2021#include < string>
2122
2223#include " cefsimple/simple_handler.h"
2324#include " include/cef_browser.h"
2425#include " include/cef_command_line.h"
2526#include " include/wrapper/cef_helpers.h"
27+ #include " browser-version.h"
2628
27- BrowserApp::BrowserApp ()
28- {}
29+ BrowserApp::BrowserApp (){
30+ }
31+
32+ CefRefPtr<CefRenderProcessHandler> BrowserApp::GetRenderProcessHandler ()
33+ {
34+ return this ;
35+ }
2936
3037void BrowserApp::OnRegisterCustomSchemes (
3138 CefRefPtr<CefSchemeRegistrar> registrar)
@@ -49,4 +56,48 @@ void BrowserApp::OnBeforeCommandLineProcessing(
4956 command_line->AppendSwitch (" enable-begin-frame-scheduling" );
5057
5158 command_line->AppendSwitch (" enable-system-flash" );
59+ }
60+
61+ void BrowserApp::OnContextCreated (CefRefPtr<CefBrowser> browser,
62+ CefRefPtr<CefFrame> frame,
63+ CefRefPtr<CefV8Context> context)
64+ {
65+ CefRefPtr<CefV8Value> globalObj = context->GetGlobal ();
66+
67+ CefRefPtr<CefV8Value> obsStudioObj = CefV8Value::CreateObject (0 );
68+ globalObj->SetValue (" obsstudio" , obsStudioObj, V8_PROPERTY_ATTRIBUTE_NONE);
69+
70+ CefRefPtr<CefV8Value> pluginVersion = CefV8Value::CreateString (OBS_BROWSER_VERSION);
71+ obsStudioObj->SetValue (" pluginVersion" , pluginVersion, V8_PROPERTY_ATTRIBUTE_NONE);
72+ }
73+
74+ bool BrowserApp::OnProcessMessageReceived (CefRefPtr<CefBrowser> browser,
75+ CefProcessId source_process,
76+ CefRefPtr<CefProcessMessage> message) {
77+ DCHECK (source_process == PID_BROWSER);
78+
79+ if (message->GetName () == " Visibility" ) {
80+ CefRefPtr<CefListValue> args = message->GetArgumentList ();
81+
82+ CefRefPtr<CefV8Context> context = browser->GetMainFrame ()->GetV8Context ();
83+
84+ context->Enter ();
85+
86+ CefRefPtr<CefV8Value> globalObj = context->GetGlobal ();
87+
88+ CefRefPtr<CefV8Value> obsStudioObj = globalObj->GetValue (" obsstudio" );
89+
90+ CefRefPtr<CefV8Value> visibilityFunction = obsStudioObj->GetValue (" onVisibilityChange" );
91+ if (visibilityFunction && visibilityFunction->IsFunction ()) {
92+ CefV8ValueList arguments;
93+ arguments.push_back (CefV8Value::CreateBool (args->GetBool (0 )));
94+ visibilityFunction->ExecuteFunction (NULL , arguments);
95+ }
96+
97+ context->Exit ();
98+
99+ return true ;
100+ }
101+
102+ return false ;
52103}
0 commit comments