Chromium Code Reviews| Index: content/renderer/gpu/gpu_benchmarking_extension.cc |
| diff --git a/content/renderer/gpu/gpu_benchmarking_extension.cc b/content/renderer/gpu/gpu_benchmarking_extension.cc |
| index c3e5427b2afc4270f71bb23d7391889700736548..f649db91872ced076be336c3b27954dc292c22fc 100644 |
| --- a/content/renderer/gpu/gpu_benchmarking_extension.cc |
| +++ b/content/renderer/gpu/gpu_benchmarking_extension.cc |
| @@ -214,120 +214,129 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| public: |
| GpuBenchmarkingWrapper() : |
| v8::Extension(kGpuBenchmarkingExtensionName, |
| - "if (typeof(chrome) == 'undefined') {" |
| - " chrome = {};" |
| - "};" |
| - "if (typeof(chrome.gpuBenchmarking) == 'undefined') {" |
| - " chrome.gpuBenchmarking = {};" |
| - "};" |
| - "chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers = function() {" |
| - " native function SetNeedsDisplayOnAllLayers();" |
| - " return SetNeedsDisplayOnAllLayers();" |
| - "};" |
| - "chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent = function() {" |
| - " native function SetRasterizeOnlyVisibleContent();" |
| - " return SetRasterizeOnlyVisibleContent();" |
| - "};" |
| - "chrome.gpuBenchmarking.printToSkPicture = function(dirname) {" |
| - " native function PrintToSkPicture();" |
| - " return PrintToSkPicture(dirname);" |
| - "};" |
| - "chrome.gpuBenchmarking.DEFAULT_INPUT = 0;" |
| - "chrome.gpuBenchmarking.TOUCH_INPUT = 1;" |
| - "chrome.gpuBenchmarking.MOUSE_INPUT = 2;" |
| - "chrome.gpuBenchmarking.gestureSourceTypeSupported = " |
| - " function(gesture_source_type) {" |
| - " native function GestureSourceTypeSupported();" |
| - " return GestureSourceTypeSupported(gesture_source_type);" |
| - "};" |
| - "chrome.gpuBenchmarking.smoothScrollBy = " |
| - " function(pixels_to_scroll, opt_callback, opt_start_x," |
| - " opt_start_y, opt_gesture_source_type," |
| - " opt_direction, opt_speed_in_pixels_s) {" |
| - " pixels_to_scroll = pixels_to_scroll || 0;" |
| - " callback = opt_callback || function() { };" |
| - " gesture_source_type = opt_gesture_source_type ||" |
| - " chrome.gpuBenchmarking.DEFAULT_INPUT;" |
| - " direction = opt_direction || 'down';" |
| - " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| - " native function BeginSmoothScroll();" |
| - " return BeginSmoothScroll(pixels_to_scroll, callback," |
| - " gesture_source_type, direction," |
| - " speed_in_pixels_s, true," |
| - " opt_start_x, opt_start_y);" |
| - "};" |
| - "chrome.gpuBenchmarking.swipe = " |
| - " function(direction, distance, opt_callback," |
| - " opt_start_x, opt_start_y," |
| - " opt_speed_in_pixels_s) {" |
| - " direction = direction || 'up';" |
| - " distance = distance || 0;" |
| - " callback = opt_callback || function() { };" |
| - " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| - " native function BeginSmoothScroll();" |
| - " return BeginSmoothScroll(-distance, callback," |
| - " chrome.gpuBenchmarking.TOUCH_INPUT," |
| - " direction, speed_in_pixels_s, false," |
| - " opt_start_x, opt_start_y);" |
| - "};" |
| - "chrome.gpuBenchmarking.scrollBounce = " |
| - " function(direction, distance, overscroll, opt_repeat_count," |
| - " opt_callback, opt_start_x, opt_start_y," |
| - " opt_speed_in_pixels_s) {" |
| - " direction = direction || 'down';" |
| - " distance = distance || 0;" |
| - " overscroll = overscroll || 0;" |
| - " repeat_count = opt_repeat_count || 1;" |
| - " callback = opt_callback || function() { };" |
| - " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| - " native function BeginScrollBounce();" |
| - " return BeginScrollBounce(direction, distance, overscroll," |
| - " repeat_count, callback," |
| - " speed_in_pixels_s," |
| - " opt_start_x, opt_start_y);" |
| - "};" |
| - // TODO(dominikg): Remove once JS interface changes have rolled into |
| - // stable. |
| - "chrome.gpuBenchmarking.newPinchInterface = true;" |
| - "chrome.gpuBenchmarking.pinchBy = " |
| - " function(scale_factor, anchor_x, anchor_y," |
| - " opt_callback, opt_relative_pointer_speed_in_pixels_s) {" |
| - " callback = opt_callback || function() { };" |
| - " relative_pointer_speed_in_pixels_s =" |
| - " opt_relative_pointer_speed_in_pixels_s || 800;" |
| - " native function BeginPinch();" |
| - " return BeginPinch(scale_factor, anchor_x, anchor_y, callback," |
| - " relative_pointer_speed_in_pixels_s);" |
| - "};" |
| - "chrome.gpuBenchmarking.tap = " |
| - " function(position_x, position_y, opt_callback, opt_duration_ms," |
| - " opt_gesture_source_type) {" |
| - " callback = opt_callback || function() { };" |
| - " duration_ms = opt_duration_ms || 50;" |
| - " gesture_source_type = opt_gesture_source_type ||" |
| - " chrome.gpuBenchmarking.DEFAULT_INPUT;" |
| - " native function BeginTap();" |
| - " return BeginTap(position_x, position_y, callback, duration_ms," |
| - " gesture_source_type);" |
| - "};" |
| - "chrome.gpuBenchmarking.beginWindowSnapshotPNG = function(callback) {" |
| - " native function BeginWindowSnapshotPNG();" |
| - " BeginWindowSnapshotPNG(callback);" |
| - "};" |
| - "chrome.gpuBenchmarking.clearImageCache = function() {" |
| - " native function ClearImageCache();" |
| - " ClearImageCache();" |
| - "};" |
| - "chrome.gpuBenchmarking.runMicroBenchmark =" |
| - " function(name, callback, opt_arguments) {" |
| - " arguments = opt_arguments || {};" |
| - " native function RunMicroBenchmark();" |
| - " return RunMicroBenchmark(name, callback, arguments);" |
| - "};" |
| - "chrome.gpuBenchmarking.hasGpuProcess = function() {" |
| - " native function HasGpuProcess();" |
| - " return HasGpuProcess();" |
| - "};") {} |
| + "if (typeof(chrome) == 'undefined') {" |
|
jamesr
2014/05/29 20:35:01
hmm, why are this and the follow lines marked as c
ernstm
2014/05/29 20:38:36
"git cl format" changed most of these lines.
Thi
jamesr
2014/05/29 20:39:42
Ah, it added 2 spaces to the leading indent. I wi
|
| + " chrome = {};" |
| + "};" |
| + "if (typeof(chrome.gpuBenchmarking) == 'undefined') {" |
| + " chrome.gpuBenchmarking = {};" |
| + "};" |
| + "chrome.gpuBenchmarking.setNeedsDisplayOnAllLayers = function() {" |
| + " native function SetNeedsDisplayOnAllLayers();" |
| + " return SetNeedsDisplayOnAllLayers();" |
| + "};" |
| + "chrome.gpuBenchmarking.setRasterizeOnlyVisibleContent = " |
| + "function() {" |
| + " native function SetRasterizeOnlyVisibleContent();" |
| + " return SetRasterizeOnlyVisibleContent();" |
| + "};" |
| + "chrome.gpuBenchmarking.printToSkPicture = function(dirname) {" |
| + " native function PrintToSkPicture();" |
| + " return PrintToSkPicture(dirname);" |
| + "};" |
| + "chrome.gpuBenchmarking.DEFAULT_INPUT = 0;" |
| + "chrome.gpuBenchmarking.TOUCH_INPUT = 1;" |
| + "chrome.gpuBenchmarking.MOUSE_INPUT = 2;" |
| + "chrome.gpuBenchmarking.gestureSourceTypeSupported = " |
| + " function(gesture_source_type) {" |
| + " native function GestureSourceTypeSupported();" |
| + " return GestureSourceTypeSupported(gesture_source_type);" |
| + "};" |
| + "chrome.gpuBenchmarking.smoothScrollBy = " |
| + " function(pixels_to_scroll, opt_callback, opt_start_x," |
| + " opt_start_y, opt_gesture_source_type," |
| + " opt_direction, opt_speed_in_pixels_s) {" |
| + " pixels_to_scroll = pixels_to_scroll || 0;" |
| + " callback = opt_callback || function() { };" |
| + " gesture_source_type = opt_gesture_source_type ||" |
| + " chrome.gpuBenchmarking.DEFAULT_INPUT;" |
| + " direction = opt_direction || 'down';" |
| + " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| + " native function BeginSmoothScroll();" |
| + " return BeginSmoothScroll(pixels_to_scroll, callback," |
| + " gesture_source_type, direction," |
| + " speed_in_pixels_s, true," |
| + " opt_start_x, opt_start_y);" |
| + "};" |
| + "chrome.gpuBenchmarking.swipe = " |
| + " function(direction, distance, opt_callback," |
| + " opt_start_x, opt_start_y," |
| + " opt_speed_in_pixels_s) {" |
| + " direction = direction || 'up';" |
| + " distance = distance || 0;" |
| + " callback = opt_callback || function() { };" |
| + " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| + " native function BeginSmoothScroll();" |
| + " return BeginSmoothScroll(-distance, callback," |
| + " chrome.gpuBenchmarking.TOUCH_INPUT," |
| + " direction, speed_in_pixels_s, false," |
| + " opt_start_x, opt_start_y);" |
| + "};" |
| + "chrome.gpuBenchmarking.scrollBounce = " |
| + " function(direction, distance, overscroll, opt_repeat_count," |
| + " opt_callback, opt_start_x, opt_start_y," |
| + " opt_speed_in_pixels_s) {" |
| + " direction = direction || 'down';" |
| + " distance = distance || 0;" |
| + " overscroll = overscroll || 0;" |
| + " repeat_count = opt_repeat_count || 1;" |
| + " callback = opt_callback || function() { };" |
| + " speed_in_pixels_s = opt_speed_in_pixels_s || 800;" |
| + " native function BeginScrollBounce();" |
| + " return BeginScrollBounce(direction, distance, overscroll," |
| + " repeat_count, callback," |
| + " speed_in_pixels_s," |
| + " opt_start_x, opt_start_y);" |
| + "};" |
| + // TODO(dominikg): Remove once JS interface changes have rolled into |
| + // stable. |
| + "chrome.gpuBenchmarking.newPinchInterface = true;" |
| + "chrome.gpuBenchmarking.pinchBy = " |
| + " function(scale_factor, anchor_x, anchor_y," |
| + " opt_callback, " |
| + "opt_relative_pointer_speed_in_pixels_s) {" |
| + " callback = opt_callback || function() { };" |
| + " relative_pointer_speed_in_pixels_s =" |
| + " opt_relative_pointer_speed_in_pixels_s || 800;" |
| + " native function BeginPinch();" |
| + " return BeginPinch(scale_factor, anchor_x, anchor_y, callback," |
| + " relative_pointer_speed_in_pixels_s);" |
| + "};" |
| + "chrome.gpuBenchmarking.tap = " |
| + " function(position_x, position_y, opt_callback, " |
| + "opt_duration_ms," |
| + " opt_gesture_source_type) {" |
| + " callback = opt_callback || function() { };" |
| + " duration_ms = opt_duration_ms || 50;" |
| + " gesture_source_type = opt_gesture_source_type ||" |
| + " chrome.gpuBenchmarking.DEFAULT_INPUT;" |
| + " native function BeginTap();" |
| + " return BeginTap(position_x, position_y, callback, duration_ms," |
| + " gesture_source_type);" |
| + "};" |
| + "chrome.gpuBenchmarking.beginWindowSnapshotPNG = " |
| + "function(callback) {" |
| + " native function BeginWindowSnapshotPNG();" |
| + " BeginWindowSnapshotPNG(callback);" |
| + "};" |
| + "chrome.gpuBenchmarking.clearImageCache = function() {" |
| + " native function ClearImageCache();" |
| + " ClearImageCache();" |
| + "};" |
| + "chrome.gpuBenchmarking.runMicroBenchmark =" |
| + " function(name, callback, opt_arguments) {" |
| + " arguments = opt_arguments || {};" |
| + " native function RunMicroBenchmark();" |
| + " return RunMicroBenchmark(name, callback, arguments);" |
| + "};" |
| + "chrome.gpuBenchmarking.sendMessageToMicroBenchmark =" |
| + " function(id, arguments) {" |
| + " native function SendMessageToMicroBenchmark();" |
| + " return SendMessageToMicroBenchmark(id, arguments);" |
| + "};" |
| + "chrome.gpuBenchmarking.hasGpuProcess = function() {" |
| + " native function HasGpuProcess();" |
| + " return HasGpuProcess();" |
| + "};") {} |
| virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( |
| v8::Isolate* isolate, |
| @@ -358,6 +367,9 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| return v8::FunctionTemplate::New(isolate, ClearImageCache); |
| if (name->Equals(v8::String::NewFromUtf8(isolate, "RunMicroBenchmark"))) |
| return v8::FunctionTemplate::New(isolate, RunMicroBenchmark); |
| + if (name->Equals( |
| + v8::String::NewFromUtf8(isolate, "SendMessageToMicroBenchmark"))) |
| + return v8::FunctionTemplate::New(isolate, SendMessageToMicroBenchmark); |
| if (name->Equals(v8::String::NewFromUtf8(isolate, "HasGpuProcess"))) |
| return v8::FunctionTemplate::New(isolate, HasGpuProcess); |
| @@ -842,7 +854,7 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| const v8::FunctionCallbackInfo<v8::Value>& args) { |
| GpuBenchmarkingContext context; |
| if (!context.Init(true)) { |
| - args.GetReturnValue().Set(false); |
| + args.GetReturnValue().Set(0); |
| return; |
| } |
| @@ -850,7 +862,7 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| !args[0]->IsString() || |
| !args[1]->IsFunction() || |
| !args[2]->IsObject()) { |
| - args.GetReturnValue().Set(false); |
| + args.GetReturnValue().Set(0); |
| return; |
| } |
| @@ -876,6 +888,32 @@ class GpuBenchmarkingWrapper : public v8::Extension { |
| base::Bind(&OnMicroBenchmarkCompleted, callback_and_context))); |
| } |
| + static void SendMessageToMicroBenchmark( |
| + const v8::FunctionCallbackInfo<v8::Value>& args) { |
| + GpuBenchmarkingContext context; |
| + if (!context.Init(true)) { |
| + args.GetReturnValue().Set(0); |
| + return; |
| + } |
| + |
| + if (args.Length() != 2 || !args[0]->IsNumber() || !args[1]->IsObject()) { |
| + args.GetReturnValue().Set(0); |
| + return; |
| + } |
| + |
| + scoped_ptr<V8ValueConverter> converter = |
| + make_scoped_ptr(V8ValueConverter::create()); |
| + v8::Handle<v8::Context> v8_context = |
| + context.web_frame()->mainWorldScriptContext(); |
| + scoped_ptr<base::Value> value = |
| + make_scoped_ptr(converter->FromV8Value(args[1], v8_context)); |
| + |
| + int id = 0; |
| + converter->FromV8Value(args[0], v8_context)->GetAsInteger(&id); |
| + args.GetReturnValue().Set( |
| + context.compositor()->SendMessageToMicroBenchmark(id, value.Pass())); |
| + } |
| + |
| static void HasGpuProcess(const v8::FunctionCallbackInfo<v8::Value>& args) { |
| GpuChannelHost* gpu_channel = RenderThreadImpl::current()->GetGpuChannel(); |
| args.GetReturnValue().Set(!!gpu_channel); |