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

Side by Side Diff: test/inspector/inspector-test.cc

Issue 2403493002: [inspector] don't use String16 in inspector test runner (Closed)
Patch Set: a Created 4 years, 2 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 unified diff | Download patch
« no previous file with comments | « test/inspector/inspector-impl.cc ('k') | test/inspector/task-runner.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project 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 #if !defined(_WIN32) && !defined(_WIN64) 5 #if !defined(_WIN32) && !defined(_WIN64)
6 #include <unistd.h> // NOLINT 6 #include <unistd.h> // NOLINT
7 #endif // !defined(_WIN32) && !defined(_WIN64) 7 #endif // !defined(_WIN32) && !defined(_WIN64)
8 8
9 #include "include/libplatform/libplatform.h" 9 #include "include/libplatform/libplatform.h"
10 #include "include/v8.h" 10 #include "include/v8.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 InspectorClientImpl::InspectorFromContext(context); 107 InspectorClientImpl::InspectorFromContext(context);
108 if (inspector) inspector->willExecuteScript(context, function->ScriptId()); 108 if (inspector) inspector->willExecuteScript(context, function->ScriptId());
109 result = function->Call(context, context->Global(), 0, nullptr); 109 result = function->Call(context, context->Global(), 0, nullptr);
110 if (inspector) inspector->didExecuteScript(context); 110 if (inspector) inspector->didExecuteScript(context);
111 } 111 }
112 112
113 private: 113 private:
114 v8::Global<v8::Function> function_; 114 v8::Global<v8::Function> function_;
115 }; 115 };
116 116
117 v8::internal::Vector<uint16_t> ToVector(v8::Local<v8::String> str) {
118 v8::internal::Vector<uint16_t> buffer =
119 v8::internal::Vector<uint16_t>::New(str->Length());
120 str->Write(buffer.start(), 0, str->Length());
121 return buffer;
122 }
123
117 class SetTimeoutExtension : public v8::Extension { 124 class SetTimeoutExtension : public v8::Extension {
118 public: 125 public:
119 SetTimeoutExtension() 126 SetTimeoutExtension()
120 : v8::Extension("v8_inspector/setTimeout", 127 : v8::Extension("v8_inspector/setTimeout",
121 "native function setTimeout();") {} 128 "native function setTimeout();") {}
122 129
123 virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( 130 virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate(
124 v8::Isolate* isolate, v8::Local<v8::String> name) { 131 v8::Isolate* isolate, v8::Local<v8::String> name) {
125 return v8::FunctionTemplate::New(isolate, SetTimeoutExtension::SetTimeout); 132 return v8::FunctionTemplate::New(isolate, SetTimeoutExtension::SetTimeout);
126 } 133 }
127 134
128 private: 135 private:
129 static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args) { 136 static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args) {
130 if (args.Length() != 2 || !args[1]->IsNumber() || 137 if (args.Length() != 2 || !args[1]->IsNumber() ||
131 (!args[0]->IsFunction() && !args[0]->IsString()) || 138 (!args[0]->IsFunction() && !args[0]->IsString()) ||
132 args[1].As<v8::Number>()->Value() != 0.0) { 139 args[1].As<v8::Number>()->Value() != 0.0) {
133 fprintf(stderr, 140 fprintf(stderr,
134 "Internal error: only setTimeout(function, 0) is supported."); 141 "Internal error: only setTimeout(function, 0) is supported.");
135 Exit(); 142 Exit();
136 } 143 }
137 v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); 144 v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext();
138 if (args[0]->IsFunction()) { 145 if (args[0]->IsFunction()) {
139 TaskRunner::FromContext(context)->Append(new SetTimeoutTask( 146 TaskRunner::FromContext(context)->Append(new SetTimeoutTask(
140 args.GetIsolate(), v8::Local<v8::Function>::Cast(args[0]))); 147 args.GetIsolate(), v8::Local<v8::Function>::Cast(args[0])));
141 } else { 148 } else {
142 v8::Local<v8::String> data = args[0].As<v8::String>(); 149 TaskRunner::FromContext(context)->Append(
143 std::unique_ptr<uint16_t[]> buffer(new uint16_t[data->Length()]); 150 new ExecuteStringTask(ToVector(args[0].As<v8::String>())));
144 data->Write(reinterpret_cast<uint16_t*>(buffer.get()), 0, data->Length());
145 v8_inspector::String16 source =
146 v8_inspector::String16(buffer.get(), data->Length());
147 TaskRunner::FromContext(context)->Append(new ExecuteStringTask(source));
148 } 151 }
149 } 152 }
150 }; 153 };
151 154
152 v8_inspector::String16 ToString16(const v8_inspector::StringView& string) { 155 v8::Local<v8::String> ToString(v8::Isolate* isolate,
156 const v8_inspector::StringView& string) {
153 if (string.is8Bit()) 157 if (string.is8Bit())
154 return v8_inspector::String16( 158 return v8::String::NewFromOneByte(isolate, string.characters8(),
155 reinterpret_cast<const char*>(string.characters8()), string.length()); 159 v8::NewStringType::kNormal,
156 return v8_inspector::String16( 160 string.length())
157 reinterpret_cast<const uint16_t*>(string.characters16()), 161 .ToLocalChecked();
158 string.length()); 162 else
163 return v8::String::NewFromTwoByte(isolate, string.characters16(),
164 v8::NewStringType::kNormal,
165 string.length())
166 .ToLocalChecked();
159 } 167 }
160 168
161 class FrontendChannelImpl : public InspectorClientImpl::FrontendChannel { 169 class FrontendChannelImpl : public InspectorClientImpl::FrontendChannel {
162 public: 170 public:
163 explicit FrontendChannelImpl(TaskRunner* frontend_task_runner) 171 explicit FrontendChannelImpl(TaskRunner* frontend_task_runner)
164 : frontend_task_runner_(frontend_task_runner) {} 172 : frontend_task_runner_(frontend_task_runner) {}
165 virtual ~FrontendChannelImpl() {} 173 virtual ~FrontendChannelImpl() {}
166 174
167 void SendMessageToFrontend(const v8_inspector::StringView& message) final { 175 void SendMessageToFrontend(const v8_inspector::StringView& message) final {
168 v8_inspector::String16Builder script; 176 v8::Isolate* isolate = v8::Isolate::GetCurrent();
169 script.append("InspectorTest._dispatchMessage("); 177 v8::HandleScope scope(v8::Isolate::GetCurrent());
170 script.append(ToString16(message)); 178
171 script.append(")"); 179 v8::Local<v8::String> prefix =
172 frontend_task_runner_->Append(new ExecuteStringTask(script.toString())); 180 v8::String::NewFromUtf8(isolate, "InspectorTest._dispatchMessage(",
181 v8::NewStringType::kInternalized)
182 .ToLocalChecked();
183 v8::Local<v8::String> message_string = ToString(isolate, message);
184 v8::Local<v8::String> suffix =
185 v8::String::NewFromUtf8(isolate, ")", v8::NewStringType::kInternalized)
186 .ToLocalChecked();
187
188 v8::Local<v8::String> result = v8::String::Concat(prefix, message_string);
189 result = v8::String::Concat(result, suffix);
190
191 frontend_task_runner_->Append(new ExecuteStringTask(ToVector(result)));
173 } 192 }
174 193
175 private: 194 private:
176 TaskRunner* frontend_task_runner_; 195 TaskRunner* frontend_task_runner_;
177 }; 196 };
178 197
179 } // namespace 198 } // namespace
180 199
181 int main(int argc, char* argv[]) { 200 int main(int argc, char* argv[]) {
182 v8::V8::InitializeICUDefaultLocation(argv[0]); 201 v8::V8::InitializeICUDefaultLocation(argv[0]);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 if (argv[i][0] == '-') break; 237 if (argv[i][0] == '-') break;
219 238
220 bool exists = false; 239 bool exists = false;
221 v8::internal::Vector<const char> chars = 240 v8::internal::Vector<const char> chars =
222 v8::internal::ReadFile(argv[i], &exists, true); 241 v8::internal::ReadFile(argv[i], &exists, true);
223 if (!exists) { 242 if (!exists) {
224 fprintf(stderr, "Internal error: script file doesn't exists: %s\n", 243 fprintf(stderr, "Internal error: script file doesn't exists: %s\n",
225 argv[i]); 244 argv[i]);
226 Exit(); 245 Exit();
227 } 246 }
228 v8_inspector::String16 source = 247 frontend_runner.Append(new ExecuteStringTask(chars));
229 v8_inspector::String16::fromUTF8(chars.start(), chars.length());
230 frontend_runner.Append(new ExecuteStringTask(source));
231 } 248 }
232 249
233 frontend_runner.Join(); 250 frontend_runner.Join();
234 return 0; 251 return 0;
235 } 252 }
OLDNEW
« no previous file with comments | « test/inspector/inspector-impl.cc ('k') | test/inspector/task-runner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698