// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_COMPONENT_H_ #define THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_COMPONENT_H_ #include <vector> #include "base/functional/callback.h" #include "base/memory/raw_ptr.h" #include "base/time/time.h" #include "media/base/timestamp_constants.h" #include "media/base/watch_time_keys.h" #include "media/mojo/mojom/watch_time_recorder.mojom.h" namespace blink { // Every input used to calculate watch time functions the same way, so we use a // common WatchTimeComponent class to avoid lots of copy/paste and enforce rigor // in the reporter. Components are not thread-safe. // // E.g., each component does something like flip pending value, record timestamp // of that value change, wait for next reporting cycle, finalize the elapsed // time, flip the actual value, and then start recording from that previous // finalize time. They may also clear the pending value flip if the value // changes back to the previous value. // TODO(https://crbug.com/1198341): Move to renderer/platform/media once its // dependencies are moved to Blink. template <typename T> class WatchTimeComponent { … }; } // namespace blink #endif // THIRD_PARTY_BLINK_PUBLIC_COMMON_MEDIA_WATCH_TIME_COMPONENT_H_