Skip to content

Commit 90aa8bf

Browse files
authored
Merge b81cbb2 into 48b27f5
2 parents 48b27f5 + b81cbb2 commit 90aa8bf

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

+710
-43
lines changed

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

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="..\packages\cef.sdk.83.3.12\build\cef.sdk.props" Condition="Exists('..\packages\cef.sdk.83.3.12\build\cef.sdk.props')" />
3+
<Import Project="..\packages\cef.sdk.83.4.0\build\cef.sdk.props" Condition="Exists('..\packages\cef.sdk.83.4.0\build\cef.sdk.props')" />
44
<ItemGroup Label="ProjectConfigurations">
55
<ProjectConfiguration Include="Debug|Win32">
66
<Configuration>Debug</Configuration>
@@ -246,4 +246,10 @@
246246
</ItemGroup>
247247
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
248248
<ImportGroup Label="ExtensionTargets" />
249+
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
250+
<PropertyGroup>
251+
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
252+
</PropertyGroup>
253+
<Error Condition="!Exists('..\packages\cef.sdk.83.4.0\build\cef.sdk.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.sdk.83.4.0\build\cef.sdk.props'))" />
254+
</Target>
249255
</Project>

CefSharp.BrowserSubprocess.Core/Resource.rc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
1 VERSIONINFO
2-
FILEVERSION 81,3,100
3-
PRODUCTVERSION 81,3,100
2+
FILEVERSION 83,4,0
3+
PRODUCTVERSION 83,4,0
44
FILEFLAGSMASK 0x17L
55
#ifdef _DEBUG
66
FILEFLAGS 0x1L
@@ -16,10 +16,10 @@ BEGIN
1616
BLOCK "040904b0"
1717
BEGIN
1818
VALUE "FileDescription", "CefSharp.BrowserSubprocess.Core"
19-
VALUE "FileVersion", "81.3.100"
19+
VALUE "FileVersion", "83.4.0"
2020
VALUE "LegalCopyright", "Copyright © 2020 The CefSharp Authors"
2121
VALUE "ProductName", "CefSharp"
22-
VALUE "ProductVersion", "81.3.100"
22+
VALUE "ProductVersion", "83.4.0"
2323
END
2424
END
2525
BLOCK "VarFileInfo"
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="cef.sdk" version="83.3.12" targetFramework="native" />
3+
<package id="cef.sdk" version="83.4.0" targetFramework="native" />
44
</packages>

CefSharp.BrowserSubprocess/app.manifest

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"
99
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
1010

11-
<assemblyIdentity version="81.3.100.0" name="CefSharp.BrowserSubprocess.app" />
11+
<assemblyIdentity version="83.4.0.0" name="CefSharp.BrowserSubprocess.app" />
1212
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
1313
<security>
1414
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">

CefSharp.Core/CefSharp.Core.vcxproj

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="..\packages\cef.sdk.83.3.12\build\cef.sdk.props" Condition="Exists('..\packages\cef.sdk.83.3.12\build\cef.sdk.props')" />
3+
<Import Project="..\packages\cef.sdk.83.4.0\build\cef.sdk.props" Condition="Exists('..\packages\cef.sdk.83.4.0\build\cef.sdk.props')" />
44
<ItemGroup Label="ProjectConfigurations">
55
<ProjectConfiguration Include="Debug|Win32">
66
<Configuration>Debug</Configuration>
@@ -261,6 +261,8 @@
261261
<ItemGroup>
262262
<ClInclude Include="BrowserSettings.h" />
263263
<ClInclude Include="Cef.h" />
264+
<ClInclude Include="Internals\CefDevToolsMessageObserverAdapter.h" />
265+
<ClInclude Include="Internals\CefRegistrationWrapper.h" />
264266
<ClInclude Include="Internals\CefResourceReadCallbackWrapper.h" />
265267
<ClInclude Include="Internals\CefCookieAccessFilterAdapter.h" />
266268
<ClInclude Include="Internals\CefExtensionHandlerAdapter.h" />
@@ -356,4 +358,10 @@
356358
</ItemGroup>
357359
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
358360
<ImportGroup Label="ExtensionTargets" />
361+
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
362+
<PropertyGroup>
363+
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
364+
</PropertyGroup>
365+
<Error Condition="!Exists('..\packages\cef.sdk.83.4.0\build\cef.sdk.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.sdk.83.4.0\build\cef.sdk.props'))" />
366+
</Target>
359367
</Project>

