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

Side by Side Diff: content/renderer/skia_benchmarking_extension.cc

Issue 107083006: More v8-API-related cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « content/renderer/pepper/v8_var_converter.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 "content/renderer/skia_benchmarking_extension.h" 5 #include "content/renderer/skia_benchmarking_extension.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/time/time.h" 8 #include "base/time/time.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 for (size_t i = 0; i < bitmap.getSize(); i += 4) { 215 for (size_t i = 0; i < bitmap.getSize(); i += 4) {
216 uint32 c = packed_pixels[i >> 2]; 216 uint32 c = packed_pixels[i >> 2];
217 buffer_pixels[i] = SkGetPackedR32(c); 217 buffer_pixels[i] = SkGetPackedR32(c);
218 buffer_pixels[i + 1] = SkGetPackedG32(c); 218 buffer_pixels[i + 1] = SkGetPackedG32(c);
219 buffer_pixels[i + 2] = SkGetPackedB32(c); 219 buffer_pixels[i + 2] = SkGetPackedB32(c);
220 buffer_pixels[i + 3] = SkGetPackedA32(c); 220 buffer_pixels[i + 3] = SkGetPackedA32(c);
221 } 221 }
222 222
223 v8::Handle<v8::Object> result = v8::Object::New(isolate); 223 v8::Handle<v8::Object> result = v8::Object::New(isolate);
224 result->Set(v8::String::NewFromUtf8(isolate, "width"), 224 result->Set(v8::String::NewFromUtf8(isolate, "width"),
225 v8::Number::New(snapped_clip.width())); 225 v8::Number::New(isolate, snapped_clip.width()));
226 result->Set(v8::String::NewFromUtf8(isolate, "height"), 226 result->Set(v8::String::NewFromUtf8(isolate, "height"),
227 v8::Number::New(snapped_clip.height())); 227 v8::Number::New(isolate, snapped_clip.height()));
228 result->Set(v8::String::NewFromUtf8(isolate, "data"), buffer.toV8Value()); 228 result->Set(v8::String::NewFromUtf8(isolate, "data"), buffer.toV8Value());
229 229
230 args.GetReturnValue().Set(result); 230 args.GetReturnValue().Set(result);
231 } 231 }
232 232
233 static void GetOps(const v8::FunctionCallbackInfo<v8::Value>& args) { 233 static void GetOps(const v8::FunctionCallbackInfo<v8::Value>& args) {
234 if (args.Length() != 1) 234 if (args.Length() != 1)
235 return; 235 return;
236 236
237 v8::Isolate* isolate = args.GetIsolate(); 237 v8::Isolate* isolate = args.GetIsolate();
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 base::TimeDelta total_time = base::TimeTicks::HighResNow() - t0; 293 base::TimeDelta total_time = base::TimeTicks::HighResNow() - t0;
294 294
295 // Gather per-op timing info by drawing into a BenchmarkingCanvas. 295 // Gather per-op timing info by drawing into a BenchmarkingCanvas.
296 skia::BenchmarkingCanvas benchmarking_canvas(bounds.width(), 296 skia::BenchmarkingCanvas benchmarking_canvas(bounds.width(),
297 bounds.height()); 297 bounds.height());
298 picture->Replay(&benchmarking_canvas); 298 picture->Replay(&benchmarking_canvas);
299 299
300 v8::Local<v8::Array> op_times = 300 v8::Local<v8::Array> op_times =
301 v8::Array::New(isolate, benchmarking_canvas.CommandCount()); 301 v8::Array::New(isolate, benchmarking_canvas.CommandCount());
302 for (size_t i = 0; i < benchmarking_canvas.CommandCount(); ++i) 302 for (size_t i = 0; i < benchmarking_canvas.CommandCount(); ++i)
303 op_times->Set(i, v8::Number::New(benchmarking_canvas.GetTime(i))); 303 op_times->Set(i, v8::Number::New(isolate,
304 benchmarking_canvas.GetTime(i)));
304 305
305 v8::Handle<v8::Object> result = v8::Object::New(isolate); 306 v8::Handle<v8::Object> result = v8::Object::New(isolate);
306 result->Set(v8::String::NewFromUtf8(isolate, "total_time"), 307 result->Set(v8::String::NewFromUtf8(isolate, "total_time"),
307 v8::Number::New(total_time.InMillisecondsF())); 308 v8::Number::New(isolate, total_time.InMillisecondsF()));
308 result->Set(v8::String::NewFromUtf8(isolate, "cmd_times"), op_times); 309 result->Set(v8::String::NewFromUtf8(isolate, "cmd_times"), op_times);
309 310
310 args.GetReturnValue().Set(result); 311 args.GetReturnValue().Set(result);
311 } 312 }
312 313
313 static void GetInfo(const v8::FunctionCallbackInfo<v8::Value>& args) { 314 static void GetInfo(const v8::FunctionCallbackInfo<v8::Value>& args) {
314 if (args.Length() != 1) 315 if (args.Length() != 1)
315 return; 316 return;
316 317
317 v8::Isolate* isolate = args.GetIsolate(); 318 v8::Isolate* isolate = args.GetIsolate();
318 scoped_refptr<cc::Picture> picture = ParsePictureStr(isolate, args[0]); 319 scoped_refptr<cc::Picture> picture = ParsePictureStr(isolate, args[0]);
319 if (!picture.get()) 320 if (!picture.get())
320 return; 321 return;
321 322
322 v8::Handle<v8::Object> result = v8::Object::New(isolate); 323 v8::Handle<v8::Object> result = v8::Object::New(isolate);
323 result->Set(v8::String::NewFromUtf8(isolate, "width"), 324 result->Set(v8::String::NewFromUtf8(isolate, "width"),
324 v8::Number::New(picture->LayerRect().width())); 325 v8::Number::New(isolate, picture->LayerRect().width()));
325 result->Set(v8::String::NewFromUtf8(isolate, "height"), 326 result->Set(v8::String::NewFromUtf8(isolate, "height"),
326 v8::Number::New(picture->LayerRect().height())); 327 v8::Number::New(isolate, picture->LayerRect().height()));
327 328
328 args.GetReturnValue().Set(result); 329 args.GetReturnValue().Set(result);
329 } 330 }
330 }; 331 };
331 332
332 } // namespace 333 } // namespace
333 334
334 namespace content { 335 namespace content {
335 336
336 v8::Extension* SkiaBenchmarkingExtension::Get() { 337 v8::Extension* SkiaBenchmarkingExtension::Get() {
337 return new SkiaBenchmarkingWrapper(); 338 return new SkiaBenchmarkingWrapper();
338 } 339 }
339 340
340 void SkiaBenchmarkingExtension::InitSkGraphics() { 341 void SkiaBenchmarkingExtension::InitSkGraphics() {
341 // Always call on the main render thread. 342 // Always call on the main render thread.
342 // Does not need to be thread-safe, as long as the above holds. 343 // Does not need to be thread-safe, as long as the above holds.
343 // FIXME: remove this after Skia updates SkGraphics::Init() to be 344 // FIXME: remove this after Skia updates SkGraphics::Init() to be
344 // thread-safe and idempotent. 345 // thread-safe and idempotent.
345 static bool skia_initialized = false; 346 static bool skia_initialized = false;
346 if (!skia_initialized) { 347 if (!skia_initialized) {
347 SkGraphics::Init(); 348 SkGraphics::Init();
348 skia_initialized = true; 349 skia_initialized = true;
349 } 350 }
350 } 351 }
351 352
352 } // namespace content 353 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/v8_var_converter.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698