Remove calls to deprecated MessageLoop methods on Windows and Linux.
This Cl removes most calls to these methods on Windows and Linux: - MessageLoop::PostTask - MessageLoop::PostDelayedTask - MessageLoop::ReleaseSoon - MessageLoop::DeleteSoon - MessageLoop::Run - MessageLoop::RunUntilIdle Also note that calls to thread->message_loop()->task_runner() have been replaced with thread->task_runner() (|thread| is a base::Thread). This CL was generated by running the clang-tidy checks available here https://crbug.com/616447#c153 on Windows and Mac and by applying a few manual fixes (e.g. to remove a call made from a macro in audio_low_latency_input_win_unittest.cc). BUG=616447 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_site_isolation Review-Url: https://codereview.chromium.org/2211473003 Cr-Commit-Position: refs/heads/master@{#414442}
This commit is contained in:
ash
shelf
shell
content
test
base
memory
message_loop
message_loop_task_runner_unittest.ccmessage_loop_unittest.ccmessage_pump_glib_unittest.ccmessage_pump_perftest.cc
task_scheduler
win
blimp/client/core/contents
chrome
browser
download
first_run
importer
local_discovery
metrics
password_manager
native_backend_gnome_x_unittest.ccnative_backend_kwallet_x_unittest.ccnative_backend_libsecret_unittest.ccpassword_store_win_unittest.cc
prerender
printing
cloud_print
profiles
safe_browsing
ui
common
test
chromedriver
server
components
arc
autofill
content
browser
cronet
data_usage
data_use_measurement
dom_distiller
nacl
policy
core
sync
driver
tools
testserver
sync_sessions
content
browser
appcache
download
frame_host
indexed_db
renderer_host
tracing
web_contents
gpu
public
renderer
media
shell
browser
dbus
end_to_end_async_unittest.ccmock_unittest.ccobject_manager_unittest.ccsignal_sender_verification_unittest.cctest_service.cc
device
battery
bluetooth
extensions
ipc
attachment_broker_privileged_win_unittest.ccipc_channel_mojo_unittest.ccipc_channel_unittest.ccipc_channel_win.cc
jingle/notifier/listener
media
audio
capture
video
cast
test
device_monitors
gpu
rendering_helper.ccv4l2_image_processor.ccv4l2_slice_video_decode_accelerator.ccv4l2_video_decode_accelerator.ccvaapi_video_encode_accelerator.cc
midi
net
base
dns
http
test
spawned_test_server
tools
ppapi/nacl_irt
remoting
services/navigation/content_client
ui
app_list
aura
base
events
gl
keyboard
message_center
shell_dialogs
views
controls
widget
@@ -32,6 +32,7 @@
|
|||||||
#include "ash/wm/window_state_aura.h"
|
#include "ash/wm/window_state_aura.h"
|
||||||
#include "ash/wm/window_util.h"
|
#include "ash/wm/window_util.h"
|
||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "ui/aura/client/aura_constants.h"
|
#include "ui/aura/client/aura_constants.h"
|
||||||
#include "ui/aura/client/window_tree_client.h"
|
#include "ui/aura/client/window_tree_client.h"
|
||||||
#include "ui/aura/window.h"
|
#include "ui/aura/window.h"
|
||||||
@@ -89,7 +90,7 @@ class ShelfAnimationWaiter : views::WidgetObserver {
|
|||||||
if (IsDoneAnimating())
|
if (IsDoneAnimating())
|
||||||
done_waiting_ = true;
|
done_waiting_ = true;
|
||||||
else
|
else
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the animation has completed and it was valid.
|
// Returns true if the animation has completed and it was valid.
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
#include "base/i18n/icu_util.h"
|
#include "base/i18n/icu_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
@@ -171,7 +172,7 @@ void ShellBrowserMainParts::PostMainMessageLoopRun() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) {
|
bool ShellBrowserMainParts::MainMessageLoopRun(int* result_code) {
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "ash/common/shelf/shelf_model.h"
|
#include "ash/common/shelf/shelf_model.h"
|
||||||
#include "ash/common/shelf/shelf_view.h"
|
#include "ash/common/shelf/shelf_view.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "ui/views/animation/bounds_animator.h"
|
#include "ui/views/animation/bounds_animator.h"
|
||||||
#include "ui/views/controls/menu/menu_runner.h"
|
#include "ui/views/controls/menu/menu_runner.h"
|
||||||
#include "ui/views/view_model.h"
|
#include "ui/views/view_model.h"
|
||||||
@@ -93,7 +94,7 @@ void ShelfViewTestAPI::RunMessageLoopUntilAnimationsDone() {
|
|||||||
|
|
||||||
// This nested loop will quit when TestAPIAnimationObserver's
|
// This nested loop will quit when TestAPIAnimationObserver's
|
||||||
// OnBoundsAnimatorDone is called.
|
// OnBoundsAnimatorDone is called.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
shelf_view_->bounds_animator_->RemoveObserver(observer.get());
|
shelf_view_->bounds_animator_->RemoveObserver(observer.get());
|
||||||
}
|
}
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/memory_pressure_listener.h"
|
#include "base/memory/memory_pressure_listener.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "testing/gmock/include/gmock/gmock.h"
|
#include "testing/gmock/include/gmock/gmock.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
@@ -209,7 +210,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
// events.
|
// events.
|
||||||
monitor.SetNone();
|
monitor.SetNone();
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
|
|
||||||
@@ -219,7 +220,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
MEMORY_PRESSURE_LEVEL_MODERATE));
|
MEMORY_PRESSURE_LEVEL_MODERATE));
|
||||||
monitor.SetModerate();
|
monitor.SetModerate();
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -232,7 +233,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
MEMORY_PRESSURE_LEVEL_MODERATE));
|
MEMORY_PRESSURE_LEVEL_MODERATE));
|
||||||
}
|
}
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -244,7 +245,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
MEMORY_PRESSURE_LEVEL_CRITICAL));
|
MEMORY_PRESSURE_LEVEL_CRITICAL));
|
||||||
monitor.SetCritical();
|
monitor.SetCritical();
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -254,7 +255,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
OnMemoryPressure(MemoryPressureListener::
|
OnMemoryPressure(MemoryPressureListener::
|
||||||
MEMORY_PRESSURE_LEVEL_CRITICAL));
|
MEMORY_PRESSURE_LEVEL_CRITICAL));
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -266,7 +267,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
MEMORY_PRESSURE_LEVEL_MODERATE));
|
MEMORY_PRESSURE_LEVEL_MODERATE));
|
||||||
monitor.SetModerate();
|
monitor.SetModerate();
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -279,7 +280,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
MEMORY_PRESSURE_LEVEL_MODERATE));
|
MEMORY_PRESSURE_LEVEL_MODERATE));
|
||||||
}
|
}
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
@@ -288,7 +289,7 @@ TEST_F(WinMemoryPressureMonitorTest, CheckMemoryPressure) {
|
|||||||
// Going down to no pressure should not produce an notification.
|
// Going down to no pressure should not produce an notification.
|
||||||
monitor.SetNone();
|
monitor.SetNone();
|
||||||
monitor.CheckMemoryPressure();
|
monitor.CheckMemoryPressure();
|
||||||
message_loop_.RunUntilIdle();
|
RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
|
EXPECT_EQ(MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE,
|
||||||
monitor.GetCurrentPressureLevel());
|
monitor.GetCurrentPressureLevel());
|
||||||
testing::Mock::VerifyAndClearExpectations(&monitor);
|
testing::Mock::VerifyAndClearExpectations(&monitor);
|
||||||
|
@@ -37,7 +37,7 @@ class MessageLoopTaskRunnerTest : public testing::Test {
|
|||||||
task_thread_.Start();
|
task_thread_.Start();
|
||||||
|
|
||||||
// Allow us to pause the |task_thread_|'s MessageLoop.
|
// Allow us to pause the |task_thread_|'s MessageLoop.
|
||||||
task_thread_.message_loop()->task_runner()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, Bind(&MessageLoopTaskRunnerTest::BlockTaskThreadHelper,
|
FROM_HERE, Bind(&MessageLoopTaskRunnerTest::BlockTaskThreadHelper,
|
||||||
Unretained(this)));
|
Unretained(this)));
|
||||||
}
|
}
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "base/pending_task.h"
|
#include "base/pending_task.h"
|
||||||
#include "base/posix/eintr_wrapper.h"
|
#include "base/posix/eintr_wrapper.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "base/test/test_simple_task_runner.h"
|
#include "base/test/test_simple_task_runner.h"
|
||||||
#include "base/threading/platform_thread.h"
|
#include "base/threading/platform_thread.h"
|
||||||
@@ -157,7 +158,7 @@ void SubPumpFunc() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RunTest_PostDelayedTask_SharedTimer_SubPump() {
|
void RunTest_PostDelayedTask_SharedTimer_SubPump() {
|
||||||
MessageLoop loop(MessageLoop::TYPE_UI);
|
MessageLoop message_loop(MessageLoop::TYPE_UI);
|
||||||
|
|
||||||
// Test that the interval of the timer, used to run the next delayed task, is
|
// Test that the interval of the timer, used to run the next delayed task, is
|
||||||
// set to a value corresponding to when the next delayed task should run.
|
// set to a value corresponding to when the next delayed task should run.
|
||||||
@@ -167,23 +168,20 @@ void RunTest_PostDelayedTask_SharedTimer_SubPump() {
|
|||||||
int num_tasks = 1;
|
int num_tasks = 1;
|
||||||
Time run_time;
|
Time run_time;
|
||||||
|
|
||||||
loop.PostTask(FROM_HERE, Bind(&SubPumpFunc));
|
message_loop.task_runner()->PostTask(FROM_HERE, Bind(&SubPumpFunc));
|
||||||
|
|
||||||
// This very delayed task should never run.
|
// This very delayed task should never run.
|
||||||
loop.PostDelayedTask(
|
message_loop.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&RecordRunTimeFunc, &run_time, &num_tasks),
|
||||||
Bind(&RecordRunTimeFunc, &run_time, &num_tasks),
|
|
||||||
TimeDelta::FromSeconds(1000));
|
TimeDelta::FromSeconds(1000));
|
||||||
|
|
||||||
// This slightly delayed task should run from within SubPumpFunc.
|
// This slightly delayed task should run from within SubPumpFunc.
|
||||||
loop.PostDelayedTask(
|
message_loop.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&PostQuitMessage, 0), TimeDelta::FromMilliseconds(10));
|
||||||
Bind(&PostQuitMessage, 0),
|
|
||||||
TimeDelta::FromMilliseconds(10));
|
|
||||||
|
|
||||||
Time start_time = Time::Now();
|
Time start_time = Time::Now();
|
||||||
|
|
||||||
loop.Run();
|
RunLoop().Run();
|
||||||
EXPECT_EQ(1, num_tasks);
|
EXPECT_EQ(1, num_tasks);
|
||||||
|
|
||||||
// Ensure that we ran in far less time than the slower timer.
|
// Ensure that we ran in far less time than the slower timer.
|
||||||
@@ -323,27 +321,25 @@ void QuitFunc(TaskList* order, int cookie) {
|
|||||||
order->RecordEnd(QUITMESSAGELOOP, cookie);
|
order->RecordEnd(QUITMESSAGELOOP, cookie);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RecursiveFuncWin(MessageLoop* target,
|
void RecursiveFuncWin(scoped_refptr<SingleThreadTaskRunner> task_runner,
|
||||||
HANDLE event,
|
HANDLE event,
|
||||||
bool expect_window,
|
bool expect_window,
|
||||||
TaskList* order,
|
TaskList* order,
|
||||||
bool is_reentrant) {
|
bool is_reentrant) {
|
||||||
target->PostTask(FROM_HERE,
|
task_runner->PostTask(FROM_HERE,
|
||||||
Bind(&RecursiveFunc, order, 1, 2, is_reentrant));
|
Bind(&RecursiveFunc, order, 1, 2, is_reentrant));
|
||||||
target->PostTask(FROM_HERE,
|
task_runner->PostTask(FROM_HERE,
|
||||||
Bind(&MessageBoxFunc, order, 2, is_reentrant));
|
Bind(&MessageBoxFunc, order, 2, is_reentrant));
|
||||||
target->PostTask(FROM_HERE,
|
task_runner->PostTask(FROM_HERE,
|
||||||
Bind(&RecursiveFunc, order, 3, 2, is_reentrant));
|
Bind(&RecursiveFunc, order, 3, 2, is_reentrant));
|
||||||
// The trick here is that for recursive task processing, this task will be
|
// The trick here is that for recursive task processing, this task will be
|
||||||
// ran _inside_ the MessageBox message loop, dismissing the MessageBox
|
// ran _inside_ the MessageBox message loop, dismissing the MessageBox
|
||||||
// without a chance.
|
// without a chance.
|
||||||
// For non-recursive task processing, this will be executed _after_ the
|
// For non-recursive task processing, this will be executed _after_ the
|
||||||
// MessageBox will have been dismissed by the code below, where
|
// MessageBox will have been dismissed by the code below, where
|
||||||
// expect_window_ is true.
|
// expect_window_ is true.
|
||||||
target->PostTask(FROM_HERE,
|
task_runner->PostTask(FROM_HERE, Bind(&EndDialogFunc, order, 4));
|
||||||
Bind(&EndDialogFunc, order, 4));
|
task_runner->PostTask(FROM_HERE, Bind(&QuitFunc, order, 5));
|
||||||
target->PostTask(FROM_HERE,
|
|
||||||
Bind(&QuitFunc, order, 5));
|
|
||||||
|
|
||||||
// Enforce that every tasks are sent before starting to run the main thread
|
// Enforce that every tasks are sent before starting to run the main thread
|
||||||
// message loop.
|
// message loop.
|
||||||
@@ -381,16 +377,12 @@ void RunTest_RecursiveDenial2(MessageLoop::Type message_loop_type) {
|
|||||||
ASSERT_EQ(true, worker.StartWithOptions(options));
|
ASSERT_EQ(true, worker.StartWithOptions(options));
|
||||||
TaskList order;
|
TaskList order;
|
||||||
win::ScopedHandle event(CreateEvent(NULL, FALSE, FALSE, NULL));
|
win::ScopedHandle event(CreateEvent(NULL, FALSE, FALSE, NULL));
|
||||||
worker.message_loop()->PostTask(FROM_HERE,
|
worker.task_runner()->PostTask(
|
||||||
Bind(&RecursiveFuncWin,
|
FROM_HERE, Bind(&RecursiveFuncWin, ThreadTaskRunnerHandle::Get(),
|
||||||
MessageLoop::current(),
|
event.Get(), true, &order, false));
|
||||||
event.Get(),
|
|
||||||
true,
|
|
||||||
&order,
|
|
||||||
false));
|
|
||||||
// Let the other thread execute.
|
// Let the other thread execute.
|
||||||
WaitForSingleObject(event.Get(), INFINITE);
|
WaitForSingleObject(event.Get(), INFINITE);
|
||||||
MessageLoop::current()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
ASSERT_EQ(17u, order.Size());
|
ASSERT_EQ(17u, order.Size());
|
||||||
EXPECT_EQ(order.Get(0), TaskItem(RECURSIVE, 1, true));
|
EXPECT_EQ(order.Get(0), TaskItem(RECURSIVE, 1, true));
|
||||||
@@ -425,16 +417,12 @@ void RunTest_RecursiveSupport2(MessageLoop::Type message_loop_type) {
|
|||||||
ASSERT_EQ(true, worker.StartWithOptions(options));
|
ASSERT_EQ(true, worker.StartWithOptions(options));
|
||||||
TaskList order;
|
TaskList order;
|
||||||
win::ScopedHandle event(CreateEvent(NULL, FALSE, FALSE, NULL));
|
win::ScopedHandle event(CreateEvent(NULL, FALSE, FALSE, NULL));
|
||||||
worker.message_loop()->PostTask(FROM_HERE,
|
worker.task_runner()->PostTask(
|
||||||
Bind(&RecursiveFuncWin,
|
FROM_HERE, Bind(&RecursiveFuncWin, ThreadTaskRunnerHandle::Get(),
|
||||||
MessageLoop::current(),
|
event.Get(), false, &order, true));
|
||||||
event.Get(),
|
|
||||||
false,
|
|
||||||
&order,
|
|
||||||
true));
|
|
||||||
// Let the other thread execute.
|
// Let the other thread execute.
|
||||||
WaitForSingleObject(event.Get(), INFINITE);
|
WaitForSingleObject(event.Get(), INFINITE);
|
||||||
MessageLoop::current()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
ASSERT_EQ(18u, order.Size());
|
ASSERT_EQ(18u, order.Size());
|
||||||
EXPECT_EQ(order.Get(0), TaskItem(RECURSIVE, 1, true));
|
EXPECT_EQ(order.Get(0), TaskItem(RECURSIVE, 1, true));
|
||||||
@@ -541,12 +529,9 @@ void RunTest_IOHandler() {
|
|||||||
options.message_loop_type = MessageLoop::TYPE_IO;
|
options.message_loop_type = MessageLoop::TYPE_IO;
|
||||||
ASSERT_TRUE(thread.StartWithOptions(options));
|
ASSERT_TRUE(thread.StartWithOptions(options));
|
||||||
|
|
||||||
MessageLoop* thread_loop = thread.message_loop();
|
|
||||||
ASSERT_TRUE(NULL != thread_loop);
|
|
||||||
|
|
||||||
TestIOHandler handler(kPipeName, callback_called.Get(), false);
|
TestIOHandler handler(kPipeName, callback_called.Get(), false);
|
||||||
thread_loop->PostTask(FROM_HERE, Bind(&TestIOHandler::Init,
|
thread.task_runner()->PostTask(
|
||||||
Unretained(&handler)));
|
FROM_HERE, Bind(&TestIOHandler::Init, Unretained(&handler)));
|
||||||
// Make sure the thread runs and sleeps for lack of work.
|
// Make sure the thread runs and sleeps for lack of work.
|
||||||
PlatformThread::Sleep(TimeDelta::FromMilliseconds(100));
|
PlatformThread::Sleep(TimeDelta::FromMilliseconds(100));
|
||||||
|
|
||||||
@@ -582,19 +567,16 @@ void RunTest_WaitForIO() {
|
|||||||
options.message_loop_type = MessageLoop::TYPE_IO;
|
options.message_loop_type = MessageLoop::TYPE_IO;
|
||||||
ASSERT_TRUE(thread.StartWithOptions(options));
|
ASSERT_TRUE(thread.StartWithOptions(options));
|
||||||
|
|
||||||
MessageLoop* thread_loop = thread.message_loop();
|
|
||||||
ASSERT_TRUE(NULL != thread_loop);
|
|
||||||
|
|
||||||
TestIOHandler handler1(kPipeName1, callback1_called.Get(), false);
|
TestIOHandler handler1(kPipeName1, callback1_called.Get(), false);
|
||||||
TestIOHandler handler2(kPipeName2, callback2_called.Get(), true);
|
TestIOHandler handler2(kPipeName2, callback2_called.Get(), true);
|
||||||
thread_loop->PostTask(FROM_HERE, Bind(&TestIOHandler::Init,
|
thread.task_runner()->PostTask(
|
||||||
Unretained(&handler1)));
|
FROM_HERE, Bind(&TestIOHandler::Init, Unretained(&handler1)));
|
||||||
// TODO(ajwong): Do we really need such long Sleeps in this function?
|
// TODO(ajwong): Do we really need such long Sleeps in this function?
|
||||||
// Make sure the thread runs and sleeps for lack of work.
|
// Make sure the thread runs and sleeps for lack of work.
|
||||||
TimeDelta delay = TimeDelta::FromMilliseconds(100);
|
TimeDelta delay = TimeDelta::FromMilliseconds(100);
|
||||||
PlatformThread::Sleep(delay);
|
PlatformThread::Sleep(delay);
|
||||||
thread_loop->PostTask(FROM_HERE, Bind(&TestIOHandler::Init,
|
thread.task_runner()->PostTask(
|
||||||
Unretained(&handler2)));
|
FROM_HERE, Bind(&TestIOHandler::Init, Unretained(&handler2)));
|
||||||
PlatformThread::Sleep(delay);
|
PlatformThread::Sleep(delay);
|
||||||
|
|
||||||
// At this time handler1 is waiting to be called, and the thread is waiting
|
// At this time handler1 is waiting to be called, and the thread is waiting
|
||||||
@@ -707,26 +689,26 @@ TEST(MessageLoopTest, WaitForIO) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST(MessageLoopTest, HighResolutionTimer) {
|
TEST(MessageLoopTest, HighResolutionTimer) {
|
||||||
MessageLoop loop;
|
MessageLoop message_loop;
|
||||||
Time::EnableHighResolutionTimer(true);
|
Time::EnableHighResolutionTimer(true);
|
||||||
|
|
||||||
const TimeDelta kFastTimer = TimeDelta::FromMilliseconds(5);
|
const TimeDelta kFastTimer = TimeDelta::FromMilliseconds(5);
|
||||||
const TimeDelta kSlowTimer = TimeDelta::FromMilliseconds(100);
|
const TimeDelta kSlowTimer = TimeDelta::FromMilliseconds(100);
|
||||||
|
|
||||||
EXPECT_FALSE(loop.HasHighResolutionTasks());
|
EXPECT_FALSE(message_loop.HasHighResolutionTasks());
|
||||||
// Post a fast task to enable the high resolution timers.
|
// Post a fast task to enable the high resolution timers.
|
||||||
loop.PostDelayedTask(FROM_HERE, Bind(&PostNTasksThenQuit, 1),
|
message_loop.task_runner()->PostDelayedTask(
|
||||||
kFastTimer);
|
FROM_HERE, Bind(&PostNTasksThenQuit, 1), kFastTimer);
|
||||||
EXPECT_TRUE(loop.HasHighResolutionTasks());
|
EXPECT_TRUE(message_loop.HasHighResolutionTasks());
|
||||||
loop.Run();
|
RunLoop().Run();
|
||||||
EXPECT_FALSE(loop.HasHighResolutionTasks());
|
EXPECT_FALSE(message_loop.HasHighResolutionTasks());
|
||||||
EXPECT_FALSE(Time::IsHighResolutionTimerInUse());
|
EXPECT_FALSE(Time::IsHighResolutionTimerInUse());
|
||||||
// Check that a slow task does not trigger the high resolution logic.
|
// Check that a slow task does not trigger the high resolution logic.
|
||||||
loop.PostDelayedTask(FROM_HERE, Bind(&PostNTasksThenQuit, 1),
|
message_loop.task_runner()->PostDelayedTask(
|
||||||
kSlowTimer);
|
FROM_HERE, Bind(&PostNTasksThenQuit, 1), kSlowTimer);
|
||||||
EXPECT_FALSE(loop.HasHighResolutionTasks());
|
EXPECT_FALSE(message_loop.HasHighResolutionTasks());
|
||||||
loop.Run();
|
RunLoop().Run();
|
||||||
EXPECT_FALSE(loop.HasHighResolutionTasks());
|
EXPECT_FALSE(message_loop.HasHighResolutionTasks());
|
||||||
Time::EnableHighResolutionTimer(false);
|
Time::EnableHighResolutionTimer(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -992,7 +974,7 @@ TEST(MessageLoopTest, AlwaysHaveUserMessageWhenNesting) {
|
|||||||
|
|
||||||
ASSERT_TRUE(PostMessage(message_hwnd, kSignalMsg, 0, 1));
|
ASSERT_TRUE(PostMessage(message_hwnd, kSignalMsg, 0, 1));
|
||||||
|
|
||||||
loop.Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
ASSERT_TRUE(UnregisterClass(MAKEINTATOM(atom), instance));
|
ASSERT_TRUE(UnregisterClass(MAKEINTATOM(atom), instance));
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
@@ -195,7 +196,7 @@ TEST_F(MessagePumpGLibTest, TestQuit) {
|
|||||||
injector()->Reset();
|
injector()->Reset();
|
||||||
// Quit from an event
|
// Quit from an event
|
||||||
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
EXPECT_EQ(1, injector()->processed_events());
|
EXPECT_EQ(1, injector()->processed_events());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,7 +216,7 @@ TEST_F(MessagePumpGLibTest, TestEventTaskInterleave) {
|
|||||||
injector()->AddEventAsTask(0, posted_task);
|
injector()->AddEventAsTask(0, posted_task);
|
||||||
injector()->AddEventAsTask(0, Bind(&DoNothing));
|
injector()->AddEventAsTask(0, Bind(&DoNothing));
|
||||||
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
EXPECT_EQ(4, injector()->processed_events());
|
EXPECT_EQ(4, injector()->processed_events());
|
||||||
|
|
||||||
injector()->Reset();
|
injector()->Reset();
|
||||||
@@ -226,7 +227,7 @@ TEST_F(MessagePumpGLibTest, TestEventTaskInterleave) {
|
|||||||
injector()->AddEventAsTask(0, posted_task);
|
injector()->AddEventAsTask(0, posted_task);
|
||||||
injector()->AddEventAsTask(10, Bind(&DoNothing));
|
injector()->AddEventAsTask(10, Bind(&DoNothing));
|
||||||
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
injector()->AddEvent(0, MessageLoop::QuitWhenIdleClosure());
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
EXPECT_EQ(4, injector()->processed_events());
|
EXPECT_EQ(4, injector()->processed_events());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,15 +236,15 @@ TEST_F(MessagePumpGLibTest, TestWorkWhileWaitingForEvents) {
|
|||||||
// Tests that we process tasks while waiting for new events.
|
// Tests that we process tasks while waiting for new events.
|
||||||
// The event queue is empty at first.
|
// The event queue is empty at first.
|
||||||
for (int i = 0; i < 10; ++i) {
|
for (int i = 0; i < 10; ++i) {
|
||||||
loop()->PostTask(FROM_HERE, Bind(&IncrementInt, &task_count));
|
loop()->task_runner()->PostTask(FROM_HERE,
|
||||||
|
Bind(&IncrementInt, &task_count));
|
||||||
}
|
}
|
||||||
// After all the previous tasks have executed, enqueue an event that will
|
// After all the previous tasks have executed, enqueue an event that will
|
||||||
// quit.
|
// quit.
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&EventInjector::AddEvent, Unretained(injector()), 0,
|
||||||
Bind(&EventInjector::AddEvent, Unretained(injector()), 0,
|
MessageLoop::QuitWhenIdleClosure()));
|
||||||
MessageLoop::QuitWhenIdleClosure()));
|
RunLoop().Run();
|
||||||
loop()->Run();
|
|
||||||
ASSERT_EQ(10, task_count);
|
ASSERT_EQ(10, task_count);
|
||||||
EXPECT_EQ(1, injector()->processed_events());
|
EXPECT_EQ(1, injector()->processed_events());
|
||||||
|
|
||||||
@@ -251,21 +252,19 @@ TEST_F(MessagePumpGLibTest, TestWorkWhileWaitingForEvents) {
|
|||||||
injector()->Reset();
|
injector()->Reset();
|
||||||
task_count = 0;
|
task_count = 0;
|
||||||
for (int i = 0; i < 10; ++i) {
|
for (int i = 0; i < 10; ++i) {
|
||||||
loop()->PostDelayedTask(
|
loop()->task_runner()->PostDelayedTask(FROM_HERE,
|
||||||
FROM_HERE,
|
Bind(&IncrementInt, &task_count),
|
||||||
Bind(&IncrementInt, &task_count),
|
TimeDelta::FromMilliseconds(10 * i));
|
||||||
TimeDelta::FromMilliseconds(10*i));
|
|
||||||
}
|
}
|
||||||
// After all the previous tasks have executed, enqueue an event that will
|
// After all the previous tasks have executed, enqueue an event that will
|
||||||
// quit.
|
// quit.
|
||||||
// This relies on the fact that delayed tasks are executed in delay order.
|
// This relies on the fact that delayed tasks are executed in delay order.
|
||||||
// That is verified in message_loop_unittest.cc.
|
// That is verified in message_loop_unittest.cc.
|
||||||
loop()->PostDelayedTask(
|
loop()->task_runner()->PostDelayedTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&EventInjector::AddEvent, Unretained(injector()), 10,
|
||||||
Bind(&EventInjector::AddEvent, Unretained(injector()), 10,
|
MessageLoop::QuitWhenIdleClosure()),
|
||||||
MessageLoop::QuitWhenIdleClosure()),
|
|
||||||
TimeDelta::FromMilliseconds(150));
|
TimeDelta::FromMilliseconds(150));
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
ASSERT_EQ(10, task_count);
|
ASSERT_EQ(10, task_count);
|
||||||
EXPECT_EQ(1, injector()->processed_events());
|
EXPECT_EQ(1, injector()->processed_events());
|
||||||
}
|
}
|
||||||
@@ -287,7 +286,7 @@ TEST_F(MessagePumpGLibTest, TestEventsWhileWaitingForWork) {
|
|||||||
|
|
||||||
// And then quit (relies on the condition tested by TestEventTaskInterleave).
|
// And then quit (relies on the condition tested by TestEventTaskInterleave).
|
||||||
injector()->AddEvent(10, MessageLoop::QuitWhenIdleClosure());
|
injector()->AddEvent(10, MessageLoop::QuitWhenIdleClosure());
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(12, injector()->processed_events());
|
EXPECT_EQ(12, injector()->processed_events());
|
||||||
}
|
}
|
||||||
@@ -363,12 +362,12 @@ TEST_F(MessagePumpGLibTest, TestConcurrentEventPostedTask) {
|
|||||||
0, Bind(&ConcurrentHelper::FromEvent, helper.get()));
|
0, Bind(&ConcurrentHelper::FromEvent, helper.get()));
|
||||||
|
|
||||||
// Similarly post 2 tasks.
|
// Similarly post 2 tasks.
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE, Bind(&ConcurrentHelper::FromTask, helper.get()));
|
FROM_HERE, Bind(&ConcurrentHelper::FromTask, helper.get()));
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE, Bind(&ConcurrentHelper::FromTask, helper.get()));
|
FROM_HERE, Bind(&ConcurrentHelper::FromTask, helper.get()));
|
||||||
|
|
||||||
loop()->Run();
|
RunLoop().Run();
|
||||||
EXPECT_EQ(0, helper->event_count());
|
EXPECT_EQ(0, helper->event_count());
|
||||||
EXPECT_EQ(0, helper->task_count());
|
EXPECT_EQ(0, helper->task_count());
|
||||||
}
|
}
|
||||||
@@ -396,10 +395,9 @@ void AddEventsAndDrainGLib(EventInjector* injector) {
|
|||||||
|
|
||||||
TEST_F(MessagePumpGLibTest, TestDrainingGLib) {
|
TEST_F(MessagePumpGLibTest, TestDrainingGLib) {
|
||||||
// Tests that draining events using GLib works.
|
// Tests that draining events using GLib works.
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&AddEventsAndDrainGLib, Unretained(injector())));
|
||||||
Bind(&AddEventsAndDrainGLib, Unretained(injector())));
|
RunLoop().Run();
|
||||||
loop()->Run();
|
|
||||||
|
|
||||||
EXPECT_EQ(3, injector()->processed_events());
|
EXPECT_EQ(3, injector()->processed_events());
|
||||||
}
|
}
|
||||||
@@ -512,10 +510,9 @@ TEST_F(MessagePumpGLibTest, TestGLibLoop) {
|
|||||||
// loop is not run by MessageLoop::Run() but by a straight GLib loop.
|
// loop is not run by MessageLoop::Run() but by a straight GLib loop.
|
||||||
// Note that in this case we don't make strong guarantees about niceness
|
// Note that in this case we don't make strong guarantees about niceness
|
||||||
// between events and posted tasks.
|
// between events and posted tasks.
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&TestGLibLoopInternal, Unretained(injector())));
|
||||||
Bind(&TestGLibLoopInternal, Unretained(injector())));
|
RunLoop().Run();
|
||||||
loop()->Run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MessagePumpGLibTest, TestGtkLoop) {
|
TEST_F(MessagePumpGLibTest, TestGtkLoop) {
|
||||||
@@ -523,10 +520,9 @@ TEST_F(MessagePumpGLibTest, TestGtkLoop) {
|
|||||||
// loop is not run by MessageLoop::Run() but by a straight Gtk loop.
|
// loop is not run by MessageLoop::Run() but by a straight Gtk loop.
|
||||||
// Note that in this case we don't make strong guarantees about niceness
|
// Note that in this case we don't make strong guarantees about niceness
|
||||||
// between events and posted tasks.
|
// between events and posted tasks.
|
||||||
loop()->PostTask(
|
loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, Bind(&TestGtkLoopInternal, Unretained(injector())));
|
||||||
Bind(&TestGtkLoopInternal, Unretained(injector())));
|
RunLoop().Run();
|
||||||
loop()->Run();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace base
|
} // namespace base
|
||||||
|
@@ -101,7 +101,7 @@ class ScheduleWorkTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < num_scheduling_threads; ++i) {
|
for (int i = 0; i < num_scheduling_threads; ++i) {
|
||||||
scheduling_threads[i]->message_loop()->task_runner()->PostTask(
|
scheduling_threads[i]->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&ScheduleWorkTest::Schedule, base::Unretained(this), i));
|
base::Bind(&ScheduleWorkTest::Schedule, base::Unretained(this), i));
|
||||||
}
|
}
|
||||||
|
552
base/task_scheduler/scheduler_worker_unittest.cc~RF3e0a7fad.TMP
Normal file
552
base/task_scheduler/scheduler_worker_unittest.cc~RF3e0a7fad.TMP
Normal file
@@ -0,0 +1,552 @@
|
|||||||
|
// Copyright 2016 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 "base/task_scheduler/scheduler_worker.h"
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
#include "base/bind.h"
|
||||||
|
#include "base/bind_helpers.h"
|
||||||
|
#include "base/macros.h"
|
||||||
|
#include "base/memory/ptr_util.h"
|
||||||
|
#include "base/synchronization/condition_variable.h"
|
||||||
|
#include "base/synchronization/waitable_event.h"
|
||||||
|
#include "base/task_scheduler/scheduler_lock.h"
|
||||||
|
#include "base/task_scheduler/sequence.h"
|
||||||
|
#include "base/task_scheduler/task.h"
|
||||||
|
#include "base/task_scheduler/task_tracker.h"
|
||||||
|
#include "base/threading/platform_thread.h"
|
||||||
|
#include "base/time/time.h"
|
||||||
|
#include "build/build_config.h"
|
||||||
|
#include "testing/gmock/include/gmock/gmock.h"
|
||||||
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
|
using testing::_;
|
||||||
|
using testing::Mock;
|
||||||
|
using testing::Ne;
|
||||||
|
using testing::StrictMock;
|
||||||
|
|
||||||
|
namespace base {
|
||||||
|
namespace internal {
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
const size_t kNumSequencesPerTest = 150;
|
||||||
|
|
||||||
|
class SchedulerWorkerDefaultDelegate : public SchedulerWorker::Delegate {
|
||||||
|
public:
|
||||||
|
SchedulerWorkerDefaultDelegate() = default;
|
||||||
|
|
||||||
|
// SchedulerWorker::Delegate:
|
||||||
|
void OnMainEntry(SchedulerWorker* worker, const TimeDelta& detach_duration) override {}
|
||||||
|
scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override { return nullptr; }
|
||||||
|
void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override {
|
||||||
|
ADD_FAILURE() << "Unexpected call to ReEnqueueSequence()";
|
||||||
|
}
|
||||||
|
TimeDelta GetSleepTimeout() override { return TimeDelta::Max(); }
|
||||||
|
bool CanDetach(SchedulerWorker* worker) override { return false; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(SchedulerWorkerDefaultDelegate);
|
||||||
|
};
|
||||||
|
|
||||||
|
// The test parameter is the number of Tasks per Sequence returned by GetWork().
|
||||||
|
class TaskSchedulerWorkerTest : public testing::TestWithParam<size_t> {
|
||||||
|
protected:
|
||||||
|
TaskSchedulerWorkerTest()
|
||||||
|
: main_entry_called_(WaitableEvent::ResetPolicy::MANUAL,
|
||||||
|
WaitableEvent::InitialState::NOT_SIGNALED),
|
||||||
|
num_get_work_cv_(lock_.CreateConditionVariable()),
|
||||||
|
worker_set_(WaitableEvent::ResetPolicy::MANUAL,
|
||||||
|
WaitableEvent::InitialState::NOT_SIGNALED) {}
|
||||||
|
|
||||||
|
void SetUp() override {
|
||||||
|
worker_ = SchedulerWorker::Create(
|
||||||
|
ThreadPriority::NORMAL,
|
||||||
|
WrapUnique(new TestSchedulerWorkerDelegate(this)),
|
||||||
|
&task_tracker_,
|
||||||
|
SchedulerWorker::InitialState::ALIVE);
|
||||||
|
ASSERT_TRUE(worker_);
|
||||||
|
worker_set_.Signal();
|
||||||
|
main_entry_called_.Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
void TearDown() override {
|
||||||
|
worker_->JoinForTesting();
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t TasksPerSequence() const { return GetParam(); }
|
||||||
|
|
||||||
|
// Wait until GetWork() has been called |num_get_work| times.
|
||||||
|
void WaitForNumGetWork(size_t num_get_work) {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
while (num_get_work_ < num_get_work)
|
||||||
|
num_get_work_cv_->Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetMaxGetWork(size_t max_get_work) {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
max_get_work_ = max_get_work;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetNumSequencesToCreate(size_t num_sequences_to_create) {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
EXPECT_EQ(0U, num_sequences_to_create_);
|
||||||
|
num_sequences_to_create_ = num_sequences_to_create;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t NumRunTasks() {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
return num_run_tasks_;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<scoped_refptr<Sequence>> CreatedSequences() {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
return created_sequences_;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<scoped_refptr<Sequence>> EnqueuedSequences() {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
return re_enqueued_sequences_;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<SchedulerWorker> worker_;
|
||||||
|
|
||||||
|
private:
|
||||||
|
class TestSchedulerWorkerDelegate : public SchedulerWorkerDefaultDelegate {
|
||||||
|
public:
|
||||||
|
TestSchedulerWorkerDelegate(TaskSchedulerWorkerTest* outer)
|
||||||
|
: outer_(outer) {}
|
||||||
|
|
||||||
|
// SchedulerWorker::Delegate:
|
||||||
|
void OnMainEntry(SchedulerWorker* worker,
|
||||||
|
const TimeDelta& detach_duration) override {
|
||||||
|
outer_->worker_set_.Wait();
|
||||||
|
EXPECT_EQ(outer_->worker_.get(), worker);
|
||||||
|
|
||||||
|
// Without synchronization, OnMainEntry() could be called twice without
|
||||||
|
// generating an error.
|
||||||
|
AutoSchedulerLock auto_lock(outer_->lock_);
|
||||||
|
EXPECT_FALSE(outer_->main_entry_called_.IsSignaled());
|
||||||
|
outer_->main_entry_called_.Signal();
|
||||||
|
}
|
||||||
|
|
||||||
|
scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override {
|
||||||
|
EXPECT_EQ(outer_->worker_.get(), worker);
|
||||||
|
|
||||||
|
{
|
||||||
|
AutoSchedulerLock auto_lock(outer_->lock_);
|
||||||
|
|
||||||
|
// Increment the number of times that this method has been called.
|
||||||
|
++outer_->num_get_work_;
|
||||||
|
outer_->num_get_work_cv_->Signal();
|
||||||
|
|
||||||
|
// Verify that this method isn't called more times than expected.
|
||||||
|
EXPECT_LE(outer_->num_get_work_, outer_->max_get_work_);
|
||||||
|
|
||||||
|
// Check if a Sequence should be returned.
|
||||||
|
if (outer_->num_sequences_to_create_ == 0)
|
||||||
|
return nullptr;
|
||||||
|
--outer_->num_sequences_to_create_;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a Sequence with TasksPerSequence() Tasks.
|
||||||
|
scoped_refptr<Sequence> sequence(new Sequence);
|
||||||
|
for (size_t i = 0; i < outer_->TasksPerSequence(); ++i) {
|
||||||
|
std::unique_ptr<Task> task(new Task(
|
||||||
|
FROM_HERE, Bind(&TaskSchedulerWorkerTest::RunTaskCallback,
|
||||||
|
Unretained(outer_)),
|
||||||
|
TaskTraits(), TimeDelta()));
|
||||||
|
EXPECT_TRUE(outer_->task_tracker_.WillPostTask(task.get()));
|
||||||
|
sequence->PushTask(std::move(task));
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
// Add the Sequence to the vector of created Sequences.
|
||||||
|
AutoSchedulerLock auto_lock(outer_->lock_);
|
||||||
|
outer_->created_sequences_.push_back(sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This override verifies that |sequence| contains the expected number of
|
||||||
|
// Tasks and adds it to |enqueued_sequences_|. Unlike a normal
|
||||||
|
// EnqueueSequence implementation, it doesn't reinsert |sequence| into a
|
||||||
|
// queue for further execution.
|
||||||
|
void ReEnqueueSequence(scoped_refptr<Sequence> sequence) override {
|
||||||
|
EXPECT_GT(outer_->TasksPerSequence(), 1U);
|
||||||
|
|
||||||
|
// Verify that |sequence| contains TasksPerSequence() - 1 Tasks.
|
||||||
|
for (size_t i = 0; i < outer_->TasksPerSequence() - 1; ++i) {
|
||||||
|
EXPECT_TRUE(sequence->PeekTask());
|
||||||
|
sequence->PopTask();
|
||||||
|
}
|
||||||
|
EXPECT_FALSE(sequence->PeekTask());
|
||||||
|
|
||||||
|
// Add |sequence| to |re_enqueued_sequences_|.
|
||||||
|
AutoSchedulerLock auto_lock(outer_->lock_);
|
||||||
|
outer_->re_enqueued_sequences_.push_back(std::move(sequence));
|
||||||
|
EXPECT_LE(outer_->re_enqueued_sequences_.size(),
|
||||||
|
outer_->created_sequences_.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
TaskSchedulerWorkerTest* outer_;
|
||||||
|
};
|
||||||
|
|
||||||
|
void RunTaskCallback() {
|
||||||
|
AutoSchedulerLock auto_lock(lock_);
|
||||||
|
++num_run_tasks_;
|
||||||
|
EXPECT_LE(num_run_tasks_, created_sequences_.size());
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskTracker task_tracker_;
|
||||||
|
|
||||||
|
// Synchronizes access to all members below.
|
||||||
|
mutable SchedulerLock lock_;
|
||||||
|
|
||||||
|
// Signaled once OnMainEntry() has been called.
|
||||||
|
WaitableEvent main_entry_called_;
|
||||||
|
|
||||||
|
// Number of Sequences that should be created by GetWork(). When this
|
||||||
|
// is 0, GetWork() returns nullptr.
|
||||||
|
size_t num_sequences_to_create_ = 0;
|
||||||
|
|
||||||
|
// Number of times that GetWork() has been called.
|
||||||
|
size_t num_get_work_ = 0;
|
||||||
|
|
||||||
|
// Maximum number of times that GetWork() can be called.
|
||||||
|
size_t max_get_work_ = 0;
|
||||||
|
|
||||||
|
// Condition variable signaled when |num_get_work_| is incremented.
|
||||||
|
std::unique_ptr<ConditionVariable> num_get_work_cv_;
|
||||||
|
|
||||||
|
// Sequences created by GetWork().
|
||||||
|
std::vector<scoped_refptr<Sequence>> created_sequences_;
|
||||||
|
|
||||||
|
// Sequences passed to EnqueueSequence().
|
||||||
|
std::vector<scoped_refptr<Sequence>> re_enqueued_sequences_;
|
||||||
|
|
||||||
|
// Number of times that RunTaskCallback() has been called.
|
||||||
|
size_t num_run_tasks_ = 0;
|
||||||
|
|
||||||
|
// Signaled after |worker_| is set.
|
||||||
|
WaitableEvent worker_set_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(TaskSchedulerWorkerTest);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Verify that when GetWork() continuously returns Sequences, all Tasks in these
|
||||||
|
// Sequences run successfully. The test wakes up the SchedulerWorker once.
|
||||||
|
TEST_P(TaskSchedulerWorkerTest, ContinuousWork) {
|
||||||
|
// Set GetWork() to return |kNumSequencesPerTest| Sequences before starting to
|
||||||
|
// return nullptr.
|
||||||
|
SetNumSequencesToCreate(kNumSequencesPerTest);
|
||||||
|
|
||||||
|
// Expect |kNumSequencesPerTest| calls to GetWork() in which it returns a
|
||||||
|
// Sequence and one call in which its returns nullptr.
|
||||||
|
const size_t kExpectedNumGetWork = kNumSequencesPerTest + 1;
|
||||||
|
SetMaxGetWork(kExpectedNumGetWork);
|
||||||
|
|
||||||
|
// Wake up |worker_| and wait until GetWork() has been invoked the
|
||||||
|
// expected amount of times.
|
||||||
|
worker_->WakeUp();
|
||||||
|
WaitForNumGetWork(kExpectedNumGetWork);
|
||||||
|
|
||||||
|
// All tasks should have run.
|
||||||
|
EXPECT_EQ(kNumSequencesPerTest, NumRunTasks());
|
||||||
|
|
||||||
|
// If Sequences returned by GetWork() contain more than one Task, they aren't
|
||||||
|
// empty after the worker pops Tasks from them and thus should be returned to
|
||||||
|
// EnqueueSequence().
|
||||||
|
if (TasksPerSequence() > 1)
|
||||||
|
EXPECT_EQ(CreatedSequences(), EnqueuedSequences());
|
||||||
|
else
|
||||||
|
EXPECT_TRUE(EnqueuedSequences().empty());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify that when GetWork() alternates between returning a Sequence and
|
||||||
|
// returning nullptr, all Tasks in the returned Sequences run successfully. The
|
||||||
|
// test wakes up the SchedulerWorker once for each Sequence.
|
||||||
|
TEST_P(TaskSchedulerWorkerTest, IntermittentWork) {
|
||||||
|
for (size_t i = 0; i < kNumSequencesPerTest; ++i) {
|
||||||
|
// Set GetWork() to return 1 Sequence before starting to return
|
||||||
|
// nullptr.
|
||||||
|
SetNumSequencesToCreate(1);
|
||||||
|
|
||||||
|
// Expect |i + 1| calls to GetWork() in which it returns a Sequence and
|
||||||
|
// |i + 1| calls in which it returns nullptr.
|
||||||
|
const size_t expected_num_get_work = 2 * (i + 1);
|
||||||
|
SetMaxGetWork(expected_num_get_work);
|
||||||
|
|
||||||
|
// Wake up |worker_| and wait until GetWork() has been invoked
|
||||||
|
// the expected amount of times.
|
||||||
|
worker_->WakeUp();
|
||||||
|
WaitForNumGetWork(expected_num_get_work);
|
||||||
|
|
||||||
|
// The Task should have run
|
||||||
|
EXPECT_EQ(i + 1, NumRunTasks());
|
||||||
|
|
||||||
|
// If Sequences returned by GetWork() contain more than one Task, they
|
||||||
|
// aren't empty after the worker pops Tasks from them and thus should be
|
||||||
|
// returned to EnqueueSequence().
|
||||||
|
if (TasksPerSequence() > 1)
|
||||||
|
EXPECT_EQ(CreatedSequences(), EnqueuedSequences());
|
||||||
|
else
|
||||||
|
EXPECT_TRUE(EnqueuedSequences().empty());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
INSTANTIATE_TEST_CASE_P(OneTaskPerSequence,
|
||||||
|
TaskSchedulerWorkerTest,
|
||||||
|
::testing::Values(1));
|
||||||
|
INSTANTIATE_TEST_CASE_P(TwoTasksPerSequence,
|
||||||
|
TaskSchedulerWorkerTest,
|
||||||
|
::testing::Values(2));
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class ControllableDetachDelegate : public SchedulerWorkerDefaultDelegate {
|
||||||
|
public:
|
||||||
|
ControllableDetachDelegate()
|
||||||
|
: work_processed_(WaitableEvent::ResetPolicy::MANUAL,
|
||||||
|
WaitableEvent::InitialState::NOT_SIGNALED),
|
||||||
|
detach_requested_(WaitableEvent::ResetPolicy::MANUAL,
|
||||||
|
WaitableEvent::InitialState::NOT_SIGNALED) {}
|
||||||
|
|
||||||
|
~ControllableDetachDelegate() override = default;
|
||||||
|
|
||||||
|
// SchedulerWorker::Delegate:
|
||||||
|
MOCK_METHOD2(OnMainEntry,
|
||||||
|
void(SchedulerWorker* worker, const TimeDelta& detach_duration));
|
||||||
|
|
||||||
|
scoped_refptr<Sequence> GetWork(SchedulerWorker* worker)
|
||||||
|
override {
|
||||||
|
// Sends one item of work to signal |work_processed_|. On subsequent calls,
|
||||||
|
// sends nullptr to indicate there's no more work to be done.
|
||||||
|
if (work_requested_)
|
||||||
|
return nullptr;
|
||||||
|
|
||||||
|
work_requested_ = true;
|
||||||
|
scoped_refptr<Sequence> sequence(new Sequence);
|
||||||
|
std::unique_ptr<Task> task(new Task(
|
||||||
|
FROM_HERE, Bind(&WaitableEvent::Signal, Unretained(&work_processed_)),
|
||||||
|
TaskTraits(), TimeDelta()));
|
||||||
|
sequence->PushTask(std::move(task));
|
||||||
|
return sequence;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CanDetach(SchedulerWorker* worker) override {
|
||||||
|
detach_requested_.Signal();
|
||||||
|
return can_detach_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaitForWorkToRun() {
|
||||||
|
work_processed_.Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaitForDetachRequest() {
|
||||||
|
detach_requested_.Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ResetState() {
|
||||||
|
work_requested_ = false;
|
||||||
|
work_processed_.Reset();
|
||||||
|
detach_requested_.Reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_can_detach(bool can_detach) { can_detach_ = can_detach; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool work_requested_ = false;
|
||||||
|
bool can_detach_ = false;
|
||||||
|
WaitableEvent work_processed_;
|
||||||
|
WaitableEvent detach_requested_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(ControllableDetachDelegate);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
TEST(TaskSchedulerWorkerTest, WorkerDetaches) {
|
||||||
|
TaskTracker task_tracker;
|
||||||
|
// Will be owned by SchedulerWorker.
|
||||||
|
ControllableDetachDelegate* delegate =
|
||||||
|
new StrictMock<ControllableDetachDelegate>;
|
||||||
|
delegate->set_can_detach(true);
|
||||||
|
EXPECT_CALL(*delegate, OnMainEntry(_, TimeDelta::Max()));
|
||||||
|
std::unique_ptr<SchedulerWorker> worker =
|
||||||
|
SchedulerWorker::Create(
|
||||||
|
ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker,
|
||||||
|
SchedulerWorker::InitialState::ALIVE);
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate->WaitForWorkToRun();
|
||||||
|
Mock::VerifyAndClear(delegate);
|
||||||
|
delegate->WaitForDetachRequest();
|
||||||
|
// Sleep to give a chance for the detach to happen. A yield is too short.
|
||||||
|
PlatformThread::Sleep(TimeDelta::FromMilliseconds(50));
|
||||||
|
ASSERT_FALSE(worker->ThreadAliveForTesting());
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(TaskSchedulerWorkerTest, WorkerDetachesAndWakes) {
|
||||||
|
TaskTracker task_tracker;
|
||||||
|
// Will be owned by SchedulerWorker.
|
||||||
|
ControllableDetachDelegate* delegate =
|
||||||
|
new StrictMock<ControllableDetachDelegate>;
|
||||||
|
delegate->set_can_detach(true);
|
||||||
|
EXPECT_CALL(*delegate, OnMainEntry(_, TimeDelta::Max()));
|
||||||
|
std::unique_ptr<SchedulerWorker> worker =
|
||||||
|
SchedulerWorker::Create(
|
||||||
|
ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker,
|
||||||
|
SchedulerWorker::InitialState::ALIVE);
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate->WaitForWorkToRun();
|
||||||
|
Mock::VerifyAndClear(delegate);
|
||||||
|
delegate->WaitForDetachRequest();
|
||||||
|
// Sleep to give a chance for the detach to happen. A yield is too short.
|
||||||
|
PlatformThread::Sleep(TimeDelta::FromMilliseconds(50));
|
||||||
|
ASSERT_FALSE(worker->ThreadAliveForTesting());
|
||||||
|
|
||||||
|
delegate->ResetState();
|
||||||
|
delegate->set_can_detach(false);
|
||||||
|
// When SchedulerWorker recreates its thread, expect OnMainEntry() to be
|
||||||
|
// called with a detach duration which is not TimeDelta::Max().
|
||||||
|
EXPECT_CALL(*delegate, OnMainEntry(worker.get(), Ne(TimeDelta::Max())));
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate->WaitForWorkToRun();
|
||||||
|
Mock::VerifyAndClear(delegate);
|
||||||
|
delegate->WaitForDetachRequest();
|
||||||
|
PlatformThread::Sleep(TimeDelta::FromMilliseconds(50));
|
||||||
|
ASSERT_TRUE(worker->ThreadAliveForTesting());
|
||||||
|
worker->JoinForTesting();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(TaskSchedulerWorkerTest, CreateDetached) {
|
||||||
|
TaskTracker task_tracker;
|
||||||
|
// Will be owned by SchedulerWorker.
|
||||||
|
ControllableDetachDelegate* delegate =
|
||||||
|
new StrictMock<ControllableDetachDelegate>;
|
||||||
|
std::unique_ptr<SchedulerWorker> worker =
|
||||||
|
SchedulerWorker::Create(
|
||||||
|
ThreadPriority::NORMAL, WrapUnique(delegate), &task_tracker,
|
||||||
|
SchedulerWorker::InitialState::DETACHED);
|
||||||
|
ASSERT_FALSE(worker->ThreadAliveForTesting());
|
||||||
|
EXPECT_CALL(*delegate, OnMainEntry(worker.get(), TimeDelta::Max()));
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate->WaitForWorkToRun();
|
||||||
|
Mock::VerifyAndClear(delegate);
|
||||||
|
delegate->WaitForDetachRequest();
|
||||||
|
ASSERT_TRUE(worker->ThreadAliveForTesting());
|
||||||
|
worker->JoinForTesting();
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
class ExpectThreadPriorityDelegate : public SchedulerWorkerDefaultDelegate {
|
||||||
|
public:
|
||||||
|
ExpectThreadPriorityDelegate()
|
||||||
|
: priority_verified_in_get_work_event_(
|
||||||
|
WaitableEvent::ResetPolicy::AUTOMATIC,
|
||||||
|
WaitableEvent::InitialState::NOT_SIGNALED),
|
||||||
|
expected_thread_priority_(ThreadPriority::BACKGROUND) {}
|
||||||
|
|
||||||
|
void SetExpectedThreadPriority(ThreadPriority expected_thread_priority) {
|
||||||
|
expected_thread_priority_ = expected_thread_priority;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WaitForPriorityVerifiedInGetWork() {
|
||||||
|
priority_verified_in_get_work_event_.Wait();
|
||||||
|
}
|
||||||
|
|
||||||
|
// SchedulerWorker::Delegate:
|
||||||
|
void OnMainEntry(SchedulerWorker* worker,
|
||||||
|
const TimeDelta& detach_duration) override {
|
||||||
|
VerifyThreadPriority();
|
||||||
|
}
|
||||||
|
scoped_refptr<Sequence> GetWork(SchedulerWorker* worker) override {
|
||||||
|
VerifyThreadPriority();
|
||||||
|
priority_verified_in_get_work_event_.Signal();
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void VerifyThreadPriority() {
|
||||||
|
AutoSchedulerLock auto_lock(expected_thread_priority_lock_);
|
||||||
|
EXPECT_EQ(expected_thread_priority_,
|
||||||
|
PlatformThread::GetCurrentThreadPriority());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Signaled after GetWork() has verified the priority of the worker thread.
|
||||||
|
WaitableEvent priority_verified_in_get_work_event_;
|
||||||
|
|
||||||
|
// Synchronizes access to |expected_thread_priority_|.
|
||||||
|
SchedulerLock expected_thread_priority_lock_;
|
||||||
|
|
||||||
|
// Expected thread priority for the next call to OnMainEntry() or GetWork().
|
||||||
|
ThreadPriority expected_thread_priority_;
|
||||||
|
|
||||||
|
DISALLOW_COPY_AND_ASSIGN(ExpectThreadPriorityDelegate);
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
TEST(TaskSchedulerWorkerTest, BumpPriorityOfAliveThreadDuringShutdown) {
|
||||||
|
TaskTracker task_tracker;
|
||||||
|
|
||||||
|
std::unique_ptr<ExpectThreadPriorityDelegate> delegate(
|
||||||
|
new ExpectThreadPriorityDelegate);
|
||||||
|
ExpectThreadPriorityDelegate* delegate_raw = delegate.get();
|
||||||
|
delegate_raw->SetExpectedThreadPriority(
|
||||||
|
PlatformThread::CanIncreaseCurrentThreadPriority()
|
||||||
|
? ThreadPriority::BACKGROUND
|
||||||
|
: ThreadPriority::NORMAL);
|
||||||
|
|
||||||
|
std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create(
|
||||||
|
ThreadPriority::BACKGROUND, std::move(delegate), &task_tracker,
|
||||||
|
SchedulerWorker::InitialState::ALIVE);
|
||||||
|
|
||||||
|
// Verify that the initial thread priority is BACKGROUND (or NORMAL if thread
|
||||||
|
// priority can't be increased).
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate_raw->WaitForPriorityVerifiedInGetWork();
|
||||||
|
|
||||||
|
// Verify that the thread priority is bumped to NORMAL during shutdown.
|
||||||
|
delegate_raw->SetExpectedThreadPriority(ThreadPriority::NORMAL);
|
||||||
|
task_tracker.SetHasShutdownStartedForTesting();
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate_raw->WaitForPriorityVerifiedInGetWork();
|
||||||
|
|
||||||
|
worker->JoinForTesting();
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST(TaskSchedulerWorkerTest, BumpPriorityOfDetachedThreadDuringShutdown) {
|
||||||
|
TaskTracker task_tracker;
|
||||||
|
|
||||||
|
std::unique_ptr<ExpectThreadPriorityDelegate> delegate(
|
||||||
|
new ExpectThreadPriorityDelegate);
|
||||||
|
ExpectThreadPriorityDelegate* delegate_raw = delegate.get();
|
||||||
|
delegate_raw->SetExpectedThreadPriority(ThreadPriority::NORMAL);
|
||||||
|
|
||||||
|
// Create a DETACHED thread.
|
||||||
|
std::unique_ptr<SchedulerWorker> worker = SchedulerWorker::Create(
|
||||||
|
ThreadPriority::BACKGROUND, std::move(delegate), &task_tracker,
|
||||||
|
SchedulerWorker::InitialState::DETACHED);
|
||||||
|
|
||||||
|
// Pretend that shutdown has started.
|
||||||
|
task_tracker.SetHasShutdownStartedForTesting();
|
||||||
|
|
||||||
|
// Wake up the thread and verify that its priority is NORMAL when
|
||||||
|
// OnMainEntry() and GetWork() are called.
|
||||||
|
worker->WakeUp();
|
||||||
|
delegate_raw->WaitForPriorityVerifiedInGetWork();
|
||||||
|
|
||||||
|
worker->JoinForTesting();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
} // namespace internal
|
||||||
|
} // namespace base
|
@@ -49,7 +49,7 @@ void RunTest_BasicSignal(MessageLoop::Type message_loop_type) {
|
|||||||
|
|
||||||
SetEvent(event);
|
SetEvent(event);
|
||||||
|
|
||||||
MessageLoop::current()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_FALSE(watcher.IsWatching());
|
EXPECT_FALSE(watcher.IsWatching());
|
||||||
CloseHandle(event);
|
CloseHandle(event);
|
||||||
@@ -113,7 +113,7 @@ void RunTest_SignalBeforeWatch(MessageLoop::Type message_loop_type) {
|
|||||||
bool ok = watcher.StartWatchingOnce(event, &delegate);
|
bool ok = watcher.StartWatchingOnce(event, &delegate);
|
||||||
EXPECT_TRUE(ok);
|
EXPECT_TRUE(ok);
|
||||||
|
|
||||||
MessageLoop::current()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_FALSE(watcher.IsWatching());
|
EXPECT_FALSE(watcher.IsWatching());
|
||||||
CloseHandle(event);
|
CloseHandle(event);
|
||||||
@@ -170,7 +170,7 @@ void RunTest_ExecuteMultipleTimes(MessageLoop::Type message_loop_type) {
|
|||||||
|
|
||||||
SetEvent(event);
|
SetEvent(event);
|
||||||
|
|
||||||
MessageLoop::current()->Run();
|
RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_TRUE(watcher.IsWatching());
|
EXPECT_TRUE(watcher.IsWatching());
|
||||||
EXPECT_TRUE(watcher.StopWatching());
|
EXPECT_TRUE(watcher.StopWatching());
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
#include "blimp/client/core/contents/blimp_contents_impl.h"
|
#include "blimp/client/core/contents/blimp_contents_impl.h"
|
||||||
|
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "blimp/client/core/contents/fake_navigation_feature.h"
|
#include "blimp/client/core/contents/fake_navigation_feature.h"
|
||||||
#include "blimp/client/core/contents/tab_control_feature.h"
|
#include "blimp/client/core/contents/tab_control_feature.h"
|
||||||
#include "blimp/client/public/contents/blimp_contents_observer.h"
|
#include "blimp/client/public/contents/blimp_contents_observer.h"
|
||||||
@@ -58,7 +59,7 @@ TEST(BlimpContentsImplTest, LoadURLAndNotifyObservers) {
|
|||||||
EXPECT_CALL(observer2, OnNavigationStateChanged()).Times(2);
|
EXPECT_CALL(observer2, OnNavigationStateChanged()).Times(2);
|
||||||
|
|
||||||
navigation_controller.LoadURL(GURL(kExampleURL));
|
navigation_controller.LoadURL(GURL(kExampleURL));
|
||||||
loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(kExampleURL, navigation_controller.GetURL().spec());
|
EXPECT_EQ(kExampleURL, navigation_controller.GetURL().spec());
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ TEST(BlimpContentsImplTest, LoadURLAndNotifyObservers) {
|
|||||||
blimp_contents.RemoveObserver(&observer1);
|
blimp_contents.RemoveObserver(&observer1);
|
||||||
|
|
||||||
navigation_controller.LoadURL(GURL(kOtherExampleURL));
|
navigation_controller.LoadURL(GURL(kOtherExampleURL));
|
||||||
loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(kOtherExampleURL, navigation_controller.GetURL().spec());
|
EXPECT_EQ(kOtherExampleURL, navigation_controller.GetURL().spec());
|
||||||
}
|
}
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "blimp/client/core/contents/blimp_navigation_controller_delegate.h"
|
#include "blimp/client/core/contents/blimp_navigation_controller_delegate.h"
|
||||||
#include "blimp/client/core/contents/blimp_navigation_controller_impl.h"
|
#include "blimp/client/core/contents/blimp_navigation_controller_impl.h"
|
||||||
#include "blimp/client/core/contents/fake_navigation_feature.h"
|
#include "blimp/client/core/contents/fake_navigation_feature.h"
|
||||||
@@ -51,7 +52,7 @@ TEST(BlimpNavigationControllerImplTest, BackForwardNavigation) {
|
|||||||
navigation_controller.GoForward();
|
navigation_controller.GoForward();
|
||||||
navigation_controller.Reload();
|
navigation_controller.Reload();
|
||||||
|
|
||||||
loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "base/memory/weak_ptr.h"
|
#include "base/memory/weak_ptr.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/observer_list.h"
|
#include "base/observer_list.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
#include "base/test/test_file_util.h"
|
#include "base/test/test_file_util.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
@@ -86,7 +87,7 @@ void DownloadPathReservationTrackerTest::SetUp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void DownloadPathReservationTrackerTest::TearDown() {
|
void DownloadPathReservationTrackerTest::TearDown() {
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
MockDownloadItem* DownloadPathReservationTrackerTest::CreateDownloadItem(
|
MockDownloadItem* DownloadPathReservationTrackerTest::CreateDownloadItem(
|
||||||
@@ -132,7 +133,7 @@ void DownloadPathReservationTrackerTest::CallGetReservedPath(
|
|||||||
base::Bind(&DownloadPathReservationTrackerTest::TestReservedPathCallback,
|
base::Bind(&DownloadPathReservationTrackerTest::TestReservedPathCallback,
|
||||||
weak_ptr_factory.GetWeakPtr(), return_path, return_verified,
|
weak_ptr_factory.GetWeakPtr(), return_path, return_verified,
|
||||||
&did_run_callback));
|
&did_run_callback));
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(did_run_callback);
|
EXPECT_TRUE(did_run_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +188,7 @@ TEST_F(DownloadPathReservationTrackerTest, BasicReservation) {
|
|||||||
// Destroying the item should release the reservation.
|
// Destroying the item should release the reservation.
|
||||||
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
||||||
item.reset();
|
item.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(IsPathInUse(path));
|
EXPECT_FALSE(IsPathInUse(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +217,7 @@ TEST_F(DownloadPathReservationTrackerTest, InterruptedDownload) {
|
|||||||
|
|
||||||
// Once the download is interrupted, the path should become available again.
|
// Once the download is interrupted, the path should become available again.
|
||||||
SetDownloadItemState(item.get(), DownloadItem::INTERRUPTED);
|
SetDownloadItemState(item.get(), DownloadItem::INTERRUPTED);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(IsPathInUse(path));
|
EXPECT_FALSE(IsPathInUse(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -248,7 +249,7 @@ TEST_F(DownloadPathReservationTrackerTest, CompleteDownload) {
|
|||||||
// The path wouldn't be available since it is occupied on disk by the
|
// The path wouldn't be available since it is occupied on disk by the
|
||||||
// completed download.
|
// completed download.
|
||||||
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(IsPathInUse(path));
|
EXPECT_FALSE(IsPathInUse(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +291,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingFiles) {
|
|||||||
|
|
||||||
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
||||||
item.reset();
|
item.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(IsPathInUse(path));
|
EXPECT_TRUE(IsPathInUse(path));
|
||||||
EXPECT_FALSE(IsPathInUse(reserved_path));
|
EXPECT_FALSE(IsPathInUse(reserved_path));
|
||||||
}
|
}
|
||||||
@@ -339,7 +340,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
|
|||||||
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
|
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
|
||||||
SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
|
||||||
}
|
}
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(IsPathInUse(path));
|
EXPECT_TRUE(IsPathInUse(path));
|
||||||
EXPECT_FALSE(IsPathInUse(uniquified_path));
|
EXPECT_FALSE(IsPathInUse(uniquified_path));
|
||||||
|
|
||||||
@@ -360,7 +361,7 @@ TEST_F(DownloadPathReservationTrackerTest, ConflictingReservations) {
|
|||||||
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
|
EXPECT_EQ(uniquified_path.value(), reserved_path2.value());
|
||||||
SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item2.get(), DownloadItem::COMPLETE);
|
||||||
}
|
}
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Now acquire an overwriting reservation. We should end up with the same
|
// Now acquire an overwriting reservation. We should end up with the same
|
||||||
// non-uniquified path for both reservations.
|
// non-uniquified path for both reservations.
|
||||||
@@ -585,7 +586,7 @@ TEST_F(DownloadPathReservationTrackerTest, UpdatesToTargetPath) {
|
|||||||
// this state, we shouldn't lose the reservation.
|
// this state, we shouldn't lose the reservation.
|
||||||
ASSERT_EQ(base::FilePath::StringType(), item->GetTargetFilePath().value());
|
ASSERT_EQ(base::FilePath::StringType(), item->GetTargetFilePath().value());
|
||||||
item->NotifyObserversDownloadUpdated();
|
item->NotifyObserversDownloadUpdated();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(IsPathInUse(path));
|
EXPECT_TRUE(IsPathInUse(path));
|
||||||
|
|
||||||
// If the target path changes, we should update the reservation to match.
|
// If the target path changes, we should update the reservation to match.
|
||||||
@@ -595,14 +596,14 @@ TEST_F(DownloadPathReservationTrackerTest, UpdatesToTargetPath) {
|
|||||||
EXPECT_CALL(*item, GetTargetFilePath())
|
EXPECT_CALL(*item, GetTargetFilePath())
|
||||||
.WillRepeatedly(ReturnRef(new_target_path));
|
.WillRepeatedly(ReturnRef(new_target_path));
|
||||||
item->NotifyObserversDownloadUpdated();
|
item->NotifyObserversDownloadUpdated();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(IsPathInUse(path));
|
EXPECT_FALSE(IsPathInUse(path));
|
||||||
EXPECT_TRUE(IsPathInUse(new_target_path));
|
EXPECT_TRUE(IsPathInUse(new_target_path));
|
||||||
|
|
||||||
// Destroying the item should release the reservation.
|
// Destroying the item should release the reservation.
|
||||||
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
SetDownloadItemState(item.get(), DownloadItem::COMPLETE);
|
||||||
item.reset();
|
item.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(IsPathInUse(new_target_path));
|
EXPECT_FALSE(IsPathInUse(new_target_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "chrome/browser/process_singleton.h"
|
#include "chrome/browser/process_singleton.h"
|
||||||
#include "chrome/grit/chromium_strings.h"
|
#include "chrome/grit/chromium_strings.h"
|
||||||
@@ -288,7 +289,7 @@ TryChromeDialogView::Result TryChromeDialogView::ShowModal(
|
|||||||
popup_->Show();
|
popup_->Show();
|
||||||
if (!listener.is_null())
|
if (!listener.is_null())
|
||||||
listener.Run(popup_->GetNativeView());
|
listener.Run(popup_->GetNativeView());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
if (!listener.is_null())
|
if (!listener.is_null())
|
||||||
listener.Run(NULL);
|
listener.Run(NULL);
|
||||||
return result_;
|
return result_;
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
@@ -225,7 +226,7 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporter) {
|
|||||||
|
|
||||||
host->StartImportSettings(source_profile, browser()->profile(),
|
host->StartImportSettings(source_profile, browser()->profile(),
|
||||||
importer::FAVORITES, observer.get());
|
importer::FAVORITES, observer.get());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterLegacyFallback) {
|
IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterLegacyFallback) {
|
||||||
@@ -263,7 +264,7 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterLegacyFallback) {
|
|||||||
|
|
||||||
host->StartImportSettings(source_profile, browser()->profile(),
|
host->StartImportSettings(source_profile, browser()->profile(),
|
||||||
importer::FAVORITES, observer.get());
|
importer::FAVORITES, observer.get());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterNoDatabase) {
|
IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterNoDatabase) {
|
||||||
@@ -294,5 +295,5 @@ IN_PROC_BROWSER_TEST_F(EdgeImporterBrowserTest, EdgeImporterNoDatabase) {
|
|||||||
|
|
||||||
host->StartImportSettings(source_profile, browser()->profile(),
|
host->StartImportSettings(source_profile, browser()->profile(),
|
||||||
importer::FAVORITES, observer.get());
|
importer::FAVORITES, observer.get());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
@@ -521,7 +522,7 @@ IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IEImporter) {
|
|||||||
browser()->profile(),
|
browser()->profile(),
|
||||||
importer::HISTORY | importer::PASSWORDS | importer::FAVORITES,
|
importer::HISTORY | importer::PASSWORDS | importer::FAVORITES,
|
||||||
observer);
|
observer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Cleans up.
|
// Cleans up.
|
||||||
url_history_stg2->DeleteUrl(kIEIdentifyUrl, 0);
|
url_history_stg2->DeleteUrl(kIEIdentifyUrl, 0);
|
||||||
@@ -599,7 +600,7 @@ IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest,
|
|||||||
browser()->profile(),
|
browser()->profile(),
|
||||||
importer::FAVORITES,
|
importer::FAVORITES,
|
||||||
observer);
|
observer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -626,7 +627,7 @@ IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IE7ImporterPasswordsTest) {
|
|||||||
browser()->profile(),
|
browser()->profile(),
|
||||||
importer::PASSWORDS,
|
importer::PASSWORDS,
|
||||||
observer);
|
observer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IEImporterHomePageTest) {
|
IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IEImporterHomePageTest) {
|
||||||
@@ -652,6 +653,6 @@ IN_PROC_BROWSER_TEST_F(IEImporterBrowserTest, IEImporterHomePageTest) {
|
|||||||
browser()->profile(),
|
browser()->profile(),
|
||||||
importer::HOME_PAGE,
|
importer::HOME_PAGE,
|
||||||
observer);
|
observer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "chrome/browser/local_discovery/service_discovery_client_impl.h"
|
#include "chrome/browser/local_discovery/service_discovery_client_impl.h"
|
||||||
@@ -84,13 +85,11 @@ class LocalDomainResolverTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RunFor(base::TimeDelta time_period) {
|
void RunFor(base::TimeDelta time_period) {
|
||||||
base::CancelableCallback<void()> callback(
|
base::RunLoop run_loop;
|
||||||
base::Bind(&base::MessageLoop::QuitWhenIdle,
|
base::CancelableCallback<void()> callback(run_loop.QuitWhenIdleClosure());
|
||||||
base::Unretained(base::MessageLoop::current())));
|
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, callback.callback(), time_period);
|
FROM_HERE, callback.callback(), time_period);
|
||||||
|
run_loop.Run();
|
||||||
base::MessageLoop::current()->Run();
|
|
||||||
callback.Cancel();
|
callback.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -216,12 +216,11 @@ class ServiceDiscoveryTest : public ::testing::Test {
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
void RunFor(base::TimeDelta time_period) {
|
void RunFor(base::TimeDelta time_period) {
|
||||||
base::CancelableCallback<void()> callback(base::Bind(
|
base::RunLoop run_loop;
|
||||||
&ServiceDiscoveryTest::Stop, base::Unretained(this)));
|
base::CancelableCallback<void()> callback(run_loop.QuitWhenIdleClosure());
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, callback.callback(), time_period);
|
FROM_HERE, callback.callback(), time_period);
|
||||||
|
run_loop.Run();
|
||||||
base::MessageLoop::current()->Run();
|
|
||||||
callback.Cancel();
|
callback.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,7 +287,7 @@ TEST_F(ServiceDiscoveryTest, ReadCachedServices) {
|
|||||||
"hello._privet._tcp.local"))
|
"hello._privet._tcp.local"))
|
||||||
.Times(Exactly(1));
|
.Times(Exactly(1));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -310,7 +309,7 @@ TEST_F(ServiceDiscoveryTest, ReadCachedServicesMultiple) {
|
|||||||
"gdbye._privet._tcp.local"))
|
"gdbye._privet._tcp.local"))
|
||||||
.Times(Exactly(1));
|
.Times(Exactly(1));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -328,7 +327,7 @@ TEST_F(ServiceDiscoveryTest, OnServiceChanged) {
|
|||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_CALL(delegate, OnServiceUpdated(ServiceWatcher::UPDATE_CHANGED,
|
EXPECT_CALL(delegate, OnServiceUpdated(ServiceWatcher::UPDATE_CHANGED,
|
||||||
"hello._privet._tcp.local"))
|
"hello._privet._tcp.local"))
|
||||||
@@ -338,7 +337,7 @@ TEST_F(ServiceDiscoveryTest, OnServiceChanged) {
|
|||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketTXT, sizeof(kSamplePacketTXT));
|
socket_factory_.SimulateReceive(kSamplePacketTXT, sizeof(kSamplePacketTXT));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ServiceDiscoveryTest, SinglePacket) {
|
TEST_F(ServiceDiscoveryTest, SinglePacket) {
|
||||||
@@ -356,7 +355,7 @@ TEST_F(ServiceDiscoveryTest, SinglePacket) {
|
|||||||
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
||||||
|
|
||||||
// Reset the "already updated" flag.
|
// Reset the "already updated" flag.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_CALL(delegate, OnServiceUpdated(ServiceWatcher::UPDATE_CHANGED,
|
EXPECT_CALL(delegate, OnServiceUpdated(ServiceWatcher::UPDATE_CHANGED,
|
||||||
"hello._privet._tcp.local"))
|
"hello._privet._tcp.local"))
|
||||||
@@ -366,7 +365,7 @@ TEST_F(ServiceDiscoveryTest, SinglePacket) {
|
|||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketTXT, sizeof(kSamplePacketTXT));
|
socket_factory_.SimulateReceive(kSamplePacketTXT, sizeof(kSamplePacketTXT));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ServiceDiscoveryTest, ActivelyRefreshServices) {
|
TEST_F(ServiceDiscoveryTest, ActivelyRefreshServices) {
|
||||||
@@ -390,7 +389,7 @@ TEST_F(ServiceDiscoveryTest, ActivelyRefreshServices) {
|
|||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
socket_factory_.SimulateReceive(kSamplePacketPTR, sizeof(kSamplePacketPTR));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketSRV, sizeof(kSamplePacketSRV));
|
socket_factory_.SimulateReceive(kSamplePacketSRV, sizeof(kSamplePacketSRV));
|
||||||
|
|
||||||
@@ -403,7 +402,7 @@ TEST_F(ServiceDiscoveryTest, ActivelyRefreshServices) {
|
|||||||
|
|
||||||
RunFor(base::TimeDelta::FromSeconds(2));
|
RunFor(base::TimeDelta::FromSeconds(2));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -454,7 +453,7 @@ TEST_F(ServiceResolverTest, TxtAndSrvButNoA) {
|
|||||||
|
|
||||||
socket_factory_.SimulateReceive(kSamplePacketSRV, sizeof(kSamplePacketSRV));
|
socket_factory_.SimulateReceive(kSamplePacketSRV, sizeof(kSamplePacketSRV));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_CALL(
|
EXPECT_CALL(
|
||||||
*this, OnFinishedResolvingInternal(ServiceResolver::STATUS_SUCCESS,
|
*this, OnFinishedResolvingInternal(ServiceResolver::STATUS_SUCCESS,
|
||||||
|
@@ -707,7 +707,7 @@ TEST_F(ThreadWatcherListTest, Restart) {
|
|||||||
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromSeconds(
|
base::TimeDelta::FromSeconds(
|
||||||
ThreadWatcherList::g_initialize_delay_seconds));
|
ThreadWatcherList::g_initialize_delay_seconds));
|
||||||
message_loop_for_ui.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
CheckState(false /* has_thread_watcher_list */,
|
CheckState(false /* has_thread_watcher_list */,
|
||||||
true /* stopped */,
|
true /* stopped */,
|
||||||
@@ -719,7 +719,7 @@ TEST_F(ThreadWatcherListTest, Restart) {
|
|||||||
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromSeconds(
|
base::TimeDelta::FromSeconds(
|
||||||
ThreadWatcherList::g_initialize_delay_seconds + 1));
|
ThreadWatcherList::g_initialize_delay_seconds + 1));
|
||||||
message_loop_for_ui.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
CheckState(true /* has_thread_watcher_list */,
|
CheckState(true /* has_thread_watcher_list */,
|
||||||
false /* stopped */,
|
false /* stopped */,
|
||||||
@@ -731,7 +731,7 @@ TEST_F(ThreadWatcherListTest, Restart) {
|
|||||||
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
FROM_HERE, message_loop_for_ui.QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromSeconds(
|
base::TimeDelta::FromSeconds(
|
||||||
ThreadWatcherList::g_initialize_delay_seconds));
|
ThreadWatcherList::g_initialize_delay_seconds));
|
||||||
message_loop_for_ui.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
CheckState(false /* has_thread_watcher_list */,
|
CheckState(false /* has_thread_watcher_list */,
|
||||||
true /* stopped */,
|
true /* stopped */,
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
@@ -426,7 +427,7 @@ class NativeBackendGnomeTest : public testing::Test {
|
|||||||
void TearDown() override {
|
void TearDown() override {
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
db_thread_.Stop();
|
db_thread_.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,7 +439,7 @@ class NativeBackendGnomeTest : public testing::Test {
|
|||||||
// quit so we can get on with the rest of the test.
|
// quit so we can get on with the rest of the test.
|
||||||
BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
|
BrowserThread::PostTask(BrowserThread::DB, FROM_HERE,
|
||||||
base::Bind(&PostQuitTask, &message_loop_));
|
base::Bind(&PostQuitTask, &message_loop_));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void PostQuitTask(base::MessageLoop* loop) {
|
static void PostQuitTask(base::MessageLoop* loop) {
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "base/callback.h"
|
#include "base/callback.h"
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
#include "base/pickle.h"
|
#include "base/pickle.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
@@ -414,7 +415,7 @@ void NativeBackendKWalletTest::SetUp() {
|
|||||||
void NativeBackendKWalletTest::TearDown() {
|
void NativeBackendKWalletTest::TearDown() {
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
db_thread_.Stop();
|
db_thread_.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
@@ -338,12 +339,12 @@ class NativeBackendLibsecretTest : public testing::Test {
|
|||||||
void TearDown() override {
|
void TearDown() override {
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_TRUE(global_mock_libsecret_items);
|
ASSERT_TRUE(global_mock_libsecret_items);
|
||||||
global_mock_libsecret_items = nullptr;
|
global_mock_libsecret_items = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunUIThread() { base::MessageLoop::current()->Run(); }
|
void RunUIThread() { base::RunLoop().Run(); }
|
||||||
|
|
||||||
void CheckUint32Attribute(const MockSecretItem* item,
|
void CheckUint32Attribute(const MockSecretItem* item,
|
||||||
const std::string& attribute,
|
const std::string& attribute,
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
@@ -160,7 +161,7 @@ class PasswordStoreWinTest : public testing::Test {
|
|||||||
done.Wait();
|
done.Wait();
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
db_thread_.Stop();
|
db_thread_.Stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,7 +275,7 @@ TEST_F(PasswordStoreWinTest, DISABLED_ConvertIE7Login) {
|
|||||||
UnorderedPasswordFormElementsAre(&expected_forms)));
|
UnorderedPasswordFormElementsAre(&expected_forms)));
|
||||||
|
|
||||||
store_->GetLogins(form, &consumer);
|
store_->GetLogins(form, &consumer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(PasswordStoreWinTest, OutstandingWDSQueries) {
|
TEST_F(PasswordStoreWinTest, OutstandingWDSQueries) {
|
||||||
@@ -308,7 +309,7 @@ TEST_F(PasswordStoreWinTest, OutstandingWDSQueries) {
|
|||||||
wdbs_->ShutdownDatabase();
|
wdbs_->ShutdownDatabase();
|
||||||
wdbs_ = nullptr;
|
wdbs_ = nullptr;
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hangs flakily, see http://crbug.com/43836.
|
// Hangs flakily, see http://crbug.com/43836.
|
||||||
@@ -386,8 +387,8 @@ TEST_F(PasswordStoreWinTest, DISABLED_MultipleWDSQueriesOnDifferentThreads) {
|
|||||||
// Run the MessageLoop twice: once for the GetIE7Login that PasswordStoreWin
|
// Run the MessageLoop twice: once for the GetIE7Login that PasswordStoreWin
|
||||||
// schedules on the DB thread and once for the one we just scheduled on the UI
|
// schedules on the DB thread and once for the one we just scheduled on the UI
|
||||||
// thread.
|
// thread.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(PasswordStoreWinTest, EmptyLogins) {
|
TEST_F(PasswordStoreWinTest, EmptyLogins) {
|
||||||
@@ -419,7 +420,7 @@ TEST_F(PasswordStoreWinTest, EmptyLogins) {
|
|||||||
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
||||||
|
|
||||||
store_->GetLogins(form, &consumer);
|
store_->GetLogins(form, &consumer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(PasswordStoreWinTest, EmptyBlacklistLogins) {
|
TEST_F(PasswordStoreWinTest, EmptyBlacklistLogins) {
|
||||||
@@ -435,7 +436,7 @@ TEST_F(PasswordStoreWinTest, EmptyBlacklistLogins) {
|
|||||||
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
||||||
|
|
||||||
store_->GetBlacklistLogins(&consumer);
|
store_->GetBlacklistLogins(&consumer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(PasswordStoreWinTest, EmptyAutofillableLogins) {
|
TEST_F(PasswordStoreWinTest, EmptyAutofillableLogins) {
|
||||||
@@ -451,5 +452,5 @@ TEST_F(PasswordStoreWinTest, EmptyAutofillableLogins) {
|
|||||||
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
EXPECT_CALL(consumer, OnGetPasswordStoreResultsConstRef(IsEmpty()));
|
||||||
|
|
||||||
store_->GetAutofillableLogins(&consumer);
|
store_->GetAutofillableLogins(&consumer);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
@@ -190,9 +190,7 @@ class PrerenderResourceThrottleTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Runs any tasks queued on either thread.
|
// Runs any tasks queued on either thread.
|
||||||
void RunEvents() {
|
void RunEvents() { base::RunLoop().RunUntilIdle(); }
|
||||||
message_loop_.RunUntilIdle();
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
base::MessageLoopForIO message_loop_;
|
base::MessageLoopForIO message_loop_;
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
#include "base/process/kill.h"
|
#include "base/process/kill.h"
|
||||||
#include "base/process/process.h"
|
#include "base/process/process.h"
|
||||||
#include "base/rand_util.h"
|
#include "base/rand_util.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "base/test/multiprocess_test.h"
|
#include "base/test/multiprocess_test.h"
|
||||||
@@ -283,7 +284,7 @@ int CloudPrintMockService_Main(SetExpectationsCallback set_expectations) {
|
|||||||
&listener,
|
&listener,
|
||||||
service_process.io_task_runner());
|
service_process.io_task_runner());
|
||||||
|
|
||||||
main_message_loop.Run();
|
base::RunLoop().Run();
|
||||||
if (!Mock::VerifyAndClearExpectations(&server))
|
if (!Mock::VerifyAndClearExpectations(&server))
|
||||||
return kExpectationsNotMet;
|
return kExpectationsNotMet;
|
||||||
if (!g_good_shutdown)
|
if (!g_good_shutdown)
|
||||||
|
@@ -76,7 +76,7 @@ class ProfileShortcutManagerTest : public testing::Test {
|
|||||||
const base::FilePath profile_path = entry->GetPath();
|
const base::FilePath profile_path = entry->GetPath();
|
||||||
base::string16 profile_name = entry->GetName();
|
base::string16 profile_name = entry->GetName();
|
||||||
profile_attributes_storage_->RemoveProfile(profile_path);
|
profile_attributes_storage_->RemoveProfile(profile_path);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name));
|
ASSERT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_name));
|
||||||
// The icon file is not deleted until the profile directory is deleted.
|
// The icon file is not deleted until the profile directory is deleted.
|
||||||
const base::FilePath icon_path =
|
const base::FilePath icon_path =
|
||||||
@@ -93,12 +93,6 @@ class ProfileShortcutManagerTest : public testing::Test {
|
|||||||
return profile_path;
|
return profile_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RunPendingTasks() {
|
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
|
||||||
base::MessageLoop::current()->Run();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetupDefaultProfileShortcut(const tracked_objects::Location& location) {
|
void SetupDefaultProfileShortcut(const tracked_objects::Location& location) {
|
||||||
ASSERT_EQ(0u, profile_attributes_storage_->GetNumberOfProfiles())
|
ASSERT_EQ(0u, profile_attributes_storage_->GetNumberOfProfiles())
|
||||||
<< location.ToString();
|
<< location.ToString();
|
||||||
@@ -110,7 +104,7 @@ class ProfileShortcutManagerTest : public testing::Test {
|
|||||||
// Also create a non-badged shortcut for Chrome, which is conveniently done
|
// Also create a non-badged shortcut for Chrome, which is conveniently done
|
||||||
// by |CreateProfileShortcut()| since there is only one profile.
|
// by |CreateProfileShortcut()| since there is only one profile.
|
||||||
profile_shortcut_manager_->CreateProfileShortcut(profile_1_path_);
|
profile_shortcut_manager_->CreateProfileShortcut(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
// Verify that there's now a shortcut with no profile information.
|
// Verify that there's now a shortcut with no profile information.
|
||||||
ValidateNonProfileShortcut(location);
|
ValidateNonProfileShortcut(location);
|
||||||
}
|
}
|
||||||
@@ -197,7 +191,7 @@ class ProfileShortcutManagerTest : public testing::Test {
|
|||||||
std::string(), base::string16(), 0,
|
std::string(), base::string16(), 0,
|
||||||
std::string());
|
std::string());
|
||||||
profile_shortcut_manager_->CreateProfileShortcut(profile_path);
|
profile_shortcut_manager_->CreateProfileShortcut(profile_path);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
ValidateProfileShortcut(location, profile_name, profile_path);
|
ValidateProfileShortcut(location, profile_name, profile_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -247,7 +241,7 @@ class ProfileShortcutManagerTest : public testing::Test {
|
|||||||
GetProfileAttributesWithPath(profile_path, &entry));
|
GetProfileAttributesWithPath(profile_path, &entry));
|
||||||
ASSERT_NE(entry->GetName(), new_profile_name);
|
ASSERT_NE(entry->GetName(), new_profile_name);
|
||||||
entry->SetName(new_profile_name);
|
entry->SetName(new_profile_name);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
BrowserDistribution* GetDistribution() {
|
BrowserDistribution* GetDistribution() {
|
||||||
@@ -368,7 +362,7 @@ TEST_F(ProfileShortcutManagerTest, CreateSecondProfileBadgesFirstShortcut) {
|
|||||||
profile_attributes_storage_->AddProfile(profile_2_path_, profile_2_name_,
|
profile_attributes_storage_->AddProfile(profile_2_path_, profile_2_name_,
|
||||||
std::string(), base::string16(), 0,
|
std::string(), base::string16(), 0,
|
||||||
std::string());
|
std::string());
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Ensure that the second profile doesn't have a shortcut and that the first
|
// Ensure that the second profile doesn't have a shortcut and that the first
|
||||||
// profile's shortcut got renamed and badged.
|
// profile's shortcut got renamed and badged.
|
||||||
@@ -382,7 +376,7 @@ TEST_F(ProfileShortcutManagerTest, DesktopShortcutsDeleteSecondToLast) {
|
|||||||
|
|
||||||
// Delete one shortcut.
|
// Delete one shortcut.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
||||||
|
|
||||||
// Verify that the profile name has been removed from the remaining shortcut.
|
// Verify that the profile name has been removed from the remaining shortcut.
|
||||||
@@ -407,7 +401,7 @@ TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithoutShortcut) {
|
|||||||
|
|
||||||
// Delete the profile that doesn't have a shortcut.
|
// Delete the profile that doesn't have a shortcut.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Verify that the remaining shortcut does not have a profile name.
|
// Verify that the remaining shortcut does not have a profile name.
|
||||||
ValidateNonProfileShortcut(FROM_HERE);
|
ValidateNonProfileShortcut(FROM_HERE);
|
||||||
@@ -431,7 +425,7 @@ TEST_F(ProfileShortcutManagerTest, DeleteSecondToLastProfileWithShortcut) {
|
|||||||
|
|
||||||
// Delete the profile that has a shortcut.
|
// Delete the profile that has a shortcut.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Verify that the remaining shortcut does not have a profile name.
|
// Verify that the remaining shortcut does not have a profile name.
|
||||||
ValidateNonProfileShortcut(FROM_HERE);
|
ValidateNonProfileShortcut(FROM_HERE);
|
||||||
@@ -466,7 +460,7 @@ TEST_F(ProfileShortcutManagerTest, DeleteOnlyProfileWithShortcuts) {
|
|||||||
// Delete the third profile and check that its shortcut is gone and no
|
// Delete the third profile and check that its shortcut is gone and no
|
||||||
// shortcuts have been re-created.
|
// shortcuts have been re-created.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_3_path_);
|
profile_attributes_storage_->RemoveProfile(profile_3_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
|
ASSERT_FALSE(base::PathExists(profile_1_shortcut_path));
|
||||||
ASSERT_FALSE(base::PathExists(profile_2_shortcut_path));
|
ASSERT_FALSE(base::PathExists(profile_2_shortcut_path));
|
||||||
ASSERT_FALSE(base::PathExists(profile_3_shortcut_path));
|
ASSERT_FALSE(base::PathExists(profile_3_shortcut_path));
|
||||||
@@ -478,7 +472,7 @@ TEST_F(ProfileShortcutManagerTest, DesktopShortcutsCreateSecond) {
|
|||||||
|
|
||||||
// Delete one shortcut.
|
// Delete one shortcut.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Verify that a default shortcut exists (no profile name/avatar).
|
// Verify that a default shortcut exists (no profile name/avatar).
|
||||||
ValidateNonProfileShortcut(FROM_HERE);
|
ValidateNonProfileShortcut(FROM_HERE);
|
||||||
@@ -507,7 +501,7 @@ TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcuts) {
|
|||||||
|
|
||||||
// Ensure that a new shortcut does not get made if the old one was renamed.
|
// Ensure that a new shortcut does not get made if the old one was renamed.
|
||||||
profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
|
profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
||||||
ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
|
ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_2,
|
||||||
profile_2_path_);
|
profile_2_path_);
|
||||||
@@ -516,7 +510,7 @@ TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcuts) {
|
|||||||
ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path_2, false));
|
ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path_2, false));
|
||||||
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
|
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
|
||||||
profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
|
profile_shortcut_manager_->CreateProfileShortcut(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
|
ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,7 +539,7 @@ TEST_F(ProfileShortcutManagerTest, RenamedDesktopShortcutsGetDeleted) {
|
|||||||
|
|
||||||
// Delete the profile and ensure both shortcuts were also deleted.
|
// Delete the profile and ensure both shortcuts were also deleted.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_1));
|
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_1));
|
||||||
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
|
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path_2));
|
||||||
ValidateNonProfileShortcutAtPath(FROM_HERE,
|
ValidateNonProfileShortcutAtPath(FROM_HERE,
|
||||||
@@ -643,7 +637,7 @@ TEST_F(ProfileShortcutManagerTest, RemoveProfileShortcuts) {
|
|||||||
// Delete shortcuts for profile 1 and ensure that they got deleted while the
|
// Delete shortcuts for profile 1 and ensure that they got deleted while the
|
||||||
// shortcuts for profile 2 were kept.
|
// shortcuts for profile 2 were kept.
|
||||||
profile_shortcut_manager_->RemoveProfileShortcuts(profile_1_path_);
|
profile_shortcut_manager_->RemoveProfileShortcuts(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_1));
|
EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_1));
|
||||||
EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_2));
|
EXPECT_FALSE(base::PathExists(profile_1_shortcut_path_2));
|
||||||
ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1,
|
ValidateProfileShortcutAtPath(FROM_HERE, profile_2_shortcut_path_1,
|
||||||
@@ -666,7 +660,7 @@ TEST_F(ProfileShortcutManagerTest, HasProfileShortcuts) {
|
|||||||
|
|
||||||
// Profile 2 should have a shortcut initially.
|
// Profile 2 should have a shortcut initially.
|
||||||
profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
|
profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(result.has_shortcuts);
|
EXPECT_TRUE(result.has_shortcuts);
|
||||||
|
|
||||||
// Delete the shortcut and check that the function returns false.
|
// Delete the shortcut and check that the function returns false.
|
||||||
@@ -675,7 +669,7 @@ TEST_F(ProfileShortcutManagerTest, HasProfileShortcuts) {
|
|||||||
ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path, false));
|
ASSERT_TRUE(base::DeleteFile(profile_2_shortcut_path, false));
|
||||||
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
|
EXPECT_FALSE(base::PathExists(profile_2_shortcut_path));
|
||||||
profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
|
profile_shortcut_manager_->HasProfileShortcuts(profile_2_path_, callback);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(result.has_shortcuts);
|
EXPECT_FALSE(result.has_shortcuts);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -687,7 +681,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) {
|
|||||||
profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_,
|
profile_attributes_storage_->AddProfile(profile_1_path_, profile_1_name_,
|
||||||
std::string(), base::string16(), 0,
|
std::string(), base::string16(), 0,
|
||||||
std::string());
|
std::string());
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
ASSERT_EQ(1u, profile_attributes_storage_->GetNumberOfProfiles());
|
ASSERT_EQ(1u, profile_attributes_storage_->GetNumberOfProfiles());
|
||||||
|
|
||||||
// Ensure system-level continues to exist and user-level was not created.
|
// Ensure system-level continues to exist and user-level was not created.
|
||||||
@@ -706,7 +700,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) {
|
|||||||
profile_attributes_storage_->AddProfile(profile_3_path_, profile_3_name_,
|
profile_attributes_storage_->AddProfile(profile_3_path_, profile_3_name_,
|
||||||
std::string(), base::string16(), 0,
|
std::string(), base::string16(), 0,
|
||||||
std::string());
|
std::string());
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
||||||
|
|
||||||
// Ensure that changing the avatar icon and the name does not result in a
|
// Ensure that changing the avatar icon and the name does not result in a
|
||||||
@@ -715,12 +709,12 @@ TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) {
|
|||||||
ASSERT_TRUE(profile_attributes_storage_->
|
ASSERT_TRUE(profile_attributes_storage_->
|
||||||
GetProfileAttributesWithPath(profile_3_path_, &entry_3));
|
GetProfileAttributesWithPath(profile_3_path_, &entry_3));
|
||||||
entry_3->SetAvatarIconIndex(3u);
|
entry_3->SetAvatarIconIndex(3u);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
||||||
|
|
||||||
const base::string16 new_profile_3_name = L"New Name 3";
|
const base::string16 new_profile_3_name = L"New Name 3";
|
||||||
entry_3->SetName(new_profile_3_name);
|
entry_3->SetName(new_profile_3_name);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_3_name_));
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_3_name));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_3_name));
|
||||||
|
|
||||||
@@ -730,7 +724,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileShortcutsWithSystemLevelShortcut) {
|
|||||||
ASSERT_TRUE(profile_attributes_storage_->
|
ASSERT_TRUE(profile_attributes_storage_->
|
||||||
GetProfileAttributesWithPath(profile_2_path_, &entry_2));
|
GetProfileAttributesWithPath(profile_2_path_, &entry_2));
|
||||||
entry_2->SetName(new_profile_2_name);
|
entry_2->SetName(new_profile_2_name);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(profile_2_name_));
|
||||||
ValidateProfileShortcut(FROM_HERE, new_profile_2_name, profile_2_path_);
|
ValidateProfileShortcut(FROM_HERE, new_profile_2_name, profile_2_path_);
|
||||||
}
|
}
|
||||||
@@ -745,7 +739,7 @@ TEST_F(ProfileShortcutManagerTest,
|
|||||||
// Delete a profile and verify that only the system-level shortcut still
|
// Delete a profile and verify that only the system-level shortcut still
|
||||||
// exists.
|
// exists.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
|
EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16()));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(base::string16()));
|
||||||
@@ -774,7 +768,7 @@ TEST_F(ProfileShortcutManagerTest,
|
|||||||
// shortcut creation path in |DeleteDesktopShortcuts()|, which is
|
// shortcut creation path in |DeleteDesktopShortcuts()|, which is
|
||||||
// not covered by the |DeleteSecondToLastProfileWithSystemLevelShortcut| test.
|
// not covered by the |DeleteSecondToLastProfileWithSystemLevelShortcut| test.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Verify that only the system-level shortcut still exists.
|
// Verify that only the system-level shortcut still exists.
|
||||||
EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
|
EXPECT_TRUE(base::PathExists(system_level_shortcut_path));
|
||||||
@@ -795,7 +789,7 @@ TEST_F(ProfileShortcutManagerTest, CreateProfileIcon) {
|
|||||||
EXPECT_FALSE(base::PathExists(icon_path));
|
EXPECT_FALSE(base::PathExists(icon_path));
|
||||||
|
|
||||||
profile_shortcut_manager_->CreateOrUpdateProfileIcon(profile_1_path_);
|
profile_shortcut_manager_->CreateOrUpdateProfileIcon(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(base::PathExists(icon_path));
|
EXPECT_TRUE(base::PathExists(icon_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -826,7 +820,7 @@ TEST_F(ProfileShortcutManagerTest, UnbadgeProfileIconOnDeletion) {
|
|||||||
// Deleting the default profile will unbadge the new profile's icon and should
|
// Deleting the default profile will unbadge the new profile's icon and should
|
||||||
// result in an icon that is identical to the unbadged default profile icon.
|
// result in an icon that is identical to the unbadged default profile icon.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
std::string unbadged_icon_2;
|
std::string unbadged_icon_2;
|
||||||
EXPECT_TRUE(base::ReadFileToString(icon_path_2, &unbadged_icon_2));
|
EXPECT_TRUE(base::ReadFileToString(icon_path_2, &unbadged_icon_2));
|
||||||
@@ -853,7 +847,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileIconOnAvatarChange) {
|
|||||||
ASSERT_TRUE(profile_attributes_storage_->
|
ASSERT_TRUE(profile_attributes_storage_->
|
||||||
GetProfileAttributesWithPath(profile_1_path_, &entry_1));
|
GetProfileAttributesWithPath(profile_1_path_, &entry_1));
|
||||||
entry_1->SetAvatarIconIndex(1u);
|
entry_1->SetAvatarIconIndex(1u);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
std::string new_badged_icon_1;
|
std::string new_badged_icon_1;
|
||||||
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &new_badged_icon_1));
|
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &new_badged_icon_1));
|
||||||
@@ -861,7 +855,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileIconOnAvatarChange) {
|
|||||||
|
|
||||||
// Ensure the new icon is not the unbadged icon.
|
// Ensure the new icon is not the unbadged icon.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
std::string unbadged_icon_1;
|
std::string unbadged_icon_1;
|
||||||
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1));
|
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1));
|
||||||
@@ -869,7 +863,7 @@ TEST_F(ProfileShortcutManagerTest, ProfileIconOnAvatarChange) {
|
|||||||
|
|
||||||
// Ensure the icon doesn't change on avatar change without 2 profiles.
|
// Ensure the icon doesn't change on avatar change without 2 profiles.
|
||||||
entry_1->SetAvatarIconIndex(1u);
|
entry_1->SetAvatarIconIndex(1u);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
std::string unbadged_icon_1_a;
|
std::string unbadged_icon_1_a;
|
||||||
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a));
|
EXPECT_TRUE(base::ReadFileToString(icon_path_1, &unbadged_icon_1_a));
|
||||||
@@ -1015,7 +1009,7 @@ TEST_F(ProfileShortcutManagerTest, ShortcutsForProfilesWithIdenticalNames) {
|
|||||||
|
|
||||||
// Delete profile1.
|
// Delete profile1.
|
||||||
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
profile_attributes_storage_->RemoveProfile(profile_1_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_1_name));
|
EXPECT_FALSE(ProfileShortcutExistsAtDefaultPath(new_profile_1_name));
|
||||||
// Check that nothing is changed for profile2 and profile3.
|
// Check that nothing is changed for profile2 and profile3.
|
||||||
ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
|
ValidateProfileShortcut(FROM_HERE, profile_2_name_, profile_2_path_);
|
||||||
@@ -1028,7 +1022,7 @@ TEST_F(ProfileShortcutManagerTest, ShortcutsForProfilesWithIdenticalNames) {
|
|||||||
GetDefaultShortcutPathForProfile(profile_2_name_)));
|
GetDefaultShortcutPathForProfile(profile_2_name_)));
|
||||||
EXPECT_TRUE(base::PathExists(profile_3_shortcut_path));
|
EXPECT_TRUE(base::PathExists(profile_3_shortcut_path));
|
||||||
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
profile_attributes_storage_->RemoveProfile(profile_2_path_);
|
||||||
RunPendingTasks();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(base::PathExists(
|
EXPECT_FALSE(base::PathExists(
|
||||||
GetDefaultShortcutPathForProfile(profile_2_name_)));
|
GetDefaultShortcutPathForProfile(profile_2_name_)));
|
||||||
// Only profile3 exists. There should be non-profile shortcut only.
|
// Only profile3 exists. There should be non-profile shortcut only.
|
||||||
|
@@ -179,7 +179,8 @@ class BrowserFeatureExtractorTest : public ChromeRenderViewHostTestHarness {
|
|||||||
// Feature extraction takes ownership of the request object
|
// Feature extraction takes ownership of the request object
|
||||||
// and passes it along to the done callback in the end.
|
// and passes it along to the done callback in the end.
|
||||||
StartExtractMalwareFeatures(request);
|
StartExtractMalwareFeatures(request);
|
||||||
base::MessageLoopForUI::current()->Run();
|
ASSERT_TRUE(base::MessageLoopForUI::IsCurrent());
|
||||||
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1U, success_.count(request));
|
EXPECT_EQ(1U, success_.count(request));
|
||||||
EXPECT_TRUE(success_[request]);
|
EXPECT_TRUE(success_[request]);
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "content/public/browser/browser_thread.h"
|
#include "content/public/browser/browser_thread.h"
|
||||||
#include "skia/ext/skia_utils_win.h"
|
#include "skia/ext/skia_utils_win.h"
|
||||||
@@ -37,7 +38,8 @@ ColorChooserDialog::ColorChooserDialog(views::ColorChooserListener* listener,
|
|||||||
HWND owning_hwnd = views::HWNDForNativeWindow(owning_window);
|
HWND owning_hwnd = views::HWNDForNativeWindow(owning_window);
|
||||||
ExecuteOpenParams execute_params(initial_color, BeginRun(owning_hwnd),
|
ExecuteOpenParams execute_params(initial_color, BeginRun(owning_hwnd),
|
||||||
owning_hwnd);
|
owning_hwnd);
|
||||||
execute_params.run_state.dialog_thread->message_loop()->PostTask(FROM_HERE,
|
execute_params.run_state.dialog_thread->task_runner()->PostTask(
|
||||||
|
FROM_HERE,
|
||||||
base::Bind(&ColorChooserDialog::ExecuteOpen, this, execute_params));
|
base::Bind(&ColorChooserDialog::ExecuteOpen, this, execute_params));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
@@ -305,7 +306,7 @@ class TestMessageLoopCondition {
|
|||||||
void Wait() {
|
void Wait() {
|
||||||
while (!signaled_) {
|
while (!signaled_) {
|
||||||
waiting_ = true;
|
waiting_ = true;
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
waiting_ = false;
|
waiting_ = false;
|
||||||
}
|
}
|
||||||
signaled_ = false;
|
signaled_ = false;
|
||||||
@@ -456,7 +457,7 @@ class LocalDiscoveryUITest : public WebUIBrowserTest {
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, callback.callback(), time_period);
|
FROM_HERE, callback.callback(), time_period);
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
callback.Cancel();
|
callback.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -502,7 +503,7 @@ IN_PROC_BROWSER_TEST_F(LocalDiscoveryUITest, AddRowTest) {
|
|||||||
test_service_discovery_client()->SimulateReceive(
|
test_service_discovery_client()->SimulateReceive(
|
||||||
kAnnouncePacket, sizeof(kAnnouncePacket));
|
kAnnouncePacket, sizeof(kAnnouncePacket));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("checkOneDevice"));
|
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("checkOneDevice"));
|
||||||
|
|
||||||
@@ -525,7 +526,7 @@ IN_PROC_BROWSER_TEST_F(LocalDiscoveryUITest, RegisterTest) {
|
|||||||
test_service_discovery_client()->SimulateReceive(
|
test_service_discovery_client()->SimulateReceive(
|
||||||
kAnnouncePacket, sizeof(kAnnouncePacket));
|
kAnnouncePacket, sizeof(kAnnouncePacket));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("checkOneDevice"));
|
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("checkOneDevice"));
|
||||||
|
|
||||||
@@ -578,7 +579,7 @@ IN_PROC_BROWSER_TEST_F(LocalDiscoveryUITest, RegisterTest) {
|
|||||||
test_service_discovery_client()->SimulateReceive(
|
test_service_discovery_client()->SimulateReceive(
|
||||||
kAnnouncePacketRegistered, sizeof(kAnnouncePacketRegistered));
|
kAnnouncePacketRegistered, sizeof(kAnnouncePacketRegistered));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("expectRegisterDone"));
|
EXPECT_TRUE(WebUIBrowserTest::RunJavascriptTest("expectRegisterDone"));
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
#include "base/process/kill.h"
|
#include "base/process/kill.h"
|
||||||
#include "base/process/launch.h"
|
#include "base/process/launch.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_split.h"
|
#include "base/strings/string_split.h"
|
||||||
#include "base/threading/platform_thread.h"
|
#include "base/threading/platform_thread.h"
|
||||||
@@ -53,12 +54,11 @@ namespace {
|
|||||||
|
|
||||||
bool g_good_shutdown = false;
|
bool g_good_shutdown = false;
|
||||||
|
|
||||||
void ShutdownTask(base::MessageLoop* loop) {
|
void ShutdownTask(base::RunLoop* loop) {
|
||||||
// Quit the main message loop.
|
// Quit the main message loop.
|
||||||
ASSERT_FALSE(g_good_shutdown);
|
ASSERT_FALSE(g_good_shutdown);
|
||||||
g_good_shutdown = true;
|
g_good_shutdown = true;
|
||||||
loop->task_runner()->PostTask(FROM_HERE,
|
loop->QuitWhenIdle();
|
||||||
base::MessageLoop::QuitWhenIdleClosure());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
@@ -230,19 +230,19 @@ MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestReadyFalse) {
|
|||||||
MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestShutdown) {
|
MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestShutdown) {
|
||||||
base::PlatformThread::SetName("ServiceProcessStateTestShutdownMainThread");
|
base::PlatformThread::SetName("ServiceProcessStateTestShutdownMainThread");
|
||||||
base::MessageLoop message_loop;
|
base::MessageLoop message_loop;
|
||||||
|
base::RunLoop run_loop;
|
||||||
base::Thread io_thread_("ServiceProcessStateTestShutdownIOThread");
|
base::Thread io_thread_("ServiceProcessStateTestShutdownIOThread");
|
||||||
base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
|
base::Thread::Options options(base::MessageLoop::TYPE_IO, 0);
|
||||||
EXPECT_TRUE(io_thread_.StartWithOptions(options));
|
EXPECT_TRUE(io_thread_.StartWithOptions(options));
|
||||||
ServiceProcessState state;
|
ServiceProcessState state;
|
||||||
EXPECT_TRUE(state.Initialize());
|
EXPECT_TRUE(state.Initialize());
|
||||||
EXPECT_TRUE(state.SignalReady(
|
EXPECT_TRUE(state.SignalReady(io_thread_.task_runner().get(),
|
||||||
io_thread_.task_runner().get(),
|
base::Bind(&ShutdownTask, &run_loop)));
|
||||||
base::Bind(&ShutdownTask, base::MessageLoop::current())));
|
|
||||||
message_loop.task_runner()->PostDelayedTask(
|
message_loop.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, run_loop.QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_max_timeout());
|
TestTimeouts::action_max_timeout());
|
||||||
EXPECT_FALSE(g_good_shutdown);
|
EXPECT_FALSE(g_good_shutdown);
|
||||||
message_loop.Run();
|
run_loop.Run();
|
||||||
EXPECT_TRUE(g_good_shutdown);
|
EXPECT_TRUE(g_good_shutdown);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -283,9 +283,9 @@ class ServiceProcessStateFileManipulationTest : public ::testing::Test {
|
|||||||
ASSERT_TRUE(service_process_state_.Initialize());
|
ASSERT_TRUE(service_process_state_.Initialize());
|
||||||
ASSERT_TRUE(service_process_state_.SignalReady(
|
ASSERT_TRUE(service_process_state_.SignalReady(
|
||||||
io_thread_.task_runner().get(), base::Closure()));
|
io_thread_.task_runner().get(), base::Closure()));
|
||||||
loop_.task_runner()->PostDelayedTask(
|
loop_.task_runner()->PostDelayedTask(FROM_HERE,
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
run_loop_.QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_max_timeout());
|
TestTimeouts::action_max_timeout());
|
||||||
}
|
}
|
||||||
|
|
||||||
const MockLaunchd* mock_launchd() const { return mock_launchd_.get(); }
|
const MockLaunchd* mock_launchd() const { return mock_launchd_.get(); }
|
||||||
@@ -296,11 +296,12 @@ class ServiceProcessStateFileManipulationTest : public ::testing::Test {
|
|||||||
base::SingleThreadTaskRunner* GetIOTaskRunner() {
|
base::SingleThreadTaskRunner* GetIOTaskRunner() {
|
||||||
return io_thread_.task_runner().get();
|
return io_thread_.task_runner().get();
|
||||||
}
|
}
|
||||||
void Run() { loop_.Run(); }
|
void Run() { run_loop_.Run(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
base::ScopedTempDir temp_dir_;
|
base::ScopedTempDir temp_dir_;
|
||||||
base::MessageLoopForUI loop_;
|
base::MessageLoopForUI loop_;
|
||||||
|
base::RunLoop run_loop_;
|
||||||
base::Thread io_thread_;
|
base::Thread io_thread_;
|
||||||
base::FilePath executable_path_, bundle_path_;
|
base::FilePath executable_path_, bundle_path_;
|
||||||
std::unique_ptr<MockLaunchd> mock_launchd_;
|
std::unique_ptr<MockLaunchd> mock_launchd_;
|
||||||
|
@@ -208,7 +208,7 @@ void RunServer(uint16_t port,
|
|||||||
HttpRequestHandlerFunc handle_request_func =
|
HttpRequestHandlerFunc handle_request_func =
|
||||||
base::Bind(&HandleRequestOnCmdThread, &handler, whitelisted_ips);
|
base::Bind(&HandleRequestOnCmdThread, &handler, whitelisted_ips);
|
||||||
|
|
||||||
io_thread.message_loop()->task_runner()->PostTask(
|
io_thread.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&StartServerOnIOThread, port, allow_remote,
|
base::Bind(&StartServerOnIOThread, port, allow_remote,
|
||||||
base::Bind(&HandleRequestOnIOThread, cmd_loop.task_runner(),
|
base::Bind(&HandleRequestOnIOThread, cmd_loop.task_runner(),
|
||||||
@@ -219,8 +219,8 @@ void RunServer(uint16_t port,
|
|||||||
// destroyed, which waits until all pending tasks have been completed.
|
// destroyed, which waits until all pending tasks have been completed.
|
||||||
// This assumes the response is sent synchronously as part of the IO task.
|
// This assumes the response is sent synchronously as part of the IO task.
|
||||||
cmd_run_loop.Run();
|
cmd_run_loop.Run();
|
||||||
io_thread.message_loop()->task_runner()->PostTask(
|
io_thread.task_runner()->PostTask(FROM_HERE,
|
||||||
FROM_HERE, base::Bind(&StopServerOnIOThread));
|
base::Bind(&StopServerOnIOThread));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "chromeos/dbus/dbus_thread_manager.h"
|
#include "chromeos/dbus/dbus_thread_manager.h"
|
||||||
#include "components/arc/arc_bridge_service_impl.h"
|
#include "components/arc/arc_bridge_service_impl.h"
|
||||||
#include "components/arc/test/fake_arc_bridge_bootstrap.h"
|
#include "components/arc/test/fake_arc_bridge_bootstrap.h"
|
||||||
@@ -37,7 +38,8 @@ class ArcBridgeTest : public testing::Test, public ArcBridgeService::Observer {
|
|||||||
void OnBridgeStopped(ArcBridgeService::StopReason stop_reason) override {
|
void OnBridgeStopped(ArcBridgeService::StopReason stop_reason) override {
|
||||||
state_ = ArcBridgeService::State::STOPPED;
|
state_ = ArcBridgeService::State::STOPPED;
|
||||||
stop_reason_ = stop_reason;
|
stop_reason_ = stop_reason;
|
||||||
message_loop_.PostTask(FROM_HERE, message_loop_.QuitWhenIdleClosure());
|
message_loop_.task_runner()->PostTask(FROM_HERE,
|
||||||
|
message_loop_.QuitWhenIdleClosure());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ready() const { return ready_; }
|
bool ready() const { return ready_; }
|
||||||
|
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
|
|
||||||
namespace arc {
|
namespace arc {
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@ void ArcStandaloneBridgeRunner::Stop(int exit_code) {
|
|||||||
DCHECK(thread_checker_.CalledOnValidThread());
|
DCHECK(thread_checker_.CalledOnValidThread());
|
||||||
exit_code_ = exit_code;
|
exit_code_ = exit_code;
|
||||||
CHECK(run_loop_);
|
CHECK(run_loop_);
|
||||||
message_loop_.PostTask(FROM_HERE, run_loop_->QuitClosure());
|
message_loop_.task_runner()->PostTask(FROM_HERE, run_loop_->QuitClosure());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace arc
|
} // namespace arc
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/test/launcher/unit_test_launcher.h"
|
#include "base/test/launcher/unit_test_launcher.h"
|
||||||
#include "base/test/test_suite.h"
|
#include "base/test/test_suite.h"
|
||||||
#include "base/threading/platform_thread.h"
|
#include "base/threading/platform_thread.h"
|
||||||
@@ -29,7 +30,7 @@ class ServiceHelperTest : public ::testing::Test {
|
|||||||
void Quit() {
|
void Quit() {
|
||||||
CHECK(base_loop_);
|
CHECK(base_loop_);
|
||||||
CHECK(run_loop_);
|
CHECK(run_loop_);
|
||||||
base_loop_->PostTask(FROM_HERE, run_loop_->QuitClosure());
|
base_loop_->task_runner()->PostTask(FROM_HERE, run_loop_->QuitClosure());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Init() {
|
void Init() {
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "components/autofill/content/browser/risk/proto/fingerprint.pb.h"
|
#include "components/autofill/content/browser/risk/proto/fingerprint.pb.h"
|
||||||
#include "content/public/browser/gpu_data_manager.h"
|
#include "content/public/browser/gpu_data_manager.h"
|
||||||
@@ -211,7 +212,7 @@ IN_PROC_BROWSER_TEST_F(AutofillRiskFingerprintTest, GetFingerprint) {
|
|||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
// Wait for the callback to be called.
|
// Wait for the callback to be called.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace risk
|
} // namespace risk
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/metrics/statistics_recorder.h"
|
#include "base/metrics/statistics_recorder.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "base/threading/worker_pool.h"
|
#include "base/threading/worker_pool.h"
|
||||||
#include "components/cronet/ios/version.h"
|
#include "components/cronet/ios/version.h"
|
||||||
@@ -74,7 +75,7 @@ void CronetEnvironment::PostToNetworkThread(
|
|||||||
void CronetEnvironment::PostToFileUserBlockingThread(
|
void CronetEnvironment::PostToFileUserBlockingThread(
|
||||||
const tracked_objects::Location& from_here,
|
const tracked_objects::Location& from_here,
|
||||||
const base::Closure& task) {
|
const base::Closure& task) {
|
||||||
file_user_blocking_thread_->message_loop()->PostTask(from_here, task);
|
file_user_blocking_thread_->task_runner()->PostTask(from_here, task);
|
||||||
}
|
}
|
||||||
|
|
||||||
net::URLRequestContext* CronetEnvironment::GetURLRequestContext() const {
|
net::URLRequestContext* CronetEnvironment::GetURLRequestContext() const {
|
||||||
|
@@ -289,7 +289,7 @@ class DataUseAggregatorTest : public testing::Test {
|
|||||||
reporting_network_delegate_->set_data_use_context_map(data_use_context_map);
|
reporting_network_delegate_->set_data_use_context_map(data_use_context_map);
|
||||||
|
|
||||||
request->Start();
|
request->Start();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/test/histogram_tester.h"
|
#include "base/test/histogram_tester.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "content/public/browser/resource_request_info.h"
|
#include "content/public/browser/resource_request_info.h"
|
||||||
@@ -63,7 +64,7 @@ class DataUseMeasurementTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
request->Start();
|
request->Start();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
data_use_measurement_.OnCompleted(*request, true);
|
data_use_measurement_.OnCompleted(*request, true);
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/bind_helpers.h"
|
#include "base/bind_helpers.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "components/dom_distiller/core/distiller_url_fetcher.h"
|
#include "components/dom_distiller/core/distiller_url_fetcher.h"
|
||||||
#include "net/http/http_status_code.h"
|
#include "net/http/http_status_code.h"
|
||||||
#include "net/url_request/test_url_fetcher_factory.h"
|
#include "net/url_request/test_url_fetcher_factory.h"
|
||||||
@@ -50,7 +51,7 @@ class DistillerURLFetcherTest : public testing::Test {
|
|||||||
url,
|
url,
|
||||||
base::Bind(&DistillerURLFetcherTest::FetcherCallback,
|
base::Bind(&DistillerURLFetcherTest::FetcherCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
CHECK_EQ(expected_response, response_);
|
CHECK_EQ(expected_response, response_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -7,7 +7,6 @@
|
|||||||
#include "base/base_switches.h"
|
#include "base/base_switches.h"
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
#include "base/process/launch.h"
|
#include "base/process/launch.h"
|
||||||
#include "base/process/process.h"
|
#include "base/process/process.h"
|
||||||
@@ -51,7 +50,7 @@ void NaClBrokerListener::Listen() {
|
|||||||
if (broker && !broker->IsPrivilegedBroker())
|
if (broker && !broker->IsPrivilegedBroker())
|
||||||
broker->RegisterBrokerCommunicationChannel(channel_.get());
|
broker->RegisterBrokerCommunicationChannel(channel_.get());
|
||||||
CHECK(channel_->Connect());
|
CHECK(channel_->Connect());
|
||||||
base::MessageLoop::current()->Run();
|
run_loop_.Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: changes to this method need to be reviewed by the security team.
|
// NOTE: changes to this method need to be reviewed by the security team.
|
||||||
@@ -88,7 +87,7 @@ bool NaClBrokerListener::OnMessageReceived(const IPC::Message& msg) {
|
|||||||
|
|
||||||
void NaClBrokerListener::OnChannelError() {
|
void NaClBrokerListener::OnChannelError() {
|
||||||
// The browser died unexpectedly, quit to avoid a zombie process.
|
// The browser died unexpectedly, quit to avoid a zombie process.
|
||||||
base::MessageLoop::current()->QuitWhenIdle();
|
run_loop_.QuitWhenIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NaClBrokerListener::OnLaunchLoaderThroughBroker(
|
void NaClBrokerListener::OnLaunchLoaderThroughBroker(
|
||||||
@@ -144,5 +143,5 @@ void NaClBrokerListener::OnLaunchDebugExceptionHandler(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void NaClBrokerListener::OnStopBroker() {
|
void NaClBrokerListener::OnStopBroker() {
|
||||||
base::MessageLoop::current()->QuitWhenIdle();
|
run_loop_.QuitWhenIdle();
|
||||||
}
|
}
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/process/process.h"
|
#include "base/process/process.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "components/nacl/common/nacl_types.h"
|
#include "components/nacl/common/nacl_types.h"
|
||||||
#include "content/public/common/sandboxed_process_launcher_delegate.h"
|
#include "content/public/common/sandboxed_process_launcher_delegate.h"
|
||||||
#include "ipc/ipc_listener.h"
|
#include "ipc/ipc_listener.h"
|
||||||
@@ -44,6 +45,7 @@ class NaClBrokerListener : public content::SandboxedProcessLauncherDelegate,
|
|||||||
const std::string& startup_info);
|
const std::string& startup_info);
|
||||||
void OnStopBroker();
|
void OnStopBroker();
|
||||||
|
|
||||||
|
base::RunLoop run_loop_;
|
||||||
base::Process browser_process_;
|
base::Process browser_process_;
|
||||||
std::unique_ptr<IPC::Channel> channel_;
|
std::unique_ptr<IPC::Channel> channel_;
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include "base/file_descriptor_posix.h"
|
#include "base/file_descriptor_posix.h"
|
||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/rand_util.h"
|
#include "base/rand_util.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "components/nacl/common/nacl_messages.h"
|
#include "components/nacl/common/nacl_messages.h"
|
||||||
#include "components/nacl/common/nacl_types.h"
|
#include "components/nacl/common/nacl_types.h"
|
||||||
@@ -49,7 +50,7 @@ void NonSfiListener::Listen() {
|
|||||||
io_thread_.task_runner().get(),
|
io_thread_.task_runner().get(),
|
||||||
true, // Create pipe now.
|
true, // Create pipe now.
|
||||||
&shutdown_event_);
|
&shutdown_event_);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NonSfiListener::OnMessageReceived(const IPC::Message& msg) {
|
bool NonSfiListener::OnMessageReceived(const IPC::Message& msg) {
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/callback.h"
|
#include "base/callback.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "components/policy/core/common/policy_pref_names.h"
|
#include "components/policy/core/common/policy_pref_names.h"
|
||||||
@@ -91,13 +92,13 @@ class URLBlacklistManagerTest : public testing::Test {
|
|||||||
pref_service_.registry()->RegisterListPref(policy_prefs::kUrlBlacklist);
|
pref_service_.registry()->RegisterListPref(policy_prefs::kUrlBlacklist);
|
||||||
pref_service_.registry()->RegisterListPref(policy_prefs::kUrlWhitelist);
|
pref_service_.registry()->RegisterListPref(policy_prefs::kUrlWhitelist);
|
||||||
blacklist_manager_.reset(new TestingURLBlacklistManager(&pref_service_));
|
blacklist_manager_.reset(new TestingURLBlacklistManager(&pref_service_));
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TearDown() override {
|
void TearDown() override {
|
||||||
if (blacklist_manager_.get())
|
if (blacklist_manager_.get())
|
||||||
blacklist_manager_->ShutdownOnUIThread();
|
blacklist_manager_->ShutdownOnUIThread();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
// Delete |blacklist_manager_| while |io_thread_| is mapping IO to
|
// Delete |blacklist_manager_| while |io_thread_| is mapping IO to
|
||||||
// |loop_|.
|
// |loop_|.
|
||||||
blacklist_manager_.reset();
|
blacklist_manager_.reset();
|
||||||
@@ -235,7 +236,7 @@ TEST_F(URLBlacklistManagerTest, SingleUpdateForTwoPrefChanges) {
|
|||||||
whitelist->AppendString("mail.google.com");
|
whitelist->AppendString("mail.google.com");
|
||||||
pref_service_.SetManagedPref(policy_prefs::kUrlBlacklist, blacklist);
|
pref_service_.SetManagedPref(policy_prefs::kUrlBlacklist, blacklist);
|
||||||
pref_service_.SetManagedPref(policy_prefs::kUrlBlacklist, whitelist);
|
pref_service_.SetManagedPref(policy_prefs::kUrlBlacklist, whitelist);
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1, blacklist_manager_->update_called());
|
EXPECT_EQ(1, blacklist_manager_->update_called());
|
||||||
}
|
}
|
||||||
@@ -247,7 +248,7 @@ TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask0) {
|
|||||||
blacklist_manager_->ShutdownOnUIThread();
|
blacklist_manager_->ShutdownOnUIThread();
|
||||||
blacklist_manager_.reset();
|
blacklist_manager_.reset();
|
||||||
// Run the task after shutdown and deletion.
|
// Run the task after shutdown and deletion.
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask1) {
|
TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask1) {
|
||||||
@@ -256,11 +257,11 @@ TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask1) {
|
|||||||
// Shutdown comes before the task is executed.
|
// Shutdown comes before the task is executed.
|
||||||
blacklist_manager_->ShutdownOnUIThread();
|
blacklist_manager_->ShutdownOnUIThread();
|
||||||
// Run the task after shutdown, but before deletion.
|
// Run the task after shutdown, but before deletion.
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(0, blacklist_manager_->update_called());
|
EXPECT_EQ(0, blacklist_manager_->update_called());
|
||||||
blacklist_manager_.reset();
|
blacklist_manager_.reset();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask2) {
|
TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask2) {
|
||||||
@@ -271,7 +272,7 @@ TEST_F(URLBlacklistManagerTest, ShutdownWithPendingTask2) {
|
|||||||
|
|
||||||
EXPECT_FALSE(blacklist_manager_->set_blacklist_called());
|
EXPECT_FALSE(blacklist_manager_->set_blacklist_called());
|
||||||
blacklist_manager_.reset();
|
blacklist_manager_.reset();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(
|
INSTANTIATE_TEST_CASE_P(
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
@@ -72,7 +73,7 @@ class CloudPolicyValidatorTest : public testing::Test {
|
|||||||
validator.release()->StartValidation(
|
validator.release()->StartValidation(
|
||||||
base::Bind(&CloudPolicyValidatorTest::ValidationCompletion,
|
base::Bind(&CloudPolicyValidatorTest::ValidationCompletion,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
Mock::VerifyAndClearExpectations(this);
|
Mock::VerifyAndClearExpectations(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/callback.h"
|
#include "base/callback.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "components/policy/core/common/configuration_policy_provider.h"
|
#include "components/policy/core/common/configuration_policy_provider.h"
|
||||||
#include "components/policy/core/common/external_data_fetcher.h"
|
#include "components/policy/core/common/external_data_fetcher.h"
|
||||||
@@ -143,7 +144,7 @@ void PolicyTestBase::SetUp() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PolicyTestBase::TearDown() {
|
void PolicyTestBase::TearDown() {
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PolicyTestBase::RegisterSchema(const PolicyNamespace& ns,
|
bool PolicyTestBase::RegisterSchema(const PolicyNamespace& ns,
|
||||||
@@ -212,7 +213,7 @@ void ConfigurationPolicyProviderTest::SetUp() {
|
|||||||
provider_->Init(&schema_registry_);
|
provider_->Init(&schema_registry_);
|
||||||
// Some providers do a reload on init. Make sure any notifications generated
|
// Some providers do a reload on init. Make sure any notifications generated
|
||||||
// are fired now.
|
// are fired now.
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
const PolicyBundle kEmptyBundle;
|
const PolicyBundle kEmptyBundle;
|
||||||
EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
|
EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
|
||||||
@@ -235,7 +236,7 @@ void ConfigurationPolicyProviderTest::CheckValue(
|
|||||||
// Install the value, reload policy and check the provider for the value.
|
// Install the value, reload policy and check the provider for the value.
|
||||||
install_value.Run();
|
install_value.Run();
|
||||||
provider_->RefreshPolicies();
|
provider_->RefreshPolicies();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
PolicyBundle expected_bundle;
|
PolicyBundle expected_bundle;
|
||||||
expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
|
expected_bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
|
||||||
.Set(policy_name, harness_->policy_level(), harness_->policy_scope(),
|
.Set(policy_name, harness_->policy_level(), harness_->policy_scope(),
|
||||||
@@ -252,7 +253,7 @@ void ConfigurationPolicyProviderTest::CheckValue(
|
|||||||
|
|
||||||
TEST_P(ConfigurationPolicyProviderTest, Empty) {
|
TEST_P(ConfigurationPolicyProviderTest, Empty) {
|
||||||
provider_->RefreshPolicies();
|
provider_->RefreshPolicies();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
const PolicyBundle kEmptyBundle;
|
const PolicyBundle kEmptyBundle;
|
||||||
EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
|
EXPECT_TRUE(provider_->policies().Equals(kEmptyBundle));
|
||||||
}
|
}
|
||||||
@@ -343,7 +344,7 @@ TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) {
|
|||||||
provider_->AddObserver(&observer);
|
provider_->AddObserver(&observer);
|
||||||
EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
|
EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
|
||||||
provider_->RefreshPolicies();
|
provider_->RefreshPolicies();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
Mock::VerifyAndClearExpectations(&observer);
|
Mock::VerifyAndClearExpectations(&observer);
|
||||||
|
|
||||||
EXPECT_TRUE(provider_->policies().Equals(bundle));
|
EXPECT_TRUE(provider_->policies().Equals(bundle));
|
||||||
@@ -352,7 +353,7 @@ TEST_P(ConfigurationPolicyProviderTest, RefreshPolicies) {
|
|||||||
harness_->InstallStringPolicy(harness_->key_string(), "value");
|
harness_->InstallStringPolicy(harness_->key_string(), "value");
|
||||||
EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
|
EXPECT_CALL(observer, OnUpdatePolicy(provider_.get())).Times(1);
|
||||||
provider_->RefreshPolicies();
|
provider_->RefreshPolicies();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
Mock::VerifyAndClearExpectations(&observer);
|
Mock::VerifyAndClearExpectations(&observer);
|
||||||
|
|
||||||
bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
|
bundle.Get(PolicyNamespace(POLICY_DOMAIN_CHROME, std::string()))
|
||||||
@@ -402,7 +403,7 @@ TEST_P(Configuration3rdPartyPolicyProviderTest, Load3rdParty) {
|
|||||||
harness_->Install3rdPartyPolicy(&policy_3rdparty);
|
harness_->Install3rdPartyPolicy(&policy_3rdparty);
|
||||||
|
|
||||||
provider_->RefreshPolicies();
|
provider_->RefreshPolicies();
|
||||||
loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
PolicyMap expected_policy;
|
PolicyMap expected_policy;
|
||||||
expected_policy.Set(harness_->key_dictionary(), harness_->policy_level(),
|
expected_policy.Set(harness_->key_dictionary(), harness_->policy_level(),
|
||||||
|
@@ -280,7 +280,7 @@ class NonUIModelTypeControllerTest : public testing::Test,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Runs any tasks posted on UI thread.
|
// Runs any tasks posted on UI thread.
|
||||||
void RunQueuedUIThreadTasks() { ui_loop_.RunUntilIdle(); }
|
void RunQueuedUIThreadTasks() { base::RunLoop().RunUntilIdle(); }
|
||||||
|
|
||||||
// Runs any tasks posted on model thread.
|
// Runs any tasks posted on model thread.
|
||||||
void RunQueuedModelThreadTasks() {
|
void RunQueuedModelThreadTasks() {
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "base/tracked_objects.h"
|
#include "base/tracked_objects.h"
|
||||||
@@ -75,7 +76,7 @@ class SyncUIDataTypeControllerTest : public testing::Test,
|
|||||||
PumpLoop();
|
PumpLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PumpLoop() { message_loop_.RunUntilIdle(); }
|
void PumpLoop() { base::RunLoop().RunUntilIdle(); }
|
||||||
|
|
||||||
base::MessageLoopForUI message_loop_;
|
base::MessageLoopForUI message_loop_;
|
||||||
const syncer::ModelType type_;
|
const syncer::ModelType type_;
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/process/launch.h"
|
#include "base/process/launch.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "components/sync/test/local_sync_test_server.h"
|
#include "components/sync/test/local_sync_test_server.h"
|
||||||
@@ -116,6 +117,6 @@ int main(int argc, const char* argv[]) {
|
|||||||
printf("Python sync test server running at %s (type ctrl+c to exit)\n",
|
printf("Python sync test server running at %s (type ctrl+c to exit)\n",
|
||||||
test_server->host_port_pair().ToString().c_str());
|
test_server->host_port_pair().ToString().c_str());
|
||||||
|
|
||||||
message_loop.Run();
|
base::RunLoop().Run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
@@ -456,7 +457,7 @@ void SyncFaviconCacheTest::TriggerSyncFaviconReceived(
|
|||||||
icon_url,
|
icon_url,
|
||||||
icon_bytes,
|
icon_bytes,
|
||||||
last_visit_time_ms);
|
last_visit_time_ms);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// A freshly constructed cache should be empty.
|
// A freshly constructed cache should be empty.
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/location.h"
|
#include "base/location.h"
|
||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "content/browser/appcache/appcache_database.h"
|
#include "content/browser/appcache/appcache_database.h"
|
||||||
#include "content/browser/appcache/appcache_storage_impl.h"
|
#include "content/browser/appcache/appcache_storage_impl.h"
|
||||||
@@ -108,14 +109,14 @@ ChromeAppCacheServiceTest::CreateAppCacheServiceImpl(
|
|||||||
browser_context_.GetResourceContext(),
|
browser_context_.GetResourceContext(),
|
||||||
base::RetainedRef(mock_request_context_getter), mock_policy));
|
base::RetainedRef(mock_request_context_getter), mock_policy));
|
||||||
// Steps needed to initialize the storage of AppCache data.
|
// Steps needed to initialize the storage of AppCache data.
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
if (init_storage) {
|
if (init_storage) {
|
||||||
AppCacheStorageImpl* storage =
|
AppCacheStorageImpl* storage =
|
||||||
static_cast<AppCacheStorageImpl*>(
|
static_cast<AppCacheStorageImpl*>(
|
||||||
appcache_service->storage());
|
appcache_service->storage());
|
||||||
storage->database_->db_connection();
|
storage->database_->db_connection();
|
||||||
storage->disk_cache();
|
storage->disk_cache();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
return appcache_service;
|
return appcache_service;
|
||||||
}
|
}
|
||||||
@@ -151,7 +152,7 @@ TEST_F(ChromeAppCacheServiceTest, KeepOnDestruction) {
|
|||||||
|
|
||||||
// Test: delete the ChromeAppCacheService
|
// Test: delete the ChromeAppCacheService
|
||||||
appcache_service = NULL;
|
appcache_service = NULL;
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Recreate the appcache (for reading the data back)
|
// Recreate the appcache (for reading the data back)
|
||||||
appcache_service = CreateAppCacheServiceImpl(appcache_path, false);
|
appcache_service = CreateAppCacheServiceImpl(appcache_path, false);
|
||||||
@@ -171,7 +172,7 @@ TEST_F(ChromeAppCacheServiceTest, KeepOnDestruction) {
|
|||||||
|
|
||||||
// Delete and let cleanup tasks run prior to returning.
|
// Delete and let cleanup tasks run prior to returning.
|
||||||
appcache_service = NULL;
|
appcache_service = NULL;
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ChromeAppCacheServiceTest, SaveSessionState) {
|
TEST_F(ChromeAppCacheServiceTest, SaveSessionState) {
|
||||||
@@ -191,7 +192,7 @@ TEST_F(ChromeAppCacheServiceTest, SaveSessionState) {
|
|||||||
|
|
||||||
// Test: delete the ChromeAppCacheService
|
// Test: delete the ChromeAppCacheService
|
||||||
appcache_service = NULL;
|
appcache_service = NULL;
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Recreate the appcache (for reading the data back)
|
// Recreate the appcache (for reading the data back)
|
||||||
appcache_service = CreateAppCacheServiceImpl(appcache_path, false);
|
appcache_service = CreateAppCacheServiceImpl(appcache_path, false);
|
||||||
@@ -211,7 +212,7 @@ TEST_F(ChromeAppCacheServiceTest, SaveSessionState) {
|
|||||||
|
|
||||||
// Delete and let cleanup tasks run prior to returning.
|
// Delete and let cleanup tasks run prior to returning.
|
||||||
appcache_service = NULL;
|
appcache_service = NULL;
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace content
|
} // namespace content
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/memory/weak_ptr.h"
|
#include "base/memory/weak_ptr.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
@@ -541,10 +542,8 @@ class DownloadManagerTest : public testing::Test {
|
|||||||
|
|
||||||
download_manager_->Shutdown();
|
download_manager_->Shutdown();
|
||||||
download_manager_.reset();
|
download_manager_.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
ASSERT_EQ(NULL, mock_download_item_factory_.get());
|
ASSERT_FALSE(mock_download_item_factory_);
|
||||||
ASSERT_EQ(NULL, mock_download_file_factory_.get());
|
|
||||||
message_loop_.RunUntilIdle();
|
|
||||||
mock_download_manager_delegate_.reset();
|
mock_download_manager_delegate_.reset();
|
||||||
mock_browser_context_.reset();
|
mock_browser_context_.reset();
|
||||||
download_urls_.clear();
|
download_urls_.clear();
|
||||||
|
@@ -82,7 +82,7 @@ class RenderWidgetHostViewGuestTest : public testing::Test {
|
|||||||
|
|
||||||
message_loop_.task_runner()->DeleteSoon(FROM_HERE,
|
message_loop_.task_runner()->DeleteSoon(FROM_HERE,
|
||||||
browser_context_.release());
|
browser_context_.release());
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
#if !defined(OS_ANDROID)
|
#if !defined(OS_ANDROID)
|
||||||
ImageTransportFactory::Terminate();
|
ImageTransportFactory::Terminate();
|
||||||
#else
|
#else
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/test/test_simple_task_runner.h"
|
#include "base/test/test_simple_task_runner.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "content/browser/browser_thread_impl.h"
|
#include "content/browser/browser_thread_impl.h"
|
||||||
@@ -86,12 +87,12 @@ TEST_F(IndexedDBTest, ClearSessionOnlyDatabases) {
|
|||||||
ASSERT_TRUE(base::CreateDirectory(normal_path));
|
ASSERT_TRUE(base::CreateDirectory(normal_path));
|
||||||
ASSERT_TRUE(base::CreateDirectory(session_only_path));
|
ASSERT_TRUE(base::CreateDirectory(session_only_path));
|
||||||
FlushIndexedDBTaskRunner();
|
FlushIndexedDBTaskRunner();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
quota_manager_proxy_->SimulateQuotaManagerDestroyed();
|
quota_manager_proxy_->SimulateQuotaManagerDestroyed();
|
||||||
}
|
}
|
||||||
|
|
||||||
FlushIndexedDBTaskRunner();
|
FlushIndexedDBTaskRunner();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(base::DirectoryExists(normal_path));
|
EXPECT_TRUE(base::DirectoryExists(normal_path));
|
||||||
EXPECT_FALSE(base::DirectoryExists(session_only_path));
|
EXPECT_FALSE(base::DirectoryExists(session_only_path));
|
||||||
@@ -121,11 +122,11 @@ TEST_F(IndexedDBTest, SetForceKeepSessionState) {
|
|||||||
session_only_path = idb_context->GetFilePathForTesting(kSessionOnlyOrigin);
|
session_only_path = idb_context->GetFilePathForTesting(kSessionOnlyOrigin);
|
||||||
ASSERT_TRUE(base::CreateDirectory(normal_path));
|
ASSERT_TRUE(base::CreateDirectory(normal_path));
|
||||||
ASSERT_TRUE(base::CreateDirectory(session_only_path));
|
ASSERT_TRUE(base::CreateDirectory(session_only_path));
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we wait until the destructor has run.
|
// Make sure we wait until the destructor has run.
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// No data was cleared because of SetForceKeepSessionState.
|
// No data was cleared because of SetForceKeepSessionState.
|
||||||
EXPECT_TRUE(base::DirectoryExists(normal_path));
|
EXPECT_TRUE(base::DirectoryExists(normal_path));
|
||||||
@@ -217,11 +218,11 @@ TEST_F(IndexedDBTest, ForceCloseOpenDatabasesOnDelete) {
|
|||||||
&IndexedDBContextImpl::DeleteForOrigin),
|
&IndexedDBContextImpl::DeleteForOrigin),
|
||||||
idb_context, kTestOrigin));
|
idb_context, kTestOrigin));
|
||||||
FlushIndexedDBTaskRunner();
|
FlushIndexedDBTaskRunner();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure we wait until the destructor has run.
|
// Make sure we wait until the destructor has run.
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(open_db_callbacks->forced_close_called());
|
EXPECT_TRUE(open_db_callbacks->forced_close_called());
|
||||||
EXPECT_FALSE(closed_db_callbacks->forced_close_called());
|
EXPECT_FALSE(closed_db_callbacks->forced_close_called());
|
||||||
|
@@ -512,8 +512,9 @@ class RenderWidgetHostViewAuraTest : public testing::Test {
|
|||||||
browser_context_.reset();
|
browser_context_.reset();
|
||||||
aura_test_helper_->TearDown();
|
aura_test_helper_->TearDown();
|
||||||
|
|
||||||
message_loop_.DeleteSoon(FROM_HERE, browser_context_.release());
|
message_loop_.task_runner()->DeleteSoon(FROM_HERE,
|
||||||
message_loop_.RunUntilIdle();
|
browser_context_.release());
|
||||||
|
base::RunLoop().RunUntilIdle();
|
||||||
ImageTransportFactory::Terminate();
|
ImageTransportFactory::Terminate();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2459,21 +2460,21 @@ TEST_F(RenderWidgetHostViewAuraTest, DiscardDelegatedFramesWithMemoryPressure) {
|
|||||||
|
|
||||||
// If we hide one, it should not get evicted.
|
// If we hide one, it should not get evicted.
|
||||||
views[0]->Hide();
|
views[0]->Hide();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(views[0]->HasFrameData());
|
EXPECT_TRUE(views[0]->HasFrameData());
|
||||||
// Using a lesser memory pressure event however, should evict.
|
// Using a lesser memory pressure event however, should evict.
|
||||||
SimulateMemoryPressure(
|
SimulateMemoryPressure(
|
||||||
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE);
|
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_MODERATE);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(views[0]->HasFrameData());
|
EXPECT_FALSE(views[0]->HasFrameData());
|
||||||
|
|
||||||
// Check the same for a higher pressure event.
|
// Check the same for a higher pressure event.
|
||||||
views[1]->Hide();
|
views[1]->Hide();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_TRUE(views[1]->HasFrameData());
|
EXPECT_TRUE(views[1]->HasFrameData());
|
||||||
SimulateMemoryPressure(
|
SimulateMemoryPressure(
|
||||||
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
|
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_FALSE(views[1]->HasFrameData());
|
EXPECT_FALSE(views[1]->HasFrameData());
|
||||||
|
|
||||||
for (size_t i = 0; i < renderer_count; ++i) {
|
for (size_t i = 0; i < renderer_count; ++i) {
|
||||||
@@ -3320,7 +3321,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromMilliseconds(15));
|
base::TimeDelta::FromMilliseconds(15));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
||||||
@@ -3427,7 +3428,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest, OverscrollWithTouchEvents) {
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromMilliseconds(10));
|
base::TimeDelta::FromMilliseconds(10));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1U, sink_->message_count());
|
EXPECT_EQ(1U, sink_->message_count());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
||||||
@@ -3473,7 +3474,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromMilliseconds(10));
|
base::TimeDelta::FromMilliseconds(10));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->completed_mode());
|
||||||
@@ -3508,7 +3509,7 @@ TEST_F(RenderWidgetHostViewAuraOverscrollTest,
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
base::TimeDelta::FromMilliseconds(10));
|
base::TimeDelta::FromMilliseconds(10));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
EXPECT_EQ(OVERSCROLL_NONE, overscroll_delegate()->current_mode());
|
||||||
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
|
EXPECT_EQ(OVERSCROLL_EAST, overscroll_delegate()->completed_mode());
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "base/json/json_string_value_serializer.h"
|
#include "base/json/json_string_value_serializer.h"
|
||||||
#include "base/lazy_instance.h"
|
#include "base/lazy_instance.h"
|
||||||
#include "base/memory/singleton.h"
|
#include "base/memory/singleton.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
@@ -63,10 +64,9 @@ void EtwTracingAgent::StartAgentTracing(
|
|||||||
|
|
||||||
// Start the consumer thread and start consuming events.
|
// Start the consumer thread and start consuming events.
|
||||||
thread_.Start();
|
thread_.Start();
|
||||||
thread_.message_loop()->PostTask(
|
thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&EtwTracingAgent::TraceAndConsumeOnThread,
|
||||||
base::Bind(&EtwTracingAgent::TraceAndConsumeOnThread,
|
base::Unretained(this)));
|
||||||
base::Unretained(this)));
|
|
||||||
|
|
||||||
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
base::ThreadTaskRunnerHandle::Get()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
@@ -81,10 +81,9 @@ void EtwTracingAgent::StopAgentTracing(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Stop consuming and flush events.
|
// Stop consuming and flush events.
|
||||||
thread_.message_loop()->PostTask(FROM_HERE,
|
thread_.task_runner()->PostTask(FROM_HERE,
|
||||||
base::Bind(&EtwTracingAgent::FlushOnThread,
|
base::Bind(&EtwTracingAgent::FlushOnThread,
|
||||||
base::Unretained(this),
|
base::Unretained(this), callback));
|
||||||
callback));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void EtwTracingAgent::OnStopSystemTracingDone(
|
void EtwTracingAgent::OnStopSystemTracingDone(
|
||||||
|
@@ -173,7 +173,7 @@ class NavigationWatcher : public WebContentsObserver {
|
|||||||
if (navigated_)
|
if (navigated_)
|
||||||
return;
|
return;
|
||||||
should_quit_loop_ = true;
|
should_quit_loop_ = true;
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -241,11 +241,10 @@ void GpuWatchdogThread::DeliberatelyTerminateToRecoverFromHang() {
|
|||||||
base::ThreadTicks current_cpu_time = GetWatchedThreadTime();
|
base::ThreadTicks current_cpu_time = GetWatchedThreadTime();
|
||||||
base::TimeDelta time_since_arm = current_cpu_time - arm_cpu_time_;
|
base::TimeDelta time_since_arm = current_cpu_time - arm_cpu_time_;
|
||||||
if (use_thread_cpu_time_ && (time_since_arm < timeout_)) {
|
if (use_thread_cpu_time_ && (time_since_arm < timeout_)) {
|
||||||
message_loop()->PostDelayedTask(
|
task_runner()->PostDelayedTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(
|
base::Bind(&GpuWatchdogThread::DeliberatelyTerminateToRecoverFromHang,
|
||||||
&GpuWatchdogThread::DeliberatelyTerminateToRecoverFromHang,
|
weak_factory_.GetWeakPtr()),
|
||||||
weak_factory_.GetWeakPtr()),
|
|
||||||
timeout_ - time_since_arm);
|
timeout_ - time_since_arm);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "content/public/browser/render_process_host.h"
|
#include "content/public/browser/render_process_host.h"
|
||||||
@@ -124,7 +125,8 @@ void ContentBrowserTest::RunTestOnMainThreadLoop() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Pump startup related events.
|
// Pump startup related events.
|
||||||
base::MessageLoopForUI::current()->RunUntilIdle();
|
DCHECK(base::MessageLoopForUI::IsCurrent());
|
||||||
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
#if defined(OS_MACOSX)
|
#if defined(OS_MACOSX)
|
||||||
pool.Recycle();
|
pool.Recycle();
|
||||||
|
@@ -7,6 +7,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "content/common/media/audio_messages.h"
|
#include "content/common/media/audio_messages.h"
|
||||||
#include "content/renderer/media/audio_message_filter.h"
|
#include "content/renderer/media/audio_message_filter.h"
|
||||||
#include "media/audio/audio_output_ipc.h"
|
#include "media/audio/audio_output_ipc.h"
|
||||||
@@ -193,7 +194,7 @@ TEST(AudioMessageFilterTest, Delegates) {
|
|||||||
EXPECT_TRUE(delegate2.state_changed_received());
|
EXPECT_TRUE(delegate2.state_changed_received());
|
||||||
delegate2.Reset();
|
delegate2.Reset();
|
||||||
|
|
||||||
message_loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
ipc1->CloseStream();
|
ipc1->CloseStream();
|
||||||
ipc2->CloseStream();
|
ipc2->CloseStream();
|
||||||
|
@@ -309,10 +309,10 @@ TEST_F(MediaStreamVideoCapturerSourceTest, Ended) {
|
|||||||
EXPECT_CALL(mock_delegate(), GetCurrentSupportedFormats(_, _, _, _));
|
EXPECT_CALL(mock_delegate(), GetCurrentSupportedFormats(_, _, _, _));
|
||||||
EXPECT_CALL(mock_delegate(), StartCapture(_, _, _));
|
EXPECT_CALL(mock_delegate(), StartCapture(_, _, _));
|
||||||
blink::WebMediaStreamTrack track = StartSource();
|
blink::WebMediaStreamTrack track = StartSource();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
OnStarted(true);
|
OnStarted(true);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
|
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateLive,
|
||||||
webkit_source_.getReadyState());
|
webkit_source_.getReadyState());
|
||||||
|
|
||||||
@@ -320,7 +320,7 @@ TEST_F(MediaStreamVideoCapturerSourceTest, Ended) {
|
|||||||
|
|
||||||
EXPECT_CALL(mock_delegate(), StopCapture());
|
EXPECT_CALL(mock_delegate(), StopCapture());
|
||||||
OnStarted(false);
|
OnStarted(false);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
|
EXPECT_EQ(blink::WebMediaStreamSource::ReadyStateEnded,
|
||||||
webkit_source_.getReadyState());
|
webkit_source_.getReadyState());
|
||||||
// Verify that MediaStreamSource::SourceStoppedCallback has been triggered.
|
// Verify that MediaStreamSource::SourceStoppedCallback has been triggered.
|
||||||
|
@@ -149,12 +149,12 @@ TEST_F(MediaStreamVideoRendererSinkAsyncAddFrameReadyTest,
|
|||||||
const scoped_refptr<media::VideoFrame> video_frame =
|
const scoped_refptr<media::VideoFrame> video_frame =
|
||||||
media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80));
|
media::VideoFrame::CreateBlackFrame(gfx::Size(160, 80));
|
||||||
OnVideoFrame(video_frame);
|
OnVideoFrame(video_frame);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
ASSERT_EQ(1u, frame_ready_cbs_.size());
|
ASSERT_EQ(1u, frame_ready_cbs_.size());
|
||||||
|
|
||||||
EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
|
EXPECT_CALL(*this, RepaintCallback(video_frame)).Times(1);
|
||||||
frame_ready_cbs_[0].Run();
|
frame_ready_cbs_[0].Run();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
media_stream_video_renderer_sink_->Stop();
|
media_stream_video_renderer_sink_->Stop();
|
||||||
}
|
}
|
||||||
@@ -190,7 +190,7 @@ TEST_F(MediaStreamVideoRendererSinkTransparencyTest,
|
|||||||
media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12A, kSize,
|
media::VideoFrame::CreateFrame(media::PIXEL_FORMAT_YV12A, kSize,
|
||||||
gfx::Rect(kSize), kSize, kTimestamp);
|
gfx::Rect(kSize), kSize, kTimestamp);
|
||||||
OnVideoFrame(video_frame);
|
OnVideoFrame(video_frame);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
media_stream_video_renderer_sink_->Stop();
|
media_stream_video_renderer_sink_->Stop();
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,6 @@
|
|||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
#include "base/files/file_path.h"
|
#include "base/files/file_path.h"
|
||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
@@ -37,6 +36,7 @@
|
|||||||
#include "url/gurl.h"
|
#include "url/gurl.h"
|
||||||
|
|
||||||
#if defined(OS_ANDROID)
|
#if defined(OS_ANDROID)
|
||||||
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "components/crash/content/browser/crash_dump_manager_android.h"
|
#include "components/crash/content/browser/crash_dump_manager_android.h"
|
||||||
#include "components/crash/content/browser/crash_dump_observer_android.h"
|
#include "components/crash/content/browser/crash_dump_observer_android.h"
|
||||||
#include "net/android/network_change_notifier_factory_android.h"
|
#include "net/android/network_change_notifier_factory_android.h"
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/stl_util.h"
|
#include "base/stl_util.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
@@ -441,9 +442,8 @@ TEST_F(EndToEndAsyncTest, CancelPendingCalls) {
|
|||||||
|
|
||||||
// We shouldn't receive any responses. Wait for a while just to make sure.
|
// We shouldn't receive any responses. Wait for a while just to make sure.
|
||||||
run_loop_.reset(new base::RunLoop);
|
run_loop_.reset(new base::RunLoop);
|
||||||
message_loop_.PostDelayedTask(FROM_HERE,
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
run_loop_->QuitClosure(),
|
FROM_HERE, run_loop_->QuitClosure(), TestTimeouts::tiny_timeout());
|
||||||
TestTimeouts::tiny_timeout());
|
|
||||||
run_loop_->Run();
|
run_loop_->Run();
|
||||||
EXPECT_TRUE(response_strings_.empty());
|
EXPECT_TRUE(response_strings_.empty());
|
||||||
}
|
}
|
||||||
@@ -565,9 +565,8 @@ TEST_F(EndToEndAsyncTest, EmptyResponseCallback) {
|
|||||||
ObjectProxy::EmptyResponseCallback());
|
ObjectProxy::EmptyResponseCallback());
|
||||||
// Post a delayed task to quit the message loop.
|
// Post a delayed task to quit the message loop.
|
||||||
run_loop_.reset(new base::RunLoop);
|
run_loop_.reset(new base::RunLoop);
|
||||||
message_loop_.PostDelayedTask(FROM_HERE,
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
run_loop_->QuitClosure(),
|
FROM_HERE, run_loop_->QuitClosure(), TestTimeouts::tiny_timeout());
|
||||||
TestTimeouts::tiny_timeout());
|
|
||||||
run_loop_->Run();
|
run_loop_->Run();
|
||||||
// We cannot tell if the empty callback is called, but at least we can
|
// We cannot tell if the empty callback is called, but at least we can
|
||||||
// check if the test does not crash.
|
// check if the test does not crash.
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "dbus/message.h"
|
#include "dbus/message.h"
|
||||||
#include "dbus/mock_bus.h"
|
#include "dbus/mock_bus.h"
|
||||||
#include "dbus/mock_exported_object.h"
|
#include "dbus/mock_exported_object.h"
|
||||||
@@ -121,11 +122,10 @@ class MockTest : public testing::Test {
|
|||||||
int timeout_ms,
|
int timeout_ms,
|
||||||
ObjectProxy::ResponseCallback response_callback) {
|
ObjectProxy::ResponseCallback response_callback) {
|
||||||
Response* response = CreateMockProxyResponse(method_call, timeout_ms);
|
Response* response = CreateMockProxyResponse(method_call, timeout_ms);
|
||||||
message_loop_.PostTask(FROM_HERE,
|
message_loop_.task_runner()->PostTask(
|
||||||
base::Bind(&MockTest::RunResponseCallback,
|
FROM_HERE,
|
||||||
base::Unretained(this),
|
base::Bind(&MockTest::RunResponseCallback, base::Unretained(this),
|
||||||
response_callback,
|
response_callback, response));
|
||||||
response));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Runs the given response callback with the given response.
|
// Runs the given response callback with the given response.
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
#include "dbus/bus.h"
|
#include "dbus/bus.h"
|
||||||
@@ -404,10 +405,9 @@ TEST_F(ObjectManagerTest, PropertiesChangedAsObjectsReceived) {
|
|||||||
// after setting up the match rule for PropertiesChanged. We should process
|
// after setting up the match rule for PropertiesChanged. We should process
|
||||||
// the PropertiesChanged event right after that. If we don't receive it within
|
// the PropertiesChanged event right after that. If we don't receive it within
|
||||||
// 2 seconds, then fail the test.
|
// 2 seconds, then fail the test.
|
||||||
message_loop_.PostDelayedTask(
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&ObjectManagerTest::PropertiesChangedTestTimeout,
|
||||||
base::Bind(&ObjectManagerTest::PropertiesChangedTestTimeout,
|
base::Unretained(this)),
|
||||||
base::Unretained(this)),
|
|
||||||
base::TimeDelta::FromSeconds(2));
|
base::TimeDelta::FromSeconds(2));
|
||||||
|
|
||||||
while (last_name_value_ != "ChangedTestServiceName" && !timeout_expired_) {
|
while (last_name_value_ != "ChangedTestServiceName" && !timeout_expired_) {
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
#include "base/metrics/histogram_samples.h"
|
#include "base/metrics/histogram_samples.h"
|
||||||
#include "base/metrics/statistics_recorder.h"
|
#include "base/metrics/statistics_recorder.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/threading/platform_thread.h"
|
#include "base/threading/platform_thread.h"
|
||||||
#include "base/threading/thread_restrictions.h"
|
#include "base/threading/thread_restrictions.h"
|
||||||
@@ -117,7 +118,7 @@ class SignalSenderVerificationTest : public testing::Test {
|
|||||||
void OnOwnership(bool expected, bool success) {
|
void OnOwnership(bool expected, bool success) {
|
||||||
ASSERT_EQ(expected, success);
|
ASSERT_EQ(expected, success);
|
||||||
// PostTask to quit the MessageLoop as this is called from D-Bus thread.
|
// PostTask to quit the MessageLoop as this is called from D-Bus thread.
|
||||||
message_loop_.PostTask(
|
message_loop_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&SignalSenderVerificationTest::OnOwnershipInternal,
|
base::Bind(&SignalSenderVerificationTest::OnOwnershipInternal,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/guid.h"
|
#include "base/guid.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/threading/platform_thread.h"
|
#include "base/threading/platform_thread.h"
|
||||||
#include "dbus/bus.h"
|
#include "dbus/bus.h"
|
||||||
@@ -75,10 +76,9 @@ bool TestService::WaitUntilServiceIsStarted() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::ShutdownAndBlock() {
|
void TestService::ShutdownAndBlock() {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::ShutdownAndBlockInternal,
|
||||||
base::Bind(&TestService::ShutdownAndBlockInternal,
|
base::Unretained(this)));
|
||||||
base::Unretained(this)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TestService::HasDBusThread() {
|
bool TestService::HasDBusThread() {
|
||||||
@@ -93,19 +93,15 @@ void TestService::ShutdownAndBlockInternal() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendTestSignal(const std::string& message) {
|
void TestService::SendTestSignal(const std::string& message) {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::SendTestSignalInternal,
|
||||||
base::Bind(&TestService::SendTestSignalInternal,
|
base::Unretained(this), message));
|
||||||
base::Unretained(this),
|
|
||||||
message));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendTestSignalFromRoot(const std::string& message) {
|
void TestService::SendTestSignalFromRoot(const std::string& message) {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::SendTestSignalFromRootInternal,
|
||||||
base::Bind(&TestService::SendTestSignalFromRootInternal,
|
base::Unretained(this), message));
|
||||||
base::Unretained(this),
|
|
||||||
message));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendTestSignalInternal(const std::string& message) {
|
void TestService::SendTestSignalInternal(const std::string& message) {
|
||||||
@@ -132,11 +128,9 @@ void TestService::SendTestSignalFromRootInternal(const std::string& message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::RequestOwnership(base::Callback<void(bool)> callback) {
|
void TestService::RequestOwnership(base::Callback<void(bool)> callback) {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::RequestOwnershipInternal,
|
||||||
base::Bind(&TestService::RequestOwnershipInternal,
|
base::Unretained(this), callback));
|
||||||
base::Unretained(this),
|
|
||||||
callback));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::RequestOwnershipInternal(
|
void TestService::RequestOwnershipInternal(
|
||||||
@@ -330,12 +324,10 @@ void TestService::SlowEcho(MethodCall* method_call,
|
|||||||
void TestService::AsyncEcho(MethodCall* method_call,
|
void TestService::AsyncEcho(MethodCall* method_call,
|
||||||
ExportedObject::ResponseSender response_sender) {
|
ExportedObject::ResponseSender response_sender) {
|
||||||
// Schedule a call to Echo() to send an asynchronous response after we return.
|
// Schedule a call to Echo() to send an asynchronous response after we return.
|
||||||
message_loop()->PostDelayedTask(FROM_HERE,
|
message_loop()->task_runner()->PostDelayedTask(
|
||||||
base::Bind(&TestService::Echo,
|
FROM_HERE, base::Bind(&TestService::Echo, base::Unretained(this),
|
||||||
base::Unretained(this),
|
method_call, response_sender),
|
||||||
method_call,
|
TestTimeouts::tiny_timeout());
|
||||||
response_sender),
|
|
||||||
TestTimeouts::tiny_timeout());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::BrokenMethod(MethodCall* method_call,
|
void TestService::BrokenMethod(MethodCall* method_call,
|
||||||
@@ -648,11 +640,9 @@ void TestService::AddPropertiesToWriter(MessageWriter* writer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::AddObject(const ObjectPath& object_path) {
|
void TestService::AddObject(const ObjectPath& object_path) {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::AddObjectInternal,
|
||||||
base::Bind(&TestService::AddObjectInternal,
|
base::Unretained(this), object_path));
|
||||||
base::Unretained(this),
|
|
||||||
object_path));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::AddObjectInternal(const ObjectPath& object_path) {
|
void TestService::AddObjectInternal(const ObjectPath& object_path) {
|
||||||
@@ -674,10 +664,9 @@ void TestService::AddObjectInternal(const ObjectPath& object_path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::RemoveObject(const ObjectPath& object_path) {
|
void TestService::RemoveObject(const ObjectPath& object_path) {
|
||||||
message_loop()->PostTask(FROM_HERE,
|
message_loop()->task_runner()->PostTask(
|
||||||
base::Bind(&TestService::RemoveObjectInternal,
|
FROM_HERE, base::Bind(&TestService::RemoveObjectInternal,
|
||||||
base::Unretained(this),
|
base::Unretained(this), object_path));
|
||||||
object_path));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::RemoveObjectInternal(const ObjectPath& object_path) {
|
void TestService::RemoveObjectInternal(const ObjectPath& object_path) {
|
||||||
@@ -694,11 +683,9 @@ void TestService::RemoveObjectInternal(const ObjectPath& object_path) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendPropertyChangedSignal(const std::string& name) {
|
void TestService::SendPropertyChangedSignal(const std::string& name) {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE, base::Bind(&TestService::SendPropertyChangedSignalInternal,
|
||||||
base::Bind(&TestService::SendPropertyChangedSignalInternal,
|
base::Unretained(this), name));
|
||||||
base::Unretained(this),
|
|
||||||
name));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendPropertyChangedSignalInternal(const std::string& name) {
|
void TestService::SendPropertyChangedSignalInternal(const std::string& name) {
|
||||||
@@ -725,7 +712,7 @@ void TestService::SendPropertyChangedSignalInternal(const std::string& name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TestService::SendPropertyInvalidatedSignal() {
|
void TestService::SendPropertyInvalidatedSignal() {
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&TestService::SendPropertyInvalidatedSignalInternal,
|
FROM_HERE, base::Bind(&TestService::SendPropertyInvalidatedSignalInternal,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/metrics/histogram.h"
|
#include "base/metrics/histogram.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "base/version.h"
|
#include "base/version.h"
|
||||||
@@ -315,7 +316,7 @@ class BatteryStatusManagerLinux::BatteryStatusNotificationThread
|
|||||||
~BatteryStatusNotificationThread() override {
|
~BatteryStatusNotificationThread() override {
|
||||||
// Make sure to shutdown the dbus connection if it is still open in the very
|
// Make sure to shutdown the dbus connection if it is still open in the very
|
||||||
// end. It needs to happen on the BatteryStatusNotificationThread.
|
// end. It needs to happen on the BatteryStatusNotificationThread.
|
||||||
message_loop()->PostTask(
|
message_loop()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&BatteryStatusNotificationThread::ShutdownDBusConnection,
|
base::Bind(&BatteryStatusNotificationThread::ShutdownDBusConnection,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
@@ -464,9 +465,8 @@ class BatteryStatusManagerLinux::BatteryStatusNotificationThread
|
|||||||
|
|
||||||
// Shutdown DBus connection later because there may be pending tasks on
|
// Shutdown DBus connection later because there may be pending tasks on
|
||||||
// this thread.
|
// this thread.
|
||||||
message_loop()->PostTask(FROM_HERE,
|
message_loop()->task_runner()->PostTask(
|
||||||
base::Bind(&dbus::Bus::ShutdownAndBlock,
|
FROM_HERE, base::Bind(&dbus::Bus::ShutdownAndBlock, system_bus_));
|
||||||
system_bus_));
|
|
||||||
system_bus_ = NULL;
|
system_bus_ = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -569,7 +569,7 @@ bool BatteryStatusManagerLinux::StartListeningBatteryChange() {
|
|||||||
if (!StartNotifierThreadIfNecessary())
|
if (!StartNotifierThreadIfNecessary())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
notifier_thread_->message_loop()->PostTask(
|
notifier_thread_->task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&BatteryStatusNotificationThread::StartListening,
|
FROM_HERE, base::Bind(&BatteryStatusNotificationThread::StartListening,
|
||||||
base::Unretained(notifier_thread_.get())));
|
base::Unretained(notifier_thread_.get())));
|
||||||
return true;
|
return true;
|
||||||
@@ -579,7 +579,7 @@ void BatteryStatusManagerLinux::StopListeningBatteryChange() {
|
|||||||
if (!notifier_thread_)
|
if (!notifier_thread_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
notifier_thread_->message_loop()->PostTask(
|
notifier_thread_->task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&BatteryStatusNotificationThread::StopListening,
|
FROM_HERE, base::Bind(&BatteryStatusNotificationThread::StopListening,
|
||||||
base::Unretained(notifier_thread_.get())));
|
base::Unretained(notifier_thread_.get())));
|
||||||
}
|
}
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter.h"
|
#include "device/bluetooth/bluetooth_adapter.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
||||||
#include "device/bluetooth/bluetooth_uuid.h"
|
#include "device/bluetooth/bluetooth_uuid.h"
|
||||||
@@ -58,7 +59,7 @@ class BluetoothAdapterProfileBlueZTest : public testing::Test {
|
|||||||
device::BluetoothAdapterFactory::GetAdapter(
|
device::BluetoothAdapterFactory::GetAdapter(
|
||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::AdapterCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::AdapterCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_TRUE(adapter_.get() != nullptr);
|
ASSERT_TRUE(adapter_.get() != nullptr);
|
||||||
ASSERT_TRUE(adapter_->IsInitialized());
|
ASSERT_TRUE(adapter_->IsInitialized());
|
||||||
ASSERT_TRUE(adapter_->IsPresent());
|
ASSERT_TRUE(adapter_->IsPresent());
|
||||||
@@ -181,7 +182,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, DelegateCount) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(profile_);
|
EXPECT_TRUE(profile_);
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
@@ -218,7 +219,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, BlackHole) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(profile_);
|
EXPECT_TRUE(profile_);
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
@@ -232,7 +233,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, BlackHole) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -253,7 +254,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, Routing) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
ASSERT_TRUE(profile_);
|
ASSERT_TRUE(profile_);
|
||||||
ASSERT_EQ(1U, success_callback_count_);
|
ASSERT_EQ(1U, success_callback_count_);
|
||||||
@@ -274,7 +275,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, Routing) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(2U, success_callback_count_);
|
EXPECT_EQ(2U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -289,7 +290,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, Routing) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(3U, success_callback_count_);
|
EXPECT_EQ(3U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -305,7 +306,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, Routing) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(4U, success_callback_count_);
|
EXPECT_EQ(4U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -339,7 +340,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegister) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_TRUE(profile_user_ptr_);
|
EXPECT_TRUE(profile_user_ptr_);
|
||||||
EXPECT_EQ(2U, success_callback_count_);
|
EXPECT_EQ(2U, success_callback_count_);
|
||||||
@@ -350,7 +351,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegister) {
|
|||||||
adapter->ReleaseProfile(fake_delegate_autopair_.device_path_,
|
adapter->ReleaseProfile(fake_delegate_autopair_.device_path_,
|
||||||
profile_user_ptr_);
|
profile_user_ptr_);
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegisterFail) {
|
TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegisterFail) {
|
||||||
@@ -380,7 +381,7 @@ TEST_F(BluetoothAdapterProfileBlueZTest, SimultaneousRegisterFail) {
|
|||||||
base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback,
|
base::Bind(&BluetoothAdapterProfileBlueZTest::BasicErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_FALSE(profile_user_ptr_);
|
EXPECT_FALSE(profile_user_ptr_);
|
||||||
EXPECT_EQ(0U, success_callback_count_);
|
EXPECT_EQ(0U, success_callback_count_);
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter.h"
|
#include "device/bluetooth/bluetooth_adapter.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
||||||
#include "device/bluetooth/bluetooth_advertisement.h"
|
#include "device/bluetooth/bluetooth_advertisement.h"
|
||||||
@@ -82,7 +83,7 @@ class BluetoothAdvertisementBlueZTest : public testing::Test {
|
|||||||
BluetoothAdapterFactory::GetAdapter(
|
BluetoothAdapterFactory::GetAdapter(
|
||||||
base::Bind(&BluetoothAdvertisementBlueZTest::GetAdapterCallback,
|
base::Bind(&BluetoothAdvertisementBlueZTest::GetAdapterCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called whenever BluetoothAdapter is retrieved successfully.
|
// Called whenever BluetoothAdapter is retrieved successfully.
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "dbus/object_path.h"
|
#include "dbus/object_path.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter.h"
|
#include "device/bluetooth/bluetooth_adapter.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
||||||
@@ -134,7 +135,7 @@ class BluetoothAudioSinkBlueZTest : public testing::Test {
|
|||||||
BluetoothAdapterFactory::GetAdapter(
|
BluetoothAdapterFactory::GetAdapter(
|
||||||
base::Bind(&BluetoothAudioSinkBlueZTest::GetAdapterCallback,
|
base::Bind(&BluetoothAudioSinkBlueZTest::GetAdapterCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called whenever BluetoothAdapter is retrieved successfully.
|
// Called whenever BluetoothAdapter is retrieved successfully.
|
||||||
|
@@ -222,7 +222,7 @@ class BluetoothBlueZTest : public testing::Test {
|
|||||||
continue;
|
continue;
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
session->Stop(GetCallback(), GetErrorCallback());
|
session->Stop(GetCallback(), GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_EQ(1, callback_count_);
|
ASSERT_EQ(1, callback_count_);
|
||||||
}
|
}
|
||||||
discovery_sessions_.clear();
|
discovery_sessions_.clear();
|
||||||
@@ -306,7 +306,7 @@ class BluetoothBlueZTest : public testing::Test {
|
|||||||
void GetAdapter() {
|
void GetAdapter() {
|
||||||
adapter_ = new BluetoothAdapterBlueZ(base::Bind(
|
adapter_ = new BluetoothAdapterBlueZ(base::Bind(
|
||||||
&BluetoothBlueZTest::AdapterCallback, base::Unretained(this)));
|
&BluetoothBlueZTest::AdapterCallback, base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_TRUE(adapter_.get() != nullptr);
|
ASSERT_TRUE(adapter_.get() != nullptr);
|
||||||
ASSERT_TRUE(adapter_->IsInitialized());
|
ASSERT_TRUE(adapter_->IsInitialized());
|
||||||
}
|
}
|
||||||
@@ -328,7 +328,7 @@ class BluetoothBlueZTest : public testing::Test {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_EQ(2, callback_count_);
|
ASSERT_EQ(2, callback_count_);
|
||||||
ASSERT_EQ(0, error_callback_count_);
|
ASSERT_EQ(0, error_callback_count_);
|
||||||
ASSERT_EQ((size_t)1, discovery_sessions_.size());
|
ASSERT_EQ((size_t)1, discovery_sessions_.size());
|
||||||
@@ -340,10 +340,10 @@ class BluetoothBlueZTest : public testing::Test {
|
|||||||
|
|
||||||
while (!observer.device_removed_count() &&
|
while (!observer.device_removed_count() &&
|
||||||
observer.last_device_address() != address)
|
observer.last_device_address() != address)
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_EQ(1, callback_count_);
|
ASSERT_EQ(1, callback_count_);
|
||||||
ASSERT_EQ(0, error_callback_count_);
|
ASSERT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -723,7 +723,7 @@ TEST_F(BluetoothBlueZTest, StopDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -739,7 +739,7 @@ TEST_F(BluetoothBlueZTest, StopDiscovery) {
|
|||||||
TestBluetoothAdapterObserver observer(adapter_);
|
TestBluetoothAdapterObserver observer(adapter_);
|
||||||
|
|
||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
|
|
||||||
@@ -757,7 +757,7 @@ TEST_F(BluetoothBlueZTest, StopDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -769,7 +769,7 @@ TEST_F(BluetoothBlueZTest, StopDiscovery) {
|
|||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
discovery_sessions_.clear();
|
discovery_sessions_.clear();
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
}
|
}
|
||||||
@@ -786,7 +786,7 @@ TEST_F(BluetoothBlueZTest, Discovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -797,19 +797,19 @@ TEST_F(BluetoothBlueZTest, Discovery) {
|
|||||||
ASSERT_TRUE(discovery_sessions_[0]->IsActive());
|
ASSERT_TRUE(discovery_sessions_[0]->IsActive());
|
||||||
|
|
||||||
// First two devices to appear.
|
// First two devices to appear.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(2, observer.device_added_count());
|
EXPECT_EQ(2, observer.device_added_count());
|
||||||
EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress,
|
EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kLowEnergyAddress,
|
||||||
observer.last_device_address());
|
observer.last_device_address());
|
||||||
|
|
||||||
// Next we should get another two devices...
|
// Next we should get another two devices...
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(4, observer.device_added_count());
|
EXPECT_EQ(4, observer.device_added_count());
|
||||||
|
|
||||||
// Okay, let's run forward until a device is actually removed...
|
// Okay, let's run forward until a device is actually removed...
|
||||||
while (!observer.device_removed_count())
|
while (!observer.device_removed_count())
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, observer.device_removed_count());
|
EXPECT_EQ(1, observer.device_removed_count());
|
||||||
EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kVanishingDeviceAddress,
|
EXPECT_EQ(bluez::FakeBluetoothDeviceClient::kVanishingDeviceAddress,
|
||||||
@@ -823,7 +823,7 @@ TEST_F(BluetoothBlueZTest, PoweredAndDiscovering) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -904,7 +904,7 @@ TEST_F(BluetoothBlueZTest, MultipleDiscoverySessions) {
|
|||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// The observer should have received the discovering changed event exactly
|
// The observer should have received the discovering changed event exactly
|
||||||
// once, the success callback should have been called 3 times and the adapter
|
// once, the success callback should have been called 3 times and the adapter
|
||||||
@@ -957,7 +957,7 @@ TEST_F(BluetoothBlueZTest, MultipleDiscoverySessions) {
|
|||||||
discovery_sessions_[i]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[i]->Stop(GetCallback(), GetErrorCallback());
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// The observer should have received the discovering changed event exactly
|
// The observer should have received the discovering changed event exactly
|
||||||
// once, the success callback should have been called 4 times and the adapter
|
// once, the success callback should have been called 4 times and the adapter
|
||||||
@@ -1008,7 +1008,7 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// The observer should have received the discovering changed event exactly
|
// The observer should have received the discovering changed event exactly
|
||||||
// once, the success callback should have been called 3 times and the adapter
|
// once, the success callback should have been called 3 times and the adapter
|
||||||
@@ -1042,7 +1042,7 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
||||||
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, observer.discovering_changed_count());
|
EXPECT_EQ(2, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(4, callback_count_);
|
EXPECT_EQ(4, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1062,7 +1062,7 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(3, observer.discovering_changed_count());
|
EXPECT_EQ(3, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(6, callback_count_);
|
EXPECT_EQ(6, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1108,7 +1108,8 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run(); // Run the loop, as there should have been a D-Bus call.
|
// Run the loop, as there should have been a D-Bus call.
|
||||||
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(5, observer.discovering_changed_count());
|
EXPECT_EQ(5, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(7, callback_count_);
|
EXPECT_EQ(7, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1118,7 +1119,8 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
EXPECT_TRUE(discovery_sessions_[0]->IsActive());
|
EXPECT_TRUE(discovery_sessions_[0]->IsActive());
|
||||||
|
|
||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
message_loop_.Run(); // Run the loop, as there should have been a D-Bus call.
|
// Run the loop, as there should have been a D-Bus call.
|
||||||
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(5, observer.discovering_changed_count());
|
EXPECT_EQ(5, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(8, callback_count_);
|
EXPECT_EQ(8, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1132,7 +1134,8 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run(); // Run the loop, as there should have been a D-Bus call.
|
// Run the loop, as there should have been a D-Bus call.
|
||||||
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(5, observer.discovering_changed_count());
|
EXPECT_EQ(5, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(9, callback_count_);
|
EXPECT_EQ(9, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1148,7 +1151,7 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
||||||
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(5, observer.discovering_changed_count());
|
EXPECT_EQ(5, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(10, callback_count_);
|
EXPECT_EQ(10, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1158,7 +1161,7 @@ TEST_F(BluetoothBlueZTest, UnexpectedChangesDuringMultipleDiscoverySessions) {
|
|||||||
// Now end the discovery session. This should change the adapter's discovery
|
// Now end the discovery session. This should change the adapter's discovery
|
||||||
// state.
|
// state.
|
||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(6, observer.discovering_changed_count());
|
EXPECT_EQ(6, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(11, callback_count_);
|
EXPECT_EQ(11, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1189,7 +1192,7 @@ TEST_F(BluetoothBlueZTest, InvalidatedDiscoverySessions) {
|
|||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// The observer should have received the discovering changed event exactly
|
// The observer should have received the discovering changed event exactly
|
||||||
// once, the success callback should have been called 3 times and the adapter
|
// once, the success callback should have been called 3 times and the adapter
|
||||||
@@ -1226,7 +1229,7 @@ TEST_F(BluetoothBlueZTest, InvalidatedDiscoverySessions) {
|
|||||||
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
dbus::ObjectPath(bluez::FakeBluetoothAdapterClient::kAdapterPath),
|
||||||
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, observer.discovering_changed_count());
|
EXPECT_EQ(2, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(4, callback_count_);
|
EXPECT_EQ(4, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1284,7 +1287,7 @@ TEST_F(BluetoothBlueZTest, QueuedDiscoveryRequests) {
|
|||||||
|
|
||||||
// Process the pending call. The queued calls should execute and the discovery
|
// Process the pending call. The queued calls should execute and the discovery
|
||||||
// session reference count should increase.
|
// session reference count should increase.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(3, callback_count_);
|
EXPECT_EQ(3, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
@@ -1328,7 +1331,7 @@ TEST_F(BluetoothBlueZTest, QueuedDiscoveryRequests) {
|
|||||||
ASSERT_EQ((size_t)3, discovery_sessions_.size());
|
ASSERT_EQ((size_t)3, discovery_sessions_.size());
|
||||||
|
|
||||||
// Run the pending request.
|
// Run the pending request.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(6, callback_count_);
|
EXPECT_EQ(6, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
EXPECT_EQ(3, observer.discovering_changed_count());
|
EXPECT_EQ(3, observer.discovering_changed_count());
|
||||||
@@ -1339,7 +1342,7 @@ TEST_F(BluetoothBlueZTest, QueuedDiscoveryRequests) {
|
|||||||
|
|
||||||
// The queued request to start discovery should have been issued but is still
|
// The queued request to start discovery should have been issued but is still
|
||||||
// pending. Run the loop and verify.
|
// pending. Run the loop and verify.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(7, callback_count_);
|
EXPECT_EQ(7, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
EXPECT_EQ(3, observer.discovering_changed_count());
|
EXPECT_EQ(3, observer.discovering_changed_count());
|
||||||
@@ -1370,7 +1373,7 @@ TEST_F(BluetoothBlueZTest, StartDiscoverySession) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1386,7 +1389,7 @@ TEST_F(BluetoothBlueZTest, StartDiscoverySession) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1400,7 +1403,7 @@ TEST_F(BluetoothBlueZTest, StartDiscoverySession) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(3, callback_count_);
|
EXPECT_EQ(3, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1413,7 +1416,7 @@ TEST_F(BluetoothBlueZTest, StartDiscoverySession) {
|
|||||||
// Stop the previous discovery session. The session should end but discovery
|
// Stop the previous discovery session. The session should end but discovery
|
||||||
// should continue.
|
// should continue.
|
||||||
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
discovery_sessions_[0]->Stop(GetCallback(), GetErrorCallback());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(4, callback_count_);
|
EXPECT_EQ(4, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1426,7 +1429,7 @@ TEST_F(BluetoothBlueZTest, StartDiscoverySession) {
|
|||||||
// Delete the current active session. Discovery should eventually stop.
|
// Delete the current active session. Discovery should eventually stop.
|
||||||
discovery_sessions_.clear();
|
discovery_sessions_.clear();
|
||||||
while (observer.last_discovering())
|
while (observer.last_discovering())
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(2, observer.discovering_changed_count());
|
EXPECT_EQ(2, observer.discovering_changed_count());
|
||||||
EXPECT_EQ(4, callback_count_);
|
EXPECT_EQ(4, callback_count_);
|
||||||
@@ -1456,7 +1459,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -1479,7 +1482,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1522,7 +1525,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscoveryFail) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
error_callback_count_ = 0;
|
error_callback_count_ = 0;
|
||||||
@@ -1580,8 +1583,8 @@ TEST_F(BluetoothBlueZTest, QueuedSetDiscoveryFilterBeforeStartDiscovery) {
|
|||||||
|
|
||||||
// Run requests, on DBus level there should be call SetDiscoveryFilter, then
|
// Run requests, on DBus level there should be call SetDiscoveryFilter, then
|
||||||
// StartDiscovery, then SetDiscoveryFilter again.
|
// StartDiscovery, then SetDiscoveryFilter again.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1612,7 +1615,7 @@ TEST_F(BluetoothBlueZTest, QueuedSetDiscoveryFilterBeforeStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1675,7 +1678,7 @@ TEST_F(BluetoothBlueZTest, QueuedSetDiscoveryFilterBeforeStartDiscoveryFail) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// First request to SetDiscoveryFilter should fail, resulting in no session
|
// First request to SetDiscoveryFilter should fail, resulting in no session
|
||||||
// being created.
|
// being created.
|
||||||
@@ -1687,7 +1690,7 @@ TEST_F(BluetoothBlueZTest, QueuedSetDiscoveryFilterBeforeStartDiscoveryFail) {
|
|||||||
ASSERT_FALSE(adapter_->IsDiscovering());
|
ASSERT_FALSE(adapter_->IsDiscovering());
|
||||||
ASSERT_EQ((size_t)0, discovery_sessions_.size());
|
ASSERT_EQ((size_t)0, discovery_sessions_.size());
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Second request should succeed
|
// Second request should succeed
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
@@ -1711,7 +1714,7 @@ TEST_F(BluetoothBlueZTest, QueuedSetDiscoveryFilterBeforeStartDiscoveryFail) {
|
|||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1740,7 +1743,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterAfterStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(2, callback_count_);
|
EXPECT_EQ(2, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -1770,7 +1773,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterAfterStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
@@ -1789,7 +1792,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterAfterStartDiscovery) {
|
|||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1850,7 +1853,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscoveryMultiple) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
EXPECT_EQ(1, observer.discovering_changed_count());
|
EXPECT_EQ(1, observer.discovering_changed_count());
|
||||||
@@ -1897,7 +1900,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscoveryMultiple) {
|
|||||||
discovery_sessions_[i]->Stop(
|
discovery_sessions_[i]->Stop(
|
||||||
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
base::Bind(&BluetoothBlueZTest::Callback, base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
@@ -1975,7 +1978,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscoveryMultiple) {
|
|||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
// each result in 1 requests.
|
// each result in 1 requests.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
@@ -2016,10 +2019,10 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterBeforeStartDiscoveryMultiple) {
|
|||||||
// filter no 2 is same as filter no 5, so removing it shouldn't cause any
|
// filter no 2 is same as filter no 5, so removing it shouldn't cause any
|
||||||
// filter update
|
// filter update
|
||||||
if (i != 2 && i != 5)
|
if (i != 2 && i != 5)
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
// Run only once, as there should have been one D-Bus call.
|
// Run only once, as there should have been one D-Bus call.
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// The success callback should have been called 4 times and the adapter should
|
// The success callback should have been called 4 times and the adapter should
|
||||||
// no longer be discovering.
|
// no longer be discovering.
|
||||||
@@ -2056,7 +2059,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterMergingTest) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
auto* filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
EXPECT_EQ("le", *filter->transport);
|
EXPECT_EQ("le", *filter->transport);
|
||||||
@@ -2077,7 +2080,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterMergingTest) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
EXPECT_EQ("le", *filter->transport);
|
EXPECT_EQ("le", *filter->transport);
|
||||||
@@ -2101,7 +2104,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterMergingTest) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
EXPECT_EQ("auto", *filter->transport);
|
EXPECT_EQ("auto", *filter->transport);
|
||||||
@@ -2119,7 +2122,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterMergingTest) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
filter = fake_bluetooth_adapter_client_->GetDiscoveryFilter();
|
||||||
EXPECT_EQ("auto", *filter->transport);
|
EXPECT_EQ("auto", *filter->transport);
|
||||||
@@ -2134,7 +2137,7 @@ TEST_F(BluetoothBlueZTest, SetDiscoveryFilterMergingTest) {
|
|||||||
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
base::Bind(&BluetoothBlueZTest::ErrorCallback, base::Unretained(this)));
|
||||||
|
|
||||||
// Every session stopping would trigger filter update
|
// Every session stopping would trigger filter update
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2855,7 +2858,7 @@ TEST_F(BluetoothBlueZTest, PairTrustedDevice) {
|
|||||||
|
|
||||||
// Confirm the passkey.
|
// Confirm the passkey.
|
||||||
device->ConfirmPairing();
|
device->ConfirmPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
|
|
||||||
@@ -2921,7 +2924,7 @@ TEST_F(BluetoothBlueZTest, PairLegacyAutopair) {
|
|||||||
EXPECT_EQ(0, pairing_delegate.call_count_);
|
EXPECT_EQ(0, pairing_delegate.call_count_);
|
||||||
EXPECT_TRUE(device->IsConnecting());
|
EXPECT_TRUE(device->IsConnecting());
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -2974,7 +2977,7 @@ TEST_F(BluetoothBlueZTest, PairDisplayPinCode) {
|
|||||||
EXPECT_EQ("123456", pairing_delegate.last_pincode_);
|
EXPECT_EQ("123456", pairing_delegate.last_pincode_);
|
||||||
EXPECT_TRUE(device->IsConnecting());
|
EXPECT_TRUE(device->IsConnecting());
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3034,14 +3037,14 @@ TEST_F(BluetoothBlueZTest, PairDisplayPasskey) {
|
|||||||
|
|
||||||
// One call to KeysEntered() for each key, including [enter].
|
// One call to KeysEntered() for each key, including [enter].
|
||||||
for (int i = 1; i <= 7; ++i) {
|
for (int i = 1; i <= 7; ++i) {
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(2 + i, pairing_delegate.call_count_);
|
EXPECT_EQ(2 + i, pairing_delegate.call_count_);
|
||||||
EXPECT_EQ(1 + i, pairing_delegate.keys_entered_count_);
|
EXPECT_EQ(1 + i, pairing_delegate.keys_entered_count_);
|
||||||
EXPECT_EQ(static_cast<uint32_t>(i), pairing_delegate.last_entered_);
|
EXPECT_EQ(static_cast<uint32_t>(i), pairing_delegate.last_entered_);
|
||||||
}
|
}
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// 8 KeysEntered notifications (0 to 7, inclusive) and one aditional call for
|
// 8 KeysEntered notifications (0 to 7, inclusive) and one aditional call for
|
||||||
// DisplayPasskey().
|
// DisplayPasskey().
|
||||||
@@ -3103,7 +3106,7 @@ TEST_F(BluetoothBlueZTest, PairRequestPinCode) {
|
|||||||
|
|
||||||
// Set the PIN.
|
// Set the PIN.
|
||||||
device->SetPinCode("1234");
|
device->SetPinCode("1234");
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3158,7 +3161,7 @@ TEST_F(BluetoothBlueZTest, PairConfirmPasskey) {
|
|||||||
|
|
||||||
// Confirm the passkey.
|
// Confirm the passkey.
|
||||||
device->ConfirmPairing();
|
device->ConfirmPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3209,7 +3212,7 @@ TEST_F(BluetoothBlueZTest, PairRequestPasskey) {
|
|||||||
|
|
||||||
// Set the Passkey.
|
// Set the Passkey.
|
||||||
device->SetPasskey(1234);
|
device->SetPasskey(1234);
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3256,7 +3259,7 @@ TEST_F(BluetoothBlueZTest, PairJustWorks) {
|
|||||||
|
|
||||||
EXPECT_EQ(0, pairing_delegate.call_count_);
|
EXPECT_EQ(0, pairing_delegate.call_count_);
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3303,7 +3306,7 @@ TEST_F(BluetoothBlueZTest, PairUnpairableDeviceFails) {
|
|||||||
EXPECT_TRUE(device->IsConnecting());
|
EXPECT_TRUE(device->IsConnecting());
|
||||||
|
|
||||||
// Run the loop to get the error..
|
// Run the loop to get the error..
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3338,7 +3341,7 @@ TEST_F(BluetoothBlueZTest, PairingFails) {
|
|||||||
EXPECT_TRUE(device->IsConnecting());
|
EXPECT_TRUE(device->IsConnecting());
|
||||||
|
|
||||||
// Run the loop to get the error..
|
// Run the loop to get the error..
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3373,7 +3376,7 @@ TEST_F(BluetoothBlueZTest, PairingFailsAtConnection) {
|
|||||||
EXPECT_EQ(0, pairing_delegate.call_count_);
|
EXPECT_EQ(0, pairing_delegate.call_count_);
|
||||||
EXPECT_TRUE(device->IsConnecting());
|
EXPECT_TRUE(device->IsConnecting());
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3422,7 +3425,7 @@ TEST_F(BluetoothBlueZTest, PairingRejectedAtPinCode) {
|
|||||||
|
|
||||||
// Reject the pairing.
|
// Reject the pairing.
|
||||||
device->RejectPairing();
|
device->RejectPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3460,7 +3463,7 @@ TEST_F(BluetoothBlueZTest, PairingCancelledAtPinCode) {
|
|||||||
|
|
||||||
// Cancel the pairing.
|
// Cancel the pairing.
|
||||||
device->CancelPairing();
|
device->CancelPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3498,7 +3501,7 @@ TEST_F(BluetoothBlueZTest, PairingRejectedAtPasskey) {
|
|||||||
|
|
||||||
// Reject the pairing.
|
// Reject the pairing.
|
||||||
device->RejectPairing();
|
device->RejectPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3536,7 +3539,7 @@ TEST_F(BluetoothBlueZTest, PairingCancelledAtPasskey) {
|
|||||||
|
|
||||||
// Cancel the pairing.
|
// Cancel the pairing.
|
||||||
device->CancelPairing();
|
device->CancelPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3574,7 +3577,7 @@ TEST_F(BluetoothBlueZTest, PairingRejectedAtConfirmation) {
|
|||||||
|
|
||||||
// Reject the pairing.
|
// Reject the pairing.
|
||||||
device->RejectPairing();
|
device->RejectPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3612,7 +3615,7 @@ TEST_F(BluetoothBlueZTest, PairingCancelledAtConfirmation) {
|
|||||||
|
|
||||||
// Cancel the pairing.
|
// Cancel the pairing.
|
||||||
device->CancelPairing();
|
device->CancelPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3649,7 +3652,7 @@ TEST_F(BluetoothBlueZTest, PairingCancelledInFlight) {
|
|||||||
|
|
||||||
// Cancel the pairing.
|
// Cancel the pairing.
|
||||||
device->CancelPairing();
|
device->CancelPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3692,7 +3695,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairRequestPinCode) {
|
|||||||
|
|
||||||
// Set the PIN.
|
// Set the PIN.
|
||||||
device->SetPinCode("1234");
|
device->SetPinCode("1234");
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3746,7 +3749,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairConfirmPasskey) {
|
|||||||
|
|
||||||
// Confirm the passkey.
|
// Confirm the passkey.
|
||||||
device->ConfirmPairing();
|
device->ConfirmPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3799,7 +3802,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairRequestPasskey) {
|
|||||||
|
|
||||||
// Set the Passkey.
|
// Set the Passkey.
|
||||||
device->SetPasskey(1234);
|
device->SetPasskey(1234);
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3853,7 +3856,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairJustWorks) {
|
|||||||
|
|
||||||
// Confirm the pairing.
|
// Confirm the pairing.
|
||||||
device->ConfirmPairing();
|
device->ConfirmPairing();
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, callback_count_);
|
EXPECT_EQ(1, callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -3898,7 +3901,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairRequestPinCodeWithoutDelegate) {
|
|||||||
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3937,7 +3940,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairConfirmPasskeyWithoutDelegate) {
|
|||||||
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -3976,7 +3979,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairRequestPasskeyWithoutDelegate) {
|
|||||||
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
true, GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -4015,7 +4018,7 @@ TEST_F(BluetoothBlueZTest, IncomingPairJustWorksWithoutDelegate) {
|
|||||||
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
GetCallback(), base::Bind(&BluetoothBlueZTest::DBusErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0, callback_count_);
|
EXPECT_EQ(0, callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
@@ -4198,7 +4201,7 @@ TEST_F(BluetoothBlueZTest, Shutdown) {
|
|||||||
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
base::Bind(&BluetoothBlueZTest::DiscoverySessionCallback,
|
||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
GetErrorCallback());
|
GetErrorCallback());
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_EQ(3, callback_count_);
|
ASSERT_EQ(3, callback_count_);
|
||||||
ASSERT_EQ(0, error_callback_count_);
|
ASSERT_EQ(0, error_callback_count_);
|
||||||
callback_count_ = 0;
|
callback_count_ = 0;
|
||||||
|
@@ -123,7 +123,7 @@ class BluetoothGattBlueZTest : public testing::Test {
|
|||||||
void GetAdapter() {
|
void GetAdapter() {
|
||||||
device::BluetoothAdapterFactory::GetAdapter(base::Bind(
|
device::BluetoothAdapterFactory::GetAdapter(base::Bind(
|
||||||
&BluetoothGattBlueZTest::AdapterCallback, base::Unretained(this)));
|
&BluetoothGattBlueZTest::AdapterCallback, base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ASSERT_TRUE(adapter_.get() != NULL);
|
ASSERT_TRUE(adapter_.get() != NULL);
|
||||||
ASSERT_TRUE(adapter_->IsInitialized());
|
ASSERT_TRUE(adapter_->IsInitialized());
|
||||||
ASSERT_TRUE(adapter_->IsPresent());
|
ASSERT_TRUE(adapter_->IsPresent());
|
||||||
@@ -487,7 +487,7 @@ TEST_F(BluetoothGattBlueZTest, ServicesDiscoveredAfterAdapterIsCreated) {
|
|||||||
fake_bluetooth_gatt_service_client_->ExposeHeartRateService(
|
fake_bluetooth_gatt_service_client_->ExposeHeartRateService(
|
||||||
dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
|
dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
|
||||||
// Run the message loop so that the characteristics/descriptors appear.
|
// Run the message loop so that the characteristics/descriptors appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
properties->services_resolved.ReplaceValue(true);
|
properties->services_resolved.ReplaceValue(true);
|
||||||
|
|
||||||
EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
||||||
@@ -522,7 +522,7 @@ TEST_F(BluetoothGattBlueZTest, ServicesDiscoveredAfterAdapterIsCreated) {
|
|||||||
fake_bluetooth_gatt_service_client_->ExposeHeartRateService(
|
fake_bluetooth_gatt_service_client_->ExposeHeartRateService(
|
||||||
dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
|
dbus::ObjectPath(bluez::FakeBluetoothDeviceClient::kLowEnergyPath));
|
||||||
// Run the message loop so that the characteristics/descriptors appear.
|
// Run the message loop so that the characteristics/descriptors appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
properties->services_resolved.ReplaceValue(true);
|
properties->services_resolved.ReplaceValue(true);
|
||||||
|
|
||||||
EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
EXPECT_TRUE(device->IsGattServicesDiscoveryComplete());
|
||||||
@@ -704,7 +704,7 @@ TEST_F(BluetoothGattBlueZTest, GattCharacteristicAddedAndRemoved) {
|
|||||||
EXPECT_TRUE(service->GetCharacteristics().empty());
|
EXPECT_TRUE(service->GetCharacteristics().empty());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// 3 characteristics should appear. Only 1 of the characteristics sends
|
// 3 characteristics should appear. Only 1 of the characteristics sends
|
||||||
// value changed signals. Service changed should be fired once for
|
// value changed signals. Service changed should be fired once for
|
||||||
@@ -770,7 +770,7 @@ TEST_F(BluetoothGattBlueZTest, GattDescriptorAddedAndRemoved) {
|
|||||||
EXPECT_TRUE(service->GetCharacteristics().empty());
|
EXPECT_TRUE(service->GetCharacteristics().empty());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(0, observer.gatt_service_changed_count());
|
EXPECT_EQ(0, observer.gatt_service_changed_count());
|
||||||
|
|
||||||
// Only the Heart Rate Measurement characteristic has a descriptor.
|
// Only the Heart Rate Measurement characteristic has a descriptor.
|
||||||
@@ -857,7 +857,7 @@ TEST_F(BluetoothGattBlueZTest, GattCharacteristicValue) {
|
|||||||
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Issue write request to non-writable characteristics.
|
// Issue write request to non-writable characteristics.
|
||||||
observer.Reset();
|
observer.Reset();
|
||||||
@@ -1073,7 +1073,7 @@ TEST_F(BluetoothGattBlueZTest, GattCharacteristicProperties) {
|
|||||||
EXPECT_TRUE(service->GetCharacteristics().empty());
|
EXPECT_TRUE(service->GetCharacteristics().empty());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
BluetoothRemoteGattCharacteristic* characteristic =
|
BluetoothRemoteGattCharacteristic* characteristic =
|
||||||
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
||||||
@@ -1119,7 +1119,7 @@ TEST_F(BluetoothGattBlueZTest, GattDescriptorValue) {
|
|||||||
EXPECT_TRUE(service->GetCharacteristics().empty());
|
EXPECT_TRUE(service->GetCharacteristics().empty());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(0, observer.gatt_service_changed_count());
|
EXPECT_EQ(0, observer.gatt_service_changed_count());
|
||||||
|
|
||||||
// Only the Heart Rate Measurement characteristic has a descriptor.
|
// Only the Heart Rate Measurement characteristic has a descriptor.
|
||||||
@@ -1197,7 +1197,7 @@ TEST_F(BluetoothGattBlueZTest, GattDescriptorValue) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback,
|
base::Bind(&BluetoothGattBlueZTest::ServiceErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(3, success_callback_count_);
|
EXPECT_EQ(3, success_callback_count_);
|
||||||
EXPECT_EQ(1, error_callback_count_);
|
EXPECT_EQ(1, error_callback_count_);
|
||||||
EXPECT_EQ(1U, update_sessions_.size());
|
EXPECT_EQ(1U, update_sessions_.size());
|
||||||
@@ -1239,7 +1239,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessions) {
|
|||||||
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
BluetoothRemoteGattCharacteristic* characteristic =
|
BluetoothRemoteGattCharacteristic* characteristic =
|
||||||
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
||||||
@@ -1282,7 +1282,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessions) {
|
|||||||
|
|
||||||
// Run the main loop. The initial call should complete. The queued call should
|
// Run the main loop. The initial call should complete. The queued call should
|
||||||
// succeed immediately.
|
// succeed immediately.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(3, success_callback_count_);
|
EXPECT_EQ(3, success_callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1290,7 +1290,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessions) {
|
|||||||
EXPECT_EQ(3U, update_sessions_.size());
|
EXPECT_EQ(3U, update_sessions_.size());
|
||||||
|
|
||||||
// Notifications should be getting sent regularly now.
|
// Notifications should be getting sent regularly now.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1);
|
EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1);
|
||||||
|
|
||||||
// Stop one of the sessions. The session should become inactive but the
|
// Stop one of the sessions. The session should become inactive but the
|
||||||
@@ -1334,7 +1334,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessions) {
|
|||||||
EXPECT_TRUE(characteristic->IsNotifying());
|
EXPECT_TRUE(characteristic->IsNotifying());
|
||||||
|
|
||||||
// Run the message loop. Notifications should begin.
|
// Run the message loop. Notifications should begin.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, success_callback_count_);
|
EXPECT_EQ(1, success_callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1344,7 +1344,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessions) {
|
|||||||
EXPECT_TRUE(characteristic->IsNotifying());
|
EXPECT_TRUE(characteristic->IsNotifying());
|
||||||
|
|
||||||
// Check that notifications are happening.
|
// Check that notifications are happening.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1);
|
EXPECT_GT(observer.gatt_characteristic_value_changed_count(), 1);
|
||||||
|
|
||||||
// Request another session. This should return immediately.
|
// Request another session. This should return immediately.
|
||||||
@@ -1389,7 +1389,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessionsMadeInactive) {
|
|||||||
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
EXPECT_EQ(0, observer.gatt_characteristic_value_changed_count());
|
||||||
|
|
||||||
// Run the message loop so that the characteristics appear.
|
// Run the message loop so that the characteristics appear.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
BluetoothRemoteGattCharacteristic* characteristic =
|
BluetoothRemoteGattCharacteristic* characteristic =
|
||||||
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
service->GetCharacteristic(fake_bluetooth_gatt_characteristic_client_
|
||||||
@@ -1431,7 +1431,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessionsMadeInactive) {
|
|||||||
|
|
||||||
// Run the main loop. The initial call should complete. The queued calls
|
// Run the main loop. The initial call should complete. The queued calls
|
||||||
// should succeed immediately.
|
// should succeed immediately.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(4, success_callback_count_);
|
EXPECT_EQ(4, success_callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
@@ -1475,7 +1475,7 @@ TEST_F(BluetoothGattBlueZTest, NotifySessionsMadeInactive) {
|
|||||||
EXPECT_TRUE(characteristic->IsNotifying());
|
EXPECT_TRUE(characteristic->IsNotifying());
|
||||||
EXPECT_TRUE(update_sessions_.empty());
|
EXPECT_TRUE(update_sessions_.empty());
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1, success_callback_count_);
|
EXPECT_EQ(1, success_callback_count_);
|
||||||
EXPECT_EQ(0, error_callback_count_);
|
EXPECT_EQ(0, error_callback_count_);
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter.h"
|
#include "device/bluetooth/bluetooth_adapter.h"
|
||||||
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
#include "device/bluetooth/bluetooth_adapter_factory.h"
|
||||||
#include "device/bluetooth/bluetooth_device.h"
|
#include "device/bluetooth/bluetooth_device.h"
|
||||||
@@ -82,7 +83,7 @@ class BluetoothSocketBlueZTest : public testing::Test {
|
|||||||
device::BluetoothAdapterFactory::GetAdapter(base::Bind(
|
device::BluetoothAdapterFactory::GetAdapter(base::Bind(
|
||||||
&BluetoothSocketBlueZTest::AdapterCallback, base::Unretained(this)));
|
&BluetoothSocketBlueZTest::AdapterCallback, base::Unretained(this)));
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
ASSERT_TRUE(adapter_.get() != nullptr);
|
ASSERT_TRUE(adapter_.get() != nullptr);
|
||||||
ASSERT_TRUE(adapter_->IsInitialized());
|
ASSERT_TRUE(adapter_->IsInitialized());
|
||||||
@@ -200,7 +201,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -221,7 +222,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -237,7 +238,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ReceiveErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ReceiveErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -262,7 +263,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ReceiveErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ReceiveErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0U, success_callback_count_);
|
EXPECT_EQ(0U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -281,7 +282,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0U, success_callback_count_);
|
EXPECT_EQ(0U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -294,7 +295,7 @@ TEST_F(BluetoothSocketBlueZTest, Connect) {
|
|||||||
socket->Disconnect(base::Bind(&BluetoothSocketBlueZTest::SuccessCallback,
|
socket->Disconnect(base::Bind(&BluetoothSocketBlueZTest::SuccessCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,7 +308,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -336,7 +337,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
bluez::FakeBluetoothProfileManagerClient::kRfcommUuid,
|
bluez::FakeBluetoothProfileManagerClient::kRfcommUuid,
|
||||||
base::Bind(&base::DoNothing), base::Bind(&DoNothingDBusErrorCallback));
|
base::Bind(&base::DoNothing), base::Bind(&DoNothingDBusErrorCallback));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
server_socket->Accept(
|
server_socket->Accept(
|
||||||
base::Bind(&BluetoothSocketBlueZTest::AcceptSuccessCallback,
|
base::Bind(&BluetoothSocketBlueZTest::AcceptSuccessCallback,
|
||||||
@@ -344,7 +345,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -360,7 +361,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
client_socket->Disconnect(base::Bind(
|
client_socket->Disconnect(base::Bind(
|
||||||
&BluetoothSocketBlueZTest::SuccessCallback, base::Unretained(this)));
|
&BluetoothSocketBlueZTest::SuccessCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
client_socket = nullptr;
|
client_socket = nullptr;
|
||||||
@@ -375,14 +376,14 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
fake_bluetooth_device_client->ConnectProfile(
|
fake_bluetooth_device_client->ConnectProfile(
|
||||||
static_cast<BluetoothDeviceBlueZ*>(device)->object_path(),
|
static_cast<BluetoothDeviceBlueZ*>(device)->object_path(),
|
||||||
bluez::FakeBluetoothProfileManagerClient::kRfcommUuid,
|
bluez::FakeBluetoothProfileManagerClient::kRfcommUuid,
|
||||||
base::Bind(&base::DoNothing), base::Bind(&DoNothingDBusErrorCallback));
|
base::Bind(&base::DoNothing), base::Bind(&DoNothingDBusErrorCallback));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -398,7 +399,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
client_socket->Disconnect(base::Bind(
|
client_socket->Disconnect(base::Bind(
|
||||||
&BluetoothSocketBlueZTest::SuccessCallback, base::Unretained(this)));
|
&BluetoothSocketBlueZTest::SuccessCallback, base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
client_socket = nullptr;
|
client_socket = nullptr;
|
||||||
@@ -410,7 +411,7 @@ TEST_F(BluetoothSocketBlueZTest, Listen) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
}
|
}
|
||||||
@@ -430,7 +431,7 @@ TEST_F(BluetoothSocketBlueZTest, ListenBeforeAdapterStart) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -456,7 +457,7 @@ TEST_F(BluetoothSocketBlueZTest, ListenBeforeAdapterStart) {
|
|||||||
// Make the adapter visible. This should register a profile.
|
// Make the adapter visible. This should register a profile.
|
||||||
fake_bluetooth_adapter_client->SetVisible(true);
|
fake_bluetooth_adapter_client->SetVisible(true);
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
profile_service_provider =
|
profile_service_provider =
|
||||||
fake_bluetooth_profile_manager_client->GetProfileServiceProvider(
|
fake_bluetooth_profile_manager_client->GetProfileServiceProvider(
|
||||||
@@ -468,7 +469,7 @@ TEST_F(BluetoothSocketBlueZTest, ListenBeforeAdapterStart) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
}
|
}
|
||||||
@@ -486,7 +487,7 @@ TEST_F(BluetoothSocketBlueZTest, ListenAcrossAdapterRestart) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -513,12 +514,12 @@ TEST_F(BluetoothSocketBlueZTest, ListenAcrossAdapterRestart) {
|
|||||||
// the profile since this doesn't happen automatically.
|
// the profile since this doesn't happen automatically.
|
||||||
fake_bluetooth_adapter_client->SetVisible(false);
|
fake_bluetooth_adapter_client->SetVisible(false);
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Then make the adapter visible again. This should re-register the profile.
|
// Then make the adapter visible again. This should re-register the profile.
|
||||||
fake_bluetooth_adapter_client->SetVisible(true);
|
fake_bluetooth_adapter_client->SetVisible(true);
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
profile_service_provider =
|
profile_service_provider =
|
||||||
fake_bluetooth_profile_manager_client->GetProfileServiceProvider(
|
fake_bluetooth_profile_manager_client->GetProfileServiceProvider(
|
||||||
@@ -530,7 +531,7 @@ TEST_F(BluetoothSocketBlueZTest, ListenAcrossAdapterRestart) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ImmediateSuccessCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
}
|
}
|
||||||
@@ -546,7 +547,7 @@ TEST_F(BluetoothSocketBlueZTest, PairedConnectFails) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0U, success_callback_count_);
|
EXPECT_EQ(0U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -558,7 +559,7 @@ TEST_F(BluetoothSocketBlueZTest, PairedConnectFails) {
|
|||||||
base::Unretained(this)),
|
base::Unretained(this)),
|
||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(0U, success_callback_count_);
|
EXPECT_EQ(0U, success_callback_count_);
|
||||||
EXPECT_EQ(2U, error_callback_count_);
|
EXPECT_EQ(2U, error_callback_count_);
|
||||||
@@ -574,7 +575,7 @@ TEST_F(BluetoothSocketBlueZTest, SocketListenTwice) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(0U, error_callback_count_);
|
EXPECT_EQ(0U, error_callback_count_);
|
||||||
@@ -594,7 +595,7 @@ TEST_F(BluetoothSocketBlueZTest, SocketListenTwice) {
|
|||||||
|
|
||||||
server_socket = nullptr;
|
server_socket = nullptr;
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(1U, success_callback_count_);
|
EXPECT_EQ(1U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -607,7 +608,7 @@ TEST_F(BluetoothSocketBlueZTest, SocketListenTwice) {
|
|||||||
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
base::Bind(&BluetoothSocketBlueZTest::ErrorCallback,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
|
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_EQ(2U, success_callback_count_);
|
EXPECT_EQ(2U, success_callback_count_);
|
||||||
EXPECT_EQ(1U, error_callback_count_);
|
EXPECT_EQ(1U, error_callback_count_);
|
||||||
@@ -626,7 +627,7 @@ TEST_F(BluetoothSocketBlueZTest, SocketListenTwice) {
|
|||||||
|
|
||||||
server_socket = nullptr;
|
server_socket = nullptr;
|
||||||
|
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
EXPECT_EQ(2U, success_callback_count_);
|
EXPECT_EQ(2U, success_callback_count_);
|
||||||
EXPECT_EQ(2U, error_callback_count_);
|
EXPECT_EQ(2U, error_callback_count_);
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/values.h"
|
#include "base/values.h"
|
||||||
#include "content/public/test/test_browser_thread.h"
|
#include "content/public/test/test_browser_thread.h"
|
||||||
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
#include "extensions/browser/api/declarative/rules_registry_service.h"
|
||||||
@@ -143,7 +144,7 @@ TEST(RulesRegistryTest, FillOptionalIdentifiers) {
|
|||||||
|
|
||||||
// Make sure that deletion traits of registry are executed.
|
// Make sure that deletion traits of registry are executed.
|
||||||
registry = NULL;
|
registry = NULL;
|
||||||
message_loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(RulesRegistryTest, FillOptionalPriority) {
|
TEST(RulesRegistryTest, FillOptionalPriority) {
|
||||||
@@ -179,7 +180,7 @@ TEST(RulesRegistryTest, FillOptionalPriority) {
|
|||||||
|
|
||||||
// Make sure that deletion traits of registry are executed.
|
// Make sure that deletion traits of registry are executed.
|
||||||
registry = NULL;
|
registry = NULL;
|
||||||
message_loop.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test verifies 2 rules defined in the manifest appear in the registry.
|
// Test verifies 2 rules defined in the manifest appear in the registry.
|
||||||
|
@@ -8,7 +8,9 @@
|
|||||||
#include "base/command_line.h"
|
#include "base/command_line.h"
|
||||||
#include "base/files/file_path.h"
|
#include "base/files/file_path.h"
|
||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "components/version_info/version_info.h"
|
#include "components/version_info/version_info.h"
|
||||||
#include "content/public/common/content_switches.h"
|
#include "content/public/common/content_switches.h"
|
||||||
@@ -57,7 +59,8 @@ void AppShellTest::SetUpOnMainThread() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AppShellTest::RunTestOnMainThreadLoop() {
|
void AppShellTest::RunTestOnMainThreadLoop() {
|
||||||
base::MessageLoopForUI::current()->RunUntilIdle();
|
DCHECK(base::MessageLoopForUI::IsCurrent());
|
||||||
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
SetUpOnMainThread();
|
SetUpOnMainThread();
|
||||||
|
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/memory/shared_memory.h"
|
#include "base/memory/shared_memory.h"
|
||||||
#include "base/memory/shared_memory_handle.h"
|
#include "base/memory/shared_memory_handle.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/win/scoped_handle.h"
|
#include "base/win/scoped_handle.h"
|
||||||
#include "ipc/attachment_broker_privileged_win.h"
|
#include "ipc/attachment_broker_privileged_win.h"
|
||||||
#include "ipc/attachment_broker_unprivileged_win.h"
|
#include "ipc/attachment_broker_unprivileged_win.h"
|
||||||
@@ -355,7 +356,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendHandle) {
|
|||||||
|
|
||||||
HANDLE h = CreateTempFile();
|
HANDLE h = CreateTempFile();
|
||||||
SendMessageWithAttachment(h);
|
SendMessageWithAttachment(h);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Check the result.
|
// Check the result.
|
||||||
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
||||||
@@ -383,7 +384,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest,
|
|||||||
IPC::HandleWin handle_win(h2, IPC::HandleWin::DUPLICATE);
|
IPC::HandleWin handle_win(h2, IPC::HandleWin::DUPLICATE);
|
||||||
IPC::Message* message = new TestHandleWinMsg(100, handle_win, 200);
|
IPC::Message* message = new TestHandleWinMsg(100, handle_win, 200);
|
||||||
sender()->Send(message);
|
sender()->Send(message);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Check the result.
|
// Check the result.
|
||||||
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
||||||
@@ -410,7 +411,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendHandleToSelf) {
|
|||||||
|
|
||||||
HANDLE h = CreateTempFile();
|
HANDLE h = CreateTempFile();
|
||||||
SendMessageWithAttachment(h);
|
SendMessageWithAttachment(h);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Get the received attachment.
|
// Get the received attachment.
|
||||||
IPC::BrokerableAttachment::AttachmentId* id = get_observer()->get_id();
|
IPC::BrokerableAttachment::AttachmentId* id = get_observer()->get_id();
|
||||||
@@ -447,7 +448,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendTwoHandles) {
|
|||||||
IPC::HandleWin handle_win2(h2, IPC::HandleWin::FILE_READ_WRITE);
|
IPC::HandleWin handle_win2(h2, IPC::HandleWin::FILE_READ_WRITE);
|
||||||
IPC::Message* message = new TestTwoHandleWinMsg(handle_win1, handle_win2);
|
IPC::Message* message = new TestTwoHandleWinMsg(handle_win1, handle_win2);
|
||||||
sender()->Send(message);
|
sender()->Send(message);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Check the result.
|
// Check the result.
|
||||||
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
||||||
@@ -472,7 +473,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendHandleTwice) {
|
|||||||
ASSERT_TRUE(result);
|
ASSERT_TRUE(result);
|
||||||
SendMessageWithAttachment(h);
|
SendMessageWithAttachment(h);
|
||||||
SendMessageWithAttachment(h2);
|
SendMessageWithAttachment(h2);
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Check the result.
|
// Check the result.
|
||||||
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
||||||
@@ -495,7 +496,7 @@ TEST_F(IPCAttachmentBrokerPrivilegedWinTest, SendSharedMemoryHandle) {
|
|||||||
shared_memory->CreateAndMapAnonymous(kSharedMemorySize);
|
shared_memory->CreateAndMapAnonymous(kSharedMemorySize);
|
||||||
memcpy(shared_memory->memory(), kDataBuffer, strlen(kDataBuffer));
|
memcpy(shared_memory->memory(), kDataBuffer, strlen(kDataBuffer));
|
||||||
sender()->Send(new TestSharedMemoryHandleMsg1(shared_memory->handle()));
|
sender()->Send(new TestSharedMemoryHandleMsg1(shared_memory->handle()));
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Check the result.
|
// Check the result.
|
||||||
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
ASSERT_EQ(ProxyListener::MESSAGE_RECEIVED,
|
||||||
@@ -523,7 +524,7 @@ int CommonPrivilegedProcessMain(OnMessageReceivedCallback callback,
|
|||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
LOG(INFO) << "Privileged process spinning run loop.";
|
LOG(INFO) << "Privileged process spinning run loop.";
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
ProxyListener::Reason reason = listener.get_reason();
|
ProxyListener::Reason reason = listener.get_reason();
|
||||||
if (reason == ProxyListener::CHANNEL_ERROR)
|
if (reason == ProxyListener::CHANNEL_ERROR)
|
||||||
break;
|
break;
|
||||||
|
@@ -1300,7 +1300,7 @@ TEST_F(IPCChannelMojoTest, VerifyGlobalPid) {
|
|||||||
CreateChannel(&listener);
|
CreateChannel(&listener);
|
||||||
ASSERT_TRUE(ConnectChannel());
|
ASSERT_TRUE(ConnectChannel());
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
channel()->Close();
|
channel()->Close();
|
||||||
|
|
||||||
EXPECT_TRUE(WaitForClientShutdown());
|
EXPECT_TRUE(WaitForClientShutdown());
|
||||||
@@ -1313,7 +1313,7 @@ DEFINE_IPC_CHANNEL_MOJO_TEST_CLIENT(IPCChannelMojoTestVerifyGlobalPidClient,
|
|||||||
ListenerThatQuits listener;
|
ListenerThatQuits listener;
|
||||||
Connect(&listener);
|
Connect(&listener);
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
@@ -78,7 +79,7 @@ TEST_F(IPCChannelTest, ChannelTestExistingPipe) {
|
|||||||
IPC::TestChannelListener::SendOneMessage(sender(), "hello from parent");
|
IPC::TestChannelListener::SendOneMessage(sender(), "hello from parent");
|
||||||
|
|
||||||
// Run message loop.
|
// Run message loop.
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
// Close the channel so the client's OnChannelError() gets fired.
|
// Close the channel so the client's OnChannelError() gets fired.
|
||||||
channel()->Close();
|
channel()->Close();
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "base/pickle.h"
|
#include "base/pickle.h"
|
||||||
#include "base/process/process_handle.h"
|
#include "base/process/process_handle.h"
|
||||||
#include "base/rand_util.h"
|
#include "base/rand_util.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
#include "base/threading/thread_checker.h"
|
#include "base/threading/thread_checker.h"
|
||||||
@@ -412,13 +413,10 @@ bool ChannelWin::Connect() {
|
|||||||
// Complete setup asynchronously. By not setting input_state_.is_pending
|
// Complete setup asynchronously. By not setting input_state_.is_pending
|
||||||
// to true, we indicate to OnIOCompleted that this is the special
|
// to true, we indicate to OnIOCompleted that this is the special
|
||||||
// initialization signal.
|
// initialization signal.
|
||||||
base::MessageLoopForIO::current()->PostTask(
|
base::MessageLoopForIO::current()->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&ChannelWin::OnIOCompleted,
|
base::Bind(&ChannelWin::OnIOCompleted, weak_factory_.GetWeakPtr(),
|
||||||
weak_factory_.GetWeakPtr(),
|
&input_state_.context, 0, 0));
|
||||||
&input_state_.context,
|
|
||||||
0,
|
|
||||||
0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!waiting_connect_)
|
if (!waiting_connect_)
|
||||||
|
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#include "base/compiler_specific.h"
|
#include "base/compiler_specific.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "jingle/notifier/base/fake_base_task.h"
|
#include "jingle/notifier/base/fake_base_task.h"
|
||||||
#include "jingle/notifier/base/notifier_options.h"
|
#include "jingle/notifier/base/notifier_options.h"
|
||||||
#include "jingle/notifier/listener/push_client_observer.h"
|
#include "jingle/notifier/listener/push_client_observer.h"
|
||||||
@@ -48,7 +49,7 @@ class XmppPushClientTest : public testing::Test {
|
|||||||
|
|
||||||
void TearDown() override {
|
void TearDown() override {
|
||||||
// Clear out any messages posted by XmppPushClient.
|
// Clear out any messages posted by XmppPushClient.
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
xmpp_push_client_->RemoveObserver(&mock_observer_);
|
xmpp_push_client_->RemoveObserver(&mock_observer_);
|
||||||
xmpp_push_client_.reset();
|
xmpp_push_client_.reset();
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,8 @@
|
|||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/synchronization/lock.h"
|
#include "base/synchronization/lock.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
@@ -429,10 +431,10 @@ TEST_F(AudioLowLatencyInputOutputTest, DISABLED_FullDuplexDelayMeasurement) {
|
|||||||
// Wait for approximately 10 seconds. The user shall hear his own voice
|
// Wait for approximately 10 seconds. The user shall hear his own voice
|
||||||
// in loop back during this time. At the same time, delay recordings are
|
// in loop back during this time. At the same time, delay recordings are
|
||||||
// performed and stored in the output text file.
|
// performed and stored in the output text file.
|
||||||
message_loop()->PostDelayedTask(FROM_HERE,
|
message_loop()->task_runner()->PostDelayedTask(
|
||||||
base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_timeout());
|
TestTimeouts::action_timeout());
|
||||||
message_loop()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
aos->Stop();
|
aos->Stop();
|
||||||
ais->Stop();
|
ais->Stop();
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "base/memory/shared_memory.h"
|
#include "base/memory/shared_memory.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/process/process_handle.h"
|
#include "base/process/process_handle.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/sync_socket.h"
|
#include "base/sync_socket.h"
|
||||||
#include "base/task_runner.h"
|
#include "base/task_runner.h"
|
||||||
@@ -158,7 +159,7 @@ void AudioOutputDeviceTest::SetDevice(const std::string& device_id) {
|
|||||||
EXPECT_CALL(*audio_output_ipc_,
|
EXPECT_CALL(*audio_output_ipc_,
|
||||||
RequestDeviceAuthorization(audio_device_.get(), 0, device_id, _));
|
RequestDeviceAuthorization(audio_device_.get(), 0, device_id, _));
|
||||||
audio_device_->RequestDeviceAuthorization();
|
audio_device_->RequestDeviceAuthorization();
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Simulate response from browser
|
// Simulate response from browser
|
||||||
OutputDeviceStatus device_status =
|
OutputDeviceStatus device_status =
|
||||||
@@ -183,7 +184,7 @@ void AudioOutputDeviceTest::ReceiveAuthorization(OutputDeviceStatus status) {
|
|||||||
|
|
||||||
audio_device_->OnDeviceAuthorized(device_status_, default_audio_parameters_,
|
audio_device_->OnDeviceAuthorized(device_status_, default_audio_parameters_,
|
||||||
kDefaultDeviceId);
|
kDefaultDeviceId);
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioOutputDeviceTest::StartAudioDevice() {
|
void AudioOutputDeviceTest::StartAudioDevice() {
|
||||||
@@ -193,7 +194,7 @@ void AudioOutputDeviceTest::StartAudioDevice() {
|
|||||||
EXPECT_CALL(callback_, OnRenderError());
|
EXPECT_CALL(callback_, OnRenderError());
|
||||||
|
|
||||||
audio_device_->Start();
|
audio_device_->Start();
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioOutputDeviceTest::CreateStream() {
|
void AudioOutputDeviceTest::CreateStream() {
|
||||||
@@ -218,7 +219,7 @@ void AudioOutputDeviceTest::CreateStream() {
|
|||||||
audio_device_->OnStreamCreated(
|
audio_device_->OnStreamCreated(
|
||||||
duplicated_memory_handle,
|
duplicated_memory_handle,
|
||||||
SyncSocket::UnwrapHandle(audio_device_socket_descriptor), kMemorySize);
|
SyncSocket::UnwrapHandle(audio_device_socket_descriptor), kMemorySize);
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioOutputDeviceTest::ExpectRenderCallback() {
|
void AudioOutputDeviceTest::ExpectRenderCallback() {
|
||||||
@@ -249,7 +250,7 @@ void AudioOutputDeviceTest::WaitUntilRenderCallback() {
|
|||||||
io_loop_.task_runner()->PostDelayedTask(
|
io_loop_.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_timeout());
|
TestTimeouts::action_timeout());
|
||||||
io_loop_.Run();
|
base::RunLoop().Run();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AudioOutputDeviceTest::StopAudioDevice() {
|
void AudioOutputDeviceTest::StopAudioDevice() {
|
||||||
@@ -257,7 +258,7 @@ void AudioOutputDeviceTest::StopAudioDevice() {
|
|||||||
EXPECT_CALL(*audio_output_ipc_, CloseStream());
|
EXPECT_CALL(*audio_output_ipc_, CloseStream());
|
||||||
|
|
||||||
audio_device_->Stop();
|
audio_device_->Stop();
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(AudioOutputDeviceTest, Initialize) {
|
TEST_P(AudioOutputDeviceTest, Initialize) {
|
||||||
@@ -357,13 +358,13 @@ TEST_P(AudioOutputDeviceTest, AuthorizationTimedOut) {
|
|||||||
base::Unretained(this), OUTPUT_DEVICE_STATUS_ERROR_TIMED_OUT),
|
base::Unretained(this), OUTPUT_DEVICE_STATUS_ERROR_TIMED_OUT),
|
||||||
event.GetClosure());
|
event.GetClosure());
|
||||||
|
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
|
|
||||||
// Runs the loop and waits for |thread| to call event's closure.
|
// Runs the loop and waits for |thread| to call event's closure.
|
||||||
event.RunAndWait();
|
event.RunAndWait();
|
||||||
|
|
||||||
audio_device_->Stop();
|
audio_device_->Stop();
|
||||||
io_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
INSTANTIATE_TEST_CASE_P(Render, AudioOutputDeviceTest, Values(false));
|
INSTANTIATE_TEST_CASE_P(Render, AudioOutputDeviceTest, Values(false));
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/win/scoped_com_initializer.h"
|
#include "base/win/scoped_com_initializer.h"
|
||||||
#include "media/audio/audio_device_description.h"
|
#include "media/audio/audio_device_description.h"
|
||||||
@@ -35,10 +36,9 @@ using ::testing::NotNull;
|
|||||||
|
|
||||||
namespace media {
|
namespace media {
|
||||||
|
|
||||||
ACTION_P3(CheckCountAndPostQuitTask, count, limit, loop) {
|
ACTION_P3(CheckCountAndPostQuitTask, count, limit, run_loop) {
|
||||||
if (++*count >= limit) {
|
if (++*count >= limit)
|
||||||
loop->PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
|
run_loop->QuitWhenIdle();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class MockAudioInputCallback : public AudioInputStream::AudioInputCallback {
|
class MockAudioInputCallback : public AudioInputStream::AudioInputCallback {
|
||||||
@@ -260,11 +260,11 @@ class WinAudioInputTest : public ::testing::Test {
|
|||||||
WinAudioInputTest() {
|
WinAudioInputTest() {
|
||||||
audio_manager_ =
|
audio_manager_ =
|
||||||
AudioManager::CreateForTesting(message_loop_.task_runner());
|
AudioManager::CreateForTesting(message_loop_.task_runner());
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
~WinAudioInputTest() override {
|
~WinAudioInputTest() override {
|
||||||
audio_manager_.reset();
|
audio_manager_.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -379,15 +379,18 @@ TEST_F(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
|
|||||||
uint32_t bytes_per_packet =
|
uint32_t bytes_per_packet =
|
||||||
aisw.channels() * aisw.frames_per_buffer() * (aisw.bits_per_sample() / 8);
|
aisw.channels() * aisw.frames_per_buffer() * (aisw.bits_per_sample() / 8);
|
||||||
|
|
||||||
// We use 10ms packets and will run the test until ten packets are received.
|
{
|
||||||
// All should contain valid packets of the same size and a valid delay
|
// We use 10ms packets and will run the test until ten packets are received.
|
||||||
// estimate.
|
// All should contain valid packets of the same size and a valid delay
|
||||||
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
// estimate.
|
||||||
.Times(AtLeast(10))
|
base::RunLoop run_loop;
|
||||||
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &message_loop_));
|
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
||||||
ais->Start(&sink);
|
.Times(AtLeast(10))
|
||||||
message_loop_.Run();
|
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop));
|
||||||
ais->Stop();
|
ais->Start(&sink);
|
||||||
|
run_loop.Run();
|
||||||
|
ais->Stop();
|
||||||
|
}
|
||||||
|
|
||||||
// Store current packet size (to be used in the subsequent tests).
|
// Store current packet size (to be used in the subsequent tests).
|
||||||
int frames_per_buffer_10ms = aisw.frames_per_buffer();
|
int frames_per_buffer_10ms = aisw.frames_per_buffer();
|
||||||
@@ -402,13 +405,16 @@ TEST_F(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
|
|||||||
bytes_per_packet = aisw.channels() * aisw.frames_per_buffer() *
|
bytes_per_packet = aisw.channels() * aisw.frames_per_buffer() *
|
||||||
(aisw.bits_per_sample() / 8);
|
(aisw.bits_per_sample() / 8);
|
||||||
|
|
||||||
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
{
|
||||||
.Times(AtLeast(10))
|
base::RunLoop run_loop;
|
||||||
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &message_loop_));
|
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
||||||
ais->Start(&sink);
|
.Times(AtLeast(10))
|
||||||
message_loop_.Run();
|
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop));
|
||||||
ais->Stop();
|
ais->Start(&sink);
|
||||||
ais.Close();
|
run_loop.Run();
|
||||||
|
ais->Stop();
|
||||||
|
ais.Close();
|
||||||
|
}
|
||||||
|
|
||||||
// 5 ms packet size.
|
// 5 ms packet size.
|
||||||
|
|
||||||
@@ -418,13 +424,16 @@ TEST_F(WinAudioInputTest, WASAPIAudioInputStreamTestPacketSizes) {
|
|||||||
bytes_per_packet = aisw.channels() * aisw.frames_per_buffer() *
|
bytes_per_packet = aisw.channels() * aisw.frames_per_buffer() *
|
||||||
(aisw.bits_per_sample() / 8);
|
(aisw.bits_per_sample() / 8);
|
||||||
|
|
||||||
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
{
|
||||||
.Times(AtLeast(10))
|
base::RunLoop run_loop;
|
||||||
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &message_loop_));
|
EXPECT_CALL(sink, OnData(ais.get(), NotNull(), _, _))
|
||||||
ais->Start(&sink);
|
.Times(AtLeast(10))
|
||||||
message_loop_.Run();
|
.WillRepeatedly(CheckCountAndPostQuitTask(&count, 10, &run_loop));
|
||||||
ais->Stop();
|
ais->Start(&sink);
|
||||||
ais.Close();
|
run_loop.Run();
|
||||||
|
ais->Stop();
|
||||||
|
ais.Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that we can capture a stream in loopback.
|
// Test that we can capture a stream in loopback.
|
||||||
|
@@ -15,6 +15,8 @@
|
|||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/test/test_timeouts.h"
|
#include "base/test/test_timeouts.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
#include "base/win/scoped_com_initializer.h"
|
#include "base/win/scoped_com_initializer.h"
|
||||||
@@ -235,11 +237,11 @@ class WASAPIAudioOutputStreamTest : public ::testing::Test {
|
|||||||
WASAPIAudioOutputStreamTest() {
|
WASAPIAudioOutputStreamTest() {
|
||||||
audio_manager_ =
|
audio_manager_ =
|
||||||
AudioManager::CreateForTesting(message_loop_.task_runner());
|
AudioManager::CreateForTesting(message_loop_.task_runner());
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
~WASAPIAudioOutputStreamTest() override {
|
~WASAPIAudioOutputStreamTest() override {
|
||||||
audio_manager_.reset();
|
audio_manager_.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -400,10 +402,10 @@ TEST_F(WASAPIAudioOutputStreamTest, ValidPacketSize) {
|
|||||||
.WillRepeatedly(Return(0));
|
.WillRepeatedly(Return(0));
|
||||||
|
|
||||||
aos->Start(&source);
|
aos->Start(&source);
|
||||||
message_loop_.PostDelayedTask(FROM_HERE,
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_timeout());
|
TestTimeouts::action_timeout());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
aos->Stop();
|
aos->Stop();
|
||||||
aos->Close();
|
aos->Close();
|
||||||
}
|
}
|
||||||
@@ -590,10 +592,10 @@ TEST_F(WASAPIAudioOutputStreamTest,
|
|||||||
.WillRepeatedly(Return(aosw.samples_per_packet()));
|
.WillRepeatedly(Return(aosw.samples_per_packet()));
|
||||||
|
|
||||||
aos->Start(&source);
|
aos->Start(&source);
|
||||||
message_loop_.PostDelayedTask(FROM_HERE,
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_timeout());
|
TestTimeouts::action_timeout());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
aos->Stop();
|
aos->Stop();
|
||||||
aos->Close();
|
aos->Close();
|
||||||
}
|
}
|
||||||
@@ -623,10 +625,10 @@ TEST_F(WASAPIAudioOutputStreamTest,
|
|||||||
.WillRepeatedly(Return(aosw.samples_per_packet()));
|
.WillRepeatedly(Return(aosw.samples_per_packet()));
|
||||||
|
|
||||||
aos->Start(&source);
|
aos->Start(&source);
|
||||||
message_loop_.PostDelayedTask(FROM_HERE,
|
message_loop_.task_runner()->PostDelayedTask(
|
||||||
base::MessageLoop::QuitWhenIdleClosure(),
|
FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
|
||||||
TestTimeouts::action_timeout());
|
TestTimeouts::action_timeout());
|
||||||
message_loop_.Run();
|
base::RunLoop().Run();
|
||||||
aos->Stop();
|
aos->Stop();
|
||||||
aos->Close();
|
aos->Close();
|
||||||
}
|
}
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
#include "base/base_paths.h"
|
#include "base/base_paths.h"
|
||||||
#include "base/memory/aligned_memory.h"
|
#include "base/memory/aligned_memory.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/sync_socket.h"
|
#include "base/sync_socket.h"
|
||||||
#include "base/win/scoped_com_initializer.h"
|
#include "base/win/scoped_com_initializer.h"
|
||||||
#include "base/win/windows_version.h"
|
#include "base/win/windows_version.h"
|
||||||
@@ -151,11 +152,11 @@ class WinAudioTest : public ::testing::Test {
|
|||||||
WinAudioTest() {
|
WinAudioTest() {
|
||||||
audio_manager_ =
|
audio_manager_ =
|
||||||
AudioManager::CreateForTesting(message_loop_.task_runner());
|
AudioManager::CreateForTesting(message_loop_.task_runner());
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
~WinAudioTest() override {
|
~WinAudioTest() override {
|
||||||
audio_manager_.reset();
|
audio_manager_.reset();
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -9,6 +9,7 @@
|
|||||||
#include <list>
|
#include <list>
|
||||||
|
|
||||||
#include "base/bind.h"
|
#include "base/bind.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "build/build_config.h"
|
#include "build/build_config.h"
|
||||||
#include "media/capture/video/linux/v4l2_capture_delegate.h"
|
#include "media/capture/video/linux/v4l2_capture_delegate.h"
|
||||||
|
|
||||||
@@ -62,7 +63,7 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
|
|||||||
client->OnError(FROM_HERE, "Failed to create VideoCaptureDelegate");
|
client->OnError(FROM_HERE, "Failed to create VideoCaptureDelegate");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
v4l2_thread_.message_loop()->PostTask(
|
v4l2_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&V4L2CaptureDelegate::AllocateAndStart, capture_impl_,
|
base::Bind(&V4L2CaptureDelegate::AllocateAndStart, capture_impl_,
|
||||||
params.requested_format.frame_size.width(),
|
params.requested_format.frame_size.width(),
|
||||||
@@ -73,7 +74,7 @@ void VideoCaptureDeviceLinux::AllocateAndStart(
|
|||||||
void VideoCaptureDeviceLinux::StopAndDeAllocate() {
|
void VideoCaptureDeviceLinux::StopAndDeAllocate() {
|
||||||
if (!v4l2_thread_.IsRunning())
|
if (!v4l2_thread_.IsRunning())
|
||||||
return; // Wrong state.
|
return; // Wrong state.
|
||||||
v4l2_thread_.message_loop()->PostTask(
|
v4l2_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&V4L2CaptureDelegate::StopAndDeAllocate, capture_impl_));
|
base::Bind(&V4L2CaptureDelegate::StopAndDeAllocate, capture_impl_));
|
||||||
v4l2_thread_.Stop();
|
v4l2_thread_.Stop();
|
||||||
@@ -83,7 +84,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() {
|
|||||||
|
|
||||||
void VideoCaptureDeviceLinux::SetRotation(int rotation) {
|
void VideoCaptureDeviceLinux::SetRotation(int rotation) {
|
||||||
if (v4l2_thread_.IsRunning()) {
|
if (v4l2_thread_.IsRunning()) {
|
||||||
v4l2_thread_.message_loop()->PostTask(
|
v4l2_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&V4L2CaptureDelegate::SetRotation, capture_impl_, rotation));
|
base::Bind(&V4L2CaptureDelegate::SetRotation, capture_impl_, rotation));
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,7 @@
|
|||||||
#include "base/logging.h"
|
#include "base/logging.h"
|
||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/path_service.h"
|
#include "base/path_service.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/threading/thread.h"
|
#include "base/threading/thread.h"
|
||||||
@@ -343,15 +344,15 @@ int main(int argc, char** argv) {
|
|||||||
base::Bind(&QuitLoopOnInitializationResult),
|
base::Bind(&QuitLoopOnInitializationResult),
|
||||||
media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
|
media::cast::CreateDefaultVideoEncodeAcceleratorCallback(),
|
||||||
media::cast::CreateDefaultVideoEncodeMemoryCallback()));
|
media::cast::CreateDefaultVideoEncodeMemoryCallback()));
|
||||||
io_message_loop.Run(); // Wait for video initialization.
|
base::RunLoop().Run(); // Wait for video initialization.
|
||||||
io_message_loop.task_runner()->PostTask(
|
io_message_loop.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&media::cast::CastSender::InitializeAudio,
|
FROM_HERE, base::Bind(&media::cast::CastSender::InitializeAudio,
|
||||||
base::Unretained(cast_sender.get()), audio_config,
|
base::Unretained(cast_sender.get()), audio_config,
|
||||||
base::Bind(&QuitLoopOnInitializationResult)));
|
base::Bind(&QuitLoopOnInitializationResult)));
|
||||||
io_message_loop.Run(); // Wait for audio initialization.
|
base::RunLoop().Run(); // Wait for audio initialization.
|
||||||
|
|
||||||
fake_media_source->Start(cast_sender->audio_frame_input(),
|
fake_media_source->Start(cast_sender->audio_frame_input(),
|
||||||
cast_sender->video_frame_input());
|
cast_sender->video_frame_input());
|
||||||
io_message_loop.Run();
|
base::RunLoop().Run();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
#include "base/files/file_path.h"
|
#include "base/files/file_path.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/system_monitor/system_monitor.h"
|
#include "base/system_monitor/system_monitor.h"
|
||||||
#include "base/test/mock_devices_changed_observer.h"
|
#include "base/test/mock_devices_changed_observer.h"
|
||||||
#include "testing/gmock/include/gmock/gmock.h"
|
#include "testing/gmock/include/gmock/gmock.h"
|
||||||
@@ -35,12 +36,12 @@ class SystemMessageWindowWinTest : public testing::Test {
|
|||||||
TEST_F(SystemMessageWindowWinTest, DevicesChanged) {
|
TEST_F(SystemMessageWindowWinTest, DevicesChanged) {
|
||||||
EXPECT_CALL(observer_, OnDevicesChanged(testing::_)).Times(1);
|
EXPECT_CALL(observer_, OnDevicesChanged(testing::_)).Times(1);
|
||||||
window_.OnDeviceChange(DBT_DEVNODES_CHANGED, NULL);
|
window_.OnDeviceChange(DBT_DEVNODES_CHANGED, NULL);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(SystemMessageWindowWinTest, RandomMessage) {
|
TEST_F(SystemMessageWindowWinTest, RandomMessage) {
|
||||||
window_.OnDeviceChange(DBT_DEVICEQUERYREMOVE, NULL);
|
window_.OnDeviceChange(DBT_DEVICEQUERYREMOVE, NULL);
|
||||||
message_loop_.RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace media
|
} // namespace media
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/run_loop.h"
|
#include "base/run_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/stringize_macros.h"
|
#include "base/strings/stringize_macros.h"
|
||||||
#include "base/synchronization/waitable_event.h"
|
#include "base/synchronization/waitable_event.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
@@ -560,7 +561,7 @@ void RenderingHelper::CreateTexture(uint32_t texture_target,
|
|||||||
const gfx::Size& size,
|
const gfx::Size& size,
|
||||||
base::WaitableEvent* done) {
|
base::WaitableEvent* done) {
|
||||||
if (base::MessageLoop::current() != message_loop_) {
|
if (base::MessageLoop::current() != message_loop_) {
|
||||||
message_loop_->PostTask(
|
message_loop_->task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&RenderingHelper::CreateTexture, base::Unretained(this),
|
base::Bind(&RenderingHelper::CreateTexture, base::Unretained(this),
|
||||||
texture_target, texture_id, size, done));
|
texture_target, texture_id, size, done));
|
||||||
@@ -635,7 +636,7 @@ void RenderingHelper::QueueVideoFrame(
|
|||||||
// Schedules the first RenderContent() if need.
|
// Schedules the first RenderContent() if need.
|
||||||
if (scheduled_render_time_.is_null()) {
|
if (scheduled_render_time_.is_null()) {
|
||||||
scheduled_render_time_ = base::TimeTicks::Now();
|
scheduled_render_time_ = base::TimeTicks::Now();
|
||||||
message_loop_->PostTask(FROM_HERE, render_task_.callback());
|
message_loop_->task_runner()->PostTask(FROM_HERE, render_task_.callback());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -885,7 +886,7 @@ void RenderingHelper::ScheduleNextRenderContent() {
|
|||||||
DropOneFrameForAllVideos();
|
DropOneFrameForAllVideos();
|
||||||
}
|
}
|
||||||
|
|
||||||
message_loop_->PostDelayedTask(FROM_HERE, render_task_.callback(),
|
message_loop_->task_runner()->PostDelayedTask(
|
||||||
target - now);
|
FROM_HERE, render_task_.callback(), target - now);
|
||||||
}
|
}
|
||||||
} // namespace media
|
} // namespace media
|
||||||
|
@@ -150,7 +150,7 @@ bool V4L2ImageProcessor::Initialize(VideoPixelFormat input_format,
|
|||||||
}
|
}
|
||||||
|
|
||||||
// StartDevicePoll will NotifyError on failure, so IgnoreResult is fine here.
|
// StartDevicePoll will NotifyError on failure, so IgnoreResult is fine here.
|
||||||
device_thread_.message_loop()->PostTask(
|
device_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(base::IgnoreResult(&V4L2ImageProcessor::StartDevicePoll),
|
base::Bind(base::IgnoreResult(&V4L2ImageProcessor::StartDevicePoll),
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
@@ -228,7 +228,7 @@ void V4L2ImageProcessor::Process(const scoped_refptr<VideoFrame>& frame,
|
|||||||
job_record->output_buffer_index = output_buffer_index;
|
job_record->output_buffer_index = output_buffer_index;
|
||||||
job_record->ready_cb = cb;
|
job_record->ready_cb = cb;
|
||||||
|
|
||||||
device_thread_.message_loop()->PostTask(
|
device_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2ImageProcessor::ProcessTask,
|
FROM_HERE, base::Bind(&V4L2ImageProcessor::ProcessTask,
|
||||||
base::Unretained(this), base::Passed(&job_record)));
|
base::Unretained(this), base::Passed(&job_record)));
|
||||||
}
|
}
|
||||||
@@ -251,7 +251,7 @@ void V4L2ImageProcessor::Destroy() {
|
|||||||
|
|
||||||
// If the device thread is running, destroy using posted task.
|
// If the device thread is running, destroy using posted task.
|
||||||
if (device_thread_.IsRunning()) {
|
if (device_thread_.IsRunning()) {
|
||||||
device_thread_.message_loop()->PostTask(
|
device_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&V4L2ImageProcessor::DestroyTask, base::Unretained(this)));
|
base::Bind(&V4L2ImageProcessor::DestroyTask, base::Unretained(this)));
|
||||||
// Wait for tasks to finish/early-exit.
|
// Wait for tasks to finish/early-exit.
|
||||||
@@ -429,7 +429,7 @@ void V4L2ImageProcessor::DevicePollTask(bool poll_device) {
|
|||||||
|
|
||||||
// All processing should happen on ServiceDeviceTask(), since we shouldn't
|
// All processing should happen on ServiceDeviceTask(), since we shouldn't
|
||||||
// touch encoder state from this thread.
|
// touch encoder state from this thread.
|
||||||
device_thread_.message_loop()->PostTask(
|
device_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2ImageProcessor::ServiceDeviceTask,
|
FROM_HERE, base::Bind(&V4L2ImageProcessor::ServiceDeviceTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -453,7 +453,7 @@ void V4L2ImageProcessor::ServiceDeviceTask() {
|
|||||||
bool poll_device =
|
bool poll_device =
|
||||||
(input_buffer_queued_count_ > 0 || output_buffer_queued_count_ > 0);
|
(input_buffer_queued_count_ > 0 || output_buffer_queued_count_ > 0);
|
||||||
|
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2ImageProcessor::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2ImageProcessor::DevicePollTask,
|
||||||
base::Unretained(this), poll_device));
|
base::Unretained(this), poll_device));
|
||||||
|
|
||||||
@@ -656,7 +656,7 @@ bool V4L2ImageProcessor::StartDevicePoll() {
|
|||||||
}
|
}
|
||||||
// Enqueue a poll task with no devices to poll on - will wait only for the
|
// Enqueue a poll task with no devices to poll on - will wait only for the
|
||||||
// poll interrupt
|
// poll interrupt
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2ImageProcessor::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2ImageProcessor::DevicePollTask,
|
||||||
base::Unretained(this), false));
|
base::Unretained(this), false));
|
||||||
|
|
||||||
|
@@ -863,7 +863,7 @@ void V4L2SliceVideoDecodeAccelerator::SchedulePollIfNeeded() {
|
|||||||
|
|
||||||
DVLOGF(4) << "Scheduling device poll task";
|
DVLOGF(4) << "Scheduling device poll task";
|
||||||
|
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DevicePollTask,
|
||||||
base::Unretained(this), true));
|
base::Unretained(this), true));
|
||||||
|
|
||||||
@@ -1169,7 +1169,7 @@ bool V4L2SliceVideoDecodeAccelerator::StartDevicePoll() {
|
|||||||
output_streamon_ = true;
|
output_streamon_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2SliceVideoDecodeAccelerator::DevicePollTask,
|
||||||
base::Unretained(this), true));
|
base::Unretained(this), true));
|
||||||
|
|
||||||
|
@@ -290,7 +290,7 @@ bool V4L2VideoDecodeAccelerator::Initialize(const Config& config,
|
|||||||
decoder_state_ = kInitialized;
|
decoder_state_ = kInitialized;
|
||||||
|
|
||||||
// StartDevicePoll will NOTIFY_ERROR on failure, so IgnoreResult is fine here.
|
// StartDevicePoll will NOTIFY_ERROR on failure, so IgnoreResult is fine here.
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(base::IgnoreResult(
|
FROM_HERE, base::Bind(base::IgnoreResult(
|
||||||
&V4L2VideoDecodeAccelerator::StartDevicePoll),
|
&V4L2VideoDecodeAccelerator::StartDevicePoll),
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
@@ -313,7 +313,7 @@ void V4L2VideoDecodeAccelerator::Decode(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// DecodeTask() will take care of running a DecodeBufferTask().
|
// DecodeTask() will take care of running a DecodeBufferTask().
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DecodeTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DecodeTask,
|
||||||
base::Unretained(this), bitstream_buffer));
|
base::Unretained(this), bitstream_buffer));
|
||||||
}
|
}
|
||||||
@@ -323,7 +323,7 @@ void V4L2VideoDecodeAccelerator::AssignPictureBuffers(
|
|||||||
DVLOGF(3) << "buffer_count=" << buffers.size();
|
DVLOGF(3) << "buffer_count=" << buffers.size();
|
||||||
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
||||||
|
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&V4L2VideoDecodeAccelerator::AssignPictureBuffersTask,
|
base::Bind(&V4L2VideoDecodeAccelerator::AssignPictureBuffersTask,
|
||||||
base::Unretained(this), buffers));
|
base::Unretained(this), buffers));
|
||||||
@@ -442,7 +442,7 @@ void V4L2VideoDecodeAccelerator::CreateEGLImages(
|
|||||||
egl_images.push_back(egl_image);
|
egl_images.push_back(egl_image);
|
||||||
}
|
}
|
||||||
|
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::AssignEGLImages,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::AssignEGLImages,
|
||||||
base::Unretained(this), buffers, egl_images));
|
base::Unretained(this), buffers, egl_images));
|
||||||
}
|
}
|
||||||
@@ -521,7 +521,7 @@ void V4L2VideoDecodeAccelerator::ReusePictureBuffer(int32_t picture_buffer_id) {
|
|||||||
std::unique_ptr<EGLSyncKHRRef> egl_sync_ref(
|
std::unique_ptr<EGLSyncKHRRef> egl_sync_ref(
|
||||||
new EGLSyncKHRRef(egl_display_, egl_sync));
|
new EGLSyncKHRRef(egl_display_, egl_sync));
|
||||||
|
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ReusePictureBufferTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ReusePictureBufferTask,
|
||||||
base::Unretained(this), picture_buffer_id,
|
base::Unretained(this), picture_buffer_id,
|
||||||
base::Passed(&egl_sync_ref)));
|
base::Passed(&egl_sync_ref)));
|
||||||
@@ -530,7 +530,7 @@ void V4L2VideoDecodeAccelerator::ReusePictureBuffer(int32_t picture_buffer_id) {
|
|||||||
void V4L2VideoDecodeAccelerator::Flush() {
|
void V4L2VideoDecodeAccelerator::Flush() {
|
||||||
DVLOGF(3);
|
DVLOGF(3);
|
||||||
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::FlushTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::FlushTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -538,7 +538,7 @@ void V4L2VideoDecodeAccelerator::Flush() {
|
|||||||
void V4L2VideoDecodeAccelerator::Reset() {
|
void V4L2VideoDecodeAccelerator::Reset() {
|
||||||
DVLOGF(3);
|
DVLOGF(3);
|
||||||
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
DCHECK(child_task_runner_->BelongsToCurrentThread());
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ResetTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ResetTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -553,7 +553,7 @@ void V4L2VideoDecodeAccelerator::Destroy() {
|
|||||||
|
|
||||||
// If the decoder thread is running, destroy using posted task.
|
// If the decoder thread is running, destroy using posted task.
|
||||||
if (decoder_thread_.IsRunning()) {
|
if (decoder_thread_.IsRunning()) {
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DestroyTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DestroyTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
// DestroyTask() will cause the decoder_thread_ to flush all tasks.
|
// DestroyTask() will cause the decoder_thread_ to flush all tasks.
|
||||||
@@ -835,7 +835,7 @@ void V4L2VideoDecodeAccelerator::ScheduleDecodeBufferTaskIfNeeded() {
|
|||||||
buffers_to_decode++;
|
buffers_to_decode++;
|
||||||
if (decoder_decode_buffer_tasks_scheduled_ < buffers_to_decode) {
|
if (decoder_decode_buffer_tasks_scheduled_ < buffers_to_decode) {
|
||||||
decoder_decode_buffer_tasks_scheduled_++;
|
decoder_decode_buffer_tasks_scheduled_++;
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DecodeBufferTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DecodeBufferTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -1049,7 +1049,7 @@ void V4L2VideoDecodeAccelerator::ServiceDeviceTask(bool event_pending) {
|
|||||||
// respectively, and we should have early-outed already.
|
// respectively, and we should have early-outed already.
|
||||||
DCHECK(device_poll_thread_.message_loop());
|
DCHECK(device_poll_thread_.message_loop());
|
||||||
// Queue the DevicePollTask() now.
|
// Queue the DevicePollTask() now.
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DevicePollTask,
|
||||||
base::Unretained(this), poll_device));
|
base::Unretained(this), poll_device));
|
||||||
|
|
||||||
@@ -1518,7 +1518,7 @@ void V4L2VideoDecodeAccelerator::FinishReset() {
|
|||||||
// jobs will early-out in the kResetting state.
|
// jobs will early-out in the kResetting state.
|
||||||
decoder_state_ = kResetting;
|
decoder_state_ = kResetting;
|
||||||
SendPictureReady(); // Send all pending PictureReady.
|
SendPictureReady(); // Send all pending PictureReady.
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ResetDoneTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ResetDoneTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -1590,7 +1590,7 @@ bool V4L2VideoDecodeAccelerator::StartDevicePoll() {
|
|||||||
NOTIFY_ERROR(PLATFORM_FAILURE);
|
NOTIFY_ERROR(PLATFORM_FAILURE);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
device_poll_thread_.message_loop()->PostTask(
|
device_poll_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DevicePollTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::DevicePollTask,
|
||||||
base::Unretained(this), 0));
|
base::Unretained(this), 0));
|
||||||
|
|
||||||
@@ -1742,7 +1742,7 @@ void V4L2VideoDecodeAccelerator::DevicePollTask(bool poll_device) {
|
|||||||
|
|
||||||
// All processing should happen on ServiceDeviceTask(), since we shouldn't
|
// All processing should happen on ServiceDeviceTask(), since we shouldn't
|
||||||
// touch decoder state from this thread.
|
// touch decoder state from this thread.
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ServiceDeviceTask,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::ServiceDeviceTask,
|
||||||
base::Unretained(this), event_pending));
|
base::Unretained(this), event_pending));
|
||||||
}
|
}
|
||||||
@@ -2192,7 +2192,7 @@ void V4L2VideoDecodeAccelerator::ResolutionChangeDestroyBuffers() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Finish resolution change on decoder thread.
|
// Finish resolution change on decoder thread.
|
||||||
decoder_thread_.message_loop()->PostTask(
|
decoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::FinishResolutionChange,
|
FROM_HERE, base::Bind(&V4L2VideoDecodeAccelerator::FinishResolutionChange,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
|
@@ -14,6 +14,7 @@
|
|||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/metrics/histogram.h"
|
#include "base/metrics/histogram.h"
|
||||||
#include "base/numerics/safe_conversions.h"
|
#include "base/numerics/safe_conversions.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "media/base/bind_to_current_loop.h"
|
#include "media/base/bind_to_current_loop.h"
|
||||||
#include "media/gpu/h264_dpb.h"
|
#include "media/gpu/h264_dpb.h"
|
||||||
#include "media/gpu/shared_memory_region.h"
|
#include "media/gpu/shared_memory_region.h"
|
||||||
@@ -752,7 +753,7 @@ void VaapiVideoEncodeAccelerator::Destroy() {
|
|||||||
|
|
||||||
// Early-exit encoder tasks if they are running and join the thread.
|
// Early-exit encoder tasks if they are running and join the thread.
|
||||||
if (encoder_thread_.IsRunning()) {
|
if (encoder_thread_.IsRunning()) {
|
||||||
encoder_thread_.message_loop()->PostTask(
|
encoder_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::DestroyTask,
|
FROM_HERE, base::Bind(&VaapiVideoEncodeAccelerator::DestroyTask,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
encoder_thread_.Stop();
|
encoder_thread_.Stop();
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/posix/eintr_wrapper.h"
|
#include "base/posix/eintr_wrapper.h"
|
||||||
#include "base/posix/safe_strerror.h"
|
#include "base/posix/safe_strerror.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/stringprintf.h"
|
#include "base/strings/stringprintf.h"
|
||||||
#include "base/time/time.h"
|
#include "base/time/time.h"
|
||||||
@@ -286,7 +287,7 @@ void MidiManagerAlsa::StartInitialization() {
|
|||||||
// Start processing events. Don't do this before enumeration of both
|
// Start processing events. Don't do this before enumeration of both
|
||||||
// ALSA and udev.
|
// ALSA and udev.
|
||||||
event_thread_.Start();
|
event_thread_.Start();
|
||||||
event_thread_.message_loop()->PostTask(
|
event_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiManagerAlsa::ScheduleEventLoop, base::Unretained(this)));
|
base::Bind(&MidiManagerAlsa::ScheduleEventLoop, base::Unretained(this)));
|
||||||
send_thread_.Start();
|
send_thread_.Start();
|
||||||
@@ -336,13 +337,13 @@ void MidiManagerAlsa::DispatchSendMidiData(MidiManagerClient* client,
|
|||||||
delay = std::max(time_to_send - base::TimeTicks::Now(), base::TimeDelta());
|
delay = std::max(time_to_send - base::TimeTicks::Now(), base::TimeDelta());
|
||||||
}
|
}
|
||||||
|
|
||||||
send_thread_.message_loop()->PostDelayedTask(
|
send_thread_.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE, base::Bind(&MidiManagerAlsa::SendMidiData,
|
FROM_HERE, base::Bind(&MidiManagerAlsa::SendMidiData,
|
||||||
base::Unretained(this), port_index, data),
|
base::Unretained(this), port_index, data),
|
||||||
delay);
|
delay);
|
||||||
|
|
||||||
// Acknowledge send.
|
// Acknowledge send.
|
||||||
send_thread_.message_loop()->PostTask(
|
send_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiManagerAlsa::AccumulateMidiBytesSent,
|
FROM_HERE, base::Bind(&MidiManagerAlsa::AccumulateMidiBytesSent,
|
||||||
base::Unretained(this), client, data.size()));
|
base::Unretained(this), client, data.size()));
|
||||||
}
|
}
|
||||||
@@ -886,7 +887,7 @@ void MidiManagerAlsa::SendMidiData(uint32_t port_index,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MidiManagerAlsa::ScheduleEventLoop() {
|
void MidiManagerAlsa::ScheduleEventLoop() {
|
||||||
event_thread_.message_loop()->PostTask(
|
event_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiManagerAlsa::EventLoop, base::Unretained(this)));
|
base::Bind(&MidiManagerAlsa::EventLoop, base::Unretained(this)));
|
||||||
}
|
}
|
||||||
|
@@ -30,6 +30,7 @@
|
|||||||
#include "base/containers/hash_tables.h"
|
#include "base/containers/hash_tables.h"
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string16.h"
|
#include "base/strings/string16.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/string_piece.h"
|
#include "base/strings/string_piece.h"
|
||||||
@@ -501,7 +502,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
|
|
||||||
UpdateDeviceList();
|
UpdateDeviceList();
|
||||||
|
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::CompleteInitializationOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::CompleteInitializationOnTaskThread,
|
||||||
base::Unretained(this), Result::OK));
|
base::Unretained(this), Result::OK));
|
||||||
@@ -529,13 +530,13 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
}
|
}
|
||||||
const auto now = base::TimeTicks::Now();
|
const auto now = base::TimeTicks::Now();
|
||||||
if (now < time) {
|
if (now < time) {
|
||||||
sender_thread_.message_loop()->PostDelayedTask(
|
sender_thread_.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::SendOnSenderThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::SendOnSenderThread,
|
||||||
base::Unretained(this), port_number,
|
base::Unretained(this), port_number,
|
||||||
state->port_age, data, time),
|
state->port_age, data, time),
|
||||||
time - now);
|
time - now);
|
||||||
} else {
|
} else {
|
||||||
sender_thread_.message_loop()->PostTask(
|
sender_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::SendOnSenderThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::SendOnSenderThread,
|
||||||
base::Unretained(this), port_number,
|
base::Unretained(this), port_number,
|
||||||
state->port_age, data, time));
|
state->port_age, data, time));
|
||||||
@@ -585,7 +586,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
}
|
}
|
||||||
|
|
||||||
void UpdateDeviceList() {
|
void UpdateDeviceList() {
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::UpdateDeviceListOnTaskThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::UpdateDeviceListOnTaskThread,
|
||||||
base::Unretained(this)));
|
base::Unretained(this)));
|
||||||
}
|
}
|
||||||
@@ -665,7 +666,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
input_ports_[port_number]->port_age = input_ports_ages_[port_number];
|
input_ports_[port_number]->port_age = input_ports_ages_[port_number];
|
||||||
}
|
}
|
||||||
// Several initial startup tasks cannot be done in MIM_OPEN handler.
|
// Several initial startup tasks cannot be done in MIM_OPEN handler.
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::StartInputDeviceOnTaskThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::StartInputDeviceOnTaskThread,
|
||||||
base::Unretained(this), midi_in_handle));
|
base::Unretained(this), midi_in_handle));
|
||||||
if (add_new_port) {
|
if (add_new_port) {
|
||||||
@@ -676,11 +677,11 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
base::WideToUTF8(state_device_info.product_name),
|
base::WideToUTF8(state_device_info.product_name),
|
||||||
MmversionToString(state_device_info.driver_version),
|
MmversionToString(state_device_info.driver_version),
|
||||||
MIDI_PORT_OPENED);
|
MIDI_PORT_OPENED);
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::AddInputPortOnTaskThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::AddInputPortOnTaskThread,
|
||||||
base::Unretained(this), port_info));
|
base::Unretained(this), port_info));
|
||||||
} else {
|
} else {
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::SetInputPortStateOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::SetInputPortStateOnTaskThread,
|
||||||
base::Unretained(this), port_number,
|
base::Unretained(this), port_number,
|
||||||
@@ -710,7 +711,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd757286.aspx
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd757286.aspx
|
||||||
const base::TimeTicks event_time =
|
const base::TimeTicks event_time =
|
||||||
state->start_time + base::TimeDelta::FromMilliseconds(elapsed_ms);
|
state->start_time + base::TimeDelta::FromMilliseconds(elapsed_ms);
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::ReceiveMidiDataOnTaskThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::ReceiveMidiDataOnTaskThread,
|
||||||
base::Unretained(this), state->port_index, data,
|
base::Unretained(this), state->port_index, data,
|
||||||
event_time));
|
event_time));
|
||||||
@@ -747,7 +748,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd757286.aspx
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/dd757286.aspx
|
||||||
const base::TimeTicks event_time =
|
const base::TimeTicks event_time =
|
||||||
state->start_time + base::TimeDelta::FromMilliseconds(elapsed_ms);
|
state->start_time + base::TimeDelta::FromMilliseconds(elapsed_ms);
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::ReceiveMidiDataOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::ReceiveMidiDataOnTaskThread,
|
||||||
base::Unretained(this), state->port_index, data,
|
base::Unretained(this), state->port_index, data,
|
||||||
@@ -772,7 +773,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
input_ports_ages_[port_number] += 1;
|
input_ports_ages_[port_number] += 1;
|
||||||
unused_input_ports_[device_info].push(port_number);
|
unused_input_ports_[device_info].push(port_number);
|
||||||
}
|
}
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::SetInputPortStateOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::SetInputPortStateOnTaskThread,
|
||||||
base::Unretained(this), port_number,
|
base::Unretained(this), port_number,
|
||||||
@@ -854,11 +855,11 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
base::WideToUTF8(state_device_info.product_name),
|
base::WideToUTF8(state_device_info.product_name),
|
||||||
MmversionToString(state_device_info.driver_version),
|
MmversionToString(state_device_info.driver_version),
|
||||||
MIDI_PORT_OPENED);
|
MIDI_PORT_OPENED);
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE, base::Bind(&MidiServiceWinImpl::AddOutputPortOnTaskThread,
|
FROM_HERE, base::Bind(&MidiServiceWinImpl::AddOutputPortOnTaskThread,
|
||||||
base::Unretained(this), port_info));
|
base::Unretained(this), port_info));
|
||||||
} else {
|
} else {
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::SetOutputPortStateOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::SetOutputPortStateOnTaskThread,
|
||||||
base::Unretained(this), port_number, MIDI_PORT_CONNECTED));
|
base::Unretained(this), port_number, MIDI_PORT_CONNECTED));
|
||||||
@@ -895,7 +896,7 @@ class MidiServiceWinImpl : public MidiServiceWin,
|
|||||||
unused_output_ports_[device_info].push(port_number);
|
unused_output_ports_[device_info].push(port_number);
|
||||||
state->closed = true;
|
state->closed = true;
|
||||||
}
|
}
|
||||||
task_thread_.message_loop()->PostTask(
|
task_thread_.task_runner()->PostTask(
|
||||||
FROM_HERE,
|
FROM_HERE,
|
||||||
base::Bind(&MidiServiceWinImpl::SetOutputPortStateOnTaskThread,
|
base::Bind(&MidiServiceWinImpl::SetOutputPortStateOnTaskThread,
|
||||||
base::Unretained(this), port_number,
|
base::Unretained(this), port_number,
|
||||||
|
@@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
#include "base/macros.h"
|
#include "base/macros.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "net/base/network_change_notifier.h"
|
#include "net/base/network_change_notifier.h"
|
||||||
#include "net/base/network_change_notifier_factory.h"
|
#include "net/base/network_change_notifier_factory.h"
|
||||||
#include "net/base/network_change_notifier_win.h"
|
#include "net/base/network_change_notifier_win.h"
|
||||||
@@ -89,7 +90,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
|
|
||||||
// If a task to notify observers of the IP address change event was
|
// If a task to notify observers of the IP address change event was
|
||||||
// incorrectly posted, make sure it gets run to trigger a failure.
|
// incorrectly posted, make sure it gets run to trigger a failure.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calls WatchForAddressChange, and simulates a WatchForAddressChangeInternal
|
// Calls WatchForAddressChange, and simulates a WatchForAddressChangeInternal
|
||||||
@@ -112,7 +113,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
|
|
||||||
// If a task to notify observers of the IP address change event was
|
// If a task to notify observers of the IP address change event was
|
||||||
// incorrectly posted, make sure it gets run.
|
// incorrectly posted, make sure it gets run.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simulates a network change event, resulting in a call to OnObjectSignaled.
|
// Simulates a network change event, resulting in a call to OnObjectSignaled.
|
||||||
@@ -132,7 +133,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
EXPECT_EQ(0, network_change_notifier_.sequential_failures());
|
EXPECT_EQ(0, network_change_notifier_.sequential_failures());
|
||||||
|
|
||||||
// Run the task to notify observers of the IP address change event.
|
// Run the task to notify observers of the IP address change event.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simulates a network change event, resulting in a call to OnObjectSignaled.
|
// Simulates a network change event, resulting in a call to OnObjectSignaled.
|
||||||
@@ -154,7 +155,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
EXPECT_LT(0, network_change_notifier_.sequential_failures());
|
EXPECT_LT(0, network_change_notifier_.sequential_failures());
|
||||||
|
|
||||||
// Run the task to notify observers of the IP address change event.
|
// Run the task to notify observers of the IP address change event.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Runs the message loop until WatchForAddressChange is called again, as a
|
// Runs the message loop until WatchForAddressChange is called again, as a
|
||||||
@@ -172,7 +173,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
EXPECT_CALL(network_change_notifier_, WatchForAddressChangeInternal())
|
EXPECT_CALL(network_change_notifier_, WatchForAddressChangeInternal())
|
||||||
.Times(1).WillOnce(Return(true));
|
.Times(1).WillOnce(Return(true));
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_TRUE(network_change_notifier_.is_watching());
|
EXPECT_TRUE(network_change_notifier_.is_watching());
|
||||||
EXPECT_EQ(0, network_change_notifier_.sequential_failures());
|
EXPECT_EQ(0, network_change_notifier_.sequential_failures());
|
||||||
@@ -196,7 +197,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
.Times(AtLeast(1))
|
.Times(AtLeast(1))
|
||||||
.WillRepeatedly(Invoke(ExitMessageLoopAndReturnFalse));
|
.WillRepeatedly(Invoke(ExitMessageLoopAndReturnFalse));
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
|
|
||||||
EXPECT_FALSE(network_change_notifier_.is_watching());
|
EXPECT_FALSE(network_change_notifier_.is_watching());
|
||||||
EXPECT_LT(initial_sequential_failures,
|
EXPECT_LT(initial_sequential_failures,
|
||||||
@@ -204,7 +205,7 @@ class NetworkChangeNotifierWinTest : public testing::Test {
|
|||||||
|
|
||||||
// If a task to notify observers of the IP address change event was
|
// If a task to notify observers of the IP address change event was
|
||||||
// incorrectly posted, make sure it gets run.
|
// incorrectly posted, make sure it gets run.
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include "base/memory/ptr_util.h"
|
#include "base/memory/ptr_util.h"
|
||||||
#include "base/memory/ref_counted.h"
|
#include "base/memory/ref_counted.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
#include "base/single_thread_task_runner.h"
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/threading/thread_task_runner_handle.h"
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "base/time/clock.h"
|
#include "base/time/clock.h"
|
||||||
@@ -465,7 +466,7 @@ void MDnsTest::RunFor(base::TimeDelta time_period) {
|
|||||||
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
|
||||||
FROM_HERE, callback.callback(), time_period);
|
FROM_HERE, callback.callback(), time_period);
|
||||||
|
|
||||||
base::MessageLoop::current()->Run();
|
base::RunLoop().Run();
|
||||||
callback.Cancel();
|
callback.Cancel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1185,7 +1186,7 @@ TEST_F(MDnsConnectionTest, ReceiveAsynchronous) {
|
|||||||
|
|
||||||
EXPECT_CALL(delegate_, HandlePacketInternal(sample_packet_));
|
EXPECT_CALL(delegate_, HandlePacketInternal(sample_packet_));
|
||||||
|
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MDnsConnectionTest, Error) {
|
TEST_F(MDnsConnectionTest, Error) {
|
||||||
@@ -1200,7 +1201,7 @@ TEST_F(MDnsConnectionTest, Error) {
|
|||||||
|
|
||||||
EXPECT_CALL(delegate_, OnConnectionError(ERR_SOCKET_NOT_CONNECTED));
|
EXPECT_CALL(delegate_, OnConnectionError(ERR_SOCKET_NOT_CONNECTED));
|
||||||
callback.Run(ERR_SOCKET_NOT_CONNECTED);
|
callback.Run(ERR_SOCKET_NOT_CONNECTED);
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
class MDnsConnectionSendTest : public MDnsConnectionTest {
|
class MDnsConnectionSendTest : public MDnsConnectionTest {
|
||||||
@@ -1235,7 +1236,7 @@ TEST_F(MDnsConnectionSendTest, SendError) {
|
|||||||
|
|
||||||
connection_.Send(sample_buffer_, sample_packet_.size());
|
connection_.Send(sample_buffer_, sample_packet_.size());
|
||||||
EXPECT_CALL(delegate_, OnConnectionError(ERR_SOCKET_NOT_CONNECTED));
|
EXPECT_CALL(delegate_, OnConnectionError(ERR_SOCKET_NOT_CONNECTED));
|
||||||
base::MessageLoop::current()->RunUntilIdle();
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(MDnsConnectionSendTest, SendQueued) {
|
TEST_F(MDnsConnectionSendTest, SendQueued) {
|
||||||
|
@@ -13,6 +13,8 @@
|
|||||||
#include "base/files/file_util.h"
|
#include "base/files/file_util.h"
|
||||||
#include "base/files/scoped_temp_dir.h"
|
#include "base/files/scoped_temp_dir.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
|
#include "base/run_loop.h"
|
||||||
|
#include "base/threading/thread_task_runner_handle.h"
|
||||||
#include "net/http/transport_security_state.h"
|
#include "net/http/transport_security_state.h"
|
||||||
#include "testing/gtest/include/gtest/gtest.h"
|
#include "testing/gtest/include/gtest/gtest.h"
|
||||||
|
|
||||||
@@ -28,14 +30,15 @@ class TransportSecurityPersisterTest : public testing::Test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
~TransportSecurityPersisterTest() override {
|
~TransportSecurityPersisterTest() override {
|
||||||
base::MessageLoopForIO::current()->RunUntilIdle();
|
EXPECT_TRUE(base::MessageLoopForIO::IsCurrent());
|
||||||
|
base::RunLoop().RunUntilIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUp() override {
|
void SetUp() override {
|
||||||
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
||||||
|
ASSERT_TRUE(base::MessageLoopForIO::IsCurrent());
|
||||||
persister_.reset(new TransportSecurityPersister(
|
persister_.reset(new TransportSecurityPersister(
|
||||||
&state_, temp_dir_.path(),
|
&state_, temp_dir_.path(), base::ThreadTaskRunnerHandle::Get(), false));
|
||||||
base::MessageLoopForIO::current()->task_runner(), false));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@@ -13,6 +13,7 @@
|
|||||||
#include "base/files/file_path.h"
|
#include "base/files/file_path.h"
|
||||||
#include "base/message_loop/message_loop.h"
|
#include "base/message_loop/message_loop.h"
|
||||||
#include "base/process/launch.h"
|
#include "base/process/launch.h"
|
||||||
|
#include "base/single_thread_task_runner.h"
|
||||||
#include "base/strings/string_number_conversions.h"
|
#include "base/strings/string_number_conversions.h"
|
||||||
#include "base/strings/string_util.h"
|
#include "base/strings/string_util.h"
|
||||||
#include "base/strings/utf_string_conversions.h"
|
#include "base/strings/utf_string_conversions.h"
|
||||||
@@ -51,7 +52,7 @@ bool ReadData(HANDLE read_fd,
|
|||||||
|
|
||||||
// Prepare a timeout in case the server fails to start.
|
// Prepare a timeout in case the server fails to start.
|
||||||
bool unblocked = false;
|
bool unblocked = false;
|
||||||
thread.message_loop()->PostDelayedTask(
|
thread.task_runner()->PostDelayedTask(
|
||||||
FROM_HERE, base::Bind(UnblockPipe, write_fd, bytes_max, &unblocked),
|
FROM_HERE, base::Bind(UnblockPipe, write_fd, bytes_max, &unblocked),
|
||||||
TestTimeouts::action_max_timeout());
|
TestTimeouts::action_max_timeout());
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user