Skip to content

Commit d9e1be8

Browse files
committed
feat: expose CefPermissionHandler
1 parent 177055d commit d9e1be8

3 files changed

Lines changed: 120 additions & 0 deletions

File tree

include/CefViewBrowserClient.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ class CefViewBrowserClient
4646
, public CefKeyboardHandler
4747
, public CefLifeSpanHandler
4848
, public CefLoadHandler
49+
#if CEF_VERSION_MAJOR >= 106
50+
, public CefPermissionHandler
51+
#endif
4952
, public CefRequestHandler
5053
, public CefResourceRequestHandler
5154
, public CefRenderHandler
@@ -123,6 +126,13 @@ class CefViewBrowserClient
123126
const CefString& password,
124127
int priority = 0);
125128

129+
/// <summary>
130+
///
131+
/// </summary>
132+
/// <param name="browser"></param>
133+
/// <param name="frame_id"></param>
134+
/// <param name="msg"></param>
135+
/// <returns></returns>
126136
bool TriggerEvent(CefRefPtr<CefBrowser> browser, const CefFrameId& frame_id, const CefRefPtr<CefProcessMessage> msg);
127137

128138
/// <summary>
@@ -369,6 +379,27 @@ class CefViewBrowserClient
369379
const CefString& failedUrl) override;
370380
#pragma endregion
371381

382+
#if CEF_VERSION_MAJOR >= 106
383+
#pragma region CefPermissionHandler
384+
virtual CefRefPtr<CefPermissionHandler> GetPermissionHandler() override;
385+
bool OnRequestMediaAccessPermission(CefRefPtr<CefBrowser> browser,
386+
CefRefPtr<CefFrame> frame,
387+
const CefString& requesting_origin,
388+
uint32_t requested_permissions,
389+
CefRefPtr<CefMediaAccessCallback> callback) override;
390+
391+
bool OnShowPermissionPrompt(CefRefPtr<CefBrowser> browser,
392+
uint64_t prompt_id,
393+
const CefString& requesting_origin,
394+
uint32_t requested_permissions,
395+
CefRefPtr<CefPermissionPromptCallback> callback) override;
396+
397+
void OnDismissPermissionPrompt(CefRefPtr<CefBrowser> browser,
398+
uint64_t prompt_id,
399+
cef_permission_request_result_t result) override;
400+
#pragma endregion
401+
#endif
402+
372403
// CefRenderHandler
373404
#pragma region CefRenderHandler
374405
virtual CefRefPtr<CefRenderHandler> GetRenderHandler() override;

include/CefViewBrowserClientDelegate.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,9 @@ class CefViewBrowserClientDelegateInterface
198198
const CefString& message_text,
199199
bool is_reload,
200200
CefRefPtr<CefJSDialogCallback>& callback) = 0;
201+
201202
virtual void onResetDialogState(CefRefPtr<CefBrowser>& browser) = 0;
203+
202204
virtual void onDialogClosed(CefRefPtr<CefBrowser>& browser) = 0;
203205
#pragma endregion
204206

@@ -250,6 +252,32 @@ class CefViewBrowserClientDelegateInterface
250252
bool& handled) = 0;
251253
#pragma endregion
252254

255+
#if CEF_VERSION_MAJOR >= 106
256+
#pragma region PermissionHandler
257+
virtual bool onRequestMediaAccessPermission(CefRefPtr<CefBrowser>& browser,
258+
CefRefPtr<CefFrame>& frame,
259+
const CefString& requesting_origin,
260+
uint32_t requested_permissions,
261+
CefRefPtr<CefMediaAccessCallback>& callback)
262+
{
263+
return false;
264+
}
265+
266+
virtual bool onShowPermissionPrompt(CefRefPtr<CefBrowser>& browser,
267+
uint64_t prompt_id,
268+
const CefString& requesting_origin,
269+
uint32_t requested_permissions,
270+
CefRefPtr<CefPermissionPromptCallback>& callback)
271+
{
272+
return false;
273+
}
274+
275+
virtual void onDismissPermissionPrompt(CefRefPtr<CefBrowser>& browser,
276+
uint64_t prompt_id,
277+
cef_permission_request_result_t result) {};
278+
#pragma endregion
279+
#endif
280+
253281
// Off screen rendering
254282
#pragma region RenderHandler
255283
virtual bool getRootScreenRect(CefRefPtr<CefBrowser>& browser, CefRect& rect) { return false; }
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <CefViewBrowserClient.h>
2+
3+
#pragma region stl_headers
4+
#include <sstream>
5+
#include <string>
6+
#include <algorithm>
7+
#pragma endregion
8+
9+
#include <Common/CefViewCoreLog.h>
10+
11+
CefRefPtr<CefPermissionHandler>
12+
CefViewBrowserClient::GetPermissionHandler()
13+
{
14+
return this;
15+
}
16+
17+
bool
18+
CefViewBrowserClient::OnRequestMediaAccessPermission(CefRefPtr<CefBrowser> browser,
19+
CefRefPtr<CefFrame> frame,
20+
const CefString& requesting_origin,
21+
uint32_t requested_permissions,
22+
CefRefPtr<CefMediaAccessCallback> callback)
23+
{
24+
CEF_REQUIRE_UI_THREAD();
25+
26+
auto delegate = client_delegate_.lock();
27+
if (delegate) {
28+
return delegate->onRequestMediaAccessPermission(browser, frame, requesting_origin, requested_permissions, callback);
29+
}
30+
31+
return false;
32+
}
33+
34+
bool
35+
CefViewBrowserClient::OnShowPermissionPrompt(CefRefPtr<CefBrowser> browser,
36+
uint64_t prompt_id,
37+
const CefString& requesting_origin,
38+
uint32_t requested_permissions,
39+
CefRefPtr<CefPermissionPromptCallback> callback)
40+
{
41+
CEF_REQUIRE_UI_THREAD();
42+
43+
auto delegate = client_delegate_.lock();
44+
if (delegate) {
45+
return delegate->onShowPermissionPrompt(browser, prompt_id, requesting_origin, requested_permissions, callback);
46+
}
47+
48+
return false;
49+
}
50+
51+
void
52+
CefViewBrowserClient::OnDismissPermissionPrompt(CefRefPtr<CefBrowser> browser,
53+
uint64_t prompt_id,
54+
cef_permission_request_result_t result)
55+
{
56+
CEF_REQUIRE_UI_THREAD();
57+
58+
auto delegate = client_delegate_.lock();
59+
if (delegate)
60+
delegate->onDismissPermissionPrompt(browser, prompt_id, result);
61+
}

0 commit comments

Comments
 (0)