| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/shelf/shelf_view.h" | 5 #include "ash/shelf/shelf_view.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <memory> |
| 8 #include <utility> | 9 #include <utility> |
| 9 #include <vector> | 10 #include <vector> |
| 10 | 11 |
| 11 #include "ash/root_window_controller.h" | 12 #include "ash/root_window_controller.h" |
| 12 #include "ash/shelf/app_list_button.h" | 13 #include "ash/shelf/app_list_button.h" |
| 13 #include "ash/shelf/overflow_bubble.h" | 14 #include "ash/shelf/overflow_bubble.h" |
| 14 #include "ash/shelf/overflow_bubble_view.h" | 15 #include "ash/shelf/overflow_bubble_view.h" |
| 15 #include "ash/shelf/shelf.h" | 16 #include "ash/shelf/shelf.h" |
| 16 #include "ash/shelf/shelf_button.h" | 17 #include "ash/shelf/shelf_button.h" |
| 17 #include "ash/shelf/shelf_constants.h" | 18 #include "ash/shelf/shelf_constants.h" |
| 18 #include "ash/shelf/shelf_icon_observer.h" | 19 #include "ash/shelf/shelf_icon_observer.h" |
| 19 #include "ash/shelf/shelf_item_delegate_manager.h" | 20 #include "ash/shelf/shelf_item_delegate_manager.h" |
| 20 #include "ash/shelf/shelf_layout_manager.h" | 21 #include "ash/shelf/shelf_layout_manager.h" |
| 21 #include "ash/shelf/shelf_model.h" | 22 #include "ash/shelf/shelf_model.h" |
| 22 #include "ash/shelf/shelf_tooltip_manager.h" | 23 #include "ash/shelf/shelf_tooltip_manager.h" |
| 23 #include "ash/shelf/shelf_widget.h" | 24 #include "ash/shelf/shelf_widget.h" |
| 24 #include "ash/shell.h" | 25 #include "ash/shell.h" |
| 25 #include "ash/shell_window_ids.h" | 26 #include "ash/shell_window_ids.h" |
| 26 #include "ash/test/ash_test_base.h" | 27 #include "ash/test/ash_test_base.h" |
| 27 #include "ash/test/overflow_bubble_view_test_api.h" | 28 #include "ash/test/overflow_bubble_view_test_api.h" |
| 28 #include "ash/test/shelf_test_api.h" | 29 #include "ash/test/shelf_test_api.h" |
| 29 #include "ash/test/shelf_view_test_api.h" | 30 #include "ash/test/shelf_view_test_api.h" |
| 30 #include "ash/test/shell_test_api.h" | 31 #include "ash/test/shell_test_api.h" |
| 31 #include "ash/test/test_shelf_delegate.h" | 32 #include "ash/test/test_shelf_delegate.h" |
| 32 #include "ash/test/test_shelf_item_delegate.h" | 33 #include "ash/test/test_shelf_item_delegate.h" |
| 33 #include "base/compiler_specific.h" | 34 #include "base/compiler_specific.h" |
| 34 #include "base/i18n/rtl.h" | 35 #include "base/i18n/rtl.h" |
| 35 #include "base/memory/scoped_ptr.h" | |
| 36 #include "base/strings/string_number_conversions.h" | 36 #include "base/strings/string_number_conversions.h" |
| 37 #include "base/test/histogram_tester.h" | 37 #include "base/test/histogram_tester.h" |
| 38 #include "base/test/user_action_tester.h" | 38 #include "base/test/user_action_tester.h" |
| 39 #include "base/time/time.h" | 39 #include "base/time/time.h" |
| 40 #include "ui/aura/test/aura_test_base.h" | 40 #include "ui/aura/test/aura_test_base.h" |
| 41 #include "ui/aura/window.h" | 41 #include "ui/aura/window.h" |
| 42 #include "ui/aura/window_event_dispatcher.h" | 42 #include "ui/aura/window_event_dispatcher.h" |
| 43 #include "ui/compositor/layer.h" | 43 #include "ui/compositor/layer.h" |
| 44 #include "ui/events/event.h" | 44 #include "ui/events/event.h" |
| 45 #include "ui/events/event_constants.h" | 45 #include "ui/events/event_constants.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 | 106 |
| 107 TestShelfIconObserver* observer() { return observer_.get(); } | 107 TestShelfIconObserver* observer() { return observer_.get(); } |
| 108 | 108 |
| 109 ShelfViewTestAPI* shelf_view_test() { return shelf_view_test_.get(); } | 109 ShelfViewTestAPI* shelf_view_test() { return shelf_view_test_.get(); } |
| 110 | 110 |
| 111 Shelf* ShelfForSecondaryDisplay() { | 111 Shelf* ShelfForSecondaryDisplay() { |
| 112 return Shelf::ForWindow(Shell::GetAllRootWindows()[1]); | 112 return Shelf::ForWindow(Shell::GetAllRootWindows()[1]); |
| 113 } | 113 } |
| 114 | 114 |
| 115 private: | 115 private: |
| 116 scoped_ptr<TestShelfIconObserver> observer_; | 116 std::unique_ptr<TestShelfIconObserver> observer_; |
| 117 scoped_ptr<ShelfViewTestAPI> shelf_view_test_; | 117 std::unique_ptr<ShelfViewTestAPI> shelf_view_test_; |
| 118 | 118 |
| 119 DISALLOW_COPY_AND_ASSIGN(ShelfViewIconObserverTest); | 119 DISALLOW_COPY_AND_ASSIGN(ShelfViewIconObserverTest); |
| 120 }; | 120 }; |
| 121 | 121 |
| 122 // TestShelfItemDelegate which tracks whether it gets selected. | 122 // TestShelfItemDelegate which tracks whether it gets selected. |
| 123 class ShelfItemSelectionTracker : public TestShelfItemDelegate { | 123 class ShelfItemSelectionTracker : public TestShelfItemDelegate { |
| 124 public: | 124 public: |
| 125 ShelfItemSelectionTracker() | 125 ShelfItemSelectionTracker() |
| 126 : TestShelfItemDelegate(NULL), | 126 : TestShelfItemDelegate(NULL), |
| 127 selected_(false), | 127 selected_(false), |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 | 160 |
| 161 TEST_F(ShelfViewIconObserverTest, AddRemove) { | 161 TEST_F(ShelfViewIconObserverTest, AddRemove) { |
| 162 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); | 162 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); |
| 163 ASSERT_TRUE(shelf_delegate); | 163 ASSERT_TRUE(shelf_delegate); |
| 164 | 164 |
| 165 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 165 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 166 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 166 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 167 params.bounds = gfx::Rect(0, 0, 200, 200); | 167 params.bounds = gfx::Rect(0, 0, 200, 200); |
| 168 params.context = CurrentContext(); | 168 params.context = CurrentContext(); |
| 169 | 169 |
| 170 scoped_ptr<views::Widget> widget(new views::Widget()); | 170 std::unique_ptr<views::Widget> widget(new views::Widget()); |
| 171 widget->Init(params); | 171 widget->Init(params); |
| 172 shelf_delegate->AddShelfItem(widget->GetNativeWindow()); | 172 shelf_delegate->AddShelfItem(widget->GetNativeWindow()); |
| 173 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 173 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
| 174 EXPECT_TRUE(observer()->change_notified()); | 174 EXPECT_TRUE(observer()->change_notified()); |
| 175 observer()->Reset(); | 175 observer()->Reset(); |
| 176 | 176 |
| 177 widget->Show(); | 177 widget->Show(); |
| 178 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); | 178 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); |
| 179 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 179 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
| 180 EXPECT_TRUE(observer()->change_notified()); | 180 EXPECT_TRUE(observer()->change_notified()); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 196 TestShelfIconObserver second_observer(ShelfForSecondaryDisplay()); | 196 TestShelfIconObserver second_observer(ShelfForSecondaryDisplay()); |
| 197 | 197 |
| 198 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); | 198 TestShelfDelegate* shelf_delegate = TestShelfDelegate::instance(); |
| 199 ASSERT_TRUE(shelf_delegate); | 199 ASSERT_TRUE(shelf_delegate); |
| 200 | 200 |
| 201 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); | 201 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 202 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; | 202 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; |
| 203 params.bounds = gfx::Rect(0, 0, 200, 200); | 203 params.bounds = gfx::Rect(0, 0, 200, 200); |
| 204 params.context = CurrentContext(); | 204 params.context = CurrentContext(); |
| 205 | 205 |
| 206 scoped_ptr<views::Widget> widget(new views::Widget()); | 206 std::unique_ptr<views::Widget> widget(new views::Widget()); |
| 207 widget->Init(params); | 207 widget->Init(params); |
| 208 shelf_delegate->AddShelfItem(widget->GetNativeWindow()); | 208 shelf_delegate->AddShelfItem(widget->GetNativeWindow()); |
| 209 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 209 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
| 210 EXPECT_TRUE(observer()->change_notified()); | 210 EXPECT_TRUE(observer()->change_notified()); |
| 211 EXPECT_TRUE(second_observer.change_notified()); | 211 EXPECT_TRUE(second_observer.change_notified()); |
| 212 observer()->Reset(); | 212 observer()->Reset(); |
| 213 second_observer.Reset(); | 213 second_observer.Reset(); |
| 214 | 214 |
| 215 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); | 215 widget->GetNativeWindow()->parent()->RemoveChild(widget->GetNativeWindow()); |
| 216 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); | 216 shelf_view_test()->RunMessageLoopUntilAnimationsDone(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 323 } |
| 324 | 324 |
| 325 void TearDown() override { | 325 void TearDown() override { |
| 326 shelf_delegate_ = nullptr; | 326 shelf_delegate_ = nullptr; |
| 327 test_api_.reset(); | 327 test_api_.reset(); |
| 328 AshTestBase::TearDown(); | 328 AshTestBase::TearDown(); |
| 329 } | 329 } |
| 330 | 330 |
| 331 protected: | 331 protected: |
| 332 void CreateAndSetShelfItemDelegateForID(ShelfID id) { | 332 void CreateAndSetShelfItemDelegateForID(ShelfID id) { |
| 333 scoped_ptr<ShelfItemDelegate> delegate(new TestShelfItemDelegate(NULL)); | 333 std::unique_ptr<ShelfItemDelegate> delegate( |
| 334 new TestShelfItemDelegate(NULL)); |
| 334 item_manager_->SetShelfItemDelegate(id, std::move(delegate)); | 335 item_manager_->SetShelfItemDelegate(id, std::move(delegate)); |
| 335 } | 336 } |
| 336 | 337 |
| 337 ShelfID AddBrowserShortcut() { | 338 ShelfID AddBrowserShortcut() { |
| 338 ShelfItem browser_shortcut; | 339 ShelfItem browser_shortcut; |
| 339 browser_shortcut.type = TYPE_BROWSER_SHORTCUT; | 340 browser_shortcut.type = TYPE_BROWSER_SHORTCUT; |
| 340 | 341 |
| 341 ShelfID id = model_->next_id(); | 342 ShelfID id = model_->next_id(); |
| 342 model_->AddAt(browser_index_, browser_shortcut); | 343 model_->AddAt(browser_index_, browser_shortcut); |
| 343 CreateAndSetShelfItemDelegateForID(id); | 344 CreateAndSetShelfItemDelegateForID(id); |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 } | 674 } |
| 674 | 675 |
| 675 ShelfModel* model_; | 676 ShelfModel* model_; |
| 676 ShelfView* shelf_view_; | 677 ShelfView* shelf_view_; |
| 677 int browser_index_; | 678 int browser_index_; |
| 678 ShelfItemDelegateManager* item_manager_; | 679 ShelfItemDelegateManager* item_manager_; |
| 679 | 680 |
| 680 // Owned by ash::Shell. | 681 // Owned by ash::Shell. |
| 681 TestShelfDelegateForShelfView* shelf_delegate_; | 682 TestShelfDelegateForShelfView* shelf_delegate_; |
| 682 | 683 |
| 683 scoped_ptr<ShelfViewTestAPI> test_api_; | 684 std::unique_ptr<ShelfViewTestAPI> test_api_; |
| 684 | 685 |
| 685 private: | 686 private: |
| 686 DISALLOW_COPY_AND_ASSIGN(ShelfViewTest); | 687 DISALLOW_COPY_AND_ASSIGN(ShelfViewTest); |
| 687 }; | 688 }; |
| 688 | 689 |
| 689 const char* | 690 const char* |
| 690 ShelfViewTest::kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName = | 691 ShelfViewTest::kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName = |
| 691 ShelfButtonPressedMetricTracker:: | 692 ShelfButtonPressedMetricTracker:: |
| 692 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName; | 693 kTimeBetweenWindowMinimizedAndActivatedActionsHistogramName; |
| 693 | 694 |
| (...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1225 shelf_view_->PointerReleasedOnButton(dragged_button, ShelfView::MOUSE, false); | 1226 shelf_view_->PointerReleasedOnButton(dragged_button, ShelfView::MOUSE, false); |
| 1226 EXPECT_TRUE(model_->items()[3].type == TYPE_BROWSER_SHORTCUT); | 1227 EXPECT_TRUE(model_->items()[3].type == TYPE_BROWSER_SHORTCUT); |
| 1227 } | 1228 } |
| 1228 | 1229 |
| 1229 // Tests that double-clicking an item does not activate it twice. | 1230 // Tests that double-clicking an item does not activate it twice. |
| 1230 TEST_F(ShelfViewTest, ClickingTwiceActivatesOnce) { | 1231 TEST_F(ShelfViewTest, ClickingTwiceActivatesOnce) { |
| 1231 // Watch for selection of the browser shortcut. | 1232 // Watch for selection of the browser shortcut. |
| 1232 ShelfID browser_shelf_id = model_->items()[browser_index_].id; | 1233 ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
| 1233 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1234 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1234 item_manager_->SetShelfItemDelegate( | 1235 item_manager_->SetShelfItemDelegate( |
| 1235 browser_shelf_id, scoped_ptr<ShelfItemDelegate>(selection_tracker)); | 1236 browser_shelf_id, std::unique_ptr<ShelfItemDelegate>(selection_tracker)); |
| 1236 | 1237 |
| 1237 // A single click selects the item. | 1238 // A single click selects the item. |
| 1238 SimulateClick(browser_index_); | 1239 SimulateClick(browser_index_); |
| 1239 EXPECT_TRUE(selection_tracker->WasSelected()); | 1240 EXPECT_TRUE(selection_tracker->WasSelected()); |
| 1240 | 1241 |
| 1241 // A double-click does not select the item. | 1242 // A double-click does not select the item. |
| 1242 selection_tracker->Reset(); | 1243 selection_tracker->Reset(); |
| 1243 SimulateDoubleClick(browser_index_); | 1244 SimulateDoubleClick(browser_index_); |
| 1244 EXPECT_FALSE(selection_tracker->WasSelected()); | 1245 EXPECT_FALSE(selection_tracker->WasSelected()); |
| 1245 } | 1246 } |
| 1246 | 1247 |
| 1247 // Check that clicking an item and jittering the mouse a bit still selects the | 1248 // Check that clicking an item and jittering the mouse a bit still selects the |
| 1248 // item. | 1249 // item. |
| 1249 TEST_F(ShelfViewTest, ClickAndMoveSlightly) { | 1250 TEST_F(ShelfViewTest, ClickAndMoveSlightly) { |
| 1250 std::vector<std::pair<ShelfID, views::View*> > id_map; | 1251 std::vector<std::pair<ShelfID, views::View*> > id_map; |
| 1251 SetupForDragTest(&id_map); | 1252 SetupForDragTest(&id_map); |
| 1252 | 1253 |
| 1253 ShelfID shelf_id = (id_map.begin() + 1)->first; | 1254 ShelfID shelf_id = (id_map.begin() + 1)->first; |
| 1254 views::View* button = (id_map.begin() + 1)->second; | 1255 views::View* button = (id_map.begin() + 1)->second; |
| 1255 | 1256 |
| 1256 // Replace the ShelfItemDelegate for |shelf_id| with one which tracks whether | 1257 // Replace the ShelfItemDelegate for |shelf_id| with one which tracks whether |
| 1257 // the shelf item gets selected. | 1258 // the shelf item gets selected. |
| 1258 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1259 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1259 item_manager_->SetShelfItemDelegate( | 1260 item_manager_->SetShelfItemDelegate( |
| 1260 shelf_id, scoped_ptr<ShelfItemDelegate>(selection_tracker)); | 1261 shelf_id, std::unique_ptr<ShelfItemDelegate>(selection_tracker)); |
| 1261 | 1262 |
| 1262 gfx::Vector2d press_offset(5, 30); | 1263 gfx::Vector2d press_offset(5, 30); |
| 1263 gfx::Point press_location = gfx::Point() + press_offset; | 1264 gfx::Point press_location = gfx::Point() + press_offset; |
| 1264 gfx::Point press_location_in_screen = | 1265 gfx::Point press_location_in_screen = |
| 1265 button->GetBoundsInScreen().origin() + press_offset; | 1266 button->GetBoundsInScreen().origin() + press_offset; |
| 1266 | 1267 |
| 1267 ui::MouseEvent click_event(ui::ET_MOUSE_PRESSED, press_location, | 1268 ui::MouseEvent click_event(ui::ET_MOUSE_PRESSED, press_location, |
| 1268 press_location_in_screen, ui::EventTimeForNow(), | 1269 press_location_in_screen, ui::EventTimeForNow(), |
| 1269 ui::EF_LEFT_MOUSE_BUTTON, 0); | 1270 ui::EF_LEFT_MOUSE_BUTTON, 0); |
| 1270 button->OnMousePressed(click_event); | 1271 button->OnMousePressed(click_event); |
| (...skipping 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1852 | 1853 |
| 1853 // Verifies that Launcher_ButtonPressed_* UMA user actions are recorded when an | 1854 // Verifies that Launcher_ButtonPressed_* UMA user actions are recorded when an |
| 1854 // item is selected. | 1855 // item is selected. |
| 1855 TEST_F(ShelfViewTest, | 1856 TEST_F(ShelfViewTest, |
| 1856 Launcher_ButtonPressedUserActionsRecordedWhenItemSelected) { | 1857 Launcher_ButtonPressedUserActionsRecordedWhenItemSelected) { |
| 1857 base::UserActionTester user_action_tester; | 1858 base::UserActionTester user_action_tester; |
| 1858 | 1859 |
| 1859 ShelfID browser_shelf_id = model_->items()[browser_index_].id; | 1860 ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
| 1860 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1861 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1861 item_manager_->SetShelfItemDelegate( | 1862 item_manager_->SetShelfItemDelegate( |
| 1862 browser_shelf_id, scoped_ptr<ShelfItemDelegate>(selection_tracker)); | 1863 browser_shelf_id, std::unique_ptr<ShelfItemDelegate>(selection_tracker)); |
| 1863 | 1864 |
| 1864 SimulateClick(browser_index_); | 1865 SimulateClick(browser_index_); |
| 1865 EXPECT_EQ(1, | 1866 EXPECT_EQ(1, |
| 1866 user_action_tester.GetActionCount("Launcher_ButtonPressed_Mouse")); | 1867 user_action_tester.GetActionCount("Launcher_ButtonPressed_Mouse")); |
| 1867 } | 1868 } |
| 1868 | 1869 |
| 1869 // Verifies that Launcher_*Task UMA user actions are recorded when an item is | 1870 // Verifies that Launcher_*Task UMA user actions are recorded when an item is |
| 1870 // selected. | 1871 // selected. |
| 1871 TEST_F(ShelfViewTest, Launcher_TaskUserActionsRecordedWhenItemSelected) { | 1872 TEST_F(ShelfViewTest, Launcher_TaskUserActionsRecordedWhenItemSelected) { |
| 1872 base::UserActionTester user_action_tester; | 1873 base::UserActionTester user_action_tester; |
| 1873 | 1874 |
| 1874 ShelfID browser_shelf_id = model_->items()[browser_index_].id; | 1875 ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
| 1875 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1876 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1876 selection_tracker->set_item_selected_action( | 1877 selection_tracker->set_item_selected_action( |
| 1877 ShelfItemDelegate::kNewWindowCreated); | 1878 ShelfItemDelegate::kNewWindowCreated); |
| 1878 item_manager_->SetShelfItemDelegate( | 1879 item_manager_->SetShelfItemDelegate( |
| 1879 browser_shelf_id, scoped_ptr<ShelfItemDelegate>(selection_tracker)); | 1880 browser_shelf_id, std::unique_ptr<ShelfItemDelegate>(selection_tracker)); |
| 1880 | 1881 |
| 1881 SimulateClick(browser_index_); | 1882 SimulateClick(browser_index_); |
| 1882 EXPECT_EQ(1, user_action_tester.GetActionCount("Launcher_LaunchTask")); | 1883 EXPECT_EQ(1, user_action_tester.GetActionCount("Launcher_LaunchTask")); |
| 1883 } | 1884 } |
| 1884 | 1885 |
| 1885 // Verifies that metrics are recorded when an item is minimized and subsequently | 1886 // Verifies that metrics are recorded when an item is minimized and subsequently |
| 1886 // activated. | 1887 // activated. |
| 1887 TEST_F(ShelfViewTest, | 1888 TEST_F(ShelfViewTest, |
| 1888 VerifyMetricsAreRecordedWhenAnItemIsMinimizedAndActivated) { | 1889 VerifyMetricsAreRecordedWhenAnItemIsMinimizedAndActivated) { |
| 1889 base::HistogramTester histogram_tester; | 1890 base::HistogramTester histogram_tester; |
| 1890 | 1891 |
| 1891 ShelfID browser_shelf_id = model_->items()[browser_index_].id; | 1892 ShelfID browser_shelf_id = model_->items()[browser_index_].id; |
| 1892 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; | 1893 ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker; |
| 1893 item_manager_->SetShelfItemDelegate( | 1894 item_manager_->SetShelfItemDelegate( |
| 1894 browser_shelf_id, scoped_ptr<ShelfItemDelegate>(selection_tracker)); | 1895 browser_shelf_id, std::unique_ptr<ShelfItemDelegate>(selection_tracker)); |
| 1895 | 1896 |
| 1896 selection_tracker->set_item_selected_action( | 1897 selection_tracker->set_item_selected_action( |
| 1897 ShelfItemDelegate::kExistingWindowMinimized); | 1898 ShelfItemDelegate::kExistingWindowMinimized); |
| 1898 SimulateClick(browser_index_); | 1899 SimulateClick(browser_index_); |
| 1899 | 1900 |
| 1900 selection_tracker->set_item_selected_action( | 1901 selection_tracker->set_item_selected_action( |
| 1901 ShelfItemDelegate::kExistingWindowActivated); | 1902 ShelfItemDelegate::kExistingWindowActivated); |
| 1902 SimulateClick(browser_index_); | 1903 SimulateClick(browser_index_); |
| 1903 | 1904 |
| 1904 histogram_tester.ExpectTotalCount( | 1905 histogram_tester.ExpectTotalCount( |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1948 test_api_->RunMessageLoopUntilAnimationsDone(); | 1949 test_api_->RunMessageLoopUntilAnimationsDone(); |
| 1949 CheckAllItemsAreInBounds(); | 1950 CheckAllItemsAreInBounds(); |
| 1950 } | 1951 } |
| 1951 | 1952 |
| 1952 INSTANTIATE_TEST_CASE_P(LtrRtl, ShelfViewTextDirectionTest, testing::Bool()); | 1953 INSTANTIATE_TEST_CASE_P(LtrRtl, ShelfViewTextDirectionTest, testing::Bool()); |
| 1953 INSTANTIATE_TEST_CASE_P(VisibleBounds, ShelfViewVisibleBoundsTest, | 1954 INSTANTIATE_TEST_CASE_P(VisibleBounds, ShelfViewVisibleBoundsTest, |
| 1954 testing::Bool()); | 1955 testing::Bool()); |
| 1955 | 1956 |
| 1956 } // namespace test | 1957 } // namespace test |
| 1957 } // namespace ash | 1958 } // namespace ash |
| OLD | NEW |