| Index: content/browser/renderer_host/input/motion_event_android_unittest.cc
 | 
| diff --git a/content/browser/renderer_host/input/motion_event_android_unittest.cc b/content/browser/renderer_host/input/motion_event_android_unittest.cc
 | 
| index ced6c1ac9df977d11766523acf227ab899f7a032..d7482d9aa7e1c309cfa0603322751aea7515cebd 100644
 | 
| --- a/content/browser/renderer_host/input/motion_event_android_unittest.cc
 | 
| +++ b/content/browser/renderer_host/input/motion_event_android_unittest.cc
 | 
| @@ -9,6 +9,7 @@
 | 
|  #include "content/browser/renderer_host/input/motion_event_android.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
|  #include "ui/events/event_constants.h"
 | 
| +#include "ui/events/test/motion_event_test_utils.h"
 | 
|  
 | 
|  using ui::MotionEvent;
 | 
|  
 | 
| @@ -31,76 +32,54 @@ int kAndroidButtonPrimary = 1;
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| +// Note that these tests avoid creating a Java instance of the MotionEvent, as
 | 
| +// we're primarily testing caching behavior, and the code necessary to
 | 
| +// construct a Java-backed MotionEvent itself adds unnecessary complexity.
 | 
|  TEST(MotionEventAndroidTest, Constructor) {
 | 
|    int event_time_ms = 5;
 | 
|    base::TimeTicks event_time =
 | 
|        base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms);
 | 
| -  float x0 = 13.7f;
 | 
| -  float y0 = -7.13f;
 | 
| -  float x1 = -13.7f;
 | 
| -  float y1 = 7.13f;
 | 
| -  float raw_offset = 10.1f;
 | 
| -  float touch_major0 = 5.3f;
 | 
| -  float touch_major1 = 3.5f;
 | 
| -  float touch_minor0 = 1.2f;
 | 
| -  float touch_minor1 = 2.1f;
 | 
| -  float orientation0 = 0.1f;
 | 
| -  float orientation1 = -0.1f;
 | 
| -  int p0 = 1;
 | 
| -  int p1 = 2;
 | 
| +  MotionEventAndroid::Pointer p0(
 | 
| +      1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
 | 
| +  MotionEventAndroid::Pointer p1(
 | 
| +      2, -13.7f, 7.13f, 3.5f, 12.1f, -0.1f, kAndroidToolTypeFinger);
 | 
| +  float raw_offset = -3.f;
 | 
|    int pointer_count = 2;
 | 
|    int history_size = 0;
 | 
|    int action_index = -1;
 | 
| -  base::android::ScopedJavaLocalRef<jobject> base_event_obj =
 | 
| -      MotionEventAndroid::Obtain(
 | 
| -          event_time, event_time, MotionEvent::ACTION_DOWN, x0, y0);
 | 
| -  ASSERT_TRUE(base_event_obj.obj());
 | 
| -
 | 
|    MotionEventAndroid event(kPixToDip,
 | 
|                             base::android::AttachCurrentThread(),
 | 
| -                           base_event_obj.obj(),
 | 
| +                           nullptr,
 | 
|                             event_time_ms,
 | 
|                             kAndroidActionDown,
 | 
|                             pointer_count,
 | 
|                             history_size,
 | 
|                             action_index,
 | 
| -                           x0,
 | 
| -                           y0,
 | 
| -                           x1,
 | 
| -                           y1,
 | 
| -                           p0,
 | 
| -                           p1,
 | 
| -                           touch_major0,
 | 
| -                           touch_major1,
 | 
| -                           touch_minor0,
 | 
| -                           touch_minor1,
 | 
| -                           orientation0,
 | 
| -                           orientation1,
 | 
| -                           x0 + raw_offset,
 | 
| -                           y0 - raw_offset,
 | 
| -                           kAndroidToolTypeFinger,
 | 
| -                           kAndroidToolTypeFinger,
 | 
|                             kAndroidButtonPrimary,
 | 
| -                           kAndroidAltKeyDown);
 | 
| +                           kAndroidAltKeyDown,
 | 
| +                           raw_offset,
 | 
| +                           -raw_offset,
 | 
| +                           p0,
 | 
| +                           p1);
 | 
