Skip to content

Commit e8cf336

Browse files
committed
Net Core - Support for compiling with .Net Core 3.1
- Make Wpf/WinForms/OffScreen projects target AnyCPU Only the VC++ projects are platform specific now. - Remove BrowserSubProcess project reference Not needed as we now have a standalone exe - Add OffScreen example - Add WPF Example project - Fix some compile errors for main solution - Add BrowserSubProcess executable - JavascriptObjectRepository remove isAsync param Rather than throw exception remove the option - BrowserSubprocess Exclude the WCF specific code from the netCore project - Add some ifdef/ifndef to exclude the WCF specific implementation - Move WCF implementation into separate namespace
1 parent a0d9078 commit e8cf336

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+420
-181
lines changed

CefSharp.BrowserSubprocess.Core/BindObjectAsyncHandler.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,11 @@ namespace CefSharp
147147
JavascriptRootObjectWrapper^ rootObject;
148148
if (!rootObjectWrappers->TryGetValue(frame->GetIdentifier(), rootObject))
149149
{
150+
#ifdef NETCOREAPP
151+
rootObject = gcnew JavascriptRootObjectWrapper(browser->GetIdentifier());
152+
#else
150153
rootObject = gcnew JavascriptRootObjectWrapper(browser->GetIdentifier(), _browserWrapper->BrowserProcess);
154+
#endif
151155
rootObjectWrappers->TryAdd(frame->GetIdentifier(), rootObject);
152156
}
153157

CefSharp.BrowserSubprocess.Core/BrowserSubprocessExecutable.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
#include "Stdafx.h"
88

99
#include "SubProcess.h"
10-
#include "WcfEnabledSubProcess.h"
1110

1211
using namespace System;
1312
using namespace CefSharp::Internals;

CefSharp.BrowserSubprocess.Core/CefAppUnmanagedWrapper.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,11 @@ namespace CefSharp
292292
JavascriptRootObjectWrapper^ rootObject;
293293
if (!rootObjectWrappers->TryGetValue(frameId, rootObject))
294294
{
295+
#ifdef NETCOREAPP
296+
rootObject = gcnew JavascriptRootObjectWrapper(browserId);
297+
#else
295298
rootObject = gcnew JavascriptRootObjectWrapper(browserId, browserWrapper->BrowserProcess);
299+
#endif
296300
rootObjectWrappers->TryAdd(frameId, rootObject);
297301
}
298302

@@ -394,7 +398,11 @@ namespace CefSharp
394398
//as without javascript there is no need for a context.
395399
if (rootObjectWrapper == nullptr)
396400
{
401+
#ifdef NETCOREAPP
402+
rootObjectWrapper = gcnew JavascriptRootObjectWrapper(browser->GetIdentifier());
403+
#else
397404
rootObjectWrapper = gcnew JavascriptRootObjectWrapper(browser->GetIdentifier(), browserWrapper->BrowserProcess);
405+
#endif
398406

399407
browserWrapper->JavascriptRootObjectWrappers->TryAdd(frameId, rootObjectWrapper);
400408
}

CefSharp.BrowserSubprocess.Core/CefBrowserWrapper.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
#include "JavascriptRootObjectWrapper.h"
1313

1414
using namespace CefSharp::Internals::Async;
15+
#ifndef NETCOREAPP
1516
using namespace System::ServiceModel;
17+
#endif
1618
using namespace System::Threading;
1719
using namespace System::Threading::Tasks;
1820

@@ -65,9 +67,8 @@ namespace CefSharp
6567
#ifndef NETCOREAPP
6668
// This allows us to create the WCF proxies back to our parent process.
6769
property ChannelFactory<IBrowserProcess^>^ ChannelFactory;
68-
#endif
69-
7070
// The WCF proxy to the parent process.
7171
property IBrowserProcess^ BrowserProcess;
72+
#endif
7273
};
7374
}

