Index: chrome/browser/media/webrtc/native_desktop_media_list_unittest.cc |
diff --git a/chrome/browser/media/webrtc/native_desktop_media_list_unittest.cc b/chrome/browser/media/webrtc/native_desktop_media_list_unittest.cc |
index 037db01c389f358033402f2b18a9c3699f044d27..42467a5abf170a82bb9058492bf4c6caff12cdcf 100644 |
--- a/chrome/browser/media/webrtc/native_desktop_media_list_unittest.cc |
+++ b/chrome/browser/media/webrtc/native_desktop_media_list_unittest.cc |
@@ -16,8 +16,9 @@ |
#include "base/single_thread_task_runner.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/synchronization/lock.h" |
+#include "base/threading/thread_task_runner_handle.h" |
#include "chrome/browser/media/webrtc/desktop_media_list_observer.h" |
-#include "content/public/test/test_browser_thread.h" |
+#include "content/public/test/test_browser_thread_bundle.h" |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h" |
@@ -161,15 +162,13 @@ ACTION_P2(CheckListSize, model, expected_list_size) { |
EXPECT_EQ(expected_list_size, model->GetSourceCount()); |
} |
-ACTION_P(QuitMessageLoop, message_loop) { |
- message_loop->task_runner()->PostTask( |
- FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
+ACTION_P2(QuitRunLoop, task_runner, run_loop) { |
+ task_runner->PostTask(FROM_HERE, run_loop->QuitWhenIdleClosure()); |
} |
class NativeDesktopMediaListTest : public views::ViewsTestBase { |
public: |
- NativeDesktopMediaListTest() |
- : ui_thread_(content::BrowserThread::UI, message_loop()) {} |
+ NativeDesktopMediaListTest() = default; |
void TearDown() override { |
for (size_t i = 0; i < desktop_widgets_.size(); i++) |
@@ -306,6 +305,8 @@ class NativeDesktopMediaListTest : public views::ViewsTestBase { |
aura_window_first_index--; |
} |
+ base::RunLoop run_loop; |
+ |
{ |
testing::InSequence dummy; |
size_t source_count = screen ? window_count + 1 : window_count; |
@@ -318,10 +319,11 @@ class NativeDesktopMediaListTest : public views::ViewsTestBase { |
} |
EXPECT_CALL(observer_, |
OnSourceThumbnailChanged(model_.get(), source_count - 1)) |
- .WillOnce(QuitMessageLoop(message_loop())); |
+ .WillOnce( |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop)); |
} |
model_->StartUpdating(&observer_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
if (screen) { |
EXPECT_EQ(model_->GetSource(0).id.type, DesktopMediaID::TYPE_SCREEN); |
@@ -347,6 +349,8 @@ class NativeDesktopMediaListTest : public views::ViewsTestBase { |
} |
protected: |
+ content::TestBrowserThreadBundle test_browser_thread_bundle_; |
+ |
// Must be listed before |model_|, so it's destroyed last. |
MockObserver observer_; |
@@ -358,8 +362,6 @@ class NativeDesktopMediaListTest : public views::ViewsTestBase { |
std::map<DesktopMediaID::Id, DesktopMediaID::Id> native_aura_id_map_; |
std::unique_ptr<NativeDesktopMediaList> model_; |
- content::TestBrowserThread ui_thread_; |
- |
DISALLOW_COPY_AND_ASSIGN(NativeDesktopMediaListTest); |
}; |
@@ -380,15 +382,18 @@ TEST_F(NativeDesktopMediaListTest, Filtering) { |
TEST_F(NativeDesktopMediaListTest, AddNativeWindow) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
const int index = kDefaultWindowCount + 1; |
EXPECT_CALL(observer_, OnSourceAdded(model_.get(), index)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), index + 1), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), index + 1), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
AddNativeWindow(index); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
EXPECT_EQ(model_->GetSource(index).id.type, DesktopMediaID::TYPE_WINDOW); |
EXPECT_EQ(model_->GetSource(index).id.id, index); |
@@ -398,15 +403,18 @@ TEST_F(NativeDesktopMediaListTest, AddNativeWindow) { |
TEST_F(NativeDesktopMediaListTest, AddAuraWindow) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
const int index = kDefaultWindowCount + 1; |
EXPECT_CALL(observer_, OnSourceAdded(model_.get(), index)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), index + 1), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), index + 1), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
AddAuraWindow(); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
int native_id = window_list_.back().id; |
EXPECT_EQ(model_->GetSource(index).id.type, DesktopMediaID::TYPE_WINDOW); |
@@ -419,61 +427,72 @@ TEST_F(NativeDesktopMediaListTest, AddAuraWindow) { |
TEST_F(NativeDesktopMediaListTest, RemoveNativeWindow) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 1)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), kDefaultWindowCount), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), kDefaultWindowCount), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
window_list_.erase(window_list_.begin()); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
} |
#if defined(ENABLE_AURA_WINDOW_TESTS) |
TEST_F(NativeDesktopMediaListTest, RemoveAuraWindow) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
int aura_window_start_index = kDefaultWindowCount - kDefaultAuraCount + 1; |
EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), aura_window_start_index)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), kDefaultWindowCount), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), kDefaultWindowCount), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
RemoveAuraWindow(0); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
} |
#endif // defined(ENABLE_AURA_WINDOW_TESTS) |
TEST_F(NativeDesktopMediaListTest, RemoveAllWindows) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
testing::InSequence seq; |
for (int i = 0; i < kDefaultWindowCount - 1; i++) { |
EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 1)) |
.WillOnce(CheckListSize(model_.get(), kDefaultWindowCount - i)); |
} |
EXPECT_CALL(observer_, OnSourceRemoved(model_.get(), 1)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), 1), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), 1), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
window_list_.clear(); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
} |
TEST_F(NativeDesktopMediaListTest, UpdateTitle) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
EXPECT_CALL(observer_, OnSourceNameChanged(model_.get(), 1)) |
- .WillOnce(QuitMessageLoop(message_loop())); |
+ .WillOnce(QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop)); |
const std::string kTestTitle = "New Title"; |
window_list_[0].title = kTestTitle; |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
EXPECT_EQ(model_->GetSource(1).name, base::UTF8ToUTF16(kTestTitle)); |
} |
@@ -488,24 +507,29 @@ TEST_F(NativeDesktopMediaListTest, UpdateThumbnail) { |
.Times(testing::AnyNumber()); |
} |
+ base::RunLoop run_loop; |
+ |
EXPECT_CALL(observer_, OnSourceThumbnailChanged(model_.get(), 1)) |
- .WillOnce(QuitMessageLoop(message_loop())); |
+ .WillOnce(QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop)); |
// Update frame for the window and verify that we get notification about it. |
window_capturer_->SetNextFrameValue(1, 10); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
} |
TEST_F(NativeDesktopMediaListTest, MoveWindow) { |
AddWindowsAndVerify(true, kDefaultWindowCount, kDefaultAuraCount, false); |
+ base::RunLoop run_loop; |
+ |
EXPECT_CALL(observer_, OnSourceMoved(model_.get(), 2, 1)) |
- .WillOnce(DoAll(CheckListSize(model_.get(), kDefaultWindowCount + 1), |
- QuitMessageLoop(message_loop()))); |
+ .WillOnce( |
+ DoAll(CheckListSize(model_.get(), kDefaultWindowCount + 1), |
+ QuitRunLoop(base::ThreadTaskRunnerHandle::Get(), &run_loop))); |
std::swap(window_list_[0], window_list_[1]); |
window_capturer_->SetWindowList(window_list_); |
- base::RunLoop().Run(); |
+ run_loop.Run(); |
} |