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

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

Issue 2769963005: Add EnabledStateObserver to BackgroundTracingManager (Closed)
Patch Set: 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();
oystein (OOO til 10th of July) 2017/03/28 20:11:18 override
ssid 2017/03/28 21:02:03 Done.
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;
oystein (OOO til 10th of July) 2017/03/28 20:11:18 nit: put this in the initializer list
ssid 2017/03/28 21:02:03 Done.
45 static_cast<BackgroundTracingManagerImpl*>(
46 BackgroundTracingManager::GetInstance())
oystein (OOO til 10th of July) 2017/03/28 20:11:18 You should be able to call BackgroundTracingManage
ssid 2017/03/28 21:02:03 Ah I did not see it is public. Did this because it
47 ->AddEnabledStateObserver(this);
48 }
49
50 TestBackgroundTracingObserver::~TestBackgroundTracingObserver() {
51 static_cast<BackgroundTracingManagerImpl*>(
52 BackgroundTracingManager::GetInstance())
53 ->RemoveEnabledStateObserver(this);
54 EXPECT_TRUE(was_scenario_activated_);
55 }
56
57 void TestBackgroundTracingObserver::OnScenarioActivated(
58 const BackgroundTracingConfigImpl& config) {
59 was_scenario_activated_ = true;
60 }
61
62 void TestBackgroundTracingObserver::OnTracingEnabled(
63 BackgroundTracingConfigImpl::CategoryPreset preset) {
64 tracing_enabled_callback_.Run();
65 }
66
67 } // namespace
23 68
24 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest { 69 class BackgroundTracingManagerBrowserTest : public ContentBrowserTest {
25 public: 70 public:
26 BackgroundTracingManagerBrowserTest() {} 71 BackgroundTracingManagerBrowserTest() {}
27 72
28 private: 73 private:
29 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest); 74 DISALLOW_COPY_AND_ASSIGN(BackgroundTracingManagerBrowserTest);
30 }; 75 };
31 76
32 class BackgroundTracingManagerUploadConfigWrapper { 77 class BackgroundTracingManagerUploadConfigWrapper {
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 317 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
273 wait_for_upload.QuitClosure()); 318 wait_for_upload.QuitClosure());
274 319
275 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 320 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
276 321
277 content::BackgroundTracingManager::TriggerHandle handle = 322 content::BackgroundTracingManager::TriggerHandle handle =
278 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 323 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
279 "preemptive_test"); 324 "preemptive_test");
280 325
281 base::RunLoop wait_for_activated; 326 base::RunLoop wait_for_activated;
282 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 327 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
283 wait_for_activated.QuitClosure());
284 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 328 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
285 std::move(config), upload_config_wrapper.get_receive_callback(), 329 std::move(config), upload_config_wrapper.get_receive_callback(),
286 BackgroundTracingManager::ANONYMIZE_DATA)); 330 BackgroundTracingManager::ANONYMIZE_DATA));
287 331
288 wait_for_activated.Run(); 332 wait_for_activated.Run();
289 333
290 TRACE_EVENT1("benchmark", "whitelisted", "find_this", 1); 334 TRACE_EVENT1("benchmark", "whitelisted", "find_this", 1);
291 TRACE_EVENT1("benchmark", "not_whitelisted", "this_not_found", 1); 335 TRACE_EVENT1("benchmark", "not_whitelisted", "this_not_found", 1);
292 336
293 BackgroundTracingManager::GetInstance()->WhenIdle( 337 BackgroundTracingManager::GetInstance()->WhenIdle(
(...skipping 29 matching lines...) Expand all
323 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 367 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
324 wait_for_upload.QuitClosure()); 368 wait_for_upload.QuitClosure());
325 369
326 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 370 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
327 371
328 content::BackgroundTracingManager::TriggerHandle handle = 372 content::BackgroundTracingManager::TriggerHandle handle =
329 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 373 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
330 "preemptive_test"); 374 "preemptive_test");
331 375
332 base::RunLoop wait_for_activated; 376 base::RunLoop wait_for_activated;
333 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 377 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
334 wait_for_activated.QuitClosure());
335 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 378 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
336 std::move(config), upload_config_wrapper.get_receive_callback(), 379 std::move(config), upload_config_wrapper.get_receive_callback(),
337 BackgroundTracingManager::ANONYMIZE_DATA)); 380 BackgroundTracingManager::ANONYMIZE_DATA));
338 381
339 wait_for_activated.Run(); 382 wait_for_activated.Run();
340 383
341 BackgroundTracingManager::GetInstance()->WhenIdle( 384 BackgroundTracingManager::GetInstance()->WhenIdle(
342 base::Bind(&DisableScenarioWhenIdle)); 385 base::Bind(&DisableScenarioWhenIdle));
343 386
344 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( 387 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
(...skipping 24 matching lines...) Expand all
369 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper( 412 BackgroundTracingManagerUploadConfigWrapper upload_config_wrapper(
370 wait_for_upload.QuitClosure()); 413 wait_for_upload.QuitClosure());
371 414
372 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig(); 415 std::unique_ptr<BackgroundTracingConfig> config = CreatePreemptiveConfig();
373 416
374 content::BackgroundTracingManager::TriggerHandle handle = 417 content::BackgroundTracingManager::TriggerHandle handle =
375 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType( 418 content::BackgroundTracingManager::GetInstance()->RegisterTriggerType(
376 "preemptive_test"); 419 "preemptive_test");
377 420
378 base::RunLoop wait_for_activated; 421 base::RunLoop wait_for_activated;
379 BackgroundTracingManager::GetInstance()->SetTracingEnabledCallbackForTesting( 422 TestBackgroundTracingObserver observer(wait_for_activated.QuitClosure());
380 wait_for_activated.QuitClosure());
381 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 423 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
382 std::move(config), upload_config_wrapper.get_receive_callback(), 424 std::move(config), upload_config_wrapper.get_receive_callback(),
383 BackgroundTracingManager::ANONYMIZE_DATA)); 425 BackgroundTracingManager::ANONYMIZE_DATA));
384 426
385 wait_for_activated.Run(); 427 wait_for_activated.Run();
386 428
387 NavigateToURL(shell(), GetTestUrl("", "about:blank")); 429 NavigateToURL(shell(), GetTestUrl("", "about:blank"));
388 430
389 BackgroundTracingManager::GetInstance()->WhenIdle( 431 BackgroundTracingManager::GetInstance()->WhenIdle(
390 base::Bind(&DisableScenarioWhenIdle)); 432 base::Bind(&DisableScenarioWhenIdle));
(...skipping 1012 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 } 1445 }
1404 dict.Set("configs", std::move(rules_list)); 1446 dict.Set("configs", std::move(rules_list));
1405 1447
1406 std::unique_ptr<BackgroundTracingConfig> config( 1448 std::unique_ptr<BackgroundTracingConfig> config(
1407 BackgroundTracingConfigImpl::FromDict(&dict)); 1449 BackgroundTracingConfigImpl::FromDict(&dict));
1408 1450
1409 BackgroundTracingManager::TriggerHandle trigger_handle = 1451 BackgroundTracingManager::TriggerHandle trigger_handle =
1410 BackgroundTracingManager::GetInstance()->RegisterTriggerType( 1452 BackgroundTracingManager::GetInstance()->RegisterTriggerType(
1411 "reactive_test"); 1453 "reactive_test");
1412 1454
1455 base::RunLoop wait_for_tracing_enabled;
1456 TestBackgroundTracingObserver observer(
1457 wait_for_tracing_enabled.QuitClosure());
1413 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario( 1458 EXPECT_TRUE(BackgroundTracingManager::GetInstance()->SetActiveScenario(
1414 std::move(config), upload_config_wrapper.get_receive_callback(), 1459 std::move(config), upload_config_wrapper.get_receive_callback(),
1415 BackgroundTracingManager::NO_DATA_FILTERING)); 1460 BackgroundTracingManager::NO_DATA_FILTERING));
1416 1461
1417 BackgroundTracingManager::GetInstance()->WhenIdle( 1462 BackgroundTracingManager::GetInstance()->WhenIdle(
1418 base::Bind(&DisableScenarioWhenIdle)); 1463 base::Bind(&DisableScenarioWhenIdle));
1419 1464
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( 1465 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
1427 trigger_handle, 1466 trigger_handle,
1428 base::Bind(&StartedFinalizingCallback, base::Closure(), true)); 1467 base::Bind(&StartedFinalizingCallback, base::Closure(), true));
1429 1468
1430 wait_for_tracing_enabled.Run(); 1469 wait_for_tracing_enabled.Run();
1431 1470
1432 // This is expected to fail since we already triggered. 1471 // This is expected to fail since we already triggered.
1433 BackgroundTracingManager::GetInstance()->TriggerNamedEvent( 1472 BackgroundTracingManager::GetInstance()->TriggerNamedEvent(
1434 trigger_handle, 1473 trigger_handle,
1435 base::Bind(&StartedFinalizingCallback, base::Closure(), false)); 1474 base::Bind(&StartedFinalizingCallback, base::Closure(), false));
1436 1475
1437 // Since we specified a delay in the scenario, we should still be tracing 1476 // Since we specified a delay in the scenario, we should still be tracing
1438 // at this point. 1477 // at this point.
1439 EXPECT_TRUE( 1478 EXPECT_TRUE(
1440 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting()); 1479 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting());
1441 1480
1442 BackgroundTracingManager::GetInstance()->FireTimerForTesting(); 1481 BackgroundTracingManager::GetInstance()->FireTimerForTesting();
1443 1482
1444 EXPECT_FALSE( 1483 EXPECT_FALSE(
1445 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting()); 1484 BackgroundTracingManagerImpl::GetInstance()->IsTracingForTesting());
1446 1485
1447 run_loop.Run(); 1486 run_loop.Run();
1448 1487
1449 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1); 1488 EXPECT_TRUE(upload_config_wrapper.get_receive_count() == 1);
1450 } 1489 }
1451 } 1490 }
1452 1491
1453 } // namespace content 1492 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698