@@ -91,6 +91,8 @@ namespace CefSharp
91
91
}
92
92
}
93
93
}
94
+
95
+ _jsBindingApiEnabled = extraInfo->GetBool (" JavascriptBindingApiEnabled" );
94
96
}
95
97
96
98
if (extraInfo->HasKey (" JsBindingPropertyName" ) || extraInfo->HasKey (" JsBindingPropertyNameCamelCase" ))
@@ -137,50 +139,53 @@ namespace CefSharp
137
139
}
138
140
}
139
141
140
- // TODO: Look at adding some sort of javascript mapping layer to reduce the code duplication
141
- auto global = context->GetGlobal ();
142
- auto browserWrapper = FindBrowserWrapper (browser->GetIdentifier ());
143
- auto processId = System::Diagnostics::Process::GetCurrentProcess ()->Id ;
144
-
145
- // TODO: JSB: Split functions into their own classes
146
- // Browser wrapper is only used for BindObjectAsync
147
- auto bindObjAsyncFunction = CefV8Value::CreateFunction (kBindObjectAsync , new BindObjectAsyncHandler (_registerBoundObjectRegistry, _javascriptObjects, browserWrapper));
148
- auto unBindObjFunction = CefV8Value::CreateFunction (kDeleteBoundObject , new RegisterBoundObjectHandler (_javascriptObjects));
149
- auto removeObjectFromCacheFunction = CefV8Value::CreateFunction (kRemoveObjectFromCache , new RegisterBoundObjectHandler (_javascriptObjects));
150
- auto isObjectCachedFunction = CefV8Value::CreateFunction (kIsObjectCached , new RegisterBoundObjectHandler (_javascriptObjects));
151
- auto postMessageFunction = CefV8Value::CreateFunction (kPostMessage , new JavascriptPostMessageHandler (rootObject == nullptr ? nullptr : rootObject->CallbackRegistry ));
152
- auto promiseHandlerFunction = CefV8Value::CreateFunction (kSendEvalScriptResponse , new JavascriptPromiseHandler ());
153
-
154
- // By default We'll support both CefSharp and cefSharp, for those who prefer the JS style
155
- auto createCefSharpObj = !_jsBindingPropertyName.empty ();
156
- auto createCefSharpObjCamelCase = !_jsBindingPropertyNameCamelCase.empty ();
157
-
158
- if (createCefSharpObj)
142
+ if (_jsBindingApiEnabled)
159
143
{
160
- auto cefSharpObj = CefV8Value::CreateObject (NULL , NULL );
161
- cefSharpObj->SetValue (kBindObjectAsync , bindObjAsyncFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
162
- cefSharpObj->SetValue (kDeleteBoundObject , unBindObjFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
163
- cefSharpObj->SetValue (kRemoveObjectFromCache , removeObjectFromCacheFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
164
- cefSharpObj->SetValue (kIsObjectCached , isObjectCachedFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
165
- cefSharpObj->SetValue (kPostMessage , postMessageFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
166
- cefSharpObj->SetValue (kSendEvalScriptResponse , promiseHandlerFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
167
- cefSharpObj->SetValue (kRenderProcessId , CefV8Value::CreateInt (processId), CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
168
-
169
- global->SetValue (_jsBindingPropertyName, cefSharpObj, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_READONLY);
170
- }
144
+ // TODO: Look at adding some sort of javascript mapping layer to reduce the code duplication
145
+ auto global = context->GetGlobal ();
146
+ auto browserWrapper = FindBrowserWrapper (browser->GetIdentifier ());
147
+ auto processId = System::Diagnostics::Process::GetCurrentProcess ()->Id ;
148
+
149
+ // TODO: JSB: Split functions into their own classes
150
+ // Browser wrapper is only used for BindObjectAsync
151
+ auto bindObjAsyncFunction = CefV8Value::CreateFunction (kBindObjectAsync , new BindObjectAsyncHandler (_registerBoundObjectRegistry, _javascriptObjects, browserWrapper));
152
+ auto unBindObjFunction = CefV8Value::CreateFunction (kDeleteBoundObject , new RegisterBoundObjectHandler (_javascriptObjects));
153
+ auto removeObjectFromCacheFunction = CefV8Value::CreateFunction (kRemoveObjectFromCache , new RegisterBoundObjectHandler (_javascriptObjects));
154
+ auto isObjectCachedFunction = CefV8Value::CreateFunction (kIsObjectCached , new RegisterBoundObjectHandler (_javascriptObjects));
155
+ auto postMessageFunction = CefV8Value::CreateFunction (kPostMessage , new JavascriptPostMessageHandler (rootObject == nullptr ? nullptr : rootObject->CallbackRegistry ));
156
+ auto promiseHandlerFunction = CefV8Value::CreateFunction (kSendEvalScriptResponse , new JavascriptPromiseHandler ());
157
+
158
+ // By default We'll support both CefSharp and cefSharp, for those who prefer the JS style
159
+ auto createCefSharpObj = !_jsBindingPropertyName.empty ();
160
+ auto createCefSharpObjCamelCase = !_jsBindingPropertyNameCamelCase.empty ();
161
+
162
+ if (createCefSharpObj)
163
+ {
164
+ auto cefSharpObj = CefV8Value::CreateObject (NULL , NULL );
165
+ cefSharpObj->SetValue (kBindObjectAsync , bindObjAsyncFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
166
+ cefSharpObj->SetValue (kDeleteBoundObject , unBindObjFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
167
+ cefSharpObj->SetValue (kRemoveObjectFromCache , removeObjectFromCacheFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
168
+ cefSharpObj->SetValue (kIsObjectCached , isObjectCachedFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
169
+ cefSharpObj->SetValue (kPostMessage , postMessageFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
170
+ cefSharpObj->SetValue (kSendEvalScriptResponse , promiseHandlerFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
171
+ cefSharpObj->SetValue (kRenderProcessId , CefV8Value::CreateInt (processId), CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
172
+
173
+ global->SetValue (_jsBindingPropertyName, cefSharpObj, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_READONLY);
174
+ }
171
175
172
- if (createCefSharpObjCamelCase)
173
- {
174
- auto cefSharpObjCamelCase = CefV8Value::CreateObject (NULL , NULL );
175
- cefSharpObjCamelCase->SetValue (kBindObjectAsyncCamelCase , bindObjAsyncFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
176
- cefSharpObjCamelCase->SetValue (kDeleteBoundObjectCamelCase , unBindObjFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
177
- cefSharpObjCamelCase->SetValue (kRemoveObjectFromCacheCamelCase , removeObjectFromCacheFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
178
- cefSharpObjCamelCase->SetValue (kIsObjectCachedCamelCase , isObjectCachedFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
179
- cefSharpObjCamelCase->SetValue (kPostMessageCamelCase , postMessageFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
180
- cefSharpObjCamelCase->SetValue (kSendEvalScriptResponseCamelCase , promiseHandlerFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
181
- cefSharpObjCamelCase->SetValue (kRenderProcessIdCamelCase , CefV8Value::CreateInt (processId), CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
182
-
183
- global->SetValue (_jsBindingPropertyNameCamelCase, cefSharpObjCamelCase, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_READONLY);
176
+ if (createCefSharpObjCamelCase)
177
+ {
178
+ auto cefSharpObjCamelCase = CefV8Value::CreateObject (NULL , NULL );
179
+ cefSharpObjCamelCase->SetValue (kBindObjectAsyncCamelCase , bindObjAsyncFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
180
+ cefSharpObjCamelCase->SetValue (kDeleteBoundObjectCamelCase , unBindObjFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
181
+ cefSharpObjCamelCase->SetValue (kRemoveObjectFromCacheCamelCase , removeObjectFromCacheFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
182
+ cefSharpObjCamelCase->SetValue (kIsObjectCachedCamelCase , isObjectCachedFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
183
+ cefSharpObjCamelCase->SetValue (kPostMessageCamelCase , postMessageFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
184
+ cefSharpObjCamelCase->SetValue (kSendEvalScriptResponseCamelCase , promiseHandlerFunction, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
185
+ cefSharpObjCamelCase->SetValue (kRenderProcessIdCamelCase , CefV8Value::CreateInt (processId), CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_NONE);
186
+
187
+ global->SetValue (_jsBindingPropertyNameCamelCase, cefSharpObjCamelCase, CefV8Value::PropertyAttribute::V8_PROPERTY_ATTRIBUTE_READONLY);
188
+ }
184
189
}
185
190
186
191
// Send a message to the browser processing signaling that OnContextCreated has been called
0 commit comments