summaryrefslogtreecommitdiff
path: root/chromium/media/blink/watch_time_component.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/blink/watch_time_component.h')
-rw-r--r--chromium/media/blink/watch_time_component.h135
1 files changed, 0 insertions, 135 deletions
diff --git a/chromium/media/blink/watch_time_component.h b/chromium/media/blink/watch_time_component.h
deleted file mode 100644
index be25696490a..00000000000
--- a/chromium/media/blink/watch_time_component.h
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2018 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 MEDIA_BLINK_WATCH_TIME_COMPONENT_H_
-#define MEDIA_BLINK_WATCH_TIME_COMPONENT_H_
-
-#include <vector>
-
-#include "base/callback.h"
-#include "base/macros.h"
-#include "base/time/time.h"
-#include "media/base/timestamp_constants.h"
-#include "media/base/watch_time_keys.h"
-#include "media/blink/media_blink_export.h"
-#include "media/mojo/mojom/watch_time_recorder.mojom.h"
-
-namespace media {
-
-// 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.
-template <typename T>
-class WatchTimeComponent {
- public:
- // Callback used to convert |current_value_| into a WatchTimeKey which will be
- // given to WatchTimeRecorder::RecordWatchTime().
- using ValueToKeyCB = base::RepeatingCallback<WatchTimeKey(T value)>;
-
- // Mirror of WatchTimeReporter::GetMediaTimeCB to avoid circular dependency.
- using GetMediaTimeCB = base::RepeatingCallback<base::TimeDelta(void)>;
-
- // |initial_value| is the starting value for |current_value_| and
- // |pending_value_|.
- //
- // |keys_to_finalize| is the list of keys which should be finalized.
- //
- // |value_to_key_cb| is optional, if unspecified every time RecordWatchTime()
- // is called, |keys_to_finalize| will also be treated as the list of keys to
- // record watch time too.
- //
- // See WatchTimeReporter constructor for |get_media_time_cb| and |recorder|.
- WatchTimeComponent(T initial_value,
- std::vector<WatchTimeKey> keys_to_finalize,
- ValueToKeyCB value_to_key_cb,
- GetMediaTimeCB get_media_time_cb,
- mojom::WatchTimeRecorder* recorder);
- ~WatchTimeComponent();
-
- // Called when the main WatchTimeReporter timer is started. Reinitializes
- // tracking variables and sets |start_timestamp_|. May be called at any time.
- void OnReportingStarted(base::TimeDelta start_timestamp);
-
- // Called when the primary value tracked by this component changes but the
- // change shouldn't take effect until the next Finalize() call.
- //
- // |pending_value_| is set to |new_value| when different than |current_value_|
- // and a finalize is marked at the current media time. If the |current_value_|
- // is unchanged any pending finalize is cleared.
- void SetPendingValue(T new_value);
-
- // Called when the primary value tracked by this component changes and the
- // change should take effect immediately. This is typically only called when
- // the watch time timer is not running.
- void SetCurrentValue(T new_value);
-
- // If there's no pending finalize, records the amount of watch time which has
- // elapsed between |current_timestamp| and |start_timestamp_| by calling into
- // mojom::WatchTimeRecorder::RecordWatchTime(). The key to be recorded to is
- // determined by the |value_to_key_cb_|; or if none is present, all keys in
- // |keys_to_finalize_| are recorded to.
- //
- // If there's a pending finalize it records the delta between |end_timestamp_|
- // and |start_timestamp_| if |end_timestamp_| < |current_timestamp|. Does not
- // complete any pending finalize. May be called multiple times even if a
- // finalize is pending.
- void RecordWatchTime(base::TimeDelta current_timestamp);
-
- // Completes any pending finalize. Which means setting |current_value_| to
- // |pending_value_| and setting |start_timestamp_| to |end_timestamp_| so that
- // reporting may continue on a new key if desired. Adds all keys that should
- // be finalized to |keys_to_finalize|.
- //
- // Callers must call mojom::WatchTimeRecorder::FinalizeWatchTime() for the
- // resulting keys in order to actually complete the finalize. We rely on the
- // calling class to perform the actual finalization since it may desire to
- // batch a set of keys into one finalize call to the recorder.
- //
- // E.g., some components may stop reporting upon Finalize() while others want
- // to report to a new key for all watch time going forward.
- void Finalize(std::vector<WatchTimeKey>* keys_to_finalize);
-
- // Returns true if Finalize() should be called.
- bool NeedsFinalize() const;
-
- // Returns the current value for |end_timestamp_|.
- base::TimeDelta end_timestamp() const { return end_timestamp_; }
-
- T current_value_for_testing() const { return current_value_; }
-
- private:
- // Initialized during construction. See constructor for details.
- const std::vector<WatchTimeKey> keys_to_finalize_;
- const ValueToKeyCB value_to_key_cb_;
- const GetMediaTimeCB get_media_time_cb_;
- mojom::WatchTimeRecorder* const recorder_;
-
- // The current value which will be used to select keys for reporting WatchTime
- // during the next RecordWatchTime() call.
- T current_value_;
-
- // A pending value which will be used to set |current_value_| once Finalize()
- // has been called.
- T pending_value_;
-
- // The starting and ending timestamps used for reporting watch time. The end
- // timestamp may be kNoTimestamp if reporting is ongoing.
- base::TimeDelta start_timestamp_;
- base::TimeDelta end_timestamp_ = kNoTimestamp;
-
- // The last media timestamp seen by RecordWatchTime().
- base::TimeDelta last_timestamp_ = kNoTimestamp;
-
- DISALLOW_COPY_AND_ASSIGN(WatchTimeComponent);
-};
-
-} // namespace media
-
-#endif // MEDIA_BLINK_WATCH_TIME_COMPONENT_H_