Chromium Code Reviews| 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) { |