| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sky/engine/config.h" | 5 #include "sky/engine/config.h" |
| 6 #include "sky/viewer/internals.h" | 6 #include "sky/viewer/internals.h" |
| 7 | 7 |
| 8 #include "mojo/public/cpp/application/connect.h" | 8 #include "mojo/public/cpp/application/connect.h" |
| 9 #include "mojo/public/cpp/bindings/array.h" | 9 #include "mojo/public/cpp/bindings/array.h" |
| 10 #include "sky/engine/public/web/WebDocument.h" | 10 #include "sky/engine/public/web/WebDocument.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 namespace sky { | 22 namespace sky { |
| 23 namespace { | 23 namespace { |
| 24 | 24 |
| 25 int kInternalsKey = 0; | 25 int kInternalsKey = 0; |
| 26 | 26 |
| 27 Internals* GetInternals() { | 27 Internals* GetInternals() { |
| 28 DartState* state = DartState::Current(); | 28 DartState* state = DartState::Current(); |
| 29 return static_cast<Internals*>(state->GetUserData(&kInternalsKey)); | 29 return static_cast<Internals*>(state->GetUserData(&kInternalsKey)); |
| 30 } | 30 } |
| 31 | 31 |
| 32 void RenderTreeAsText(Dart_NativeArguments args) { | |
| 33 Dart_Handle result = StdStringToDart(GetInternals()->RenderTreeAsText()); | |
| 34 Dart_SetReturnValue(args, result); | |
| 35 } | |
| 36 | |
| 37 void ContentAsText(Dart_NativeArguments args) { | 32 void ContentAsText(Dart_NativeArguments args) { |
| 38 Dart_Handle result = StdStringToDart(GetInternals()->ContentAsText()); | 33 Dart_Handle result = StdStringToDart(GetInternals()->ContentAsText()); |
| 39 Dart_SetReturnValue(args, result); | 34 Dart_SetReturnValue(args, result); |
| 40 } | 35 } |
| 41 | 36 |
| 42 void NotifyTestComplete(Dart_NativeArguments args) { | 37 void NotifyTestComplete(Dart_NativeArguments args) { |
| 43 Dart_Handle test_result = Dart_GetNativeArgument(args, 0); | 38 Dart_Handle test_result = Dart_GetNativeArgument(args, 0); |
| 44 GetInternals()->NotifyTestComplete(StdStringFromDart(test_result)); | 39 GetInternals()->NotifyTestComplete(StdStringFromDart(test_result)); |
| 45 } | 40 } |
| 46 | 41 |
| 42 void RenderTreeAsText(Dart_NativeArguments args) { |
| 43 Dart_Handle result = StdStringToDart(GetInternals()->RenderTreeAsText()); |
| 44 Dart_SetReturnValue(args, result); |
| 45 } |
| 46 |
| 47 void TakeShellProxyHandle(Dart_NativeArguments args) { | 47 void TakeShellProxyHandle(Dart_NativeArguments args) { |
| 48 Dart_SetIntegerReturnValue(args, | 48 Dart_SetIntegerReturnValue(args, |
| 49 GetInternals()->TakeShellProxyHandle().value()); | 49 GetInternals()->TakeShellProxyHandle().value()); |
| 50 } | 50 } |
| 51 | 51 |
| 52 void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { | 52 void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { |
| 53 Dart_SetIntegerReturnValue(args, | 53 Dart_SetIntegerReturnValue( |
| 54 GetInternals()->TakeServicesProvidedToEmbedder().value()); | 54 args, GetInternals()->TakeServicesProvidedByEmbedder().value()); |
| 55 } | 55 } |
| 56 | 56 |
| 57 void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { | 57 void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { |
| 58 Dart_SetIntegerReturnValue(args, | 58 Dart_SetIntegerReturnValue( |
| 59 GetInternals()->TakeServicesProvidedByEmbedder().value()); | 59 args, GetInternals()->TakeServicesProvidedToEmbedder().value()); |
| 60 } | 60 } |
| 61 | 61 |
| 62 const DartBuiltin::Natives kNativeFunctions[] = { | 62 const DartBuiltin::Natives kNativeFunctions[] = { |
| 63 {"renderTreeAsText", RenderTreeAsText, 0}, | 63 {"contentAsText", ContentAsText, 0}, |
| 64 {"contentAsText", ContentAsText, 0}, | 64 {"notifyTestComplete", NotifyTestComplete, 1}, |
| 65 {"notifyTestComplete", NotifyTestComplete, 1}, | 65 {"renderTreeAsText", RenderTreeAsText, 0}, |
| 66 {"takeShellProxyHandle", TakeShellProxyHandle, 0}, | 66 {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
| 67 {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, | 67 {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, |
| 68 {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, | 68 {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, |
| 69 }; | 69 }; |
| 70 | 70 |
| 71 const DartBuiltin& GetBuiltin() { | 71 const DartBuiltin& GetBuiltin() { |
| 72 static DartBuiltin& builtin = *new DartBuiltin(kNativeFunctions, | 72 static DartBuiltin& builtin = *new DartBuiltin(kNativeFunctions, |
| 73 arraysize(kNativeFunctions)); | 73 arraysize(kNativeFunctions)); |
| 74 return builtin; | 74 return builtin; |
| 75 } | 75 } |
| 76 | 76 |
| 77 Dart_NativeFunction Resolver(Dart_Handle name, | 77 Dart_NativeFunction Resolver(Dart_Handle name, |
| 78 int argument_count, | 78 int argument_count, |
| 79 bool* auto_setup_scope) { | 79 bool* auto_setup_scope) { |
| 80 return GetBuiltin().Resolver(name, argument_count, auto_setup_scope); | 80 return GetBuiltin().Resolver(name, argument_count, auto_setup_scope); |
| 81 } | 81 } |
| 82 | 82 |
| 83 const uint8_t* Symbolizer(Dart_NativeFunction native_function) { | 83 const uint8_t* Symbolizer(Dart_NativeFunction native_function) { |
| 84 return GetBuiltin().Symbolizer(native_function); | 84 return GetBuiltin().Symbolizer(native_function); |
| 85 } | 85 } |
| 86 | 86 |
| 87 const char kLibraryName[] = "dart:sky.internals"; | 87 const char kLibraryName[] = "dart:sky.internals"; |
| 88 const char kLibrarySource[] = R"DART( | 88 const char kLibrarySource[] = R"DART( |
| 89 String renderTreeAsText() native "renderTreeAsText"; | |
| 90 String contentAsText() native "contentAsText"; | 89 String contentAsText() native "contentAsText"; |
| 91 void notifyTestComplete(String test_result) native "notifyTestComplete"; | 90 void notifyTestComplete(String test_result) native "notifyTestComplete"; |
| 91 String renderTreeAsText() native "renderTreeAsText"; |
| 92 int takeShellProxyHandle() native "takeShellProxyHandle"; | 92 int takeShellProxyHandle() native "takeShellProxyHandle"; |
| 93 int takeServicesProvidedByEmbedder() native "takeServicesProvidedByEmbedder"; |
| 93 int takeServicesProvidedToEmbedder() native "takeServicesProvidedToEmbedder"; | 94 int takeServicesProvidedToEmbedder() native "takeServicesProvidedToEmbedder"; |
| 94 int takeServicesProvidedByEmbedder() native "takeServicesProvidedByEmbedder"; | |
| 95 )DART"; | 95 )DART"; |
| 96 | 96 |
| 97 } // namespace | 97 } // namespace |
| 98 | 98 |
| 99 void Internals::Create(Dart_Isolate isolate, DocumentView* document_view) { | 99 void Internals::Create(Dart_Isolate isolate, DocumentView* document_view) { |
| 100 DartState* state = DartState::From(isolate); | 100 DartState* state = DartState::From(isolate); |
| 101 state->SetUserData(&kInternalsKey, new Internals(document_view)); | 101 state->SetUserData(&kInternalsKey, new Internals(document_view)); |
| 102 Dart_Handle library = | 102 Dart_Handle library = |
| 103 Dart_LoadLibrary(Dart_NewStringFromCString(kLibraryName), | 103 Dart_LoadLibrary(Dart_NewStringFromCString(kLibraryName), |
| 104 Dart_NewStringFromCString(kLibrarySource), 0, 0); | 104 Dart_NewStringFromCString(kLibrarySource), 0, 0); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 void Internals::ConnectToApplication( | 165 void Internals::ConnectToApplication( |
| 166 const mojo::String& application_url, | 166 const mojo::String& application_url, |
| 167 mojo::InterfaceRequest<mojo::ServiceProvider> services, | 167 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
| 168 mojo::ServiceProviderPtr exposed_services) { | 168 mojo::ServiceProviderPtr exposed_services) { |
| 169 if (document_view_) { | 169 if (document_view_) { |
| 170 document_view_->shell()->ConnectToApplication( | 170 document_view_->shell()->ConnectToApplication( |
| 171 application_url, services.Pass(), exposed_services.Pass()); | 171 application_url, services.Pass(), exposed_services.Pass()); |
| 172 } | 172 } |
| 173 } | 173 } |
| 174 | 174 |
| 175 mojo::Handle Internals::ConnectToService( | |
| 176 const std::string& application_url, const std::string& interface_name) { | |
| 177 if (!document_view_) | |
| 178 return mojo::Handle(); | |
| 179 | |
| 180 mojo::ServiceProviderPtr service_provider; | |
| 181 ConnectToApplication(application_url, mojo::GetProxy(&service_provider), | |
| 182 nullptr); | |
| 183 | |
| 184 mojo::MessagePipe pipe; | |
| 185 service_provider->ConnectToService(interface_name, pipe.handle1.Pass()); | |
| 186 return pipe.handle0.release(); | |
| 187 } | |
| 188 | |
| 189 void Internals::pauseAnimations(double pauseTime) { | 175 void Internals::pauseAnimations(double pauseTime) { |
| 190 if (pauseTime < 0) | 176 if (pauseTime < 0) |
| 191 return; | 177 return; |
| 192 | 178 |
| 193 document_view_->web_view()->mainFrame()->document().pauseAnimationsForTestin
g(pauseTime); | 179 document_view_->web_view()->mainFrame()->document().pauseAnimationsForTestin
g(pauseTime); |
| 194 } | 180 } |
| 195 | 181 |
| 196 } // namespace sky | 182 } // namespace sky |
| OLD | NEW |