| Index: test/cctest/libplatform/test-tracing.cc
|
| diff --git a/test/cctest/libplatform/test-tracing.cc b/test/cctest/libplatform/test-tracing.cc
|
| index 2e15d6af9e0e356f256b00eb0784fb248db196d3..2e707faf2c2d598a5ff72c789c4aa34f2b62039c 100644
|
| --- a/test/cctest/libplatform/test-tracing.cc
|
| +++ b/test/cctest/libplatform/test-tracing.cc
|
| @@ -307,6 +307,66 @@ TEST(TestTracingControllerMultipleArgsAndCopy) {
|
| i::V8::SetPlatformForTesting(old_platform);
|
| }
|
|
|
| +namespace {
|
| +
|
| +class TraceStateObserverImpl : public Platform::TraceStateObserver {
|
| + public:
|
| + void OnTraceEnabled() override { ++enabled_count; }
|
| + void OnTraceDisabled() override { ++disabled_count; }
|
| +
|
| + int enabled_count = 0;
|
| + int disabled_count = 0;
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +TEST(TracingObservers) {
|
| + v8::Platform* old_platform = i::V8::GetCurrentPlatform();
|
| + v8::Platform* default_platform = v8::platform::CreateDefaultPlatform();
|
| + i::V8::SetPlatformForTesting(default_platform);
|
| +
|
| + v8::platform::tracing::TracingController tracing_controller;
|
| + v8::platform::SetTracingController(default_platform, &tracing_controller);
|
| + MockTraceWriter* writer = new MockTraceWriter();
|
| + v8::platform::tracing::TraceBuffer* ring_buffer =
|
| + v8::platform::tracing::TraceBuffer::CreateTraceBufferRingBuffer(1,
|
| + writer);
|
| + tracing_controller.Initialize(ring_buffer);
|
| + v8::platform::tracing::TraceConfig* trace_config =
|
| + new v8::platform::tracing::TraceConfig();
|
| + trace_config->AddIncludedCategory("v8");
|
| +
|
| + TraceStateObserverImpl observer;
|
| + default_platform->AddTraceStateObserver(&observer);
|
| +
|
| + CHECK_EQ(0, observer.enabled_count);
|
| + CHECK_EQ(0, observer.disabled_count);
|
| +
|
| + tracing_controller.StartTracing(trace_config);
|
| +
|
| + CHECK_EQ(1, observer.enabled_count);
|
| + CHECK_EQ(0, observer.disabled_count);
|
| +
|
| + tracing_controller.StopTracing();
|
| +
|
| + CHECK_EQ(1, observer.enabled_count);
|
| + CHECK_EQ(1, observer.disabled_count);
|
| +
|
| + default_platform->RemoveTraceStateObserver(&observer);
|
| +
|
| + CHECK_EQ(1, observer.enabled_count);
|
| + CHECK_EQ(1, observer.disabled_count);
|
| +
|
| + trace_config = new v8::platform::tracing::TraceConfig();
|
| + tracing_controller.StartTracing(trace_config);
|
| + tracing_controller.StopTracing();
|
| +
|
| + CHECK_EQ(1, observer.enabled_count);
|
| + CHECK_EQ(1, observer.disabled_count);
|
| +
|
| + i::V8::SetPlatformForTesting(old_platform);
|
| +}
|
| +
|
| } // namespace tracing
|
| } // namespace platform
|
| } // namespace v8
|
|
|