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

Unified Diff: runtime/vm/dart_api_impl_test.cc

Issue 1783953002: Add ability for embedder to provide private timeline trace data (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698