| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/common/shelf/shelf_window_watcher.h" | 5 #include "ash/common/shelf/shelf_window_watcher.h" |
| 6 | 6 |
| 7 #include "ash/common/session/session_state_delegate.h" |
| 7 #include "ash/common/shelf/shelf_item_types.h" | 8 #include "ash/common/shelf/shelf_item_types.h" |
| 8 #include "ash/common/shelf/shelf_model.h" | 9 #include "ash/common/shelf/shelf_model.h" |
| 9 #include "ash/common/wm/window_resizer.h" | 10 #include "ash/common/wm/window_resizer.h" |
| 10 #include "ash/common/wm/window_state.h" | 11 #include "ash/common/wm/window_state.h" |
| 11 #include "ash/common/wm_lookup.h" | 12 #include "ash/common/wm_lookup.h" |
| 12 #include "ash/common/wm_root_window_controller.h" | 13 #include "ash/common/wm_root_window_controller.h" |
| 13 #include "ash/common/wm_shell.h" | 14 #include "ash/common/wm_shell.h" |
| 14 #include "ash/common/wm_window.h" | 15 #include "ash/common/wm_window.h" |
| 15 #include "ash/common/wm_window_property.h" | 16 #include "ash/common/wm_window_property.h" |
| 16 #include "ash/public/cpp/shell_window_ids.h" | 17 #include "ash/public/cpp/shell_window_ids.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 28 void SetUp() override { | 29 void SetUp() override { |
| 29 test::AshTestBase::SetUp(); | 30 test::AshTestBase::SetUp(); |
| 30 model_ = WmShell::Get()->shelf_model(); | 31 model_ = WmShell::Get()->shelf_model(); |
| 31 } | 32 } |
| 32 | 33 |
| 33 void TearDown() override { | 34 void TearDown() override { |
| 34 model_ = nullptr; | 35 model_ = nullptr; |
| 35 test::AshTestBase::TearDown(); | 36 test::AshTestBase::TearDown(); |
| 36 } | 37 } |
| 37 | 38 |
| 38 ShelfID CreateShelfItem(WmWindow* window) { | 39 static ShelfID CreateShelfItem(WmWindow* window) { |
| 39 ShelfID id = model_->next_id(); | 40 ShelfID id = WmShell::Get()->shelf_model()->next_id(); |
| 40 window->SetIntProperty(WmWindowProperty::SHELF_ITEM_TYPE, TYPE_DIALOG); | 41 window->SetIntProperty(WmWindowProperty::SHELF_ITEM_TYPE, TYPE_DIALOG); |
| 41 return id; | 42 return id; |
| 42 } | 43 } |
| 43 | 44 |
| 44 protected: | 45 protected: |
| 45 ShelfModel* model_; | 46 ShelfModel* model_; |
| 46 | 47 |
| 47 private: | 48 private: |
| 48 DISALLOW_COPY_AND_ASSIGN(ShelfWindowWatcherTest); | 49 DISALLOW_COPY_AND_ASSIGN(ShelfWindowWatcherTest); |
| 49 }; | 50 }; |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 326 window->AddChild(child_window); | 327 window->AddChild(child_window); |
| 327 child_window->Show(); | 328 child_window->Show(); |
| 328 // |child_window| should not result in adding a new entry. | 329 // |child_window| should not result in adding a new entry. |
| 329 EXPECT_EQ(initial_item_count + 1, model_->item_count()); | 330 EXPECT_EQ(initial_item_count + 1, model_->item_count()); |
| 330 | 331 |
| 331 child_window->Destroy(); | 332 child_window->Destroy(); |
| 332 window->Destroy(); | 333 window->Destroy(); |
| 333 EXPECT_EQ(initial_item_count, model_->item_count()); | 334 EXPECT_EQ(initial_item_count, model_->item_count()); |
| 334 } | 335 } |
| 335 | 336 |
| 337 // Ensures ShelfWindowWatcher supports windows opened prior to session start. |
| 338 using ShelfWindowWatcherSessionStartTest = test::NoSessionAshTestBase; |
| 339 TEST_F(ShelfWindowWatcherSessionStartTest, PreExistingWindow) { |
| 340 ShelfModel* model = WmShell::Get()->shelf_model(); |
| 341 ASSERT_FALSE( |
| 342 WmShell::Get()->GetSessionStateDelegate()->IsActiveUserSessionStarted()); |
| 343 |
| 344 // ShelfModel only has an APP_LIST item. |
| 345 EXPECT_EQ(1, model->item_count()); |
| 346 |
| 347 // Construct a window that should get a shelf item once the session starts. |
| 348 std::unique_ptr<views::Widget> widget = |
| 349 CreateTestWidget(nullptr, kShellWindowId_DefaultContainer, gfx::Rect()); |
| 350 WmWindow* window = WmLookup::Get()->GetWindowForWidget(widget.get()); |
| 351 ShelfWindowWatcherTest::CreateShelfItem(window); |
| 352 EXPECT_EQ(1, model->item_count()); |
| 353 |
| 354 // Start the test user session; ShelfWindowWatcher will find the open window. |
| 355 SetSessionStarted(true); |
| 356 EXPECT_EQ(2, model->item_count()); |
| 357 } |
| 358 |
| 336 } // namespace ash | 359 } // namespace ash |
| OLD | NEW |