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
content / public / test / fenced_frame_reporter_observer.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/fenced_frame_reporter_observer.h"
#include <memory>
#include <optional>
#include "base/check.h"
#include "base/memory/raw_ptr.h"
#include "base/test/test_future.h"
#include "content/browser/fenced_frame/fenced_frame_config.h"
#include "content/browser/fenced_frame/fenced_frame_reporter.h"
#include "content/browser/renderer_host/frame_tree_node.h"
#include "content/browser/renderer_host/render_frame_host_impl.h"
#include "third_party/abseil-cpp/absl/types/variant.h"
namespace content {
namespace test {
FencedFrameReporterObserverForTesting::FencedFrameReporterObserverForTesting(
FencedFrameReporter* fenced_frame_reporter,
const FencedFrameReporter::DestinationVariant& event_variant)
: fenced_frame_reporter_(fenced_frame_reporter),
event_variant_(event_variant) {
fenced_frame_reporter_->AddObserverForTesting(this);
}
FencedFrameReporterObserverForTesting::
~FencedFrameReporterObserverForTesting() {
if (fenced_frame_reporter_) {
fenced_frame_reporter_->RemoveObserverForTesting(this);
}
}
void FencedFrameReporterObserverForTesting::OnBeaconQueued(
const FencedFrameReporter::DestinationVariant& event_variant,
bool is_queued) {
if (event_variant_ == event_variant) {
is_event_queued_.SetValue(is_queued);
}
}
bool FencedFrameReporterObserverForTesting::IsReportingEventQueued() {
return is_event_queued_.Take();
}
std::unique_ptr<FencedFrameReporterObserverForTesting>
InstallFencedFrameReporterObserver(
RenderFrameHost* fenced_frame_rfh,
const FencedFrameReporter::DestinationVariant& event_variant) {
std::optional<content::FencedFrameProperties> fenced_frame_properties =
static_cast<content::RenderFrameHostImpl*>(fenced_frame_rfh)
->frame_tree_node()
->GetFencedFrameProperties();
CHECK(fenced_frame_properties.has_value());
scoped_refptr<content::FencedFrameReporter> fenced_frame_reporter =
fenced_frame_properties->fenced_frame_reporter();
CHECK(fenced_frame_reporter);
return std::make_unique<FencedFrameReporterObserverForTesting>(
fenced_frame_reporter.get(), event_variant);
}
} // namespace test
} // namespace content