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

Unified Diff: content/browser/renderer_host/render_widget_host_impl.cc

Issue 1884883005: Prepare SyntheticPointerAction to handle touch actions for multiple fingers (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/render_widget_host_impl.cc
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index a8ac8a6843dd732fa4af0ba4a819bb8421760f9f..db8dcd69334efbff03bcc2f9810993a0a678a444 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -241,6 +241,9 @@ RenderWidgetHostImpl::RenderWidgetHostImpl(RenderWidgetHostDelegate* delegate,
base::Bind(&RenderWidgetHostImpl::ClearDisplayedGraphics,
weak_factory_.GetWeakPtr())));
+ for (size_t i = 0; i < arraysize(index_map_); ++i)
+ index_map_[i] = -1;
+
delegate_->RenderWidgetCreated(this);
}
@@ -1700,12 +1703,63 @@ void RenderWidgetHostImpl::OnQueueSyntheticGesture(
return;
}
+ if (gesture_packet.gesture_params()->GetGestureType() ==
+ SyntheticGestureParams::POINTER_ACTION) {
+ QueueSyntheticPointerAction(
+ *SyntheticPointerActionParams::Cast(gesture_packet.gesture_params()));
+ return;
+ }
+
QueueSyntheticGesture(
SyntheticGesture::Create(*gesture_packet.gesture_params()),
base::Bind(&RenderWidgetHostImpl::OnSyntheticGestureCompleted,
weak_factory_.GetWeakPtr()));
}
+void RenderWidgetHostImpl::QueueSyntheticPointerAction(
tdresser 2016/04/18 15:24:39 We'd prefer to have this logic encapsulated within
lanwei 2016/04/19 19:05:32 No, you are right, I will move this part related t
+ const SyntheticPointerActionParams& gesture_params) {
+ if (gesture_params.pointer_action_type() ==
+ SyntheticPointerActionParams::PointerActionType::PROCESS) {
+ if (!synthetic_gesture_controller_ && view_) {
+ synthetic_gesture_controller_.reset(new SyntheticGestureController(
+ view_->CreateSyntheticGestureTarget()));
+ }
+ if (synthetic_gesture_controller_) {
+ // Todo(lanwei@): Should check if type is pointer, make sure
+ // synthetic_pointer_ is not null.
+ DCHECK(gesture_params.pointer_action_type() !=
+ SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED);
+
+ if (!synthetic_pointer_)
+ SetSyntheticPointer(gesture_params);
+
+ QueueSyntheticGesture(
+ std::unique_ptr<SyntheticGesture>(new SyntheticPointerAction(
+ action_param_list_, synthetic_pointer_.get(), index_map_)),
+ base::Bind(&RenderWidgetHostImpl::OnSyntheticPointerActionCompleted,
+ weak_factory_.GetWeakPtr()));
+ }
+ action_param_list_.clear();
+ return;
+ }
+
+ action_param_list_.push_back(gesture_params);
+}
+
+void RenderWidgetHostImpl::SetSyntheticPointer(
+ const SyntheticPointerActionParams& gesture_params) {
+ SyntheticGestureParams::GestureSourceType gesture_source_type =
+ gesture_params.gesture_source_type;
+ if (gesture_source_type == SyntheticGestureParams::DEFAULT_INPUT) {
+ if (synthetic_gesture_controller_) {
+ gesture_source_type =
+ synthetic_gesture_controller_->GetDefaultSyntheticGestureSourceType();
+ DCHECK_NE(gesture_source_type, SyntheticGestureParams::DEFAULT_INPUT);
+ synthetic_pointer_ = SyntheticPointer::Create(gesture_source_type);
+ }
+ }
+}
+
void RenderWidgetHostImpl::OnSetCursor(const WebCursor& cursor) {
SetCursor(cursor);
}
@@ -1962,6 +2016,13 @@ void RenderWidgetHostImpl::OnUnexpectedEventAck(UnexpectedEventAckType type) {
void RenderWidgetHostImpl::OnSyntheticGestureCompleted(
SyntheticGesture::Result result) {
Send(new InputMsg_SyntheticGestureCompleted(GetRoutingID()));
+ synthetic_pointer_.reset(nullptr);
+ ;
+}
+
+void RenderWidgetHostImpl::OnSyntheticPointerActionCompleted(
+ SyntheticGesture::Result result) {
+ // Do nothing
}
bool RenderWidgetHostImpl::ShouldDropInputEvents() const {

Powered by Google App Engine
This is Rietveld 408576698