| Index: ash/shelf/shelf_view_unittest.cc
|
| diff --git a/ash/shelf/shelf_view_unittest.cc b/ash/shelf/shelf_view_unittest.cc
|
| index c8fee6f6cd34ad1e6495415a42adfc26edb2ee23..e4a79f70b6b8fb8684bebcb5e8240c508c5ac58c 100644
|
| --- a/ash/shelf/shelf_view_unittest.cc
|
| +++ b/ash/shelf/shelf_view_unittest.cc
|
| @@ -129,6 +129,9 @@ class ShelfItemSelectionTracker : public TestShelfItemDelegate {
|
| virtual ~ShelfItemSelectionTracker() {
|
| }
|
|
|
| + // Resets to the initial state.
|
| + void Reset() { selected_ = false; }
|
| +
|
| // Returns true if the delegate was selected.
|
| bool WasSelected() {
|
| return selected_;
|
| @@ -285,7 +288,11 @@ class TestShelfDelegateForShelfView : public ShelfDelegate {
|
|
|
| class ShelfViewTest : public AshTestBase {
|
| public:
|
| - ShelfViewTest() : model_(NULL), shelf_view_(NULL), browser_index_(1) {}
|
| + ShelfViewTest()
|
| + : model_(NULL),
|
| + shelf_view_(NULL),
|
| + browser_index_(1),
|
| + item_manager_(NULL) {}
|
| virtual ~ShelfViewTest() {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| @@ -407,7 +414,7 @@ class ShelfViewTest : public AshTestBase {
|
| }
|
|
|
| void VerifyShelfItemBoundsAreValid() {
|
| - for (int i=0;i <= test_api_->GetLastVisibleIndex(); ++i) {
|
| + for (int i = 0; i <= test_api_->GetLastVisibleIndex(); ++i) {
|
| if (test_api_->GetButton(i)) {
|
| gfx::Rect shelf_view_bounds = shelf_view_->GetLocalBounds();
|
| gfx::Rect item_bounds = test_api_->GetBoundsByIndex(i);
|
| @@ -419,10 +426,10 @@ class ShelfViewTest : public AshTestBase {
|
| }
|
| }
|
|
|
| - views::View* SimulateButtonPressed(ShelfButtonHost::Pointer pointer,
|
| + ShelfButton* SimulateButtonPressed(ShelfButtonHost::Pointer pointer,
|
| int button_index) {
|
| ShelfButtonHost* button_host = shelf_view_;
|
| - views::View* button = test_api_->GetButton(button_index);
|
| + ShelfButton* button = test_api_->GetButton(button_index);
|
| ui::MouseEvent click_event(ui::ET_MOUSE_PRESSED,
|
| gfx::Point(),
|
| button->GetBoundsInScreen().origin(), 0, 0);
|
| @@ -430,12 +437,32 @@ class ShelfViewTest : public AshTestBase {
|
| return button;
|
| }
|
|
|
| - views::View* SimulateClick(ShelfButtonHost::Pointer pointer,
|
| - int button_index) {
|
| + // Simulates a single mouse click.
|
| + void SimulateClick(int button_index) {
|
| ShelfButtonHost* button_host = shelf_view_;
|
| - views::View* button = SimulateButtonPressed(pointer, button_index);
|
| + ShelfButton* button =
|
| + SimulateButtonPressed(ShelfButtonHost::MOUSE, button_index);
|
| + ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED,
|
| + gfx::Point(),
|
| + button->GetBoundsInScreen().origin(),
|
| + 0,
|
| + 0);
|
| + test_api_->ButtonPressed(button, release_event);
|
| + button_host->PointerReleasedOnButton(button, ShelfButtonHost::MOUSE, false);
|
| + }
|
| +
|
| + // Simulates the second click of a double click.
|
| + void SimulateDoubleClick(int button_index) {
|
| + ShelfButtonHost* button_host = shelf_view_;
|
| + ShelfButton* button =
|
| + SimulateButtonPressed(ShelfButtonHost::MOUSE, button_index);
|
| + ui::MouseEvent release_event(ui::ET_MOUSE_RELEASED,
|
| + gfx::Point(),
|
| + button->GetBoundsInScreen().origin(),
|
| + ui::EF_IS_DOUBLE_CLICK,
|
| + 0);
|
| + test_api_->ButtonPressed(button, release_event);
|
| button_host->PointerReleasedOnButton(button, ShelfButtonHost::MOUSE, false);
|
| - return button;
|
| }
|
|
|
| views::View* SimulateDrag(ShelfButtonHost::Pointer pointer,
|
| @@ -606,8 +633,7 @@ class ShelfViewTest : public AshTestBase {
|
|
|
| class ScopedTextDirectionChange {
|
| public:
|
| - ScopedTextDirectionChange(bool is_rtl)
|
| - : is_rtl_(is_rtl) {
|
| + explicit ScopedTextDirectionChange(bool is_rtl) : is_rtl_(is_rtl) {
|
| original_locale_ = l10n_util::GetApplicationLocale(std::string());
|
| if (is_rtl_)
|
| base::i18n::SetICUDefaultLocale("he");
|
| @@ -1043,7 +1069,7 @@ TEST_F(ShelfViewTest, ClickOneDragAnother) {
|
| SetupForDragTest(&id_map);
|
|
|
| // A click on item 1 is simulated.
|
| - SimulateClick(ShelfButtonHost::MOUSE, 1);
|
| + SimulateClick(1);
|
|
|
| // Dragging browser index at 0 should change the model order correctly.
|
| EXPECT_TRUE(model_->items()[1].type == TYPE_BROWSER_SHORTCUT);
|
| @@ -1057,6 +1083,25 @@ TEST_F(ShelfViewTest, ClickOneDragAnother) {
|
| EXPECT_TRUE(model_->items()[3].type == TYPE_BROWSER_SHORTCUT);
|
| }
|
|
|
| +// Tests that double-clicking an item does not activate it twice.
|
| +TEST_F(ShelfViewTest, ClickingTwiceActivatesOnce) {
|
| + // Watch for selection of the browser shortcut.
|
| + ShelfID browser_shelf_id = model_->items()[browser_index_].id;
|
| + ShelfItemSelectionTracker* selection_tracker = new ShelfItemSelectionTracker;
|
| + item_manager_->SetShelfItemDelegate(
|
| + browser_shelf_id,
|
| + scoped_ptr<ShelfItemDelegate>(selection_tracker).Pass());
|
| +
|
| + // A single click selects the item.
|
| + SimulateClick(browser_index_);
|
| + EXPECT_TRUE(selection_tracker->WasSelected());
|
| +
|
| + // A double-click does not select the item.
|
| + selection_tracker->Reset();
|
| + SimulateDoubleClick(browser_index_);
|
| + EXPECT_FALSE(selection_tracker->WasSelected());
|
| +}
|
| +
|
| // Check that clicking an item and jittering the mouse a bit still selects the
|
| // item.
|
| TEST_F(ShelfViewTest, ClickAndMoveSlightly) {
|
|
|