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

Unified Diff: content/renderer/gpu/gpu_benchmarking_extension.cc

Issue 2348183003: Test synthetic pointer action on pointer event tests (Closed)
Patch Set: pointer event tests Created 4 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 side-by-side diff with in-line comments
Download patch
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 b4aadc1821371c8c2cb537cb04af6c68f50f3049..06b478e21fbecc87d5b89f56d0d49ce76f995c17 100644
--- a/content/renderer/gpu/gpu_benchmarking_extension.cc
+++ b/content/renderer/gpu/gpu_benchmarking_extension.cc
@@ -20,6 +20,8 @@
#include "content/common/child_process_messages.h"
#include "content/common/input/synthetic_gesture_params.h"
#include "content/common/input/synthetic_pinch_gesture_params.h"
+#include "content/common/input/synthetic_pointer_action_list_params.h"
+#include "content/common/input/synthetic_pointer_action_params.h"
#include "content/common/input/synthetic_smooth_drag_gesture_params.h"
#include "content/common/input/synthetic_smooth_scroll_gesture_params.h"
#include "content/common/input/synthetic_tap_gesture_params.h"
@@ -27,6 +29,7 @@
#include "content/public/common/content_switches.h"
#include "content/public/renderer/chrome_object_extensions_utils.h"
#include "content/public/renderer/render_thread.h"
+#include "content/renderer/gpu/actions_runner.h"
#include "content/renderer/gpu/render_widget_compositor.h"
#include "content/renderer/render_thread_impl.h"
#include "content/renderer/render_view_impl.h"
@@ -543,8 +546,7 @@ gin::ObjectTemplateBuilder GpuBenchmarking::GetObjectTemplateBuilder(
.SetMethod("printToSkPicture", &GpuBenchmarking::PrintToSkPicture)
.SetMethod("printPagesToSkPictures",
&GpuBenchmarking::PrintPagesToSkPictures)
- .SetMethod("printPagesToXPS",
- &GpuBenchmarking::PrintPagesToXPS)
+ .SetMethod("printPagesToXPS", &GpuBenchmarking::PrintPagesToXPS)
.SetValue("DEFAULT_INPUT", 0)
.SetValue("TOUCH_INPUT", 1)
.SetValue("MOUSE_INPUT", 2)
@@ -568,7 +570,9 @@ gin::ObjectTemplateBuilder GpuBenchmarking::GetObjectTemplateBuilder(
.SetMethod("hasGpuChannel", &GpuBenchmarking::HasGpuChannel)
.SetMethod("hasGpuProcess", &GpuBenchmarking::HasGpuProcess)
.SetMethod("getGpuDriverBugWorkarounds",
- &GpuBenchmarking::GetGpuDriverBugWorkarounds);
+ &GpuBenchmarking::GetGpuDriverBugWorkarounds)
+ .SetMethod("pointerActionSequence",
+ &GpuBenchmarking::PointerActionSequence);
}
void GpuBenchmarking::SetNeedsDisplayOnAllLayers() {
@@ -1048,4 +1052,50 @@ void GpuBenchmarking::GetGpuDriverBugWorkarounds(gin::Arguments* args) {
args->Return(result);
}
+bool GpuBenchmarking::PointerActionSequence(gin::Arguments* args) {
+ GpuBenchmarkingContext context;
+ if (!context.Init(false))
+ return false;
+
+ v8::Local<v8::Function> callback;
+
+ v8::Local<v8::Object> obj;
+ if (!args->GetNext(&obj)) {
+ args->ThrowError();
+ return false;
+ }
+
+ std::unique_ptr<V8ValueConverter> converter =
+ base::WrapUnique(V8ValueConverter::create());
+ v8::Local<v8::Context> v8_context =
+ context.web_frame()->mainWorldScriptContext();
+ std::unique_ptr<base::Value> value = converter->FromV8Value(obj, v8_context);
+
+ // Get all the pointer actions from the user input and wrap them into a
+ // SyntheticPointerActionListParams object.
+ ActionsRunner actions_runner(value.get());
+ if (!actions_runner.ParseSources())
+ return false;
+
+ std::unique_ptr<SyntheticPointerActionListParams> gesture_params =
+ actions_runner.gesture_params();
+
+ if (!GetOptionalArg(args, &callback)) {
+ return false;
+ }
+
+ // At the end, we will send a 'FINISH' action and need a callback.
+ scoped_refptr<CallbackAndContext> callback_and_context =
+ new CallbackAndContext(args->isolate(), callback,
+ context.web_frame()->mainWorldScriptContext());
+ // TODO(nduca): If the render_view_impl is destroyed while the gesture is in
+ // progress, we will leak the callback and context. This needs to be fixed,
+ // somehow.
+ context.render_view_impl()->GetWidget()->QueueSyntheticGesture(
+ std::move(gesture_params),
+ base::Bind(&OnSyntheticGestureCompleted,
+ base::RetainedRef(callback_and_context)));
+ return true;
+}
+
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698