[M120 Migration][VD] Enable direct rendering for TVPlus
[platform/framework/web/chromium-efl.git] / components / metrics / metrics_logs_event_manager.cc
1 // Copyright 2022 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "components/metrics/metrics_logs_event_manager.h"
6
7 namespace metrics {
8
9 // static
10 bool MetricsLogsEventManager::ScopedNotifyLogType::instance_exists_ = false;
11
12 MetricsLogsEventManager::ScopedNotifyLogType::ScopedNotifyLogType(
13     MetricsLogsEventManager* logs_event_manager,
14     MetricsLog::LogType log_type)
15     : logs_event_manager_(logs_event_manager) {
16   DCHECK(!instance_exists_);
17   instance_exists_ = true;
18   if (logs_event_manager_)
19     logs_event_manager_->NotifyLogType(log_type);
20 }
21
22 MetricsLogsEventManager::ScopedNotifyLogType::~ScopedNotifyLogType() {
23   DCHECK(instance_exists_);
24   if (logs_event_manager_)
25     logs_event_manager_->NotifyLogType(absl::nullopt);
26   instance_exists_ = false;
27 }
28
29 MetricsLogsEventManager::MetricsLogsEventManager() = default;
30 MetricsLogsEventManager::~MetricsLogsEventManager() = default;
31
32 void MetricsLogsEventManager::AddObserver(Observer* observer) {
33   observers_.AddObserver(observer);
34 }
35
36 void MetricsLogsEventManager::RemoveObserver(Observer* observer) {
37   observers_.RemoveObserver(observer);
38 }
39
40 void MetricsLogsEventManager::NotifyLogCreated(base::StringPiece log_hash,
41                                                base::StringPiece log_data,
42                                                base::StringPiece log_timestamp,
43                                                CreateReason reason) {
44   for (Observer& observer : observers_)
45     observer.OnLogCreated(log_hash, log_data, log_timestamp, reason);
46 }
47
48 void MetricsLogsEventManager::NotifyLogEvent(LogEvent event,
49                                              base::StringPiece log_hash,
50                                              base::StringPiece message) {
51   for (Observer& observer : observers_)
52     observer.OnLogEvent(event, log_hash, message);
53 }
54
55 void MetricsLogsEventManager::NotifyLogType(
56     absl::optional<MetricsLog::LogType> log_type) {
57   for (Observer& observer : observers_)
58     observer.OnLogType(log_type);
59 }
60
61 }  // namespace metrics