| Index: ash/system/tray/tray_background_view.cc
 | 
| diff --git a/ash/system/tray/tray_background_view.cc b/ash/system/tray/tray_background_view.cc
 | 
| index 1f2cf2628582753c3e73b8a86ab5d18a1b8b71ab..17f5d1332d861ac04014e8a1bc41856a229d4b52 100644
 | 
| --- a/ash/system/tray/tray_background_view.cc
 | 
| +++ b/ash/system/tray/tray_background_view.cc
 | 
| @@ -4,6 +4,7 @@
 | 
|  
 | 
|  #include "ash/system/tray/tray_background_view.h"
 | 
|  
 | 
| +#include "ash/material_design/material_design_controller.h"
 | 
|  #include "ash/root_window_controller.h"
 | 
|  #include "ash/screen_util.h"
 | 
|  #include "ash/shelf/shelf_layout_manager.h"
 | 
| @@ -194,29 +195,16 @@ void TrayBackgroundView::TrayContainer::ViewHierarchyChanged(
 | 
|  void TrayBackgroundView::TrayContainer::UpdateLayout() {
 | 
|    // Adjust the size of status tray dark background by adding additional
 | 
|    // empty border.
 | 
| -  if (wm::IsHorizontalAlignment(alignment_)) {
 | 
| -    SetBorder(views::Border::CreateEmptyBorder(
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf));
 | 
| -
 | 
| -    views::BoxLayout* layout =
 | 
| -        new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0);
 | 
| -    layout->SetDefaultFlex(1);
 | 
| -    views::View::SetLayoutManager(layout);
 | 
| -  } else {
 | 
| -    SetBorder(views::Border::CreateEmptyBorder(
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf,
 | 
| -        kPaddingFromEdgeOfShelf));
 | 
| -
 | 
| -    views::BoxLayout* layout =
 | 
| -        new views::BoxLayout(views::BoxLayout::kVertical, 0, 0, 0);
 | 
| -    layout->SetDefaultFlex(1);
 | 
| -    views::View::SetLayoutManager(layout);
 | 
| -  }
 | 
| +  views::BoxLayout::Orientation orientation =
 | 
| +      wm::IsHorizontalAlignment(alignment_) ? views::BoxLayout::kHorizontal
 | 
| +                                            : views::BoxLayout::kVertical;
 | 
| +  SetBorder(views::Border::CreateEmptyBorder(
 | 
| +      kAdjustBackgroundPadding, kAdjustBackgroundPadding,
 | 
| +      kAdjustBackgroundPadding, kAdjustBackgroundPadding));
 | 
| +
 | 
| +  views::BoxLayout* layout = new views::BoxLayout(orientation, 0, 0, 0);
 | 
| +  layout->SetDefaultFlex(1);
 | 
| +  views::View::SetLayoutManager(layout);
 | 
|    PreferredSizeChanged();
 | 
|  }
 | 
|  
 | 
| @@ -412,31 +400,11 @@ void TrayBackgroundView::SetShelfAlignment(wm::ShelfAlignment alignment) {
 | 
|  }
 | 
|  
 | 
