Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Side by Side Diff: content/browser/tracing/background_tracing_manager_browsertest.cc

Issue 2769963005: Add EnabledStateObserver to BackgroundTracingManager (Closed)
Patch Set: Add destructor and move CONTENT_EXPORT. Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/metrics/histogram_macros.h" 11 #include "base/metrics/histogram_macros.h"
12 #include "base/strings/pattern.h" 12 #include "base/strings/pattern.h"
13 #include "base/trace_event/trace_event.h" 13 #include "base/trace_event/trace_event.h"
14 #include "content/browser/tracing/background_tracing_manager_impl.h" 14 #include "content/browser/tracing/background_tracing_manager_impl.h"
15 #include "content/browser/tracing/background_tracing_rule.h" 15 #include "content/browser/tracing/background_tracing_rule.h"
16 #include "content/public/common/content_switches.h" 16 #include "content/public/common/content_switches.h"
17 #include "content/public/test/content_browser_test.h" 17 #include "content/public/test/content_browser_test.h"
18 #include "content/public/test/content_browser_test_utils.h" 18 #include "content/public/test/content_browser_test_utils.h"
19 #include "content/public/test/test_utils.h" 19 #include "content/public/test/test_utils.h"
20 #include "third_party/zlib/zlib.h" 20 #include "third_party/zlib/zlib.h"
21 21
22 namespace content { 22 namespace content {
23 namespace {
24
25 class TestBackgroundTracingObserver
26 : public BackgroundTracingManagerImpl::EnabledStateObserver {
27 public:
28 explicit TestBackgroundTracingObserver(
29 base::Closure tracing_enabled_callback);
30 ~TestBackgroundTracingObserver() override;
31
32 void OnScenarioActivated(const BackgroundTracingConfigImpl& config) override;
33 void OnTracingEnabled(
34 BackgroundTracingConfigImpl::CategoryPreset preset) override;
35
36 private:
37 bool was_scenario_activated_;
38 base::Closure tracing_enabled_callback_;
39 };
40
41 TestBackgroundTracingObserver::TestBackgroundTracingObserver(
42 base::Closure tracing_enabled_callback)
43 : was_scenario_activated_(false),
44 tracing_enabled_callback_(tracing_enabled_callback) {
45 BackgroundTracingManagerImpl::GetInstance()->AddEnabledStateObserver(this);
46 }
47
48 TestBackgroundTracingObserver::~TestBackgroundTracingObserver() {
49 static_cast<BackgroundTracingManagerImpl*>(
50 BackgroundTracingManager::GetInstance())
51 ->RemoveEnabledStateObserver(this);
52 EXPECT_TRUE(was_scenario_activated_);
53 }
54
55 void TestBackgroundTracingObserver::OnScenarioActivated(
56 const BackgroundTracingConfigImpl& config) {
57 was_scenario_activated_ = true;
58 }
59
60 void TestBackgroundTracingObserver::OnTracingEnabled(
61 BackgroundTracingConfigImpl::CategoryPreset preset) {
62 tracing_enabled_callback_.Run();
63 }
64
65 } // namespace
23 66
24 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest { 67 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest {
25 public: 68 public:
26 BackgroundTracingManagerBrowserTest() {} 69 BackgroundTracingManagerBrowserTest() {}
27 70
28 private: 71 private:
29 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest); 72 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest);
30 }; 73 };
31 74
32 class BackgroundTracingManagerUploadConfigWrapper { 75 class BackgroundTracingManagerUploadConfigWrapper {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 315 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
273 wait_for_upload.QuitClosure()); 316 wait_for_upload.QuitClosure());
274 317
275 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 318 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
276 319
277 content::BackgroundTracingManager::TriggerHandle handle = 320 content::BackgroundTracingManager::TriggerHandle handle =
278 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 321 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
279 "preemptive_test"); 322 "preemptive_test");
280 323
281 base::RunLoop wait_for_activated; 324 base::RunLoop wait_for_activated;
282 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 325 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
283 wait_for_activated.QuitClosure());
284 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 326 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
285 std::move(config), upload_config_wrapper.get_receive_callback(), 327 std::move(config), upload_config_wrapper.get_receive_callback(),
286 BackgroundTracingManager::ANONYMIZE_DATA)); 328 BackgroundTracingManager::ANONYMIZE_DATA));
287 329
288 wait_for_activated.Run(); 330 wait_for_activated.Run();
289 331
290 TRACE_EVENT1("benchmark", "whitelisted", "find_this", 1); 332 TRACE_EVENT1("benchmark", "whitelisted", "find_this", 1);
291 TRACE_EVENT1("benchmark", "not_whitelisted", "this_not_found", 1); 333 TRACE_EVENT1("benchmark", "not_whitelisted", "this_not_found", 1);
292 334
293 BackgroundTracingManager::GetInstance()->WhenIdle( 335 BackgroundTracingManager::GetInstance()->WhenIdle(
(...skipping 29 matching lines...) Expand all
323 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 365 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
324 wait_for_upload.QuitClosure()); 366 wait_for_upload.QuitClosure());
325 367
326 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 368 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
327 369
328 content::BackgroundTracingManager::TriggerHandle handle = 370 content::BackgroundTracingManager::TriggerHandle handle =
329 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 371 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
330 "preemptive_test"); 372 "preemptive_test");
331 373
332 base::RunLoop wait_for_activated; 374 base::RunLoop wait_for_activated;
333 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 375 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
334 wait_for_activated.QuitClosure());
335 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 376 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
336 std::move(config), upload_config_wrapper.get_receive_callback(), 377 std::move(config), upload_config_wrapper.get_receive_callback(),
337 BackgroundTracingManager::ANONYMIZE_DATA)); 378 BackgroundTracingManager::ANONYMIZE_DATA));
338 379
339 wait_for_activated.Run(); 380 wait_for_activated.Run();
340 381
341 BackgroundTracingManager::GetInstance()->WhenIdle( 382 BackgroundTracingManager::GetInstance()->WhenIdle(
342 base::Bind(&DisableScenarioWhenIdle)); 383 base::Bind(&DisableScenarioWhenIdle));
343 384
344 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( 385 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
(...skipping 24 matching lines...) Expand all
369 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 410 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
370 wait_for_upload.QuitClosure()); 411 wait_for_upload.QuitClosure());
371 412
372 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 413 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
373 414
374 content::BackgroundTracingManager::TriggerHandle handle = 415 content::BackgroundTracingManager::TriggerHandle handle =
375 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 416 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
376 "preemptive_test"); 417 "preemptive_test");
377 418
378 base::RunLoop wait_for_activated; 419 base::RunLoop wait_for_activated;
379 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 420 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
380 wait_for_activated.QuitClosure());
381 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 421 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
382 std::move(config), upload_config_wrapper.get_receive_callback(), 422 std::move(config), upload_config_wrapper.get_receive_callback(),
383 BackgroundTracingManager::ANONYMIZE_DATA)); 423 BackgroundTracingManager::ANONYMIZE_DATA));
384 424
385 wait_for_activated.Run(); 425 wait_for_activated.Run();
386 426
387 NavigateToURL(shell(), GetTestUrl("", "about:blank")); 427 NavigateToURL(shell(), GetTestUrl("", "about:blank"));
388 428
389 BackgroundTracingManager::GetInstance()->WhenIdle( 429 BackgroundTracingManager::GetInstance()->WhenIdle(
390 base::Bind(&DisableScenarioWhenIdle)); 430 base::Bind(&DisableScenarioWhenIdle));
(...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 } 1443 }
1404 dict.Set("configs", std::move(rules_list)); 1444 dict.Set("configs", std::move(rules_list));
1405 1445
1406 std::unique_ptr<BackgroundTracingConfig> config( 1446 std::unique_ptr<BackgroundTracingConfig> config(
1407 BackgroundTracingConfigImpl::FromDict(&dict)); 1447 BackgroundTracingConfigImpl::FromDict(&dict));
1408 1448
1409 BackgroundTracingManager::TriggerHandle trigger_handle = 1449 BackgroundTracingManager::TriggerHandle trigger_handle =
1410 BackgroundTracingManager::GetInstance()->RegisterTriggerType( 1450 BackgroundTracingManager::GetInstance()->RegisterTriggerType(
1411 "reactive_test"); 1451 "reactive_test");
1412 1452
1453 base::RunLoop wait_for_tracing_enabled;
1454 TestBackgroundTracingObserver observer(
1455 wait_for_tracing_enabled.QuitClosure());
1413 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 1456 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
1414 std::move(config), upload_config_wrapper.get_receive_callback(), 1457 std::move(config), upload_config_wrapper.get_receive_callback(),
1415 BackgroundTracingManager::NO_DATA_FILTERING)); 1458 BackgroundTracingManager::NO_DATA_FILTERING));
1416 1459
1417 BackgroundTracingManager::GetInstance()->WhenIdle( 1460 BackgroundTracingManager::GetInstance()->WhenIdle(
1418 base::Bind(&DisableScenarioWhenIdle)); 1461 base::Bind(&DisableScenarioWhenIdle));
1419 1462
1420 base::RunLoop wait_for_tracing_enabled;
1421 static_cast<BackgroundTracingManagerImpl*>(
1422 BackgroundTracingManager::GetInstance())
1423 ->SetTracingEnabledCallbackForTesting(
1424 wait_for_tracing_enabled.QuitClosure());
1425
1426 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( 1463 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
1427 trigger_handle, 1464 trigger_handle,
1428 base::Bind(&StartedFinalizingCallback, base::Closure(), true)); 1465 base::Bind(&StartedFinalizingCallback, base::Closure(), true));
1429 1466
1430 wait_for_tracing_enabled.Run(); 1467 wait_for_tracing_enabled.Run();
1431 1468
1432 // This is expected to fail since we already triggered. 1469 // This is expected to fail since we already triggered.
1433 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( 1470 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
1434 trigger_handle, 1471 trigger_handle,
1435 base::Bind(&StartedFinalizingCallback, base::Closure(), false)); 1472 base::Bind(&StartedFinalizingCallback, base::Closure(), false));
1436 1473
1437 // Since we specified a delay in the scenario, we should still be tracing 1474 // Since we specified a delay in the scenario, we should still be tracing
1438 // at this point. 1475 // at this point.
1439 EXPECT_TRUE( 1476 EXPECT_TRUE(
1440 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting()); 1477 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting());
1441 1478
1442 BackgroundTracingManager::GetInstance()->FireTimerForTesting(); 1479 BackgroundTracingManager::GetInstance()->FireTimerForTesting();
1443 1480
1444 EXPECT_FALSE( 1481 EXPECT_FALSE(
1445 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting()); 1482 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting());
1446 1483
1447 run_loop.Run(); 1484 run_loop.Run();
1448 1485
1449 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); 1486 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1);
1450 } 1487 }
1451 } 1488 }
1452 1489
1453 } // namespace content 1490 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698