| Index: ui/views/controls/button/custom_button.cc | 
| diff --git a/ui/views/controls/button/custom_button.cc b/ui/views/controls/button/custom_button.cc | 
| index 133f73f06573ea2390e84eaea5f51be751caaa1a..7664f615332918ad415186babc7dc628cbfe803c 100644 | 
| --- a/ui/views/controls/button/custom_button.cc | 
| +++ b/ui/views/controls/button/custom_button.cc | 
| @@ -10,7 +10,6 @@ | 
| #include "ui/events/event_utils.h" | 
| #include "ui/events/keycodes/keyboard_codes.h" | 
| #include "ui/gfx/animation/throb_animation.h" | 
| -#include "ui/gfx/canvas.h" | 
| #include "ui/gfx/color_palette.h" | 
| #include "ui/native_theme/native_theme.h" | 
| #include "ui/views/animation/ink_drop_delegate.h" | 
| @@ -35,33 +34,6 @@ namespace { | 
| // How long the hover animation takes if uninterrupted. | 
| const int kHoverFadeDurationMs = 150; | 
|  | 
| -// The amount to enlarge the focus border in all directions relative to the | 
| -// button. | 
| -const int kFocusBorderOutset = -2; | 
| - | 
| -// The corner radius of the focus border roundrect. | 
| -const int kFocusBorderCornerRadius = 3; | 
| - | 
| -class MdFocusRing : public views::View { | 
| - public: | 
| -  MdFocusRing() { | 
| -    SetPaintToLayer(true); | 
| -    layer()->SetFillsBoundsOpaquely(false); | 
| -  } | 
| -  ~MdFocusRing() override {} | 
| - | 
| -  bool CanProcessEventsWithinSubtree() const override { | 
| -    return false; | 
| -  } | 
| - | 
| -  void OnPaint(gfx::Canvas* canvas) override { | 
| -    CustomButton::PaintMdFocusRing(canvas, this); | 
| -  } | 
| - | 
| - private: | 
| -  DISALLOW_COPY_AND_ASSIGN(MdFocusRing); | 
| -}; | 
| - | 
| }  // namespace | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| @@ -91,19 +63,6 @@ CustomButton* CustomButton::AsCustomButton(views::View* view) { | 
| return NULL; | 
| } | 
|  | 
| -// static | 
| -void CustomButton::PaintMdFocusRing(gfx::Canvas* canvas, views::View* view) { | 
| -  SkPaint paint; | 
| -  paint.setAntiAlias(true); | 
| -  paint.setColor(view->GetNativeTheme()->GetSystemColor( | 
| -      ui::NativeTheme::kColorId_CallToActionColor)); | 
| -  paint.setStyle(SkPaint::kStroke_Style); | 
| -  paint.setStrokeWidth(1); | 
| -  gfx::RectF rect(view->GetLocalBounds()); | 
| -  rect.Inset(gfx::InsetsF(0.5)); | 
| -  canvas->DrawRoundRect(rect, kFocusBorderCornerRadius, paint); | 
| -} | 
| - | 
| CustomButton::~CustomButton() {} | 
|  | 
| void CustomButton::SetState(ButtonState state) { | 
| @@ -176,8 +135,8 @@ void CustomButton::OnEnabledChanged() { | 
| else | 
| SetState(STATE_DISABLED); | 
|  | 
| -  if (ink_drop_delegate_) | 
| -    ink_drop_delegate_->SetHovered(ShouldShowInkDropHover()); | 
| +  if (ink_drop_delegate()) | 
| +    ink_drop_delegate()->SetHovered(ShouldShowInkDropHover()); | 
| } | 
|  | 
| const char* CustomButton::GetClassName() const { | 
| @@ -190,8 +149,8 @@ bool CustomButton::OnMousePressed(const ui::MouseEvent& event) { | 
| if (state_ != STATE_PRESSED && ShouldEnterPushedState(event) && | 
| HitTestPoint(event.location())) { | 
| SetState(STATE_PRESSED); | 
| -    if (ink_drop_delegate_) | 
| -      ink_drop_delegate_->OnAction(views::InkDropState::ACTION_PENDING); | 
| +    if (ink_drop_delegate()) | 
| +      ink_drop_delegate()->OnAction(views::InkDropState::ACTION_PENDING); | 
| } | 
| if (request_focus_on_press_) | 
| RequestFocus(); | 
| @@ -239,8 +198,8 @@ void CustomButton::OnMouseCaptureLost() { | 
| !InDrag() || ui::MaterialDesignController::IsModeMaterial(); | 
| if (state_ != STATE_DISABLED && reset_button_state) | 
| SetState(STATE_NORMAL); | 
| -  if (ink_drop_delegate_) | 
| -    ink_drop_delegate_->OnAction(views::InkDropState::HIDDEN); | 
| +  if (ink_drop_delegate()) | 
| +    ink_drop_delegate()->OnAction(views::InkDropState::HIDDEN); | 
| } | 
|  | 
| void CustomButton::OnMouseEntered(const ui::MouseEvent& event) { | 
| @@ -268,10 +227,10 @@ bool CustomButton::OnKeyPressed(const ui::KeyEvent& event) { | 
| // KeyRelease and Enter clicks the button on KeyPressed. | 
| if (event.key_code() == ui::VKEY_SPACE) { | 
| SetState(STATE_PRESSED); | 
| -    if (ink_drop_delegate_ && | 
| -        ink_drop_delegate_->GetTargetInkDropState() != | 
| +    if (ink_drop_delegate() && | 
| +        ink_drop_delegate()->GetTargetInkDropState() != | 
| views::InkDropState::ACTION_PENDING) | 
| -      ink_drop_delegate_->OnAction(views::InkDropState::ACTION_PENDING); | 
| +      ink_drop_delegate()->OnAction(views::InkDropState::ACTION_PENDING); | 
| } else if (event.key_code() == ui::VKEY_RETURN) { | 
| SetState(STATE_NORMAL); | 
| NotifyClick(event); | 
| @@ -345,9 +304,9 @@ void CustomButton::ShowContextMenu(const gfx::Point& p, | 
| // we won't get a mouse exited and reset state. Reset it now to be sure. | 
| if (state_ != STATE_DISABLED) | 
| SetState(STATE_NORMAL); | 
| -  if (hide_ink_drop_when_showing_context_menu_ && ink_drop_delegate_) { | 
| -    ink_drop_delegate_->SetHovered(false); | 
| -    ink_drop_delegate_->OnAction(InkDropState::HIDDEN); | 
| +  if (hide_ink_drop_when_showing_context_menu_ && ink_drop_delegate()) { | 
| +    ink_drop_delegate()->SetHovered(false); | 
| +    ink_drop_delegate()->OnAction(InkDropState::HIDDEN); | 
| } | 
| View::ShowContextMenu(p, source_type); | 
| } | 
| @@ -357,8 +316,8 @@ void CustomButton::OnDragDone() { | 
| // (since disabled buttons may still be able to be dragged). | 
| if (state_ != STATE_DISABLED) | 
| SetState(STATE_NORMAL); | 
| -  if (ink_drop_delegate_) | 
| -    ink_drop_delegate_->OnAction(InkDropState::HIDDEN); | 
| +  if (ink_drop_delegate()) | 
| +    ink_drop_delegate()->OnAction(InkDropState::HIDDEN); | 
| } | 
|  | 
| void CustomButton::GetAccessibleState(ui::AXViewState* state) { | 
| @@ -404,32 +363,20 @@ void CustomButton::AnimationProgressed(const gfx::Animation* animation) { | 
| //////////////////////////////////////////////////////////////////////////////// | 
| // CustomButton, View overrides (public): | 
|  | 
| -void CustomButton::Layout() { | 
| -  Button::Layout(); | 
| -  gfx::Rect focus_bounds = GetLocalBounds(); | 
| -  focus_bounds.Inset(gfx::Insets(kFocusBorderOutset)); | 
| -  if (md_focus_ring_) | 
| -    md_focus_ring_->SetBoundsRect(focus_bounds); | 
| -} | 
| - | 
| void CustomButton::ViewHierarchyChanged( | 
| const ViewHierarchyChangedDetails& details) { | 
| if (!details.is_add && state_ != STATE_DISABLED) | 
| SetState(STATE_NORMAL); | 
| } | 
|  | 
| -void CustomButton::OnFocus() { | 
| -  Button::OnFocus(); | 
| -  if (md_focus_ring_) | 
| -    md_focus_ring_->SetVisible(true); | 
| -} | 
| - | 
| void CustomButton::OnBlur() { | 
| Button::OnBlur(); | 
| if (IsHotTracked()) | 
| SetState(STATE_NORMAL); | 
| -  if (md_focus_ring_) | 
| -    md_focus_ring_->SetVisible(false); | 
| +} | 
| + | 
| +bool CustomButton::ShouldShowInkDropForFocus() const { | 
| +  return true; | 
| } | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
| @@ -443,13 +390,11 @@ CustomButton::CustomButton(ButtonListener* listener) | 
| is_throbbing_(false), | 
| triggerable_event_flags_(ui::EF_LEFT_MOUSE_BUTTON), | 
| request_focus_on_press_(false), | 
| -      ink_drop_delegate_(nullptr), | 
| notify_action_(NOTIFY_ON_RELEASE), | 
| has_ink_drop_action_on_click_(false), | 
| ink_drop_action_on_click_(InkDropState::ACTION_TRIGGERED), | 
| hide_ink_drop_when_showing_context_menu_(true), | 
| -      ink_drop_base_color_(gfx::kPlaceholderColor), | 
| -      md_focus_ring_(nullptr) { | 
| +      ink_drop_base_color_(gfx::kPlaceholderColor) { | 
| hover_animation_.SetSlideDuration(kHoverFadeDurationMs); | 
| } | 
|  | 
| @@ -468,7 +413,8 @@ bool CustomButton::ShouldEnterPushedState(const ui::Event& event) { | 
| } | 
|  | 
| bool CustomButton::ShouldShowInkDropHover() const { | 
| -  return enabled() && IsMouseHovered() && !InDrag(); | 
| +  return enabled() && !InDrag() && | 
| +         (IsMouseHovered() || (ShouldShowInkDropForFocus() && HasFocus())); | 
| } | 
|  | 
| bool CustomButton::ShouldEnterHoveredState() { | 
| @@ -495,14 +441,6 @@ bool CustomButton::ShouldEnterHoveredState() { | 
| return check_mouse_position && IsMouseHovered(); | 
| } | 
|  | 
| -void CustomButton::UseMdFocusRing() { | 
| -  DCHECK(!md_focus_ring_); | 
| -  md_focus_ring_ = new MdFocusRing(); | 
| -  AddChildView(md_focus_ring_); | 
| -  md_focus_ring_->SetVisible(false); | 
| -  set_request_focus_on_press(false); | 
| -} | 
| - | 
| //////////////////////////////////////////////////////////////////////////////// | 
| // CustomButton, Button overrides (protected): | 
|  | 
|  |