summaryrefslogtreecommitdiff
path: root/chromium/media/fuchsia/metrics
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/media/fuchsia/metrics
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/media/fuchsia/metrics')
-rw-r--r--chromium/media/fuchsia/metrics/BUILD.gn28
-rw-r--r--chromium/media/fuchsia/metrics/DEPS3
-rw-r--r--chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.cc139
-rw-r--r--chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.h70
-rw-r--r--chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder_test.cc202
5 files changed, 0 insertions, 442 deletions
diff --git a/chromium/media/fuchsia/metrics/BUILD.gn b/chromium/media/fuchsia/metrics/BUILD.gn
deleted file mode 100644
index ee6952ba233..00000000000
--- a/chromium/media/fuchsia/metrics/BUILD.gn
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 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.
-
-source_set("metrics") {
- sources = [
- "fuchsia_playback_events_recorder.cc",
- "fuchsia_playback_events_recorder.h",
- ]
- deps = [
- "//media/mojo/mojom",
- "//mojo/public/cpp/bindings",
- ]
-}
-
-source_set("unittests") {
- testonly = true
-
- deps = [
- ":metrics",
- "//base",
- "//base/test:test_support",
- "//media",
- "//testing/gtest",
- ]
-
- sources = [ "fuchsia_playback_events_recorder_test.cc" ]
-}
diff --git a/chromium/media/fuchsia/metrics/DEPS b/chromium/media/fuchsia/metrics/DEPS
deleted file mode 100644
index ef8ad28d9d4..00000000000
--- a/chromium/media/fuchsia/metrics/DEPS
+++ /dev/null
@@ -1,3 +0,0 @@
-include_rules = [
- "+mojo/public",
-]
diff --git a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.cc b/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.cc
deleted file mode 100644
index d883b08b38a..00000000000
--- a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2020 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.
-
-#include "media/fuchsia/metrics/fuchsia_playback_events_recorder.h"
-
-#include "base/metrics/user_metrics.h"
-#include "base/strings/stringprintf.h"
-#include "mojo/public/cpp/bindings/self_owned_receiver.h"
-
-namespace media {
-
-namespace {
-
-void RecordEventWithValueAt(const char* name,
- int64_t value,
- base::TimeTicks time) {
- base::RecordComputedActionAt(
- base::StringPrintf("WebEngine.Media.%s:%ld", name, value), time);
-}
-
-void RecordEventWithValue(const char* name, int64_t value) {
- RecordEventWithValueAt(name, value, base::TimeTicks::Now());
-}
-
-constexpr base::TimeDelta kBitrateReportPeriod =
- base::TimeDelta::FromSeconds(5);
-
-} // namespace
-
-FuchsiaPlaybackEventsRecorder::BitrateEstimator::BitrateEstimator() {}
-FuchsiaPlaybackEventsRecorder::BitrateEstimator::~BitrateEstimator() {}
-
-void FuchsiaPlaybackEventsRecorder::BitrateEstimator::Update(
- const PipelineStatistics& stats) {
- base::TimeTicks now = base::TimeTicks::Now();
-
- // The code below trusts that |stats| are valid even though they came from an
- // untrusted process. That's accepable because the stats are used only to
- // record metrics.
- if (last_stats_) {
- time_elapsed_ += now - last_stats_time_;
- audio_bytes_ +=
- stats.audio_bytes_decoded - last_stats_->audio_bytes_decoded;
- video_bytes_ +=
- stats.video_bytes_decoded - last_stats_->video_bytes_decoded;
- if (time_elapsed_ >= kBitrateReportPeriod) {
- size_t audio_bitrate_kbps =
- 8 * audio_bytes_ / time_elapsed_.InMilliseconds();
- RecordEventWithValueAt("AudioBitrate", audio_bitrate_kbps, now);
-
- size_t video_bitrate_kbps =
- 8 * video_bytes_ / time_elapsed_.InMilliseconds();
- RecordEventWithValueAt("VideoBitrate", video_bitrate_kbps, now);
-
- time_elapsed_ = base::TimeDelta();
- audio_bytes_ = 0;
- video_bytes_ = 0;
- }
- }
-
- last_stats_ = stats;
- last_stats_time_ = now;
-}
-
-void FuchsiaPlaybackEventsRecorder::BitrateEstimator::OnPause() {
- last_stats_ = {};
-}
-
-// static
-void FuchsiaPlaybackEventsRecorder::Create(
- mojo::PendingReceiver<mojom::PlaybackEventsRecorder> receiver) {
- mojo::MakeSelfOwnedReceiver(std::make_unique<FuchsiaPlaybackEventsRecorder>(),
- std::move(receiver));
-}
-
-FuchsiaPlaybackEventsRecorder::FuchsiaPlaybackEventsRecorder() = default;
-FuchsiaPlaybackEventsRecorder::~FuchsiaPlaybackEventsRecorder() = default;
-
-void FuchsiaPlaybackEventsRecorder::OnPlaying() {
- base::RecordComputedAction("WebEngine.Media.Playing");
-}
-
-void FuchsiaPlaybackEventsRecorder::OnPaused() {
- base::RecordComputedAction("WebEngine.Media.Pause");
- bitrate_estimator_.OnPause();
-}
-
-void FuchsiaPlaybackEventsRecorder::OnSeeking() {
- buffering_state_ = BufferingState::kInitialBuffering;
-}
-
-void FuchsiaPlaybackEventsRecorder::OnEnded() {
- base::RecordComputedAction("WebEngine.Media.Ended");
-}
-
-void FuchsiaPlaybackEventsRecorder::OnBuffering() {
- DCHECK(buffering_state_ == BufferingState::kBuffered);
-
- buffering_start_time_ = base::TimeTicks::Now();
- buffering_state_ = BufferingState::kBuffering;
-
- bitrate_estimator_.OnPause();
-}
-
-void FuchsiaPlaybackEventsRecorder::OnBufferingComplete() {
- auto now = base::TimeTicks::Now();
-
- if (buffering_state_ == BufferingState::kBuffering) {
- base::TimeDelta time_between_buffering =
- buffering_start_time_ - last_buffering_end_time_;
- RecordEventWithValueAt("PlayTimeBeforeAutoPause",
- time_between_buffering.InMilliseconds(), now);
-
- base::TimeDelta buffering_user_time = now - buffering_start_time_;
- RecordEventWithValueAt("AutoPauseTime",
- buffering_user_time.InMilliseconds(), now);
- }
-
- buffering_state_ = BufferingState::kBuffered;
- last_buffering_end_time_ = now;
-}
-
-void FuchsiaPlaybackEventsRecorder::OnError(PipelineStatus status) {
- RecordEventWithValue("Error", status);
-}
-
-void FuchsiaPlaybackEventsRecorder::OnNaturalSizeChanged(
- const gfx::Size& size) {
- base::RecordComputedAction(base::StringPrintf(
- "WebEngine.Media.VideoResolution:%dx%d", size.width(), size.height()));
-}
-
-void FuchsiaPlaybackEventsRecorder::OnPipelineStatistics(
- const PipelineStatistics& stats) {
- bitrate_estimator_.Update(stats);
-}
-
-} // namespace media
diff --git a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.h b/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.h
deleted file mode 100644
index 2686bafec9e..00000000000
--- a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2020 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_FUCHSIA_METRICS_FUCHSIA_PLAYBACK_EVENTS_RECORDER_H_
-#define MEDIA_FUCHSIA_METRICS_FUCHSIA_PLAYBACK_EVENTS_RECORDER_H_
-
-#include "media/mojo/mojom/playback_events_recorder.mojom.h"
-#include "mojo/public/cpp/bindings/pending_remote.h"
-#include "mojo/public/cpp/bindings/remote.h"
-
-namespace media {
-
-class FuchsiaPlaybackEventsRecorder : public mojom::PlaybackEventsRecorder {
- public:
- static void Create(
- mojo::PendingReceiver<mojom::PlaybackEventsRecorder> receiver);
-
- FuchsiaPlaybackEventsRecorder();
- ~FuchsiaPlaybackEventsRecorder() final;
-
- FuchsiaPlaybackEventsRecorder(const FuchsiaPlaybackEventsRecorder&) = delete;
- FuchsiaPlaybackEventsRecorder& operator=(
- const FuchsiaPlaybackEventsRecorder&) = delete;
-
- // mojom::PlaybackEventsRecorder implementation.
- void OnPlaying() final;
- void OnPaused() final;
- void OnSeeking() final;
- void OnEnded() final;
- void OnBuffering() final;
- void OnBufferingComplete() final;
- void OnError(PipelineStatus status) final;
- void OnNaturalSizeChanged(const gfx::Size& size) final;
- void OnPipelineStatistics(const PipelineStatistics& stats) final;
-
- private:
- class BitrateEstimator {
- public:
- BitrateEstimator();
- ~BitrateEstimator();
-
- void Update(const PipelineStatistics& stats);
- void OnPause();
-
- private:
- base::TimeDelta time_elapsed_;
- size_t audio_bytes_ = 0;
- size_t video_bytes_ = 0;
-
- base::Optional<PipelineStatistics> last_stats_;
- base::TimeTicks last_stats_time_;
- };
-
- enum class BufferingState {
- kInitialBuffering,
- kBuffering,
- kBuffered,
- };
-
- BufferingState buffering_state_ = BufferingState::kInitialBuffering;
- base::TimeTicks buffering_start_time_;
- base::TimeTicks last_buffering_end_time_;
-
- BitrateEstimator bitrate_estimator_;
-};
-
-} // namespace media
-
-#endif // MEDIA_FUCHSIA_METRICS_FUCHSIA_PLAYBACK_EVENTS_RECORDER_H_ \ No newline at end of file
diff --git a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder_test.cc b/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder_test.cc
deleted file mode 100644
index a18704575a2..00000000000
--- a/chromium/media/fuchsia/metrics/fuchsia_playback_events_recorder_test.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2020 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.
-
-#include "media/fuchsia/metrics/fuchsia_playback_events_recorder.h"
-
-#include "base/metrics/user_metrics.h"
-#include "base/test/simple_test_tick_clock.h"
-#include "base/test/task_environment.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace media {
-
-constexpr base::TimeDelta kSecond = base::TimeDelta::FromSeconds(1);
-
-class FuchsiaPlaybackEventsRecorderTest : public testing::Test {
- public:
- FuchsiaPlaybackEventsRecorderTest()
- : task_environment_(base::test::TaskEnvironment::MainThreadType::IO,
- base::test::TaskEnvironment::TimeSource::MOCK_TIME) {
- time_base_ = base::TimeTicks::Now();
-
- base::SetRecordActionTaskRunner(
- task_environment_.GetMainThreadTaskRunner());
- action_callback_ = base::BindRepeating(
- &FuchsiaPlaybackEventsRecorderTest::OnAction, base::Unretained(this));
- base::AddActionCallback(action_callback_);
- }
-
- ~FuchsiaPlaybackEventsRecorderTest() override {
- base::RemoveActionCallback(action_callback_);
- }
-
- protected:
- struct Event {
- base::TimeTicks time;
- std::string name;
-
- bool operator==(const Event& other) const {
- return time == other.time && name == other.name;
- }
- };
-
- void OnAction(const std::string& name, base::TimeTicks time) {
- recorded_events_.push_back({time, name});
- }
-
- void ExpectEvents(const std::vector<Event>& expected) {
- EXPECT_EQ(recorded_events_.size(), expected.size());
- size_t end = std::min(recorded_events_.size(), expected.size());
- for (size_t i = 0; i < end; ++i) {
- SCOPED_TRACE(i);
- EXPECT_EQ(recorded_events_[i].time, expected[i].time);
- EXPECT_EQ(recorded_events_[i].name, expected[i].name);
- }
- }
-
- base::test::TaskEnvironment task_environment_;
-
- base::SimpleTestTickClock test_clock_;
- base::TimeTicks time_base_;
-
- base::ActionCallback action_callback_;
- FuchsiaPlaybackEventsRecorder recorder_;
- std::vector<Event> recorded_events_;
-};
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, PlayPause) {
- recorder_.OnNaturalSizeChanged(gfx::Size(640, 480));
- recorder_.OnPlaying();
- task_environment_.AdvanceClock(2 * kSecond);
- recorder_.OnPaused();
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.VideoResolution:640x480"},
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 2 * kSecond, "WebEngine.Media.Pause"},
- });
-}
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, Error) {
- recorder_.OnPlaying();
- task_environment_.AdvanceClock(2 * kSecond);
- recorder_.OnError(PIPELINE_ERROR_DECODE);
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 2 * kSecond, "WebEngine.Media.Error:3"},
- });
-}
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, Buffering) {
- recorder_.OnPlaying();
- recorder_.OnBufferingComplete();
- task_environment_.AdvanceClock(2 * kSecond);
- recorder_.OnBuffering();
- task_environment_.AdvanceClock(3 * kSecond);
- recorder_.OnBufferingComplete();
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 5 * kSecond,
- "WebEngine.Media.PlayTimeBeforeAutoPause:2000"},
- {time_base_ + 5 * kSecond, "WebEngine.Media.AutoPauseTime:3000"},
- });
-}
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, Bitrate) {
- recorder_.OnPlaying();
- recorder_.OnBufferingComplete();
-
- PipelineStatistics stats;
- recorder_.OnPipelineStatistics(stats);
-
- for (int i = 0; i < 5; ++i) {
- stats.audio_bytes_decoded += 5000;
- stats.video_bytes_decoded += 10000;
-
- task_environment_.AdvanceClock(kSecond);
- recorder_.OnPipelineStatistics(stats);
- }
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 5 * kSecond, "WebEngine.Media.AudioBitrate:40"},
- {time_base_ + 5 * kSecond, "WebEngine.Media.VideoBitrate:80"},
- });
-}
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, BitrateAfterPause) {
- recorder_.OnPlaying();
- recorder_.OnBufferingComplete();
-
- PipelineStatistics stats;
- recorder_.OnPipelineStatistics(stats);
-
- for (int i = 0; i < 3; ++i) {
- stats.audio_bytes_decoded += 5000;
- stats.video_bytes_decoded += 10000;
-
- task_environment_.AdvanceClock(kSecond);
- recorder_.OnPipelineStatistics(stats);
- }
-
- recorder_.OnPaused();
- task_environment_.AdvanceClock(10 * kSecond);
- recorder_.OnPlaying();
-
- for (int i = 0; i < 3; ++i) {
- stats.audio_bytes_decoded += 5000;
- stats.video_bytes_decoded += 10000;
-
- task_environment_.AdvanceClock(kSecond);
- recorder_.OnPipelineStatistics(stats);
- }
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 3 * kSecond, "WebEngine.Media.Pause"},
- {time_base_ + 13 * kSecond, "WebEngine.Media.Playing"},
- {time_base_ + 16 * kSecond, "WebEngine.Media.AudioBitrate:40"},
- {time_base_ + 16 * kSecond, "WebEngine.Media.VideoBitrate:80"},
- });
-}
-
-TEST_F(FuchsiaPlaybackEventsRecorderTest, BitrateAfterBuffering) {
- recorder_.OnPlaying();
- recorder_.OnBufferingComplete();
-
- PipelineStatistics stats;
- recorder_.OnPipelineStatistics(stats);
-
- for (int i = 0; i < 3; ++i) {
- stats.audio_bytes_decoded += 5000;
- stats.video_bytes_decoded += 10000;
-
- task_environment_.AdvanceClock(kSecond);
- recorder_.OnPipelineStatistics(stats);
- }
-
- recorder_.OnBuffering();
- task_environment_.AdvanceClock(10 * kSecond);
- recorder_.OnBufferingComplete();
-
- for (int i = 0; i < 3; ++i) {
- stats.audio_bytes_decoded += 5000;
- stats.video_bytes_decoded += 10000;
-
- task_environment_.AdvanceClock(kSecond);
- recorder_.OnPipelineStatistics(stats);
- }
-
- ExpectEvents({
- {time_base_, "WebEngine.Media.Playing"},
- {time_base_ + 13 * kSecond,
- "WebEngine.Media.PlayTimeBeforeAutoPause:3000"},
- {time_base_ + 13 * kSecond, "WebEngine.Media.AutoPauseTime:10000"},
- {time_base_ + 16 * kSecond, "WebEngine.Media.AudioBitrate:40"},
- {time_base_ + 16 * kSecond, "WebEngine.Media.VideoBitrate:80"},
- });
-}
-} // namespace media \ No newline at end of file