Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2597)

Unified Diff: ash/shelf/shelf_window_watcher_unittest.cc

Issue 2192553002: mash: Convert ShelfWindowWatcher to wm common types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ash/shelf/shelf_window_watcher_unittest.cc
diff --git a/ash/shelf/shelf_window_watcher_unittest.cc b/ash/shelf/shelf_window_watcher_unittest.cc
index 606e7be629fb3eecc6f97c8ef20285e59da66bb2..af41ee8776064e9c159b8d0d818745d22ab3843d 100644
--- a/ash/shelf/shelf_window_watcher_unittest.cc
+++ b/ash/shelf/shelf_window_watcher_unittest.cc
@@ -54,7 +54,30 @@ class ShelfWindowWatcherTest : public test::AshTestBase {
DISALLOW_COPY_AND_ASSIGN(ShelfWindowWatcherTest);
};
-TEST_F(ShelfWindowWatcherTest, CreateAndRemoveShelfItem) {
+// Tests that shelf items are removed as windows are closed.
+TEST_F(ShelfWindowWatcherTest, OpenAndClose) {
+ // ShelfModel only has an APP_LIST item.
+ EXPECT_EQ(1, model_->item_count());
+
+ std::unique_ptr<aura::Window> w1(CreateTestWindowInShellWithId(0));
+ std::unique_ptr<aura::Window> w2(CreateTestWindowInShellWithId(0));
+
+ // Create a ShelfItem for w1.
msw 2016/07/27 18:36:11 Is it possible to test that items are created when
James Cook 2016/07/27 20:14:06 Done (and thanks for the suggestion, it's better).
+ CreateShelfItem(w1.get());
+ EXPECT_EQ(2, model_->item_count());
+
+ // Create a ShelfItem for w2.
+ CreateShelfItem(w2.get());
+ EXPECT_EQ(3, model_->item_count());
+
+ // Each ShelfItem is removed when the associated window is destroyed.
+ w1.reset();
+ EXPECT_EQ(2, model_->item_count());
+ w2.reset();
+ EXPECT_EQ(1, model_->item_count());
+}
+
+TEST_F(ShelfWindowWatcherTest, CreateAndRemoveShelfItemDetails) {
// ShelfModel only has an APP_LIST item.
EXPECT_EQ(1, model_->item_count());
@@ -75,12 +98,12 @@ TEST_F(ShelfWindowWatcherTest, CreateAndRemoveShelfItem) {
int index_w2 = model_->ItemIndexByID(id_w2);
EXPECT_EQ(STATUS_RUNNING, model_->items()[index_w2].status);
- // ShelfItem is removed when assoicated window is destroyed.
+ // ShelfItem is removed when its window property is cleared.
ClearShelfItemDetailsForWindow(w1.get());
EXPECT_EQ(2, model_->item_count());
ClearShelfItemDetailsForWindow(w2.get());
EXPECT_EQ(1, model_->item_count());
- // Clears twice doesn't do anything.
+ // Clearing twice doesn't do anything.
ClearShelfItemDetailsForWindow(w2.get());
EXPECT_EQ(1, model_->item_count());
}
@@ -173,8 +196,8 @@ TEST_F(ShelfWindowWatcherTest, MaximizeAndRestoreWindow) {
EXPECT_EQ(id, model_->items()[index].id);
}
-// Check that an item is removed when its associated Window is re-parented.
-TEST_F(ShelfWindowWatcherTest, ReparentWindow) {
+// Check that an item is maintained when its associated Window is docked.
+TEST_F(ShelfWindowWatcherTest, DockWindow) {
// ShelfModel only has an APP_LIST item.
EXPECT_EQ(1, model_->item_count());
@@ -193,18 +216,17 @@ TEST_F(ShelfWindowWatcherTest, ReparentWindow) {
Shell::GetContainer(root_window, kShellWindowId_DefaultContainer);
EXPECT_EQ(default_container, window->parent());
- aura::Window* new_parent =
- Shell::GetContainer(root_window, kShellWindowId_PanelContainer);
+ aura::Window* docked_container =
+ Shell::GetContainer(root_window, kShellWindowId_DockedContainer);
- // Check |window|'s item is removed when it is re-parented to |new_parent|
- // which is not default container.
- new_parent->AddChild(window.get());
- EXPECT_EQ(1, model_->item_count());
-
- // Check |window|'s item is added when it is re-parented to
- // |default_container|.
- default_container->AddChild(window.get());
+ // Check |window|'s item is not removed when it is re-parented to the dock.
+ docked_container->AddChild(window.get());
EXPECT_EQ(2, model_->item_count());
+
+ // The shelf item is removed when the window is closed, even if it is in the
+ // docked container at the time.
+ window.reset();
+ EXPECT_EQ(1, model_->item_count());
}
// Check |window|'s item is not changed during the dragging.
@@ -235,47 +257,4 @@ TEST_F(ShelfWindowWatcherTest, DragWindow) {
EXPECT_EQ(id, model_->items()[index].id);
}
-// Check |window|'s item is removed when it is re-parented not to default
-// container during the dragging.
-TEST_F(ShelfWindowWatcherTest, ReparentWindowDuringTheDragging) {
- // ShelfModel only has an APP_LIST item.
- EXPECT_EQ(1, model_->item_count());
-
- std::unique_ptr<aura::Window> window(CreateTestWindowInShellWithId(0));
- window->set_owned_by_parent(false);
-
- // Create a ShelfItem for |window|.
- ShelfID id = CreateShelfItem(window.get());
- EXPECT_EQ(2, model_->item_count());
- int index = model_->ItemIndexByID(id);
- EXPECT_EQ(STATUS_RUNNING, model_->items()[index].status);
-
- aura::Window* root_window = window->GetRootWindow();
- aura::Window* default_container =
- Shell::GetContainer(root_window, kShellWindowId_DefaultContainer);
- EXPECT_EQ(default_container, window->parent());
-
- aura::Window* new_parent =
- Shell::GetContainer(root_window, kShellWindowId_PanelContainer);
-
- // Simulate re-parenting to |new_parent| during the dragging.
- {
- std::unique_ptr<WindowResizer> resizer(
- CreateWindowResizer(WmWindowAura::Get(window.get()), gfx::Point(),
- HTCAPTION, aura::client::WINDOW_MOVE_SOURCE_MOUSE));
- ASSERT_TRUE(resizer.get());
- resizer->Drag(gfx::Point(50, 50), 0);
- resizer->CompleteDrag();
- EXPECT_EQ(2, model_->item_count());
-
- // Item should be removed when |window| is re-parented not to default
- // container before fininshing the dragging.
- EXPECT_TRUE(wm::GetWindowState(window.get())->is_dragged());
- new_parent->AddChild(window.get());
- EXPECT_EQ(1, model_->item_count());
- }
- EXPECT_FALSE(wm::GetWindowState(window.get())->is_dragged());
- EXPECT_EQ(1, model_->item_count());
-}
-
} // namespace ash
« ash/shelf/shelf_window_watcher.cc ('K') | « ash/shelf/shelf_window_watcher_item_delegate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698