OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/gpu/gpu_benchmarking_extension.h" | 5 #include "content/renderer/gpu/gpu_benchmarking_extension.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/base64.h" | 9 #include "base/base64.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 " overscroll = overscroll || 0;" | 279 " overscroll = overscroll || 0;" |
280 " repeat_count = opt_repeat_count || 1;" | 280 " repeat_count = opt_repeat_count || 1;" |
281 " callback = opt_callback || function() { };" | 281 " callback = opt_callback || function() { };" |
282 " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" | 282 " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
283 " native function BeginScrollBounce();" | 283 " native function BeginScrollBounce();" |
284 " return BeginScrollBounce(direction, distance, overscroll," | 284 " return BeginScrollBounce(direction, distance, overscroll," |
285 " repeat_count, callback," | 285 " repeat_count, callback," |
286 " speed_in_pixels_s," | 286 " speed_in_pixels_s," |
287 " opt_start_x, opt_start_y);" | 287 " opt_start_x, opt_start_y);" |
288 "};" | 288 "};" |
| 289 // TODO(dominikg): Remove once JS interface changes have rolled into |
| 290 // stable. |
| 291 "chrome.gpuBenchmarking.newPinchInterface = true;" |
289 "chrome.gpuBenchmarking.pinchBy = " | 292 "chrome.gpuBenchmarking.pinchBy = " |
290 " function(zoom_in, pixels_to_cover, anchor_x, anchor_y," | 293 " function(scale_factor, anchor_x, anchor_y," |
291 " opt_callback, opt_relative_pointer_speed_in_pixels_s) {" | 294 " opt_callback, opt_relative_pointer_speed_in_pixels_s) {" |
292 " callback = opt_callback || function() { };" | 295 " callback = opt_callback || function() { };" |
293 " relative_pointer_speed_in_pixels_s =" | 296 " relative_pointer_speed_in_pixels_s =" |
294 " opt_relative_pointer_speed_in_pixels_s || 800;" | 297 " opt_relative_pointer_speed_in_pixels_s || 800;" |
295 " native function BeginPinch();" | 298 " native function BeginPinch();" |
296 " return BeginPinch(zoom_in, pixels_to_cover," | 299 " return BeginPinch(scale_factor, anchor_x, anchor_y, callback," |
297 " anchor_x, anchor_y, callback," | |
298 " relative_pointer_speed_in_pixels_s);" | 300 " relative_pointer_speed_in_pixels_s);" |
299 "};" | 301 "};" |
300 "chrome.gpuBenchmarking.tap = " | 302 "chrome.gpuBenchmarking.tap = " |
301 " function(position_x, position_y, opt_callback, opt_duration_ms," | 303 " function(position_x, position_y, opt_callback, opt_duration_ms," |
302 " opt_gesture_source_type) {" | 304 " opt_gesture_source_type) {" |
303 " callback = opt_callback || function() { };" | 305 " callback = opt_callback || function() { };" |
304 " duration_ms = opt_duration_ms || 50;" | 306 " duration_ms = opt_duration_ms || 50;" |
305 " gesture_source_type = opt_gesture_source_type ||" | 307 " gesture_source_type = opt_gesture_source_type ||" |
306 " chrome.gpuBenchmarking.DEFAULT_INPUT;" | 308 " chrome.gpuBenchmarking.DEFAULT_INPUT;" |
307 " native function BeginTap();" | 309 " native function BeginTap();" |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 args.GetReturnValue().Set(true); | 635 args.GetReturnValue().Set(true); |
634 } | 636 } |
635 | 637 |
636 static void BeginPinch( | 638 static void BeginPinch( |
637 const v8::FunctionCallbackInfo<v8::Value>& args) { | 639 const v8::FunctionCallbackInfo<v8::Value>& args) { |
638 GpuBenchmarkingContext context; | 640 GpuBenchmarkingContext context; |
639 if (!context.Init(false)) | 641 if (!context.Init(false)) |
640 return; | 642 return; |
641 | 643 |
642 int arglen = args.Length(); | 644 int arglen = args.Length(); |
643 if (arglen < 6 || | 645 if (arglen < 5 || |
644 !args[0]->IsBoolean() || | 646 !args[0]->IsNumber() || |
645 !args[1]->IsNumber() || | 647 !args[1]->IsNumber() || |
646 !args[2]->IsNumber() || | 648 !args[2]->IsNumber() || |
647 !args[3]->IsNumber() || | 649 !args[3]->IsFunction() || |
648 !args[4]->IsFunction() || | 650 !args[4]->IsNumber()) { |
649 !args[5]->IsNumber()) { | |
650 args.GetReturnValue().Set(false); | 651 args.GetReturnValue().Set(false); |
651 return; | 652 return; |
652 } | 653 } |
653 | 654 |
654 scoped_ptr<SyntheticPinchGestureParams> gesture_params( | 655 scoped_ptr<SyntheticPinchGestureParams> gesture_params( |
655 new SyntheticPinchGestureParams); | 656 new SyntheticPinchGestureParams); |
656 | 657 |
657 // Convert coordinates from CSS pixels to density independent pixels (DIPs). | 658 // Convert coordinates from CSS pixels to density independent pixels (DIPs). |
658 float page_scale_factor = context.web_view()->pageScaleFactor(); | 659 float page_scale_factor = context.web_view()->pageScaleFactor(); |
659 | 660 |
660 gesture_params->zoom_in = args[0]->BooleanValue(); | 661 gesture_params->scale_factor = args[0]->NumberValue(); |
661 gesture_params->total_num_pixels_covered = | |
662 args[1]->IntegerValue() * page_scale_factor; | |
663 gesture_params->anchor.SetPoint( | 662 gesture_params->anchor.SetPoint( |
664 args[2]->IntegerValue() * page_scale_factor, | 663 args[1]->IntegerValue() * page_scale_factor, |
665 args[3]->IntegerValue() * page_scale_factor); | 664 args[2]->IntegerValue() * page_scale_factor); |
666 gesture_params->relative_pointer_speed_in_pixels_s = | 665 gesture_params->relative_pointer_speed_in_pixels_s = |
667 args[5]->IntegerValue(); | 666 args[4]->IntegerValue(); |
668 | 667 |
669 v8::Local<v8::Function> callback_local = | 668 v8::Local<v8::Function> callback_local = |
670 v8::Local<v8::Function>::Cast(args[4]); | 669 v8::Local<v8::Function>::Cast(args[3]); |
671 | 670 |
672 scoped_refptr<CallbackAndContext> callback_and_context = | 671 scoped_refptr<CallbackAndContext> callback_and_context = |
673 new CallbackAndContext(args.GetIsolate(), | 672 new CallbackAndContext(args.GetIsolate(), |
674 callback_local, | 673 callback_local, |
675 context.web_frame()->mainWorldScriptContext()); | 674 context.web_frame()->mainWorldScriptContext()); |
676 | 675 |
677 | 676 |
678 // TODO(nduca): If the render_view_impl is destroyed while the gesture is in | 677 // TODO(nduca): If the render_view_impl is destroyed while the gesture is in |
679 // progress, we will leak the callback and context. This needs to be fixed, | 678 // progress, we will leak the callback and context. This needs to be fixed, |
680 // somehow. | 679 // somehow. |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 GpuChannelHost* gpu_channel = RenderThreadImpl::current()->GetGpuChannel(); | 880 GpuChannelHost* gpu_channel = RenderThreadImpl::current()->GetGpuChannel(); |
882 args.GetReturnValue().Set(!!gpu_channel); | 881 args.GetReturnValue().Set(!!gpu_channel); |
883 } | 882 } |
884 }; | 883 }; |
885 | 884 |
886 v8::Extension* GpuBenchmarkingExtension::Get() { | 885 v8::Extension* GpuBenchmarkingExtension::Get() { |
887 return new GpuBenchmarkingWrapper(); | 886 return new GpuBenchmarkingWrapper(); |
888 } | 887 } |
889 | 888 |
890 } // namespace content | 889 } // namespace content |
OLD | NEW |