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

Unified Diff: ui/android/view_client.h

Issue 2645353004: ViewRoot class for event forwarding on Android (Closed)
Patch Set: comments Created 3 years, 11 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: ui/android/view_client.h
diff --git a/ui/android/view_client.h b/ui/android/view_client.h
new file mode 100644
index 0000000000000000000000000000000000000000..fb7f79c6633070e3e805a256f2a6d319fda0b472
--- /dev/null
+++ b/ui/android/view_client.h
@@ -0,0 +1,103 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_ANDROID_VIEW_CLIENT_H_
+#define UI_ANDROID_VIEW_CLIENT_H_
+
+#include <jni.h>
+
+#include "ui/android/ui_android_export.h"
+
+namespace ui {
+
+// Container of motion event data. Used when traversing views along their
+// hierarchy. Actual motion event object will be constructed right before
+// it is used in the |ViewClient| implementation to avoid creating multiple
+// |MotionEventAndroid| instances.
+struct MotionEventData {
+ MotionEventData(float dip_scale,
+ jobject jevent,
+ long time,
+ int action,
+ int pointer_count,
+ int history_size,
+ int action_index,
+ float pos_x0,
+ float pos_y0,
+ float pos_x1,
+ float pos_y1,
+ int pointer_id_0,
+ int pointer_id_1,
+ float touch_major_0,
+ float touch_major_1,
+ float touch_minor_0,
+ float touch_minor_1,
+ float orientation_0,
+ float orientation_1,
+ float tilt_0,
+ float tilt_1,
+ float raw_pos_x,
+ float raw_pos_y,
+ int tool_type_0,
+ int tool_type_1,
+ int button_state,
+ int meta_state,
+ bool is_touch_handle_event);
+
+ MotionEventData(const MotionEventData& other);
+
+ // Returns a new |MotionEventData| object whose position is offset
+ // by a given delta.
+ MotionEventData Offset(float delta_x, float delta_y) const;
+
+ float GetX() const { return pos_x0_ / dip_scale_; }
+ float GetY() const { return pos_y0_ / dip_scale_; }
+
+ const float dip_scale_;
+ const jobject jevent_;
+ const long time_; // ms
+ const int action_;
+ const int pointer_count_;
+ const int history_size_;
+ const int action_index_;
+
+ const float pos_x0_; // in pixel unit
+ const float pos_y0_;
+ const float pos_x1_;
+ const float pos_y1_;
+
+ const int pointer_id_0_;
+ const int pointer_id_1_;
+ const float touch_major_0_;
+ const float touch_major_1_;
+ const float touch_minor_0_;
+ const float touch_minor_1_;
+ const float orientation_0_;
+ const float orientation_1_;
+ const float tilt_0_;
+ const float tilt_1_;
+ const float raw_pos_x_;
+ const float raw_pos_y_;
+ const int tool_type_0_;
+ const int tool_type_1_;
+ const int button_state_;
+ const int meta_state_;
+ const bool is_touch_handle_event_;
+};
+
+// Client interface used to forward events from Java to native views.
+// Calls are dispatched to its children along the hierarchy of ViewAndroid.
+// Use bool return type to stop propagating the call i.e. overriden method
+// should return true to indicate that the event was handled and stop
+// the processing.
+// Note: Not in use yet. Will be hooked up together with ViewRoot.
+// See https://crbug.com/671401.
+class UI_ANDROID_EXPORT ViewClient {
+ public:
+ virtual bool OnTouchEvent(const MotionEventData& event);
+};
+
+} // namespace ui
+
+#endif // UI_ANDROID_VIEW_CLIENT_H_

Powered by Google App Engine
This is Rietveld 408576698