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/viewer/internals.h" | 5 #include "sky/viewer/internals.h" |
6 | 6 |
7 #include "mojo/public/cpp/application/connect.h" | 7 #include "mojo/public/cpp/application/connect.h" |
8 #include "mojo/public/cpp/bindings/array.h" | 8 #include "mojo/public/cpp/bindings/array.h" |
9 #include "sky/engine/tonic/dart_builtin.h" | 9 #include "sky/engine/tonic/dart_builtin.h" |
10 #include "sky/engine/tonic/dart_converter.h" | 10 #include "sky/engine/tonic/dart_converter.h" |
11 #include "sky/engine/tonic/dart_error.h" | 11 #include "sky/engine/tonic/dart_error.h" |
12 #include "sky/viewer/document_view.h" | 12 #include "sky/viewer/document_view.h" |
13 #include "sky/viewer/runtime_flags.h" | 13 #include "sky/viewer/runtime_flags.h" |
14 #include <limits> | 14 #include <limits> |
15 | 15 |
16 using namespace blink; | 16 using namespace blink; |
17 | 17 |
18 namespace sky { | 18 namespace sky { |
19 namespace { | 19 namespace { |
20 | 20 |
21 int kInternalsKey = 0; | 21 int kInternalsKey = 0; |
22 | 22 |
23 Internals* GetInternals() { | 23 Internals* GetInternals() { |
24 DartState* state = DartState::Current(); | 24 DartState* state = DartState::Current(); |
25 return static_cast<Internals*>(state->GetUserData(&kInternalsKey)); | 25 return static_cast<Internals*>(state->GetUserData(&kInternalsKey)); |
26 } | 26 } |
27 | 27 |
28 void ContentAsText(Dart_NativeArguments args) { | |
29 Dart_Handle result = StdStringToDart(GetInternals()->ContentAsText()); | |
30 Dart_SetReturnValue(args, result); | |
31 } | |
32 | |
33 void NotifyTestComplete(Dart_NativeArguments args) { | 28 void NotifyTestComplete(Dart_NativeArguments args) { |
34 Dart_Handle test_result = Dart_GetNativeArgument(args, 0); | 29 Dart_Handle test_result = Dart_GetNativeArgument(args, 0); |
35 GetInternals()->NotifyTestComplete(StdStringFromDart(test_result)); | 30 GetInternals()->NotifyTestComplete(StdStringFromDart(test_result)); |
36 } | 31 } |
37 | 32 |
38 void RenderTreeAsText(Dart_NativeArguments args) { | |
39 Dart_Handle result = StdStringToDart(GetInternals()->RenderTreeAsText()); | |
40 Dart_SetReturnValue(args, result); | |
41 } | |
42 | |
43 void TakeShellProxyHandle(Dart_NativeArguments args) { | 33 void TakeShellProxyHandle(Dart_NativeArguments args) { |
44 Dart_SetIntegerReturnValue(args, | 34 Dart_SetIntegerReturnValue(args, |
45 GetInternals()->TakeShellProxyHandle().value()); | 35 GetInternals()->TakeShellProxyHandle().value()); |
46 } | 36 } |
47 | 37 |
48 void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { | 38 void TakeServicesProvidedByEmbedder(Dart_NativeArguments args) { |
49 Dart_SetIntegerReturnValue( | 39 Dart_SetIntegerReturnValue( |
50 args, GetInternals()->TakeServicesProvidedByEmbedder().value()); | 40 args, GetInternals()->TakeServicesProvidedByEmbedder().value()); |
51 } | 41 } |
52 | 42 |
53 void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { | 43 void TakeServicesProvidedToEmbedder(Dart_NativeArguments args) { |
54 Dart_SetIntegerReturnValue( | 44 Dart_SetIntegerReturnValue( |
55 args, GetInternals()->TakeServicesProvidedToEmbedder().value()); | 45 args, GetInternals()->TakeServicesProvidedToEmbedder().value()); |
56 } | 46 } |
57 | 47 |
58 void TakeServiceRegistry(Dart_NativeArguments args) { | 48 void TakeServiceRegistry(Dart_NativeArguments args) { |
59 Dart_SetIntegerReturnValue( | 49 Dart_SetIntegerReturnValue( |
60 args, GetInternals()->TakeServiceRegistry().value()); | 50 args, GetInternals()->TakeServiceRegistry().value()); |
61 } | 51 } |
62 | 52 |
63 const DartBuiltin::Natives kNativeFunctions[] = { | 53 const DartBuiltin::Natives kNativeFunctions[] = { |
64 {"contentAsText", ContentAsText, 0}, | |
65 {"notifyTestComplete", NotifyTestComplete, 1}, | 54 {"notifyTestComplete", NotifyTestComplete, 1}, |
66 {"renderTreeAsText", RenderTreeAsText, 0}, | |
67 {"takeShellProxyHandle", TakeShellProxyHandle, 0}, | 55 {"takeShellProxyHandle", TakeShellProxyHandle, 0}, |
68 {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, | 56 {"takeServicesProvidedByEmbedder", TakeServicesProvidedByEmbedder, 0}, |
69 {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, | 57 {"takeServicesProvidedToEmbedder", TakeServicesProvidedToEmbedder, 0}, |
70 {"takeServiceRegistry", TakeServiceRegistry, 0}, | 58 {"takeServiceRegistry", TakeServiceRegistry, 0}, |
71 }; | 59 }; |
72 | 60 |
73 const DartBuiltin& GetBuiltin() { | 61 const DartBuiltin& GetBuiltin() { |
74 static DartBuiltin& builtin = *new DartBuiltin(kNativeFunctions, | 62 static DartBuiltin& builtin = *new DartBuiltin(kNativeFunctions, |
75 arraysize(kNativeFunctions)); | 63 arraysize(kNativeFunctions)); |
76 return builtin; | 64 return builtin; |
(...skipping 24 matching lines...) Expand all Loading... |
101 | 89 |
102 Internals::Internals(DocumentView* document_view) | 90 Internals::Internals(DocumentView* document_view) |
103 : document_view_(document_view->GetWeakPtr()), | 91 : document_view_(document_view->GetWeakPtr()), |
104 shell_binding_(this) { | 92 shell_binding_(this) { |
105 test_harness_ = document_view_->TakeTestHarness(); | 93 test_harness_ = document_view_->TakeTestHarness(); |
106 } | 94 } |
107 | 95 |
108 Internals::~Internals() { | 96 Internals::~Internals() { |
109 } | 97 } |
110 | 98 |
111 std::string Internals::RenderTreeAsText() { | |
112 return std::string(); | |
113 } | |
114 | |
115 std::string Internals::ContentAsText() { | |
116 return std::string(); | |
117 } | |
118 | |
119 void Internals::NotifyTestComplete(const std::string& test_result) { | 99 void Internals::NotifyTestComplete(const std::string& test_result) { |
120 if (!RuntimeFlags::Get().testing()) | 100 if (!RuntimeFlags::Get().testing()) |
121 return; | 101 return; |
122 std::vector<unsigned char> pixels; | 102 std::vector<unsigned char> pixels; |
123 document_view_->GetPixelsForTesting(&pixels); | 103 document_view_->GetPixelsForTesting(&pixels); |
124 if (test_harness_) { | 104 if (test_harness_) { |
125 test_harness_->OnTestComplete(test_result, | 105 test_harness_->OnTestComplete(test_result, |
126 mojo::Array<uint8_t>::From(pixels)); | 106 mojo::Array<uint8_t>::From(pixels)); |
127 } | 107 } |
128 } | 108 } |
(...skipping 30 matching lines...) Expand all Loading... |
159 const mojo::String& application_url, | 139 const mojo::String& application_url, |
160 mojo::InterfaceRequest<mojo::ServiceProvider> services, | 140 mojo::InterfaceRequest<mojo::ServiceProvider> services, |
161 mojo::ServiceProviderPtr exposed_services) { | 141 mojo::ServiceProviderPtr exposed_services) { |
162 if (document_view_) { | 142 if (document_view_) { |
163 document_view_->shell()->ConnectToApplication( | 143 document_view_->shell()->ConnectToApplication( |
164 application_url, services.Pass(), exposed_services.Pass()); | 144 application_url, services.Pass(), exposed_services.Pass()); |
165 } | 145 } |
166 } | 146 } |
167 | 147 |
168 } // namespace sky | 148 } // namespace sky |
OLD | NEW |