| Index: ui/chromeos/touch_exploration_controller.cc | 
| diff --git a/ui/chromeos/touch_exploration_controller.cc b/ui/chromeos/touch_exploration_controller.cc | 
| index 5661d1d13fffe7ae9dcfc37f416d1e0ab479ba18..89b36ac487d28104cf88b520d3003d93655dc31e 100644 | 
| --- a/ui/chromeos/touch_exploration_controller.cc | 
| +++ b/ui/chromeos/touch_exploration_controller.cc | 
| @@ -365,15 +365,20 @@ ui::EventRewriteStatus TouchExplorationController::InDoubleTapPending( | 
| return EVENT_REWRITE_DISCARD; | 
|  | 
| scoped_ptr<ui::TouchEvent> touch_press; | 
| -    touch_press.reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_PRESSED, last_touch_exploration_->location_f(), | 
| -        initial_press_->touch_id(), event.time_stamp())); | 
| +    touch_press.reset(new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), | 
| +                                         initial_press_->touch_id(), | 
| +                                         event.time_stamp())); | 
| +    touch_press->set_location_f(last_touch_exploration_->location_f()); | 
| +    touch_press->set_root_location_f(last_touch_exploration_->location_f()); | 
| DispatchEvent(touch_press.get()); | 
|  | 
| -    rewritten_event->reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_RELEASED, last_touch_exploration_->location_f(), | 
| -        initial_press_->touch_id(), event.time_stamp())); | 
| -    (*rewritten_event)->set_flags(event.flags()); | 
| +    scoped_ptr<ui::TouchEvent> new_event( | 
| +        new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), | 
| +                           initial_press_->touch_id(), event.time_stamp())); | 
| +    new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_flags(event.flags()); | 
| +    *rewritten_event = new_event.Pass(); | 
| SET_STATE(NO_FINGERS_DOWN); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| } | 
| @@ -391,10 +396,13 @@ ui::EventRewriteStatus TouchExplorationController::InTouchReleasePending( | 
| if (current_touch_ids_.size() != 0) | 
| return EVENT_REWRITE_DISCARD; | 
|  | 
| -    rewritten_event->reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_RELEASED, last_touch_exploration_->location_f(), | 
| -        initial_press_->touch_id(), event.time_stamp())); | 
| -    (*rewritten_event)->set_flags(event.flags()); | 
| +    scoped_ptr<ui::TouchEvent> new_event( | 
| +        new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), | 
| +                           initial_press_->touch_id(), event.time_stamp())); | 
| +    new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_flags(event.flags()); | 
| +    *rewritten_event = new_event.Pass(); | 
| SET_STATE(NO_FINGERS_DOWN); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| } | 
| @@ -410,10 +418,13 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploration( | 
| // Handle split-tap. | 
| initial_press_.reset(new TouchEvent(event)); | 
| tap_timer_.Stop(); | 
| -    rewritten_event->reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_PRESSED, last_touch_exploration_->location_f(), | 
| -        event.touch_id(), event.time_stamp())); | 
| -    (*rewritten_event)->set_flags(event.flags()); | 
| +    scoped_ptr<ui::TouchEvent> new_event( | 
| +        new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), event.touch_id(), | 
| +                           event.time_stamp())); | 
| +    new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_flags(event.flags()); | 
| +    *rewritten_event = new_event.Pass(); | 
| SET_STATE(TOUCH_EXPLORE_SECOND_PRESS); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| } else if (type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) { | 
| @@ -465,9 +476,12 @@ ui::EventRewriteStatus TouchExplorationController::InCornerPassthrough( | 
| return ui::EVENT_REWRITE_DISCARD; | 
| } | 
|  | 
| -  rewritten_event->reset(new ui::TouchEvent( | 
| -      type, event.location_f(), event.touch_id(), event.time_stamp())); | 
| -  (*rewritten_event)->set_flags(event.flags()); | 
| +  scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent( | 
| +      type, gfx::Point(), event.touch_id(), event.time_stamp())); | 
| +  new_event->set_location_f(event.location_f()); | 
| +  new_event->set_root_location_f(event.location_f()); | 
| +  new_event->set_flags(event.flags()); | 
| +  *rewritten_event = new_event.Pass(); | 
|  | 
| if (current_touch_ids_.size() == 0) | 
| SET_STATE(NO_FINGERS_DOWN); | 
| @@ -484,11 +498,12 @@ ui::EventRewriteStatus TouchExplorationController::InOneFingerPassthrough( | 
| } | 
| return ui::EVENT_REWRITE_DISCARD; | 
| } | 
| -  rewritten_event->reset( | 
| -      new ui::TouchEvent(event.type(), event.location_f() - passthrough_offset_, | 
| -                         event.touch_id(), event.time_stamp())); | 
| - | 
| -  (*rewritten_event)->set_flags(event.flags()); | 
| +  scoped_ptr<ui::TouchEvent> new_event(new ui::TouchEvent( | 
| +      event.type(), gfx::Point(), event.touch_id(), event.time_stamp())); | 
| +  new_event->set_location_f(event.location_f() - passthrough_offset_); | 
| +  new_event->set_root_location_f(event.location_f() - passthrough_offset_); | 
| +  new_event->set_flags(event.flags()); | 
| +  *rewritten_event = new_event.Pass(); | 
| if (current_touch_ids_.size() == 0) { | 
| SET_STATE(NO_FINGERS_DOWN); | 
| } | 
| @@ -505,10 +520,13 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress( | 
| // through. The user enters the wait state, Since there has already been | 
| // a press dispatched when split tap began, the touch needs to be | 
| // cancelled. | 
| -    rewritten_event->reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_CANCELLED, last_touch_exploration_->location_f(), | 
| -        initial_press_->touch_id(), event.time_stamp())); | 
| -    (*rewritten_event)->set_flags(event.flags()); | 
| +    scoped_ptr<ui::TouchEvent> new_event( | 
| +        new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(), | 
| +                           initial_press_->touch_id(), event.time_stamp())); | 
| +    new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_flags(event.flags()); | 
| +    *rewritten_event = new_event.Pass(); | 
| SET_STATE(WAIT_FOR_NO_FINGERS); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| } else if (type == ui::ET_TOUCH_MOVED) { | 
| @@ -531,10 +549,13 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress( | 
| // cancelled, and the user enters the wait state. | 
| if ((event.location_f() - original_touch->location_f()).Length() > | 
| GetSplitTapTouchSlop()) { | 
| -      rewritten_event->reset(new ui::TouchEvent( | 
| -          ui::ET_TOUCH_CANCELLED, last_touch_exploration_->location_f(), | 
| -          initial_press_->touch_id(), event.time_stamp())); | 
| -      (*rewritten_event)->set_flags(event.flags()); | 
| +      scoped_ptr<ui::TouchEvent> new_event( | 
| +          new ui::TouchEvent(ui::ET_TOUCH_CANCELLED, gfx::Point(), | 
| +                             initial_press_->touch_id(), event.time_stamp())); | 
| +      new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +      new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +      new_event->set_flags(event.flags()); | 
| +      *rewritten_event = new_event.Pass(); | 
| SET_STATE(WAIT_FOR_NO_FINGERS); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| } | 
| @@ -554,10 +575,13 @@ ui::EventRewriteStatus TouchExplorationController::InTouchExploreSecondPress( | 
| return EVENT_REWRITE_DISCARD; | 
|  | 
| // Rewrite at location of last touch exploration. | 
| -    rewritten_event->reset(new ui::TouchEvent( | 
| -        ui::ET_TOUCH_RELEASED, last_touch_exploration_->location_f(), | 
| -        initial_press_->touch_id(), event.time_stamp())); | 
| -    (*rewritten_event)->set_flags(event.flags()); | 
| +    scoped_ptr<ui::TouchEvent> new_event( | 
| +        new ui::TouchEvent(ui::ET_TOUCH_RELEASED, gfx::Point(), | 
| +                           initial_press_->touch_id(), event.time_stamp())); | 
| +    new_event->set_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_root_location_f(last_touch_exploration_->location_f()); | 
| +    new_event->set_flags(event.flags()); | 
| +    *rewritten_event = new_event.Pass(); | 
| SET_STATE(TOUCH_EXPLORATION); | 
| EnterTouchToMouseMode(); | 
| return ui::EVENT_REWRITE_REWRITTEN; | 
| @@ -692,9 +716,12 @@ void TouchExplorationController::OnTapTimerFired() { | 
| SET_STATE(ONE_FINGER_PASSTHROUGH); | 
| passthrough_offset_ = last_unused_finger_event_->location_f() - | 
| last_touch_exploration_->location_f(); | 
| -      scoped_ptr<ui::TouchEvent> passthrough_press(new ui::TouchEvent( | 
| -          ui::ET_TOUCH_PRESSED, last_touch_exploration_->location_f(), | 
| -          last_unused_finger_event_->touch_id(), Now())); | 
| +      scoped_ptr<ui::TouchEvent> passthrough_press( | 
| +          new ui::TouchEvent(ui::ET_TOUCH_PRESSED, gfx::Point(), | 
| +                             last_unused_finger_event_->touch_id(), Now())); | 
| +      passthrough_press->set_location_f(last_touch_exploration_->location_f()); | 
| +      passthrough_press->set_root_location_f( | 
| +          last_touch_exploration_->location_f()); | 
| DispatchEvent(passthrough_press.get()); | 
| return; | 
| } | 
| @@ -943,7 +970,7 @@ base::Closure TouchExplorationController::BindKeyEventWithFlags( | 
| flags); | 
| } | 
|  | 
| -scoped_ptr<ui::Event> TouchExplorationController::CreateMouseMoveEvent( | 
| +scoped_ptr<ui::MouseEvent> TouchExplorationController::CreateMouseMoveEvent( | 
| const gfx::PointF& location, | 
| int flags) { | 
| // The "synthesized" flag should be set on all events that don't have a | 
| @@ -965,8 +992,12 @@ scoped_ptr<ui::Event> TouchExplorationController::CreateMouseMoveEvent( | 
| // event to the new ChromeVox background page via the automation api. | 
| flags |= ui::EF_COMMAND_DOWN; | 
|  | 
| -  return make_scoped_ptr(new ui::MouseEvent( | 
| -      ui::ET_MOUSE_MOVED, location, location, ui::EventTimeForNow(), flags, 0)); | 
| +  scoped_ptr<ui::MouseEvent> event( | 
| +      new ui::MouseEvent(ui::ET_MOUSE_MOVED, gfx::Point(), gfx::Point(), | 
| +                         ui::EventTimeForNow(), flags, 0)); | 
| +  event->set_location_f(location); | 
| +  event->set_root_location_f(location); | 
| +  return event; | 
| } | 
|  | 
| void TouchExplorationController::EnterTouchToMouseMode() { | 
|  |