CefSharp.Core/CefSharp.Core.vcxproj.filters

+6
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,12 @@
322322
<ClInclude Include="CefSettingsBase.h">
323323
<Filter>Header Files</Filter>
324324
</ClInclude>
325+
<ClInclude Include="Internals\CefDevToolsMessageObserverAdapter.h">
326+
<Filter>Header Files</Filter>
327+
</ClInclude>
328+
<ClInclude Include="Internals\CefRegistrationWrapper.h">
329+
<Filter>Header Files</Filter>
330+
</ClInclude>
325331
</ItemGroup>
326332
<ItemGroup>
327333
<ClInclude Include="Internals\CefFrameWrapper.h">

CefSharp.Core/Internals/CefBrowserHostWrapper.cpp

+77-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include "CefBrowserHostWrapper.h"
77

88
#include "include\cef_client.h"
9+
#include "include\cef_parser.h"
910

1011
#include "Cef.h"
1112
#include "CefExtensionWrapper.h"
@@ -14,6 +15,8 @@
1415
#include "CefRunFileDialogCallbackAdapter.h"
1516
#include "CefPdfPrintCallbackWrapper.h"
1617
#include "CefNavigationEntryVisitorAdapter.h"
18+
#include "CefRegistrationWrapper.h"
19+
#include "CefDevToolsMessageObserverAdapter.h"
1720
#include "RequestContext.h"
1821
#include "WindowInfo.h"
1922

@@ -193,6 +196,79 @@ bool CefBrowserHostWrapper::HasDevTools::get()
193196
return _browserHost->HasDevTools();
194197
}
195198

199+
bool CefBrowserHostWrapper::SendDevToolsMessage(String^ messageAsJson)
200+
{
201+
ThrowIfDisposed();
202+
203+
ThrowIfExecutedOnNonCefUiThread();
204+
205+
if (String::IsNullOrEmpty(messageAsJson))
206+
{
207+
throw gcnew ArgumentNullException("messageAsJson");
208+
}
209+
210+
//NOTE: Prefix with cli:: namespace as VS2015 gets confused with std::array
211+
cli::array<Byte>^ buffer = System::Text::Encoding::UTF8->GetBytes(messageAsJson);
212+
pin_ptr<Byte> src = &buffer[0];
213+
214+
return _browserHost->SendDevToolsMessage(static_cast<void*>(src), buffer->Length);
215+
}
216+
217+
int CefBrowserHostWrapper::ExecuteDevToolsMethod(int messageId, String^ method, IDictionary<String^, Object^>^ paramaters)
218+
{
219+
ThrowIfDisposed();
220+
221+
ThrowIfExecutedOnNonCefUiThread();
222+
223+
if (paramaters == nullptr)
224+
{
225+
return _browserHost->ExecuteDevToolsMethod(messageId, StringUtils::ToNative(method), NULL);
226+
}
227+
228+
auto val = TypeConversion::ToNative(paramaters);
229+
230+
if (val && val->GetType() == VTYPE_DICTIONARY)
231+
{
232+
return _browserHost->ExecuteDevToolsMethod(messageId, StringUtils::ToNative(method), val->GetDictionary());
233+
}
234+
235+
throw gcnew Exception("Unable to convert paramaters to CefDictionaryValue.");
236+
}
237+
238+
239+
240+
int CefBrowserHostWrapper::ExecuteDevToolsMethod(int messageId, String^ method, String^ paramsAsJson)
241+
{
242+
ThrowIfDisposed();
243+
244+
ThrowIfExecutedOnNonCefUiThread();
245+
246+
if (String::IsNullOrEmpty(paramsAsJson))
247+
{
248+
return _browserHost->ExecuteDevToolsMethod(messageId, StringUtils::ToNative(method), NULL);
249+
}
250+
251+
auto val = CefParseJSON(StringUtils::ToNative(paramsAsJson), cef_json_parser_options_t::JSON_PARSER_RFC);
252+
253+
if (val && val->GetType() == VTYPE_DICTIONARY)
254+
{
255+
return _browserHost->ExecuteDevToolsMethod(messageId, StringUtils::ToNative(method), val->GetDictionary());
256+
}
257+
258+
throw gcnew Exception("Unable to parse paramsAsJson with CefParseJSON method");
259+
}
260+
261+
IRegistration^ CefBrowserHostWrapper::AddDevToolsMessageObserver(IDevToolsMessageObserver^ observer)
262+
{
263+
ThrowIfDisposed();
264+
265+
ThrowIfExecutedOnNonCefUiThread();
266+
267+
auto registration = _browserHost->AddDevToolsMessageObserver(new CefDevToolsMessageObserverAdapter(observer));
268+
269+
return gcnew CefRegistrationWrapper(registration);
270+
}
271+
196272
void CefBrowserHostWrapper::AddWordToDictionary(String^ word)
197273
{
198274
ThrowIfDisposed();
@@ -321,7 +397,7 @@ void CefBrowserHostWrapper::SendKeyEvent(int message, int wParam, int lParam)
321397
}
322398
}
323399
}
324-
400+
325401
_browserHost->SendKeyEvent(keyEvent);
326402
}
327403

