Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Unified Diff: components/ukm/ukm_recorder_impl.h

Issue 2883563002: Refactor UKM interface for mojo-ification (Closed)
Patch Set: Fix uma_session_stats.cc Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/ukm/ukm_recorder_impl.h
diff --git a/components/ukm/ukm_recorder_impl.h b/components/ukm/ukm_recorder_impl.h
new file mode 100644
index 0000000000000000000000000000000000000000..44cd8d8edef7db208d454336d707cb7f84f8f8ef
--- /dev/null
+++ b/components/ukm/ukm_recorder_impl.h
@@ -0,0 +1,72 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef COMPONENTS_UKM_UKM_RECORDER_IMPL_H_
+#define COMPONENTS_UKM_UKM_RECORDER_IMPL_H_
+
+#include <map>
+#include <set>
+#include <vector>
+
+#include "base/threading/thread_checker.h"
+#include "components/ukm/public/interfaces/ukm_interface.mojom.h"
+#include "components/ukm/public/ukm_recorder.h"
+
+namespace ukm {
+
+class UkmSource;
+class Report;
+
+namespace debug {
+class DebugPage;
+}
+
+class UkmRecorderImpl : public UkmRecorder {
+ public:
+ UkmRecorderImpl();
+ ~UkmRecorderImpl() override;
+
+ // Enables/disables recording control if data is allowed to be collected.
+ void EnableRecording();
+ void DisableRecording();
+
+ // Deletes stored recordings.
+ void Purge();
+
+ protected:
+ // Cache the list of whitelisted entries from the field trial parameter.
+ void StoreWhitelistedEntries();
+
+ // Writes recordings into a report proto, and clears recordings.
+ void StoreRecordingsInReport(Report* report);
+
+ const std::map<ukm::SourceId, std::unique_ptr<UkmSource>>& sources() const {
+ return sources_;
+ }
+
+ const std::vector<mojom::UkmEntryPtr>& entries() const { return entries_; }
+
+ private:
+ friend ::ukm::debug::DebugPage;
+ // UkmRecorder:
+ void UpdateSourceURL(SourceId source_id, const GURL& url) override;
+ void AddEntry(mojom::UkmEntryPtr entry) override;
+
+ // Whether recording new data is currently allowed.
+ bool recording_enabled_;
+
+ // Contains newly added sources and entries of UKM metrics which periodically
+ // get serialized and cleared by BuildAndStoreLog().
+ std::map<ukm::SourceId, std::unique_ptr<UkmSource>> sources_;
+ std::vector<mojom::UkmEntryPtr> entries_;
+
+ // Whitelisted Entry hashes, only the ones in this set will be recorded.
+ std::set<uint64_t> whitelisted_entry_hashes_;
+
+ THREAD_CHECKER(thread_checker_);
+};
+
+} // namespace ukm
+
+#endif // COMPONENTS_UKM_UKM_RECORDER_IMPL_H_

Powered by Google App Engine
This is Rietveld 408576698