diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-12 14:27:29 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:35:20 +0000 |
commit | c30a6232df03e1efbd9f3b226777b07e087a1122 (patch) | |
tree | e992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/media/fuchsia/metrics | |
parent | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff) | |
download | qtwebengine-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')
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 |