CefSharp.Core/Internals/CefBrowserHostWrapper.h

+5
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,11 @@ namespace CefSharp
7171
bool get();
7272
}
7373

74+
virtual bool SendDevToolsMessage(String^ messageAsJson);
75+
virtual int ExecuteDevToolsMethod(int messageId, String^ method, String^ paramsAsJson);
76+
virtual int ExecuteDevToolsMethod(int messageId, String^ method, IDictionary<String^, Object^>^ paramaters);
77+
virtual IRegistration^ AddDevToolsMessageObserver(IDevToolsMessageObserver^ observer);
78+
7479
virtual void AddWordToDictionary(String^ word);
7580
virtual void ReplaceMisspelling(String^ word);
7681

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// Copyright © 2014 The CefSharp Authors. All rights reserved.
2+
//
3+
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
4+
5+
#pragma once
6+
7+
#include "Stdafx.h"
8+
#include "include\cef_callback.h"
9+
10+
#include "CefBrowserWrapper.h"
11+
#include "StringUtils.h"
12+
13+
using namespace CefSharp::Callback;
14+
using namespace System::IO;
15+
16+
namespace CefSharp
17+
{
18+
namespace Internals
19+
{
20+
private class CefDevToolsMessageObserverAdapter : public CefDevToolsMessageObserver
21+
{
22+
private:
23+
gcroot<IDevToolsMessageObserver^> _handler;
24+
25+
public:
26+
CefDevToolsMessageObserverAdapter(IDevToolsMessageObserver^ handler)
27+
{
28+
_handler = handler;
29+
}
30+
31+
~CefDevToolsMessageObserverAdapter()
32+
{
33+
delete _handler;
34+
_handler = nullptr;
35+
}
36+
37+
virtual bool OnDevToolsMessage(CefRefPtr<CefBrowser> browser, const void* message, size_t message_size)
38+
{
39+
CefBrowserWrapper browserWrapper(browser);
40+
UnmanagedMemoryStream messageStream((Byte*)message, (Int64)message_size, (Int64)message_size, FileAccess::Read);
41+
42+
return _handler->OnDevToolsMessage(%browserWrapper, %messageStream);
43+
}
44+
45+
virtual void OnDevToolsMethodResult(CefRefPtr<CefBrowser> browser,
46+
int message_id,
47+
bool success,
48+
const void* result,
49+
size_t result_size) OVERRIDE
50+
{
51+
CefBrowserWrapper browserWrapper(browser);
52+
UnmanagedMemoryStream resultStream((Byte*)result, (Int64)result_size, (Int64)result_size, FileAccess::Read);
53+
54+
_handler->OnDevToolsMethodResult(%browserWrapper, message_id, success, %resultStream);
55+
}
56+
57+
virtual void OnDevToolsEvent(CefRefPtr<CefBrowser> browser, const CefString& method, const void* params, size_t params_size) OVERRIDE
58+
{
59+
CefBrowserWrapper browserWrapper(browser);
60+
UnmanagedMemoryStream paramsStream((Byte*)params, (Int64)params_size, (Int64)params_size, FileAccess::Read);
61+
62+
_handler->OnDevToolsEvent(%browserWrapper, StringUtils::ToClr(method), %paramsStream);
63+
}
64+
65+
void OnDevToolsAgentAttached(CefRefPtr<CefBrowser> browser) OVERRIDE
66+
{
67+
CefBrowserWrapper browserWrapper(browser);
68+
69+
_handler->OnDevToolsAgentAttached(%browserWrapper);
70+
}
71+
72+
void OnDevToolsAgentDetached(CefRefPtr<CefBrowser> browser) OVERRIDE
73+
{
74+
CefBrowserWrapper browserWrapper(browser);
75+
76+
_handler->OnDevToolsAgentDetached(%browserWrapper);
77+
}
78+
79+
IMPLEMENT_REFCOUNTING(CefDevToolsMessageObserverAdapter);
80+
};
81+
}
82+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright © 2020 The CefSharp Authors. All rights reserved.
2+
//
3+
// Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
4+
5+
#pragma once
6+
7+
#include "Stdafx.h"
8+
9+
#include "include\cef_registration.h"
10+
#include "CefWrapper.h"
11+
12+
namespace CefSharp
13+
{
14+
namespace Internals
15+
{
16+
private ref class CefRegistrationWrapper : public IRegistration, public CefWrapper
17+
{
18+
private:
19+
MCefRefPtr<CefRegistration> _callback;
20+
21+
public:
22+
CefRegistrationWrapper(CefRefPtr<CefRegistration> &callback)
23+
: _callback(callback)
24+
{
25+
26+
}
27+
28+
!CefRegistrationWrapper()
29+
{
30+
_callback = NULL;
31+
}
32+
33+
~CefRegistrationWrapper()
34+
{
35+
this->!CefRegistrationWrapper();
36+
37+
_disposed = true;
38+
}
39+
};
40+
}
41+
}

CefSharp.Core/Internals/ClientAdapter.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -648,6 +648,18 @@ namespace CefSharp
648648
}
649649
}
650650

