| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/files/file_util.h" | 5 #include "base/files/file_util.h" |
| 6 #include "base/memory/ref_counted_memory.h" | 6 #include "base/memory/ref_counted_memory.h" |
| 7 #include "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "content/public/browser/browser_thread.h" | 8 #include "content/public/browser/browser_thread.h" |
| 9 #include "content/public/browser/tracing_controller.h" | 9 #include "content/public/browser/tracing_controller.h" |
| 10 #include "content/public/test/browser_test_utils.h" | 10 #include "content/public/test/browser_test_utils.h" |
| 11 #include "content/public/test/content_browser_test.h" | 11 #include "content/public/test/content_browser_test.h" |
| 12 #include "content/public/test/content_browser_test_utils.h" | 12 #include "content/public/test/content_browser_test_utils.h" |
| 13 #include "content/shell/browser/shell.h" | 13 #include "content/shell/browser/shell.h" |
| 14 | 14 |
| 15 using base::trace_event::CategoryFilter; | |
| 16 using base::trace_event::TraceOptions; | |
| 17 using base::trace_event::RECORD_CONTINUOUSLY; | 15 using base::trace_event::RECORD_CONTINUOUSLY; |
| 18 using base::trace_event::RECORD_UNTIL_FULL; | 16 using base::trace_event::RECORD_UNTIL_FULL; |
| 17 using base::trace_event::TraceConfig; |
| 19 | 18 |
| 20 namespace content { | 19 namespace content { |
| 21 | 20 |
| 22 class TracingControllerTestEndpoint | 21 class TracingControllerTestEndpoint |
| 23 : public TracingController::TraceDataEndpoint { | 22 : public TracingController::TraceDataEndpoint { |
| 24 public: | 23 public: |
| 25 TracingControllerTestEndpoint( | 24 TracingControllerTestEndpoint( |
| 26 base::Callback<void(base::RefCountedString*)> done_callback) | 25 base::Callback<void(base::RefCountedString*)> done_callback) |
| 27 : done_callback_(done_callback) {} | 26 : done_callback_(done_callback) {} |
| 28 | 27 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 | 157 |
| 159 TracingController* controller = TracingController::GetInstance(); | 158 TracingController* controller = TracingController::GetInstance(); |
| 160 | 159 |
| 161 { | 160 { |
| 162 base::RunLoop run_loop; | 161 base::RunLoop run_loop; |
| 163 TracingController::EnableRecordingDoneCallback callback = | 162 TracingController::EnableRecordingDoneCallback callback = |
| 164 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 163 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 165 base::Unretained(this), | 164 base::Unretained(this), |
| 166 run_loop.QuitClosure()); | 165 run_loop.QuitClosure()); |
| 167 bool result = controller->EnableRecording( | 166 bool result = controller->EnableRecording( |
| 168 CategoryFilter(), TraceOptions(), callback); | 167 TraceConfig(), callback); |
| 169 ASSERT_TRUE(result); | 168 ASSERT_TRUE(result); |
| 170 run_loop.Run(); | 169 run_loop.Run(); |
| 171 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 170 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 172 } | 171 } |
| 173 | 172 |
| 174 { | 173 { |
| 175 base::RunLoop run_loop; | 174 base::RunLoop run_loop; |
| 176 base::Callback<void(base::RefCountedString*)> callback = base::Bind( | 175 base::Callback<void(base::RefCountedString*)> callback = base::Bind( |
| 177 &TracingControllerTest::DisableRecordingStringDoneCallbackTest, | 176 &TracingControllerTest::DisableRecordingStringDoneCallbackTest, |
| 178 base::Unretained(this), | 177 base::Unretained(this), |
| 179 run_loop.QuitClosure()); | 178 run_loop.QuitClosure()); |
| 180 bool result = controller->DisableRecording( | 179 bool result = controller->DisableRecording( |
| 181 TracingController::CreateStringSink(callback)); | 180 TracingController::CreateStringSink(callback)); |
| 182 ASSERT_TRUE(result); | 181 ASSERT_TRUE(result); |
| 183 run_loop.Run(); | 182 run_loop.Run(); |
| 184 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 183 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 185 } | 184 } |
| 186 } | 185 } |
| 187 | 186 |
| 188 void TestEnableAndDisableRecordingCompressed() { | 187 void TestEnableAndDisableRecordingCompressed() { |
| 189 Navigate(shell()); | 188 Navigate(shell()); |
| 190 | 189 |
| 191 TracingController* controller = TracingController::GetInstance(); | 190 TracingController* controller = TracingController::GetInstance(); |
| 192 | 191 |
| 193 { | 192 { |
| 194 base::RunLoop run_loop; | 193 base::RunLoop run_loop; |
| 195 TracingController::EnableRecordingDoneCallback callback = | 194 TracingController::EnableRecordingDoneCallback callback = |
| 196 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 195 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 197 base::Unretained(this), run_loop.QuitClosure()); | 196 base::Unretained(this), run_loop.QuitClosure()); |
| 198 bool result = controller->EnableRecording(CategoryFilter(), | 197 bool result = controller->EnableRecording(TraceConfig(), callback); |
| 199 TraceOptions(), callback); | |
| 200 ASSERT_TRUE(result); | 198 ASSERT_TRUE(result); |
| 201 run_loop.Run(); | 199 run_loop.Run(); |
| 202 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 200 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 203 } | 201 } |
| 204 | 202 |
| 205 { | 203 { |
| 206 base::RunLoop run_loop; | 204 base::RunLoop run_loop; |
| 207 base::Callback<void(base::RefCountedString*)> callback = base::Bind( | 205 base::Callback<void(base::RefCountedString*)> callback = base::Bind( |
| 208 &TracingControllerTest::DisableRecordingStringDoneCallbackTest, | 206 &TracingControllerTest::DisableRecordingStringDoneCallbackTest, |
| 209 base::Unretained(this), run_loop.QuitClosure()); | 207 base::Unretained(this), run_loop.QuitClosure()); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 220 const base::FilePath& result_file_path) { | 218 const base::FilePath& result_file_path) { |
| 221 Navigate(shell()); | 219 Navigate(shell()); |
| 222 | 220 |
| 223 TracingController* controller = TracingController::GetInstance(); | 221 TracingController* controller = TracingController::GetInstance(); |
| 224 | 222 |
| 225 { | 223 { |
| 226 base::RunLoop run_loop; | 224 base::RunLoop run_loop; |
| 227 TracingController::EnableRecordingDoneCallback callback = | 225 TracingController::EnableRecordingDoneCallback callback = |
| 228 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 226 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 229 base::Unretained(this), run_loop.QuitClosure()); | 227 base::Unretained(this), run_loop.QuitClosure()); |
| 230 bool result = controller->EnableRecording(CategoryFilter(), | 228 bool result = controller->EnableRecording(TraceConfig(), callback); |
| 231 TraceOptions(), callback); | |
| 232 ASSERT_TRUE(result); | 229 ASSERT_TRUE(result); |
| 233 run_loop.Run(); | 230 run_loop.Run(); |
| 234 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 231 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 235 } | 232 } |
| 236 | 233 |
| 237 { | 234 { |
| 238 base::RunLoop run_loop; | 235 base::RunLoop run_loop; |
| 239 base::Closure callback = base::Bind( | 236 base::Closure callback = base::Bind( |
| 240 &TracingControllerTest::DisableRecordingFileDoneCallbackTest, | 237 &TracingControllerTest::DisableRecordingFileDoneCallbackTest, |
| 241 base::Unretained(this), run_loop.QuitClosure(), result_file_path); | 238 base::Unretained(this), run_loop.QuitClosure(), result_file_path); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 254 Navigate(shell()); | 251 Navigate(shell()); |
| 255 | 252 |
| 256 TracingController* controller = TracingController::GetInstance(); | 253 TracingController* controller = TracingController::GetInstance(); |
| 257 | 254 |
| 258 { | 255 { |
| 259 base::RunLoop run_loop; | 256 base::RunLoop run_loop; |
| 260 TracingController::EnableRecordingDoneCallback callback = | 257 TracingController::EnableRecordingDoneCallback callback = |
| 261 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, | 258 base::Bind(&TracingControllerTest::EnableRecordingDoneCallbackTest, |
| 262 base::Unretained(this), | 259 base::Unretained(this), |
| 263 run_loop.QuitClosure()); | 260 run_loop.QuitClosure()); |
| 264 bool result = controller->EnableRecording( | 261 bool result = controller->EnableRecording(TraceConfig(), callback); |
| 265 CategoryFilter(), TraceOptions(), callback); | |
| 266 ASSERT_TRUE(result); | 262 ASSERT_TRUE(result); |
| 267 run_loop.Run(); | 263 run_loop.Run(); |
| 268 EXPECT_EQ(enable_recording_done_callback_count(), 1); | 264 EXPECT_EQ(enable_recording_done_callback_count(), 1); |
| 269 } | 265 } |
| 270 | 266 |
| 271 { | 267 { |
| 272 base::RunLoop run_loop; | 268 base::RunLoop run_loop; |
| 273 base::Closure callback = base::Bind( | 269 base::Closure callback = base::Bind( |
| 274 &TracingControllerTest::DisableRecordingFileDoneCallbackTest, | 270 &TracingControllerTest::DisableRecordingFileDoneCallbackTest, |
| 275 base::Unretained(this), | 271 base::Unretained(this), |
| 276 run_loop.QuitClosure(), | 272 run_loop.QuitClosure(), |
| 277 result_file_path); | 273 result_file_path); |
| 278 bool result = controller->DisableRecording( | 274 bool result = controller->DisableRecording( |
| 279 TracingController::CreateFileSink(result_file_path, callback)); | 275 TracingController::CreateFileSink(result_file_path, callback)); |
| 280 ASSERT_TRUE(result); | 276 ASSERT_TRUE(result); |
| 281 run_loop.Run(); | 277 run_loop.Run(); |
| 282 EXPECT_EQ(disable_recording_done_callback_count(), 1); | 278 EXPECT_EQ(disable_recording_done_callback_count(), 1); |
| 283 } | 279 } |
| 284 } | 280 } |
| 285 | 281 |
| 286 void TestEnableCaptureAndDisableMonitoring( | 282 void TestEnableCaptureAndDisableMonitoring( |
| 287 const base::FilePath& result_file_path) { | 283 const base::FilePath& result_file_path) { |
| 288 Navigate(shell()); | 284 Navigate(shell()); |
| 289 | 285 |
| 290 TracingController* controller = TracingController::GetInstance(); | 286 TracingController* controller = TracingController::GetInstance(); |
| 291 | 287 |
| 292 { | 288 { |
| 293 bool is_monitoring; | 289 bool is_monitoring; |
| 294 CategoryFilter category_filter(""); | 290 TraceConfig trace_config("", ""); |
| 295 TraceOptions options; | |
| 296 controller->GetMonitoringStatus( | 291 controller->GetMonitoringStatus( |
| 297 &is_monitoring, &category_filter, &options); | 292 &is_monitoring, &trace_config); |
| 298 EXPECT_FALSE(is_monitoring); | 293 EXPECT_FALSE(is_monitoring); |
| 299 EXPECT_EQ("-*Debug,-*Test", category_filter.ToString()); | 294 EXPECT_EQ("-*Debug,-*Test", trace_config.ToCategoryFilterString()); |
| 300 EXPECT_FALSE(options.record_mode == RECORD_CONTINUOUSLY); | 295 EXPECT_FALSE(trace_config.GetTraceRecordMode() == RECORD_CONTINUOUSLY); |
| 301 EXPECT_FALSE(options.enable_sampling); | 296 EXPECT_FALSE(trace_config.IsSamplingEnabled()); |
| 302 EXPECT_FALSE(options.enable_systrace); | 297 EXPECT_FALSE(trace_config.IsSystraceEnabled()); |
| 303 } | 298 } |
| 304 | 299 |
| 305 { | 300 { |
| 306 base::RunLoop run_loop; | 301 base::RunLoop run_loop; |
| 307 TracingController::EnableMonitoringDoneCallback callback = | 302 TracingController::EnableMonitoringDoneCallback callback = |
| 308 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, | 303 base::Bind(&TracingControllerTest::EnableMonitoringDoneCallbackTest, |
| 309 base::Unretained(this), | 304 base::Unretained(this), |
| 310 run_loop.QuitClosure()); | 305 run_loop.QuitClosure()); |
| 311 | 306 |
| 312 TraceOptions trace_options; | 307 TraceConfig trace_config("*", ""); |
| 313 trace_options.enable_sampling = true; | 308 trace_config.EnableSampling(); |
| 314 | 309 bool result = controller->EnableMonitoring(trace_config, callback); |
| 315 bool result = controller->EnableMonitoring( | |
| 316 CategoryFilter("*"), | |
| 317 trace_options, | |
| 318 callback); | |
| 319 ASSERT_TRUE(result); | 310 ASSERT_TRUE(result); |
| 320 run_loop.Run(); | 311 run_loop.Run(); |
| 321 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); | 312 EXPECT_EQ(enable_monitoring_done_callback_count(), 1); |
| 322 } | 313 } |
| 323 | 314 |
| 324 { | 315 { |
| 325 bool is_monitoring; | 316 bool is_monitoring; |
| 326 CategoryFilter category_filter(""); | 317 TraceConfig trace_config("", ""); |
| 327 TraceOptions options; | 318 controller->GetMonitoringStatus(&is_monitoring, &trace_config); |
| 328 controller->GetMonitoringStatus( | |
| 329 &is_monitoring, &category_filter, &options); | |
| 330 EXPECT_TRUE(is_monitoring); | 319 EXPECT_TRUE(is_monitoring); |
| 331 EXPECT_EQ("*", category_filter.ToString()); | 320 EXPECT_EQ("*", trace_config.ToCategoryFilterString()); |
| 332 EXPECT_FALSE(options.record_mode == RECORD_CONTINUOUSLY); | 321 EXPECT_FALSE(trace_config.GetTraceRecordMode() == RECORD_CONTINUOUSLY); |
| 333 EXPECT_TRUE(options.enable_sampling); | 322 EXPECT_TRUE(trace_config.IsSamplingEnabled()); |
| 334 EXPECT_FALSE(options.enable_systrace); | 323 EXPECT_FALSE(trace_config.IsSystraceEnabled()); |
| 335 } | 324 } |
| 336 | 325 |
| 337 { | 326 { |
| 338 base::RunLoop run_loop; | 327 base::RunLoop run_loop; |
| 339 base::Closure callback = base::Bind( | 328 base::Closure callback = base::Bind( |
| 340 &TracingControllerTest::CaptureMonitoringSnapshotDoneCallbackTest, | 329 &TracingControllerTest::CaptureMonitoringSnapshotDoneCallbackTest, |
| 341 base::Unretained(this), | 330 base::Unretained(this), |
| 342 run_loop.QuitClosure(), | 331 run_loop.QuitClosure(), |
| 343 result_file_path); | 332 result_file_path); |
| 344 ASSERT_TRUE(controller->CaptureMonitoringSnapshot( | 333 ASSERT_TRUE(controller->CaptureMonitoringSnapshot( |
| 345 TracingController::CreateFileSink(result_file_path, callback))); | 334 TracingController::CreateFileSink(result_file_path, callback))); |
| 346 run_loop.Run(); | 335 run_loop.Run(); |
| 347 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); | 336 EXPECT_EQ(capture_monitoring_snapshot_done_callback_count(), 1); |
| 348 } | 337 } |
| 349 | 338 |
| 350 { | 339 { |
| 351 base::RunLoop run_loop; | 340 base::RunLoop run_loop; |
| 352 TracingController::DisableMonitoringDoneCallback callback = | 341 TracingController::DisableMonitoringDoneCallback callback = |
| 353 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, | 342 base::Bind(&TracingControllerTest::DisableMonitoringDoneCallbackTest, |
| 354 base::Unretained(this), | 343 base::Unretained(this), |
| 355 run_loop.QuitClosure()); | 344 run_loop.QuitClosure()); |
| 356 bool result = controller->DisableMonitoring(callback); | 345 bool result = controller->DisableMonitoring(callback); |
| 357 ASSERT_TRUE(result); | 346 ASSERT_TRUE(result); |
| 358 run_loop.Run(); | 347 run_loop.Run(); |
| 359 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); | 348 EXPECT_EQ(disable_monitoring_done_callback_count(), 1); |
| 360 } | 349 } |
| 361 | 350 |
| 362 { | 351 { |
| 363 bool is_monitoring; | 352 bool is_monitoring; |
| 364 CategoryFilter category_filter(""); | 353 TraceConfig trace_config("", ""); |
| 365 TraceOptions options; | 354 controller->GetMonitoringStatus(&is_monitoring, &trace_config); |
| 366 controller->GetMonitoringStatus(&is_monitoring, | |
| 367 &category_filter, | |
| 368 &options); | |
| 369 EXPECT_FALSE(is_monitoring); | 355 EXPECT_FALSE(is_monitoring); |
| 370 EXPECT_EQ("", category_filter.ToString()); | 356 EXPECT_EQ("", trace_config.ToCategoryFilterString()); |
| 371 EXPECT_FALSE(options.record_mode == RECORD_CONTINUOUSLY); | 357 EXPECT_FALSE(trace_config.GetTraceRecordMode() == RECORD_CONTINUOUSLY); |
| 372 EXPECT_FALSE(options.enable_sampling); | 358 EXPECT_FALSE(trace_config.IsSamplingEnabled()); |
| 373 EXPECT_FALSE(options.enable_systrace); | 359 EXPECT_FALSE(trace_config.IsSystraceEnabled()); |
| 374 } | 360 } |
| 375 } | 361 } |
| 376 | 362 |
| 377 private: | 363 private: |
| 378 int get_categories_done_callback_count_; | 364 int get_categories_done_callback_count_; |
| 379 int enable_recording_done_callback_count_; | 365 int enable_recording_done_callback_count_; |
| 380 int disable_recording_done_callback_count_; | 366 int disable_recording_done_callback_count_; |
| 381 int enable_monitoring_done_callback_count_; | 367 int enable_monitoring_done_callback_count_; |
| 382 int disable_monitoring_done_callback_count_; | 368 int disable_monitoring_done_callback_count_; |
| 383 int capture_monitoring_snapshot_done_callback_count_; | 369 int capture_monitoring_snapshot_done_callback_count_; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 424 TestEnableAndDisableRecordingCompressedFile(file_path); | 410 TestEnableAndDisableRecordingCompressedFile(file_path); |
| 425 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); | 411 EXPECT_EQ(file_path.value(), last_actual_recording_file_path().value()); |
| 426 } | 412 } |
| 427 | 413 |
| 428 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 414 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 429 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { | 415 EnableAndDisableRecordingWithEmptyFileAndNullCallback) { |
| 430 Navigate(shell()); | 416 Navigate(shell()); |
| 431 | 417 |
| 432 TracingController* controller = TracingController::GetInstance(); | 418 TracingController* controller = TracingController::GetInstance(); |
| 433 EXPECT_TRUE(controller->EnableRecording( | 419 EXPECT_TRUE(controller->EnableRecording( |
| 434 CategoryFilter(), | 420 TraceConfig(), |
| 435 TraceOptions(), | |
| 436 TracingController::EnableRecordingDoneCallback())); | 421 TracingController::EnableRecordingDoneCallback())); |
| 437 EXPECT_TRUE(controller->DisableRecording(NULL)); | 422 EXPECT_TRUE(controller->DisableRecording(NULL)); |
| 438 base::RunLoop().RunUntilIdle(); | 423 base::RunLoop().RunUntilIdle(); |
| 439 } | 424 } |
| 440 | 425 |
| 441 IN_PROC_BROWSER_TEST_F(TracingControllerTest, | 426 IN_PROC_BROWSER_TEST_F(TracingControllerTest, |
| 442 EnableCaptureAndDisableMonitoring) { | 427 EnableCaptureAndDisableMonitoring) { |
| 443 base::FilePath file_path; | 428 base::FilePath file_path; |
| 444 base::CreateTemporaryFile(&file_path); | 429 base::CreateTemporaryFile(&file_path); |
| 445 TestEnableCaptureAndDisableMonitoring(file_path); | 430 TestEnableCaptureAndDisableMonitoring(file_path); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 460 #else | 445 #else |
| 461 #define MAYBE_EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback \ | 446 #define MAYBE_EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback \ |
| 462 EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback | 447 EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback |
| 463 #endif | 448 #endif |
| 464 IN_PROC_BROWSER_TEST_F( | 449 IN_PROC_BROWSER_TEST_F( |
| 465 TracingControllerTest, | 450 TracingControllerTest, |
| 466 MAYBE_EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback) { | 451 MAYBE_EnableCaptureAndDisableMonitoringWithEmptyFileAndNullCallback) { |
| 467 Navigate(shell()); | 452 Navigate(shell()); |
| 468 | 453 |
| 469 TracingController* controller = TracingController::GetInstance(); | 454 TracingController* controller = TracingController::GetInstance(); |
| 470 TraceOptions trace_options; | 455 TraceConfig trace_config("*", ""); |
| 471 trace_options.enable_sampling = true; | 456 trace_config.EnableSampling(); |
| 472 EXPECT_TRUE(controller->EnableMonitoring( | 457 EXPECT_TRUE(controller->EnableMonitoring( |
| 473 CategoryFilter("*"), | 458 trace_config, |
| 474 trace_options, | |
| 475 TracingController::EnableMonitoringDoneCallback())); | 459 TracingController::EnableMonitoringDoneCallback())); |
| 476 controller->CaptureMonitoringSnapshot(NULL); | 460 controller->CaptureMonitoringSnapshot(NULL); |
| 477 base::RunLoop().RunUntilIdle(); | 461 base::RunLoop().RunUntilIdle(); |
| 478 EXPECT_TRUE(controller->DisableMonitoring( | 462 EXPECT_TRUE(controller->DisableMonitoring( |
| 479 TracingController::DisableMonitoringDoneCallback())); | 463 TracingController::DisableMonitoringDoneCallback())); |
| 480 base::RunLoop().RunUntilIdle(); | 464 base::RunLoop().RunUntilIdle(); |
| 481 } | 465 } |
| 482 | 466 |
| 483 } // namespace content | 467 } // namespace content |
| OLD | NEW |