Skip to content

Commit dfa64e7

Browse files
committed
JSB - Add optional command line cache config
1 parent bc7b921 commit dfa64e7

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

CefSharp.BrowserSubprocess.Core/CefAppUnmanagedWrapper.h

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,18 +42,26 @@ namespace CefSharp
4242
public:
4343
static const CefString kPromiseCreatorScript;
4444

45-
CefAppUnmanagedWrapper(IRenderProcessHandler^ handler, List<CefCustomScheme^>^ schemes, bool enableFocusedNodeChanged, Action<CefBrowserWrapper^>^ onBrowserCreated, Action<CefBrowserWrapper^>^ onBrowserDestroyed) : SubProcessApp(schemes)
45+
CefAppUnmanagedWrapper(IRenderProcessHandler^ handler, List<CefCustomScheme^>^ schemes, bool jsbCachePerBrowser, bool enableFocusedNodeChanged, Action<CefBrowserWrapper^>^ onBrowserCreated, Action<CefBrowserWrapper^>^ onBrowserDestroyed) : SubProcessApp(schemes)
4646
{
4747
_handler = handler;
4848
_onBrowserCreated = onBrowserCreated;
4949
_onBrowserDestroyed = onBrowserDestroyed;
5050
_browserWrappers = gcnew ConcurrentDictionary<int, CefBrowserWrapper^>();
5151
_focusedNodeChangedEnabled = enableFocusedNodeChanged;
52-
_javascriptObjectCache = gcnew LegacyJavaScriptObjectCache();
5352
_registerBoundObjectRegistry = gcnew RegisterBoundObjectRegistry();
5453
_legacyBindingEnabled = false;
5554
_jsBindingPropertyName = "CefSharp";
5655
_jsBindingPropertyNameCamelCase = "cefSharp";
56+
57+
if (jsbCachePerBrowser)
58+
{
59+
_javascriptObjectCache = gcnew PerBrowserJavaScriptObjectCache();
60+
}
61+
else
62+
{
63+
_javascriptObjectCache = gcnew LegacyJavaScriptObjectCache();
64+
}
5765
}
5866

5967
~CefAppUnmanagedWrapper()

CefSharp.BrowserSubprocess.Core/SubProcess.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ namespace CefSharp
3333
auto onBrowserCreated = gcnew Action<CefBrowserWrapper^>(this, &SubProcess::OnBrowserCreated);
3434
auto onBrowserDestroyed = gcnew Action<CefBrowserWrapper^>(this, &SubProcess::OnBrowserDestroyed);
3535
auto schemes = CefCustomScheme::ParseCommandLineArguments(args);
36+
auto jsbCachePerBrowser = CommandLineArgsParser::HasArgument(args, CefSharpArguments::PerBrowserJavaScriptObjectCache);
3637
auto enableFocusedNodeChanged = CommandLineArgsParser::HasArgument(args, CefSharpArguments::FocusedNodeChangedEnabledArgument);
3738

38-
_cefApp = new CefAppUnmanagedWrapper(handler, schemes, enableFocusedNodeChanged, onBrowserCreated, onBrowserDestroyed);
39+
_cefApp = new CefAppUnmanagedWrapper(handler, schemes, jsbCachePerBrowser, enableFocusedNodeChanged, onBrowserCreated, onBrowserDestroyed);
3940
}
4041

4142
!SubProcess()

CefSharp/Internals/CefSharpArguments.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public static class CefSharpArguments
1010
public const string HostProcessIdArgument = "--host-process-id";
1111
public const string CustomSchemeArgument = "--custom-scheme";
1212
public const string FocusedNodeChangedEnabledArgument = "--focused-node-enabled";
13+
public const string PerBrowserJavaScriptObjectCache = "--jsb-cache-perbrowser";
1314
public const string SubProcessTypeArgument = "--type";
1415
public const string ExitIfParentProcessClosed = "--cefsharpexitsub";
1516
}

0 commit comments

Comments
 (0)