Commit 2170efea authored by Antonio Rivera's avatar Antonio Rivera Committed by Commit Bot

Move TestMediaResourceTracker to its own file.

This is the chromium side of the effort to consolidate
TestMediaResourceTracker definitions. Currently there are two
definitions: one in chromium, and one in the internal cast codebase.
After this CL and an internal CL, there will be only one version (the
chromium version).

Test: Ran cast_media_unittests locally.

Bug: b/143154455
Change-Id: I16d6a27679a395a0d4ae512cf29a7fe98e08af84
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1975071Reviewed-by: default avatarKenneth MacKay <kmackay@chromium.org>
Commit-Queue: Antonio Rivera <antoniori@google.com>
Cr-Commit-Position: refs/heads/master@{#728631}
parent efb1f0ef
......@@ -90,6 +90,7 @@ test("cast_media_unittests") {
"//chromecast/media/audio:unittests",
"//chromecast/media/audio/capture_service:unittests",
"//chromecast/media/base:monotonic_clock",
"//chromecast/media/base:test_media_resource_tracker",
"//chromecast/media/cma:test_support",
"//chromecast/media/cma:unittests",
"//chromecast/public",
......
......@@ -127,3 +127,17 @@ cast_source_set("monotonic_clock") {
"//base",
]
}
cast_source_set("test_media_resource_tracker") {
sources = [
"test_media_resource_tracker.cc",
"test_media_resource_tracker.h",
]
deps = [
":media_resource_tracker",
"//base",
"//testing/gmock",
"//testing/gtest",
]
testonly = true
}
......@@ -27,15 +27,15 @@ MediaResourceTracker::ScopedUsage::~ScopedUsage() {
}
MediaResourceTracker::MediaResourceTracker(
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner)
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
: media_use_count_(0),
media_lib_initialized_(false),
delete_on_finalize_(false),
ui_task_runner_(ui_task_runner),
media_task_runner_(media_task_runner) {
DCHECK(ui_task_runner);
DCHECK(media_task_runner);
ui_task_runner_(std::move(ui_task_runner)),
media_task_runner_(std::move(media_task_runner)) {
DCHECK(ui_task_runner_);
DCHECK(media_task_runner_);
DCHECK(ui_task_runner_->BelongsToCurrentThread());
}
......
......@@ -48,8 +48,8 @@ class MediaResourceTracker {
};
MediaResourceTracker(
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner);
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner);
// Media resource acquire implementation. Must call on ui thread; runs
// CastMediaShlib::Initialize on media thread. Safe to call even if media lib
......
......@@ -9,49 +9,13 @@
#include "base/bind.h"
#include "base/run_loop.h"
#include "base/test/task_environment.h"
#include "chromecast/media/base/test_media_resource_tracker.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromecast {
namespace media {
// Collection of mocks to verify MediaResourceTracker takes the correct actions.
class MediaResourceTrackerTestMocks {
public:
MOCK_METHOD0(Initialize, void()); // CastMediaShlib::Initialize
MOCK_METHOD0(Finalize, void()); // CastMediaShlib::Finalize
MOCK_METHOD0(Destroyed, void()); // ~CastMediaResourceTracker
MOCK_METHOD0(FinalizeCallback, void()); // callback to Finalize
};
class TestMediaResourceTracker : public MediaResourceTracker {
public:
TestMediaResourceTracker(
MediaResourceTrackerTestMocks* test_mocks,
const scoped_refptr<base::SingleThreadTaskRunner>& ui_task_runner,
const scoped_refptr<base::SingleThreadTaskRunner>& media_task_runner)
: MediaResourceTracker(ui_task_runner, media_task_runner),
test_mocks_(test_mocks) {}
~TestMediaResourceTracker() override {
EXPECT_TRUE(ui_task_runner_->BelongsToCurrentThread());
test_mocks_->Destroyed();
}
void DoInitializeMediaLib() override {
ASSERT_TRUE(media_task_runner_->BelongsToCurrentThread());
test_mocks_->Initialize();
}
void DoFinalizeMediaLib() override {
ASSERT_TRUE(media_task_runner_->BelongsToCurrentThread());
test_mocks_->Finalize();
}
size_t media_use_count() const { return media_use_count_; }
private:
MediaResourceTrackerTestMocks* test_mocks_;
};
class MediaResourceTrackerTest : public ::testing::Test {
public:
MediaResourceTrackerTest() {}
......@@ -62,8 +26,8 @@ class MediaResourceTrackerTest : public ::testing::Test {
test_mocks_.reset(new MediaResourceTrackerTestMocks());
resource_tracker_ = new TestMediaResourceTracker(
test_mocks_.get(), task_environment_.GetMainThreadTaskRunner(),
task_environment_.GetMainThreadTaskRunner());
task_environment_.GetMainThreadTaskRunner(),
task_environment_.GetMainThreadTaskRunner(), test_mocks_.get());
}
void InitializeMediaLib() {
......
// Copyright 2019 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 "chromecast/media/base/test_media_resource_tracker.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromecast {
namespace media {
MediaResourceTrackerTestMocks::MediaResourceTrackerTestMocks() = default;
MediaResourceTrackerTestMocks::~MediaResourceTrackerTestMocks() = default;
TestMediaResourceTracker::TestMediaResourceTracker(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
MediaResourceTrackerTestMocks* test_mocks)
: MediaResourceTracker(std::move(ui_task_runner),
std::move(media_task_runner)),
test_mocks_(test_mocks) {}
TestMediaResourceTracker::~TestMediaResourceTracker() {
EXPECT_TRUE(ui_task_runner_->BelongsToCurrentThread());
if (test_mocks_)
test_mocks_->Destroyed();
}
void TestMediaResourceTracker::DoInitializeMediaLib() {
ASSERT_TRUE(media_task_runner_->BelongsToCurrentThread());
if (test_mocks_)
test_mocks_->Initialize();
}
void TestMediaResourceTracker::DoFinalizeMediaLib() {
ASSERT_TRUE(media_task_runner_->BelongsToCurrentThread());
if (test_mocks_)
test_mocks_->Finalize();
}
} // namespace media
} // namespace chromecast
// Copyright 2019 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.
// Contains classes to aid in testing code that uses MediaResourceTracker.
#ifndef CHROMECAST_MEDIA_BASE_TEST_MEDIA_RESOURCE_TRACKER_H_
#define CHROMECAST_MEDIA_BASE_TEST_MEDIA_RESOURCE_TRACKER_H_
#include "base/macros.h"
#include "base/memory/scoped_refptr.h"
#include "base/single_thread_task_runner.h"
#include "chromecast/media/base/media_resource_tracker.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromecast {
namespace media {
// Collection of mocks to verify MediaResourceTracker takes the correct actions.
class MediaResourceTrackerTestMocks {
public:
MediaResourceTrackerTestMocks();
~MediaResourceTrackerTestMocks();
MOCK_METHOD0(Initialize, void());
MOCK_METHOD0(Finalize, void());
MOCK_METHOD0(Destroyed, void());
MOCK_METHOD0(FinalizeCallback, void());
};
class TestMediaResourceTracker : public MediaResourceTracker {
public:
TestMediaResourceTracker(
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
MediaResourceTrackerTestMocks* test_mocks);
~TestMediaResourceTracker() override;
size_t media_use_count() const { return media_use_count_; }
private:
// MediaResourceTracker implementation:
void DoInitializeMediaLib() override;
void DoFinalizeMediaLib() override;
MediaResourceTrackerTestMocks* const test_mocks_;
DISALLOW_COPY_AND_ASSIGN(TestMediaResourceTracker);
};
} // namespace media
} // namespace chromecast
#endif // CHROMECAST_MEDIA_BASE_TEST_MEDIA_RESOURCE_TRACKER_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment