1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
content / public / test / mojo_capability_control_test_util.cc [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/public/test/mojo_capability_control_test_util.h"
#include "base/functional/bind.h"
#include "content/browser/renderer_host/render_frame_host_impl.h"
#include "third_party/blink/public/mojom/browser_interface_broker.mojom.h"
namespace content::test {
MojoCapabilityControlTestHelper::MojoCapabilityControlTestHelper() = default;
MojoCapabilityControlTestHelper::~MojoCapabilityControlTestHelper() = default;
void MojoCapabilityControlTestHelper::
RegisterTestBrowserInterfaceBindersForFrame(
RenderFrameHost* render_frame_host,
mojo::BinderMapWithContext<RenderFrameHost*>* map) {
map->Add<mojom::TestInterfaceForDefer>(
base::BindRepeating(&MojoCapabilityControlTestHelper::BindDeferInterface,
base::Unretained(this)));
map->Add<mojom::TestInterfaceForGrant>(
base::BindRepeating(&MojoCapabilityControlTestHelper::BindGrantInterface,
base::Unretained(this)));
map->Add<mojom::TestInterfaceForCancel>(
base::BindRepeating(&MojoCapabilityControlTestHelper::BindCancelInterface,
base::Unretained(this)));
map->Add<mojom::TestInterfaceForUnexpected>(base::BindRepeating(
&MojoCapabilityControlTestHelper::BindUnexpectedInterface,
base::Unretained(this)));
}
void MojoCapabilityControlTestHelper::RegisterTestMojoBinderPolicies(
MojoBinderPolicyMap& policy_map) {
policy_map.SetNonAssociatedPolicy<mojom::TestInterfaceForGrant>(
MojoBinderNonAssociatedPolicy::kGrant);
policy_map.SetNonAssociatedPolicy<mojom::TestInterfaceForCancel>(
MojoBinderNonAssociatedPolicy::kCancel);
policy_map.SetNonAssociatedPolicy<mojom::TestInterfaceForUnexpected>(
MojoBinderNonAssociatedPolicy::kUnexpected);
}
void MojoCapabilityControlTestHelper::BindDeferInterface(
RenderFrameHost* render_frame_host,
mojo::PendingReceiver<mojom::TestInterfaceForDefer> receiver) {
defer_receiver_set_.Add(this, std::move(receiver));
}
void MojoCapabilityControlTestHelper::BindGrantInterface(
RenderFrameHost* render_frame_host,
mojo::PendingReceiver<mojom::TestInterfaceForGrant> receiver) {
grant_receiver_set_.Add(this, std::move(receiver));
}
void MojoCapabilityControlTestHelper::BindCancelInterface(
RenderFrameHost* render_frame_host,
mojo::PendingReceiver<mojom::TestInterfaceForCancel> receiver) {
cancel_receiver_set_.Add(this, std::move(receiver));
}
void MojoCapabilityControlTestHelper::BindUnexpectedInterface(
RenderFrameHost* render_frame_host,
mojo::PendingReceiver<mojom::TestInterfaceForUnexpected> receiver) {
unexpected_receiver_.Bind(std::move(receiver));
}
void MojoCapabilityControlTestHelper::GetInterface(
RenderFrameHost* render_frame_host,
mojo::GenericPendingReceiver receiver) {
RenderFrameHostImpl* rfhi =
static_cast<RenderFrameHostImpl*>(render_frame_host);
mojo::Receiver<blink::mojom::BrowserInterfaceBroker>& bib =
rfhi->browser_interface_broker_receiver_for_testing();
blink::mojom::BrowserInterfaceBroker* controlled_broker =
bib.internal_state()->impl();
CHECK(controlled_broker);
controlled_broker->GetInterface(std::move(receiver));
}
void MojoCapabilityControlTestHelper::Ping(PingCallback callback) {
std::move(callback).Run();
}
size_t MojoCapabilityControlTestHelper::GetDeferReceiverSetSize() {
return defer_receiver_set_.size();
}
size_t MojoCapabilityControlTestHelper::GetGrantReceiverSetSize() {
return grant_receiver_set_.size();
}
} // namespace content::test