| Index: ui/aura/root_window_host_linux.cc | 
| diff --git a/ui/aura/root_window_host_linux.cc b/ui/aura/root_window_host_linux.cc | 
| index c3c6f0d3a2e1eaf25fef333a14f35879e8ed9f40..48b1b27f2db9d94755a92a827bf314d6352266b4 100644 | 
| --- a/ui/aura/root_window_host_linux.cc | 
| +++ b/ui/aura/root_window_host_linux.cc | 
| @@ -579,6 +579,18 @@ void RootWindowHostLinux::SetBounds(const gfx::Rect& bounds) { | 
| } | 
| } | 
|  | 
| +gfx::Insets RootWindowHostLinux::GetInsets() const { | 
| +  return insets_; | 
| +} | 
| + | 
| +void RootWindowHostLinux::SetInsets(const gfx::Insets& insets) { | 
| +  insets_ = insets; | 
| +  if (pointer_barriers_.get()) { | 
| +    UnConfineCursor(); | 
| +    ConfineCursorToRootWindow(); | 
| +  } | 
| +} | 
| + | 
| gfx::Point RootWindowHostLinux::GetLocationOnNativeScreen() const { | 
| return bounds_.origin(); | 
| } | 
| @@ -627,31 +639,31 @@ bool RootWindowHostLinux::ConfineCursorToRootWindow() { | 
| DCHECK(!pointer_barriers_.get()); | 
| if (pointer_barriers_.get()) | 
| return false; | 
| -  // TODO(oshima): There is a know issue where the pointer barrier | 
| -  // leaks mouse pointer under certain conditions. crbug.com/133694. | 
| pointer_barriers_.reset(new XID[4]); | 
| +  gfx::Rect bounds(bounds_); | 
| +  bounds.Inset(insets_); | 
| // Horizontal, top barriers. | 
| pointer_barriers_[0] = XFixesCreatePointerBarrier( | 
| xdisplay_, x_root_window_, | 
| -      bounds_.x(), bounds_.y(), bounds_.right(), bounds_.y(), | 
| +      bounds.x(), bounds.y(), bounds.right(), bounds.y(), | 
| BarrierPositiveY, | 
| 0, XIAllDevices); | 
| // Horizontal, bottom barriers. | 
| pointer_barriers_[1] = XFixesCreatePointerBarrier( | 
| xdisplay_, x_root_window_, | 
| -      bounds_.x(), bounds_.bottom(), bounds_.right(),  bounds_.bottom(), | 
| +      bounds.x(), bounds.bottom(), bounds.right(),  bounds.bottom(), | 
| BarrierNegativeY, | 
| 0, XIAllDevices); | 
| // Vertical, left  barriers. | 
| pointer_barriers_[2] = XFixesCreatePointerBarrier( | 
| xdisplay_, x_root_window_, | 
| -      bounds_.x(), bounds_.y(), bounds_.x(), bounds_.bottom(), | 
| +      bounds.x(), bounds.y(), bounds.x(), bounds.bottom(), | 
| BarrierPositiveX, | 
| 0, XIAllDevices); | 
| // Vertical, right barriers. | 
| pointer_barriers_[3] = XFixesCreatePointerBarrier( | 
| xdisplay_, x_root_window_, | 
| -      bounds_.right(), bounds_.y(), bounds_.right(), bounds_.bottom(), | 
| +      bounds.right(), bounds.y(), bounds.right(), bounds.bottom(), | 
| BarrierNegativeX, | 
| 0, XIAllDevices); | 
| #endif | 
| @@ -998,7 +1010,7 @@ void RootWindowHostLinux::TranslateAndDispatchMouseEvent( | 
| gfx::Point location(event->location()); | 
| screen_position_client->ConvertNativePointToScreen(root, &location); | 
| screen_position_client->ConvertPointFromScreen(root, &location); | 
| -    // |delegate_|'s OnHoustMouseEvent expects native coordinates relative to | 
| +    // |delegate_|'s OnHostMouseEvent expects native coordinates relative to | 
| // root. | 
| location = ui::ConvertPointToPixel(root->layer(), location); | 
| event->set_location(location); | 
|  |