Index: runtime/vm/dart_api_impl_test.cc |
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc |
index 91043ed161fc8670ff901a3a3b1233f590e3f704..6c6fb8f9a9242bff28a11af41034f07a61e4ab11 100644 |
--- a/runtime/vm/dart_api_impl_test.cc |
+++ b/runtime/vm/dart_api_impl_test.cc |
@@ -9289,6 +9289,7 @@ static void AppendStreamConsumer(Dart_StreamConsumer_State state, |
return; |
} |
ASSERT(state == Dart_StreamConsumer_kData); |
+ |
// Grow buffer. |
data->buffer = reinterpret_cast<uint8_t*>( |
realloc(data->buffer, data->buffer_length + buffer_length)); |
@@ -9772,6 +9773,67 @@ TEST_CASE(Timeline_Dart_GlobalTimelineGetTrace_Threaded) { |
EXPECT_SUBSTRING("\"function\":\"::_bar\"", buffer); |
} |
+static bool start_called = false; |
+static bool stop_called = false; |
+ |
+static void StartRecording() { |
+ start_called = true; |
+} |
+ |
+static void StopRecording() { |
+ stop_called = true; |
+} |
+ |
+ |
+TEST_CASE(Timeline_Dart_EmbedderTimelineStartStopRecording) { |
+ Dart_SetEmbedderTimelineCallbacks(StartRecording, StopRecording, NULL); |
+ |
+ EXPECT(!start_called); |
+ EXPECT(!stop_called); |
+ Timeline::SetStreamEmbedderEnabled(true); |
+ EXPECT(start_called); |
+ EXPECT(!stop_called); |
+ |
+ start_called = false; |
+ stop_called = false; |
+ EXPECT(!start_called); |
+ EXPECT(!stop_called); |
+ Timeline::SetStreamEmbedderEnabled(false); |
+ EXPECT(!start_called); |
+ EXPECT(stop_called); |
+} |
+ |
+static bool GetTimeline(Dart_StreamConsumer stream_consumer, |
+ void* user_data) { |
+ ASSERT(stream_consumer != NULL); |
+ ASSERT(user_data != NULL); |
+ |
+ const char* test_string = "HELLO FROM EMBEDDER"; |
+ stream_consumer(Dart_StreamConsumer_kData, |
+ "embedder.timeline", |
+ reinterpret_cast<const uint8_t*>(test_string), |
+ strlen(test_string), |
+ user_data); |
+ return true; |
+} |
+ |
+TEST_CASE(Timeline_Dart_EmbedderTimelineGetTimeline) { |
+ Dart_SetEmbedderTimelineCallbacks(NULL, NULL, GetTimeline); |
+ |
+ Dart_GlobalTimelineSetRecordedStreams(DART_TIMELINE_STREAM_EMBEDDER); |
+ Dart_TimelineDuration("testDurationEvent", 0, 1); |
+ |
+ AppendData data; |
+ bool success = Dart_GlobalTimelineGetTrace(AppendStreamConsumer, &data); |
+ EXPECT(success); |
+ |
+ EXPECT_SUBSTRING("HELLO FROM EMBEDDER,{\"name\":\"testDurationEvent\"", |
+ data.buffer); |
+ |
+ // Free buffer allocated by AppendStreamConsumer |
+ free(data.buffer); |
+} |
+ |
#endif // !PRODUCT |
} // namespace dart |