|  
 | 
|    EXPECT_EQ(MotionEvent::ACTION_DOWN, event.GetAction());
 | 
|    EXPECT_EQ(event_time, event.GetEventTime());
 | 
| -  EXPECT_EQ(x0 * kPixToDip, event.GetX(0));
 | 
| -  EXPECT_EQ(y0 * kPixToDip, event.GetY(0));
 | 
| -  EXPECT_EQ(x1 * kPixToDip, event.GetX(1));
 | 
| -  EXPECT_EQ(y1 * kPixToDip, event.GetY(1));
 | 
| -  EXPECT_FLOAT_EQ((x0 + raw_offset) * kPixToDip, event.GetRawX(0));
 | 
| -  EXPECT_FLOAT_EQ((y0 - raw_offset) * kPixToDip, event.GetRawY(0));
 | 
| -  EXPECT_FLOAT_EQ((x1 + raw_offset) * kPixToDip, event.GetRawX(1));
 | 
| -  EXPECT_FLOAT_EQ((y1 - raw_offset) * kPixToDip, event.GetRawY(1));
 | 
| -  EXPECT_EQ(touch_major0 * kPixToDip, event.GetTouchMajor(0));
 | 
| -  EXPECT_EQ(touch_major1 * kPixToDip, event.GetTouchMajor(1));
 | 
| -  EXPECT_EQ(touch_minor0 * kPixToDip, event.GetTouchMinor(0));
 | 
| -  EXPECT_EQ(touch_minor1 * kPixToDip, event.GetTouchMinor(1));
 | 
| -  EXPECT_EQ(orientation0, event.GetOrientation(0));
 | 
| -  EXPECT_EQ(orientation1, event.GetOrientation(1));
 | 
| -  EXPECT_EQ(p0, event.GetPointerId(0));
 | 
| -  EXPECT_EQ(p1, event.GetPointerId(1));
 | 
| +  EXPECT_EQ(p0.pos_x_pixels * kPixToDip, event.GetX(0));
 | 
| +  EXPECT_EQ(p0.pos_y_pixels * kPixToDip, event.GetY(0));
 | 
| +  EXPECT_EQ(p1.pos_x_pixels * kPixToDip, event.GetX(1));
 | 
| +  EXPECT_EQ(p1.pos_y_pixels * kPixToDip, event.GetY(1));
 | 
| +  EXPECT_FLOAT_EQ((p0.pos_x_pixels + raw_offset) * kPixToDip, event.GetRawX(0));
 | 
| +  EXPECT_FLOAT_EQ((p0.pos_y_pixels - raw_offset) * kPixToDip, event.GetRawY(0));
 | 
| +  EXPECT_FLOAT_EQ((p1.pos_x_pixels + raw_offset) * kPixToDip, event.GetRawX(1));
 | 
| +  EXPECT_FLOAT_EQ((p1.pos_y_pixels - raw_offset) * kPixToDip, event.GetRawY(1));
 | 
| +  EXPECT_EQ(p0.touch_major_pixels * kPixToDip, event.GetTouchMajor(0));
 | 
| +  EXPECT_EQ(p1.touch_major_pixels * kPixToDip, event.GetTouchMajor(1));
 | 
| +  EXPECT_EQ(p0.touch_minor_pixels * kPixToDip, event.GetTouchMinor(0));
 | 
| +  EXPECT_EQ(p1.touch_minor_pixels * kPixToDip, event.GetTouchMinor(1));
 | 
| +  EXPECT_EQ(p0.orientation_rad, event.GetOrientation(0));
 | 
| +  EXPECT_EQ(p1.orientation_rad, event.GetOrientation(1));
 | 