651+
void ClientAdapter::OnDocumentAvailableInMainFrame(CefRefPtr<CefBrowser> browser)
652+
{
653+
auto handler = _browserControl->RequestHandler;
654+
655+
if (handler != nullptr)
656+
{
657+
auto browserWrapper = GetBrowserWrapper(browser->GetIdentifier(), browser->IsPopup());
658+
659+
handler->OnDocumentAvailableInMainFrame(_browserControl, browserWrapper);
660+
}
661+
}
662+
651663
bool ClientAdapter::GetAuthCredentials(CefRefPtr<CefBrowser> browser, const CefString& originUrl, bool isProxy,
652664
const CefString& host, int port, const CefString& realm, const CefString& scheme, CefRefPtr<CefAuthCallback> callback)
653665
{

CefSharp.Core/Internals/ClientAdapter.h

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ namespace CefSharp
127127
virtual DECL void OnPluginCrashed(CefRefPtr<CefBrowser> browser, const CefString& plugin_path) OVERRIDE;
128128
virtual DECL void OnRenderViewReady(CefRefPtr<CefBrowser> browser) OVERRIDE;
129129
virtual DECL void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status) OVERRIDE;
130+
virtual DECL void OnDocumentAvailableInMainFrame(CefRefPtr<CefBrowser> browser) OVERRIDE;
130131

131132
// CefDisplayHandler
132133
virtual DECL void OnLoadingStateChange(CefRefPtr<CefBrowser> browser, bool isLoading, bool canGoBack, bool canGoForward) OVERRIDE;

CefSharp.Core/Resource.rc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
1 VERSIONINFO
2-
FILEVERSION 81,3,100
3-
PRODUCTVERSION 81,3,100
2+
FILEVERSION 83,4,0
3+
PRODUCTVERSION 83,4,0
44
FILEFLAGSMASK 0x17L
55
#ifdef _DEBUG
66
FILEFLAGS 0x1L
@@ -16,10 +16,10 @@ BEGIN
1616
BLOCK "040904b0"
1717
BEGIN
1818
VALUE "FileDescription", "CefSharp.Core"
19-
VALUE "FileVersion", "81.3.100"
19+
VALUE "FileVersion", "83.4.0"
2020
VALUE "LegalCopyright", "Copyright © 2020 The CefSharp Authors"
2121
VALUE "ProductName", "CefSharp"
22-
VALUE "ProductVersion", "81.3.100"
22+
VALUE "ProductVersion", "83.4.0"
2323
END
2424
END
2525
BLOCK "VarFileInfo"

CefSharp.Core/packages.config

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="cef.sdk" version="83.3.12" targetFramework="native" />
3+
<package id="cef.sdk" version="83.4.0" targetFramework="native" />
44
</packages>

0 commit comments

Comments
 (0)