| Index: ui/views/animation/flood_fill_ink_drop_ripple.cc
 | 
| diff --git a/ui/views/animation/flood_fill_ink_drop_ripple.cc b/ui/views/animation/flood_fill_ink_drop_ripple.cc
 | 
| index 9f61bed3559877d7a1d3a48a5e80fe618484df78..a16f4add3b0fe295a52ac69c99832a755ea253a7 100644
 | 
| --- a/ui/views/animation/flood_fill_ink_drop_ripple.cc
 | 
| +++ b/ui/views/animation/flood_fill_ink_drop_ripple.cc
 | 
| @@ -107,21 +107,35 @@ base::TimeDelta GetAnimationDuration(InkDropSubAnimations state) {
 | 
|        kAnimationDurationInMs[state]);
 | 
|  }
 | 
|  
 | 
| +gfx::Rect CalculateClipBounds(const gfx::Size& host_size,
 | 
| +                              const gfx::Insets& clip_insets) {
 | 
| +  gfx::Rect clip_bounds(host_size);
 | 
| +  clip_bounds.Inset(clip_insets);
 | 
| +  return clip_bounds;
 | 
| +}
 | 
| +
 | 
| +float CalculateCircleLayerRadius(const gfx::Rect& clip_bounds) {
 | 
| +  return std::max(clip_bounds.width(), clip_bounds.height()) / 2.f;
 | 
| +}
 | 
| +
 | 
|  }  // namespace
 | 
|  
 | 
|  namespace views {
 | 
|  
 | 
| -FloodFillInkDropRipple::FloodFillInkDropRipple(const gfx::Rect& clip_bounds,
 | 
| +FloodFillInkDropRipple::FloodFillInkDropRipple(const gfx::Size& host_size,
 | 
| +                                               const gfx::Insets& clip_insets,
 | 
|                                                 const gfx::Point& center_point,
 | 
|                                                 SkColor color,
 | 
|                                                 float visible_opacity)
 | 
| -    : center_point_(center_point),
 | 
| +    : clip_insets_(clip_insets),
 | 
| +      center_point_(center_point),
 | 
|        visible_opacity_(visible_opacity),
 | 
|        root_layer_(ui::LAYER_NOT_DRAWN),
 | 
| -      circle_layer_delegate_(
 | 
| -          color,
 | 
| -          std::max(clip_bounds.width(), clip_bounds.height()) / 2.f),
 | 
| +      circle_layer_delegate_(color,
 | 
| +                             CalculateCircleLayerRadius(
 | 
| +                                 CalculateClipBounds(host_size, clip_insets))),
 | 
|        ink_drop_state_(InkDropState::HIDDEN) {
 | 
| +  gfx::Rect clip_bounds = CalculateClipBounds(host_size, clip_insets);
 | 
|    root_layer_.set_name("FloodFillInkDropRipple:ROOT_LAYER");
 | 
|    root_layer_.SetMasksToBounds(true);
 | 
|    root_layer_.SetBounds(clip_bounds);
 | 
| @@ -142,12 +156,35 @@ FloodFillInkDropRipple::FloodFillInkDropRipple(const gfx::Rect& clip_bounds,
 | 
|    SetStateToHidden();
 | 
|  }
 | 
|  
 | 
| +FloodFillInkDropRipple::FloodFillInkDropRipple(const gfx::Size& host_size,
 | 
| +                                               const gfx::Point& center_point,
 | 
| +                                               SkColor color,
 | 
| +                                               float visible_opacity)
 | 
| +    : FloodFillInkDropRipple(host_size,
 | 
| +                             gfx::Insets(),
 | 
| +                             center_point,
 | 
| +                             color,
 | 
| +                             visible_opacity) {}
 | 
| +
 | 
|  FloodFillInkDropRipple::~FloodFillInkDropRipple() {
 | 
|    // Explicitly aborting all the animations ensures all callbacks are invoked
 | 
|    // while this instance still exists.
 | 
|    AbortAllAnimations();
 | 
|  }
 | 
|  
 | 
| +void FloodFillInkDropRipple::HostSizeChanged(const gfx::Size& new_size) {
 | 
| +  root_layer_.SetBounds(CalculateClipBounds(new_size, clip_insets_));
 | 
| +  switch (target_ink_drop_state()) {
 | 
| +    case InkDropState::ACTION_PENDING:
 | 
| +    case InkDropState::ALTERNATE_ACTION_PENDING:
 | 
| +    case InkDropState::ACTIVATED:
 | 
| +      painted_layer_.SetTransform(GetMaxSizeTargetTransform());
 | 
| +      break;
 | 
| +    default:
 | 
| +      break;
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  void FloodFillInkDropRipple::SnapToActivated() {
 | 
|    InkDropRipple::SnapToActivated();
 | 
|    SetOpacity(visible_opacity_);
 | 
| 
 |