| +  EXPECT_EQ(p0.id, event.GetPointerId(0));
 | 
| +  EXPECT_EQ(p1.id, event.GetPointerId(1));
 | 
|    EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(0));
 | 
|    EXPECT_EQ(MotionEvent::TOOL_TYPE_FINGER, event.GetToolType(1));
 | 
|    EXPECT_EQ(MotionEvent::BUTTON_PRIMARY, event.GetButtonState());
 | 
| @@ -111,114 +90,71 @@ TEST(MotionEventAndroidTest, Constructor) {
 | 
|  }
 | 
|  
 | 
|  TEST(MotionEventAndroidTest, Clone) {
 | 
| -  int event_time_ms = 5;
 | 
| -  base::TimeTicks event_time =
 | 
| -      base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms);
 | 
| -  float x = 13.7f;
 | 
| -  float y = -7.13f;
 | 
| -  float touch_major = 5.3f;
 | 
| -  float touch_minor = 3.5f;
 | 
| -  float orientation = 0.2f;
 | 
| -  int pointer_count = 1;
 | 
| -  int pointer_id = 1;
 | 
| -  base::android::ScopedJavaLocalRef<jobject> event_obj =
 | 
| -      MotionEventAndroid::Obtain(
 | 
| -          event_time, event_time, MotionEvent::ACTION_DOWN, x, y);
 | 
| -  ASSERT_TRUE(event_obj.obj());
 | 
| -
 | 
| +  const int pointer_count = 1;
 | 
| +  MotionEventAndroid::Pointer p0(
 | 
| +      1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
 | 
| +  MotionEventAndroid::Pointer p1(0, 0, 0, 0, 0, 0, 0);
 | 
|    MotionEventAndroid event(kPixToDip,
 | 
|                             base::android::AttachCurrentThread(),
 | 
| -                           event_obj.obj(),
 | 
| -                           event_time_ms,
 | 
| +                           nullptr,
 | 
| +                           0,
 | 
|                             kAndroidActionDown,
 | 
|                             pointer_count,
 | 
|                             0,
 | 
|                             0,
 | 
| -                           x,
 | 
| -                           y,
 | 
|                             0,
 | 
|                             0,
 | 
| -                           pointer_id,
 | 
|                             0,
 | 
| -                           touch_major,
 | 
| -                           0.f,
 | 
| -                           touch_minor,
 | 
| -                           0.f,
 | 
| -                           orientation,
 | 
| -                           0.f,
 | 
| -                           x,
 | 
| -                           y,
 | 
|                             0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0);
 | 
| +                           p0,
 | 
| +                           p1);
 | 
|  
 | 
|    scoped_ptr<MotionEvent> clone = event.Clone();
 | 
| -  EXPECT_EQ(event, *clone);
 | 
| +  EXPECT_EQ(ui::test::ToString(event), ui::test::ToString(*clone));
 | 
|  }
 | 
|  
 | 
|  TEST(MotionEventAndroidTest, Cancel) {
 | 
| -  int event_time_ms = 5;
 | 
| -  base::TimeTicks event_time =
 | 
| -      base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms);
 | 
| -  int pointer_count = 1;
 | 
| -  float x = 13.7f;
 | 
| -  float y = -7.13f;
 | 
| -  base::android::ScopedJavaLocalRef<jobject> event_obj =
 | 
| -      MotionEventAndroid::Obtain(
 | 
| -          event_time, event_time, MotionEvent::ACTION_DOWN, x, y);
 | 
| -  ASSERT_TRUE(event_obj.obj());
 | 
| -
 | 
| +  const int event_time_ms = 5;
 | 
| +  const int pointer_count = 1;
 | 
| +  MotionEventAndroid::Pointer p0(
 | 
| +      1, 13.7f, -7.13f, 5.3f, 1.2f, 0.1f, kAndroidToolTypeFinger);
 | 
