Index: sky/viewer/internals.cc |
diff --git a/sky/viewer/internals.cc b/sky/viewer/internals.cc |
index f26a86f9d1020fec3f25a413a52f7bb9b3fc5783..9b41deab8c1dc034088b4f18372ea6640df43188 100644 |
--- a/sky/viewer/internals.cc |
+++ b/sky/viewer/internals.cc |
@@ -29,9 +29,15 @@ Internals* GetInternals() { |
return static_cast<Internals*>(state->GetUserData(&kInternalsKey)); |
} |
-void RenderTreeAsText(Dart_NativeArguments args) { |
- Dart_Handle result = StdStringToDart(GetInternals()->RenderTreeAsText()); |
- Dart_SetReturnValue(args, result); |
+void ConnectToService(Dart_NativeArguments args) { |
+ Dart_Handle application_url_handle = Dart_GetNativeArgument(args, 0); |
+ Dart_Handle interface_name_handle = Dart_GetNativeArgument(args, 1); |
+ mojo::ScopedMessagePipeHandle handle(GetInternals()->ConnectToService( |
+ StdStringFromDart(application_url_handle), |
+ StdStringFromDart(interface_name_handle))); |
+ Dart_SetReturnValue( |
+ args, |
+ DartConverter<mojo::ScopedMessagePipeHandle>::ToDart(handle.Pass())); |
abarth-chromium
2015/02/23 22:29:38
You should add a SetReturnValue function to DartCo
|
} |
void ContentAsText(Dart_NativeArguments args) { |
@@ -44,28 +50,34 @@ void NotifyTestComplete(Dart_NativeArguments args) { |
GetInternals()->NotifyTestComplete(StdStringFromDart(test_result)); |
} |
+void RenderTreeAsText(Dart_NativeArguments args) { |
sky
2015/02/23 22:09:33
I reorder these to be be alphabetical. I can easil
abarth-chromium
2015/02/23 22:29:38
That's great, thanks!
|
+ Dart_Handle result = StdStringToDart(GetInternals()->RenderTreeAsText()); |
+ Dart_SetReturnValue(args, result); |
+} |
+ |
void TakeShellProxyHandle(Dart_NativeArguments args) { |
Dart_SetIntegerReturnValue(args, |
GetInternals()->TakeShellProxyHandle().value()); |
} |
-void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { |
- Dart_SetIntegerReturnValue(args, |
- GetInternals()->TakeServicesProvidedToEmbedder().value()); |
+void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { |
+ Dart_SetIntegerReturnValue( |
+ args, GetInternals()->TakeServicesProvidedByEmbedder().value()); |
} |
-void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { |
- Dart_SetIntegerReturnValue(args, |
- GetInternals()->TakeServicesProvidedByEmbedder().value()); |
+void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { |
+ Dart_SetIntegerReturnValue( |
+ args, GetInternals()->TakeServicesProvidedToEmbedder().value()); |
} |
const DartBuiltin::Natives kNativeFunctions[] = { |
- {"renderTreeAsText", RenderTreeAsText, 0}, |
- {"contentAsText", ContentAsText, 0}, |
- {"notifyTestComplete", NotifyTestComplete, 1}, |
- {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
- {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, |
- {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, |
+ {"connectToService", ConnectToService, 2}, |
abarth-chromium
2015/02/23 22:29:37
Why do you need connectToService? Can't you just
sky
2015/02/23 22:38:56
That can certainly be done. I was assuming we want
|
+ {"contentAsText", ContentAsText, 0}, |
+ {"notifyTestComplete", NotifyTestComplete, 1}, |
+ {"renderTreeAsText", RenderTreeAsText, 0}, |
+ {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
+ {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, |
+ {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, |
}; |
const DartBuiltin& GetBuiltin() { |
@@ -86,12 +98,14 @@ const uint8_t* Symbolizer(Dart_NativeFunction native_function) { |
const char kLibraryName[] = "dart:sky.internals"; |
const char kLibrarySource[] = R"DART( |
-String renderTreeAsText() native "renderTreeAsText"; |
+int connectToService(String application_url, String interface_name) native |
+ "connectToService"; |
String contentAsText() native "contentAsText"; |
void notifyTestComplete(String test_result) native "notifyTestComplete"; |
+String renderTreeAsText() native "renderTreeAsText"; |
int takeShellProxyHandle() native "takeShellProxyHandle"; |
-int takeServicesProvidedToEmbedder() native "takeServicesProvidedToEmbedder"; |
int takeServicesProvidedByEmbedder() native "takeServicesProvidedByEmbedder"; |
+int takeServicesProvidedToEmbedder() native "takeServicesProvidedToEmbedder"; |
)DART"; |
} // namespace |
@@ -172,10 +186,11 @@ void Internals::ConnectToApplication( |
} |
} |
-mojo::Handle Internals::ConnectToService( |
- const std::string& application_url, const std::string& interface_name) { |
+mojo::ScopedMessagePipeHandle Internals::ConnectToService( |
+ const std::string& application_url, |
+ const std::string& interface_name) { |
if (!document_view_) |
- return mojo::Handle(); |
+ return mojo::ScopedMessagePipeHandle(); |
mojo::ServiceProviderPtr service_provider; |
ConnectToApplication(application_url, mojo::GetProxy(&service_provider), |
@@ -183,7 +198,7 @@ mojo::Handle Internals::ConnectToService( |
mojo::MessagePipe pipe; |
service_provider->ConnectToService(interface_name, pipe.handle1.Pass()); |
- return pipe.handle0.release(); |
+ return pipe.handle0.Pass(); |
} |
void Internals::pauseAnimations(double pauseTime) { |