Chromium Code Reviews| 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 bcf04a21497db735bfda5c6238d1731b0a9382be..04384f3e67f4c1c3cfedca938bc8304d399c0b9f 100644 |
| --- a/ash/system/tray/tray_background_view.cc |
| +++ b/ash/system/tray/tray_background_view.cc |
| @@ -548,9 +548,13 @@ gfx::Rect TrayBackgroundView::GetBubbleAnchorRect( |
| } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) { |
| rect.Inset(0, 0, kBubblePaddingVerticalSide + 4, |
| kBubblePaddingVerticalBottom); |
| - } else { |
| + } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) { |
| rect.Inset(kBubblePaddingVerticalSide, 0, 0, |
| kBubblePaddingVerticalBottom); |
| + } else { |
| + // TODO(bruthig) May need to handle other ANCHOR_ALIGNMENT_ values. |
| + // ie. ANCHOR_ALIGNMENT_TOP |
| + DCHECK(false) << "Unhandled anchor alignment."; |
| } |
| } else if (anchor_type == TrayBubbleView::ANCHOR_TYPE_BUBBLE) { |
| // Invert the offsets to align with the bubble below. |
| @@ -562,21 +566,43 @@ gfx::Rect TrayBackgroundView::GetBubbleAnchorRect( |
| rect.Inset(vertical_alignment, 0, 0, horizontal_alignment); |
| else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) |
| rect.Inset(0, 0, vertical_alignment, horizontal_alignment); |
| + } else { |
| + DCHECK(false) << "Unhandled anchor type."; |
| } |
| - } |
| - |
| - // TODO(jennyz): May need to add left/right alignment in the following code. |
| - if (rect.IsEmpty()) { |
| + } else { |
| aura::Window* target_root = anchor_widget ? |
| anchor_widget->GetNativeView()->GetRootWindow() : |
| Shell::GetPrimaryRootWindow(); |
| rect = target_root->bounds(); |
| - rect = gfx::Rect( |
| - base::i18n::IsRTL() ? kPaddingFromRightEdgeOfScreenBottomAlignment : |
| - rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment, |
| - rect.height() - kPaddingFromBottomOfScreenBottomAlignment, |
| - 0, 0); |
| - rect = ScreenUtil::ConvertRectToScreen(target_root, rect); |
| + if (anchor_type == TrayBubbleView::ANCHOR_TYPE_TRAY) { |
| + if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_BOTTOM) { |
| + rect = gfx::Rect( |
| + base::i18n::IsRTL() ? |
| + kPaddingFromRightEdgeOfScreenBottomAlignment : |
| + rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment, |
| + rect.height() - kPaddingFromBottomOfScreenBottomAlignment, |
| + 0, 0); |
| + rect = ScreenUtil::ConvertRectToScreen(target_root, rect); |
| + } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_LEFT) { |
| + rect = gfx::Rect( |
| + kPaddingFromRightEdgeOfScreenBottomAlignment, |
| + rect.height() - kPaddingFromBottomOfScreenBottomAlignment, |
| + 1, 1); |
| + rect = ScreenUtil::ConvertRectToScreen(target_root, rect); |
| + } else if (anchor_alignment == TrayBubbleView::ANCHOR_ALIGNMENT_RIGHT) { |
| + rect = gfx::Rect( |
| + rect.width() - kPaddingFromRightEdgeOfScreenBottomAlignment, |
| + rect.height() - kPaddingFromBottomOfScreenBottomAlignment, |
| + 1, 1); |
| + rect = ScreenUtil::ConvertRectToScreen(target_root, rect); |
| + } else { |
| + // TODO(bruthig) May need to handle other ANCHOR_ALIGNMENT_ values. |
| + // ie. ANCHOR_ALIGNMENT_TOP |
| + DCHECK(false) << "Unhandled anchor alignment."; |
| + } |
| + } else { |
| + DCHECK(false) << "Unhandled anchor type."; |
|
bruthig
2014/07/15 21:00:45
The WebNotificationTrayTest.PopupAndAutoHideShelf
|
| + } |
| } |
| return rect; |
| } |