CefSharp.BrowserSubprocess.Core/CefSharp.BrowserSubprocess.Core.netcore.vcxproj

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -169,31 +169,24 @@
169169
<ClInclude Include="..\CefSharp.Core\Internals\StringUtils.h" />
170170
<ClInclude Include="BindObjectAsyncHandler.h" />
171171
<ClCompile Include="BrowserSubprocessExecutable.h" />
172+
<ClInclude Include="JavascriptRootObjectWrapper.h" />
172173
<ClInclude Include="SubProcessApp.h" />
173174
<ClInclude Include="Async\JavascriptAsyncMethodCallback.h" />
174175
<ClInclude Include="Async\JavascriptAsyncMethodHandler.h" />
175176
<ClInclude Include="Async\JavascriptAsyncMethodWrapper.h" />
176177
<ClInclude Include="Async\JavascriptAsyncObjectWrapper.h" />
177178
<ClInclude Include="CefAppUnmanagedWrapper.h" />
178179
<ClInclude Include="JavascriptPostMessageHandler.h" />
179-
<ClCompile Include="WcfBrowserSubprocessExecutable.h" />
180180
<ClInclude Include="Wrapper\Frame.h" />
181181
<ClInclude Include="Wrapper\Browser.h" />
182182
<ClInclude Include="Wrapper\V8Context.h" />
183183
<ClInclude Include="RegisterBoundObjectHandler.h" />
184184
<ClInclude Include="RegisterBoundObjectRegistry.h" />
185185
<ClInclude Include="resource.h" />
186-
<ClInclude Include="WcfEnabledSubProcess.h" />
187186
<ClInclude Include="SubProcess.h" />
188187
<ClInclude Include="CefBrowserWrapper.h" />
189188
<ClInclude Include="JavascriptCallbackRegistry.h" />
190189
<ClInclude Include="JavascriptCallbackWrapper.h" />
191-
<ClInclude Include="JavascriptMethodWrapper.h" />
192-
<ClInclude Include="JavascriptMethodHandler.h" />
193-
<ClInclude Include="JavascriptObjectWrapper.h" />
194-
<ClInclude Include="JavascriptPropertyWrapper.h" />
195-
<ClInclude Include="JavascriptPropertyHandler.h" />
196-
<ClInclude Include="JavascriptRootObjectWrapper.h" />
197190
<ClInclude Include="Serialization\JsObjectsSerialization.h" />
198191
<ClInclude Include="Stdafx.h" />
199192
<ClInclude Include="TypeUtils.h" />
@@ -209,15 +202,10 @@
209202
<ClCompile Include="Async\JavascriptAsyncMethodWrapper.cpp" />
210203
<ClCompile Include="Async\JavascriptAsyncObjectWrapper.cpp" />
211204
<ClCompile Include="CefAppUnmanagedWrapper.cpp" />
205+
<ClCompile Include="JavascriptRootObjectWrapper.cpp" />
212206
<ClCompile Include="Wrapper\Frame.cpp" />
213207
<ClCompile Include="Wrapper\Browser.cpp" />
214-
<ClCompile Include="WcfEnabledSubProcess.cpp" />
215208
<ClCompile Include="JavascriptCallbackRegistry.cpp" />
216-
<ClCompile Include="JavascriptMethodHandler.cpp" />
217-
<ClCompile Include="JavascriptMethodWrapper.cpp" />
218-
<ClCompile Include="JavascriptObjectWrapper.cpp" />
219-
<ClCompile Include="JavascriptPropertyWrapper.cpp" />
220-
<ClCompile Include="JavascriptRootObjectWrapper.cpp" />
221209
<ClCompile Include="Serialization\JsObjectsSerialization.cpp" />
222210
<ClCompile Include="Stdafx.cpp">
223211
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

CefSharp.BrowserSubprocess.Core/JavascriptMethodHandler.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
#include "include/cef_v8.h"
88
#include "JavascriptCallbackRegistry.h"
99

10+
using namespace CefSharp::Internals::Wcf;
11+
1012
namespace CefSharp
1113
{
1214
private class JavascriptMethodHandler : public CefV8Handler

CefSharp.BrowserSubprocess.Core/JavascriptMethodWrapper.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "JavascriptMethodHandler.h"
1111

1212
using namespace System::Runtime::Serialization;
13+
using namespace CefSharp::Internals::Wcf;
1314

1415
namespace CefSharp
1516
{
@@ -44,4 +45,4 @@ namespace CefSharp
4445
void Bind(JavascriptMethod^ javascriptMethod, const CefRefPtr<CefV8Value>& v8Value);
4546
BrowserProcessResponse^ Execute(array<Object^>^ parameters);
4647
};
47-
}
48+
}