|  void TrayBackgroundView::SetTrayBorder() {
 | 
| -  views::View* parent = status_area_widget_->status_area_widget_delegate();
 | 
| -  // Tray views are laid out right-to-left or bottom-to-top
 | 
| -  bool on_edge = (this == parent->child_at(0));
 | 
| -  int left_edge, top_edge, right_edge, bottom_edge;
 | 
| -  if (wm::IsHorizontalAlignment(shelf_alignment())) {
 | 
| -    top_edge = ShelfLayoutManager::kShelfItemInset;
 | 
| -    left_edge = 0;
 | 
| -    bottom_edge = kShelfSize -
 | 
| -        ShelfLayoutManager::kShelfItemInset - kShelfItemHeight;
 | 
| -    right_edge = on_edge ? kPaddingFromEdgeOfShelf : 0;
 | 
| -  } else if (shelf_alignment() == wm::SHELF_ALIGNMENT_LEFT) {
 | 
| -    top_edge = 0;
 | 
| -    left_edge = kShelfSize -
 | 
| -        ShelfLayoutManager::kShelfItemInset - kShelfItemHeight;
 | 
| -    bottom_edge = on_edge ? kPaddingFromEdgeOfShelf : 0;
 | 
| -    right_edge = ShelfLayoutManager::kShelfItemInset;
 | 
| -  } else { // SHELF_ALIGNMENT_RIGHT
 | 
| -    top_edge = 0;
 | 
| -    left_edge = ShelfLayoutManager::kShelfItemInset;
 | 
| -    bottom_edge = on_edge ? kPaddingFromEdgeOfShelf : 0;
 | 
| -    right_edge = kShelfSize -
 | 
| -        ShelfLayoutManager::kShelfItemInset - kShelfItemHeight;
 | 
| -  }
 | 
| -  SetBorder(views::Border::CreateEmptyBorder(
 | 
| -      top_edge, left_edge, bottom_edge, right_edge));
 | 
| +  gfx::Insets inset;
 | 
| +  GetHitRegionInsets(inset);
 | 
| +
 | 
| +  SetBorder(views::Border::CreateEmptyBorder(inset.top(), inset.left(),
 | 
| +                                             inset.bottom(), inset.right()));
 | 
|  }
 | 
|  
 | 
|  void TrayBackgroundView::OnImplicitAnimationsCompleted() {
 | 
| @@ -588,4 +556,45 @@ void TrayBackgroundView::UpdateBubbleViewArrow(
 | 
|    // Nothing to do here.
 | 
|  }
 | 
|  
 | 
| +void TrayBackgroundView::GetHitRegionInsets(gfx::Insets& insets) {
 | 
| +  int top_edge, left_edge, bottom_edge, right_edge;
 | 
| +  // Tray views are laid out right-to-left or bottom-to-top
 | 
| +  if (MaterialDesignController::IsShelfMaterial()) {
 | 
| +    if (wm::IsHorizontalAlignment(shelf_alignment())) {
 | 
| +      top_edge = (GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemHeight) / 2;
 | 
| +      left_edge = 0;
 | 
| +      bottom_edge = (GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemHeight) / 2;
 | 
| +      right_edge = 0;
 | 
| +    } else {  // SHELF_ALIGNMENT_LEFT || SHELF_ALIGNMENT_RIGHT
 | 
| +      top_edge = 0;
 | 
| +      left_edge = (GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemHeight) / 2;
 | 
| +      bottom_edge = 0;
 | 
| +      right_edge = (GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemHeight) / 2;
 | 
| +    }
 | 
| +  } else {
 | 
| +    views::View* parent = status_area_widget_->status_area_widget_delegate();
 | 
| +    bool on_edge = (this == parent->child_at(0));
 | 
| +
 | 
| +    if (wm::IsHorizontalAlignment(shelf_alignment())) {
 | 
| +      top_edge = kShelfItemInset;
 | 
| +      left_edge = 0;
 | 
| +      bottom_edge = GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemInset -
 | 
| +                    kShelfItemHeight;
 | 
| +      right_edge = on_edge ? GetTrayConstant(PADDING_FROM_EDGE_OF_SHELF) : 0;
 | 
| +    } else if (shelf_alignment() == wm::SHELF_ALIGNMENT_LEFT) {
 | 
| +      top_edge = 0;
 | 
| +      left_edge = GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemInset -
 | 
| +                  kShelfItemHeight;
 | 
| +      bottom_edge = on_edge ? GetTrayConstant(PADDING_FROM_EDGE_OF_SHELF) : 0;
 | 
| +      right_edge = kShelfItemInset;
 | 
| +    } else {  // SHELF_ALIGNMENT_RIGHT
 | 
| +      top_edge = 0;
 | 
| +      left_edge = kShelfItemInset;
 | 
| +      bottom_edge = on_edge ? GetTrayConstant(PADDING_FROM_EDGE_OF_SHELF) : 0;
 | 
| +      right_edge = GetShelfLayoutConstant(SHELF_SIZE) - kShelfItemInset -
 | 
| +                   kShelfItemHeight;
 | 
| +    }
 | 
| +  }
 | 
| +  insets.Set(top_edge, left_edge, bottom_edge, right_edge);
 | 
| +}
 | 
|  }  // namespace ash
 | 
| 
 |