Index: ash/common/system/tray/tray_details_view_unittest.cc |
diff --git a/ash/common/system/tray/tray_details_view_unittest.cc b/ash/common/system/tray/tray_details_view_unittest.cc |
index de992610ba578976b4db881271d47a327a229498..27ef8ee5dd5ae13a91133a2dceefa55f56c5fc3c 100644 |
--- a/ash/common/system/tray/tray_details_view_unittest.cc |
+++ b/ash/common/system/tray/tray_details_view_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "ash/common/system/tray/tray_details_view.h" |
+#include "ash/common/ash_view_ids.h" |
#include "ash/common/material_design/material_design_controller.h" |
#include "ash/common/system/tray/hover_highlight_view.h" |
#include "ash/common/system/tray/special_popup_row.h" |
@@ -60,6 +61,8 @@ class TestDetailsView : public TrayDetailsView { |
title_row()->AddViewToRowNonMd(tray_popup_header_button_, true); |
} |
+ void CreateScrollerViews() { CreateScrollableList(); } |
+ |
private: |
TrayPopupHeaderButton* tray_popup_header_button_; |
@@ -312,5 +315,45 @@ TEST_F(TrayDetailsViewTest, TrayPopupHeaderButtonMouseHoverFeedback) { |
EXPECT_TRUE(button->background()); |
} |
+TEST_F(TrayDetailsViewTest, ScrollContentsTest) { |
+ SystemTray* tray = GetPrimarySystemTray(); |
+ TestItem* test_item = new TestItem; |
+ tray->AddTrayItem(test_item); |
+ tray->ShowDefaultView(BUBBLE_CREATE_NEW); |
+ RunAllPendingInMessageLoop(); |
+ tray->ShowDetailedView(test_item, 0, true, BUBBLE_USE_EXISTING); |
+ RunAllPendingInMessageLoop(); |
+ test_item->detailed_view()->CreateScrollerViews(); |
+ |
+ test_item->detailed_view()->scroll_content()->SetPaintToLayer(true); |
+ views::View* view1 = new views::View(); |
+ test_item->detailed_view()->scroll_content()->AddChildView(view1); |
+ views::View* view2 = new views::View(); |
+ view2->SetPaintToLayer(true); |
+ test_item->detailed_view()->scroll_content()->AddChildView(view2); |
+ views::View* view3 = new views::View(); |
+ view3->SetPaintToLayer(true); |
+ test_item->detailed_view()->scroll_content()->AddChildView(view3); |
+ |
+ // Child layers should have same order as the child views. |
+ const std::vector<ui::Layer*>& layers = |
+ test_item->detailed_view()->scroll_content()->layer()->children(); |
+ EXPECT_EQ(2u, layers.size()); |
+ EXPECT_EQ(view2->layer(), layers[0]); |
+ EXPECT_EQ(view3->layer(), layers[1]); |
+ |
+ // Mark |view2| as sticky and add one more child (which will reorder layers). |
+ view2->set_id(VIEW_ID_STICKY_HEADER); |
+ views::View* view4 = new views::View(); |
+ view4->SetPaintToLayer(true); |
+ test_item->detailed_view()->scroll_content()->AddChildView(view4); |
+ |
+ // Sticky header layer should be above the last child's layer. |
+ EXPECT_EQ(3u, layers.size()); |
+ EXPECT_EQ(view3->layer(), layers[0]); |
+ EXPECT_EQ(view4->layer(), layers[1]); |
+ EXPECT_EQ(view2->layer(), layers[2]); |
+} |
+ |
} // namespace test |
} // namespace ash |