CefSharp.BrowserSubprocess.Core/JavascriptPropertyWrapper.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include "include/cef_v8.h"
99
#include "JavascriptCallbackRegistry.h"
1010

11+
using namespace CefSharp::Internals::Wcf;
12+
1113
namespace CefSharp
1214
{
1315
private ref class JavascriptPropertyWrapper
@@ -37,4 +39,4 @@ namespace CefSharp
3739

3840
void Bind(JavascriptProperty^ javascriptProperty, const CefRefPtr<CefV8Value>& v8Value, JavascriptCallbackRegistry^ callbackRegistry);
3941
};
40-
}
42+
}

CefSharp.BrowserSubprocess.Core/JavascriptRootObjectWrapper.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ namespace CefSharp
2727

2828
_wrappedAsyncObjects->Add(wrapperObject);
2929
}
30+
#ifndef NETCOREAPP
3031
else
3132
{
3233
if (_browserProcess == nullptr)
@@ -41,6 +42,7 @@ namespace CefSharp
4142

4243
_wrappedObjects->Add(wrapperObject);
4344
}
45+
#endif
4446
}
4547
}
4648
}
@@ -66,4 +68,4 @@ namespace CefSharp
6668
}
6769
return result;
6870
}
69-
}
71+
}

CefSharp.BrowserSubprocess.Core/JavascriptRootObjectWrapper.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@
66

77
#include "include/cef_v8.h"
88
#include "JavascriptCallbackRegistry.h"
9+
#ifndef NETCOREAPP
910
#include "JavascriptObjectWrapper.h"
11+
#endif
1012
#include "Async/JavascriptAsyncObjectWrapper.h"
1113

1214
using namespace System::Runtime::Serialization;
1315
using namespace System::Linq;
1416
using namespace System::Collections::Generic;
1517

1618
using namespace CefSharp::Internals::Async;
19+
#ifndef NETCOREAPP
20+
using namespace CefSharp::Internals::Wcf;
21+
#endif
1722

1823
namespace CefSharp
1924
{
@@ -28,10 +33,14 @@ namespace CefSharp
2833
//Is static so ids are unique to this process https://github.com/cefsharp/CefSharp/issues/2792
2934
static int64 _lastCallback;
3035

36+
#ifndef NETCOREAPP
3137
initonly List<JavascriptObjectWrapper^>^ _wrappedObjects;
38+
#endif
3239
initonly List<JavascriptAsyncObjectWrapper^>^ _wrappedAsyncObjects;
3340
initonly Dictionary<int64, JavascriptAsyncMethodCallback^>^ _methodCallbacks;
41+
#ifndef NETCOREAPP
3442
IBrowserProcess^ _browserProcess;
43+
#endif
3544
// The entire set of possible JavaScript functions to
3645
// call directly into.
3746
JavascriptCallbackRegistry^ _callbackRegistry;
@@ -45,10 +54,16 @@ namespace CefSharp
4554
}
4655

4756
public:
57+
#ifdef NETCOREAPP
58+
JavascriptRootObjectWrapper(int browserId)
59+
#else
4860
JavascriptRootObjectWrapper(int browserId, IBrowserProcess^ browserProcess)
61+
#endif
4962
{
63+
#ifndef NETCOREAPP
5064
_browserProcess = browserProcess;
5165
_wrappedObjects = gcnew List<JavascriptObjectWrapper^>();
66+
#endif
5267
_wrappedAsyncObjects = gcnew List<JavascriptAsyncObjectWrapper^>();
5368
_callbackRegistry = gcnew JavascriptCallbackRegistry(browserId);
5469
_methodCallbacks = gcnew Dictionary<int64, JavascriptAsyncMethodCallback^>();
@@ -62,12 +77,15 @@ namespace CefSharp
6277
_callbackRegistry = nullptr;
6378
}
6479

80+
#ifndef NETCOREAPP
6581
for each (JavascriptObjectWrapper^ var in _wrappedObjects)
6682
{
6783
delete var;
6884
}
6985
_wrappedObjects->Clear();
7086

87+
#endif
88+
7189
for each (JavascriptAsyncObjectWrapper^ var in _wrappedAsyncObjects)
7290
{
7391
delete var;

0 commit comments

Comments
 (0)