| +  MotionEventAndroid::Pointer p1(0, 0, 0, 0, 0, 0, 0);
 | 
|    MotionEventAndroid event(kPixToDip,
 | 
|                             base::android::AttachCurrentThread(),
 | 
| -                           event_obj.obj(),
 | 
| +                           nullptr,
 | 
|                             event_time_ms,
 | 
|                             kAndroidActionDown,
 | 
|                             pointer_count,
 | 
|                             0,
 | 
|                             0,
 | 
| -                           x,
 | 
| -                           y,
 | 
| -                           0,
 | 
|                             0,
 | 
|                             0,
 | 
|                             0,
 | 
| -                           0.f,
 | 
| -                           0.f,
 | 
| -                           0.f,
 | 
| -                           0.f,
 | 
| -                           0.f,
 | 
| -                           0.f,
 | 
| -                           x,
 | 
| -                           y,
 | 
|                             0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0);
 | 
| +                           p0,
 | 
| +                           p1);
 | 
|  
 | 
|    scoped_ptr<MotionEvent> cancel_event = event.Cancel();
 | 
|    EXPECT_EQ(MotionEvent::ACTION_CANCEL, cancel_event->GetAction());
 | 
| -  EXPECT_EQ(event_time, cancel_event->GetEventTime());
 | 
| -  EXPECT_EQ(x * kPixToDip, cancel_event->GetX(0));
 | 
| -  EXPECT_EQ(y * kPixToDip, cancel_event->GetY(0));
 | 
| +  EXPECT_EQ(
 | 
| +      base::TimeTicks() + base::TimeDelta::FromMilliseconds(event_time_ms),
 | 
| +      cancel_event->GetEventTime());
 | 
| +  EXPECT_EQ(p0.pos_x_pixels * kPixToDip, cancel_event->GetX(0));
 | 
| +  EXPECT_EQ(p0.pos_y_pixels * kPixToDip, cancel_event->GetY(0));
 | 
|    EXPECT_EQ(static_cast<size_t>(pointer_count),
 | 
|              cancel_event->GetPointerCount());
 | 
|    EXPECT_EQ(0U, cancel_event->GetHistorySize());
 | 
|  }
 | 
|  
 | 
|  TEST(MotionEventAndroidTest, InvalidOrientationsSanitized) {
 | 
| -  base::TimeTicks event_time;
 | 
|    int pointer_count = 2;
 | 
|    float orientation0 = 1e10f;
 | 
|    float orientation1 = std::numeric_limits<float>::quiet_NaN();
 | 
| -  base::android::ScopedJavaLocalRef<jobject> base_event_obj =
 | 
| -      MotionEventAndroid::Obtain(
 | 
| -          event_time, event_time, MotionEvent::ACTION_DOWN, 0, 0);
 | 
| -  ASSERT_TRUE(base_event_obj.obj());
 | 
| -
 | 
| +  MotionEventAndroid::Pointer p0(0, 0, 0, 0, 0, orientation0, 0);
 | 
| +  MotionEventAndroid::Pointer p1(1, 0, 0, 0, 0, orientation1, 0);
 | 
|    MotionEventAndroid event(kPixToDip,
 | 
|                             base::android::AttachCurrentThread(),
 | 
| -                           base_event_obj.obj(),
 | 
| +                           nullptr,
 | 
|                             0,
 | 
|                             kAndroidActionDown,
 | 
|                             pointer_count,
 | 
| @@ -228,20 +164,8 @@ TEST(MotionEventAndroidTest, InvalidOrientationsSanitized) {
 | 
|                             0,
 | 
|                             0,
 | 
|                             0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           orientation0,
 | 
| -                           orientation1,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0,
 | 
| -                           0);
 | 
| +                           p0,
 | 
| +                           p1);
 | 
|  
 | 
|    EXPECT_EQ(0.f, event.GetOrientation(0));
 | 
|    EXPECT_EQ(0.f, event.GetOrientation(1));
 | 
| 
 |