| Index: chrome/browser/ui/panels/stacked_panel_browsertest.cc | 
| diff --git a/chrome/browser/ui/panels/stacked_panel_browsertest.cc b/chrome/browser/ui/panels/stacked_panel_browsertest.cc | 
| deleted file mode 100644 | 
| index 6274a03759a83697362f4b5afd9f00e70614b0be..0000000000000000000000000000000000000000 | 
| --- a/chrome/browser/ui/panels/stacked_panel_browsertest.cc | 
| +++ /dev/null | 
| @@ -1,1468 +0,0 @@ | 
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved. | 
| -// Use of this source code is governed by a BSD-style license that can be | 
| -// found in the LICENSE file. | 
| - | 
| -#include "build/build_config.h" | 
| -#include "chrome/browser/ui/browser.h" | 
| -#include "chrome/browser/ui/panels/base_panel_browser_test.h" | 
| -#include "chrome/browser/ui/panels/detached_panel_collection.h" | 
| -#include "chrome/browser/ui/panels/docked_panel_collection.h" | 
| -#include "chrome/browser/ui/panels/native_panel.h" | 
| -#include "chrome/browser/ui/panels/panel.h" | 
| -#include "chrome/browser/ui/panels/panel_manager.h" | 
| -#include "chrome/browser/ui/panels/stacked_panel_collection.h" | 
| -#include "chrome/browser/web_applications/web_app.h" | 
| -#include "chrome/test/base/testing_profile.h" | 
| -#include "content/public/test/test_utils.h" | 
| - | 
| -class StackedPanelBrowserTest : public BasePanelBrowserTest { | 
| -}; | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, CheckStackedPanelProperties) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  gfx::Rect panel3_initial_bounds = gfx::Rect(0, 0, 120, 110); | 
| -  Panel* panel3 = CreateStackedPanel("3", panel3_initial_bounds, stack); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| -  std::unique_ptr<NativePanelTesting> panel3_testing( | 
| -      CreateNativePanelTesting(panel3)); | 
| - | 
| -  // Check that all 3 panels are in a stack. | 
| -  ASSERT_EQ(0, panel_manager->docked_collection()->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| -  EXPECT_EQ(stack, panel1->stack()); | 
| -  EXPECT_EQ(stack, panel2->stack()); | 
| -  EXPECT_EQ(stack, panel3->stack()); | 
| - | 
| -  // Check buttons. | 
| -  EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| -  EXPECT_TRUE(panel2_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| -  EXPECT_TRUE(panel3_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| - | 
| -  if (PanelManager::CanUseSystemMinimize()) | 
| -    EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  else | 
| -    EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| - | 
| -  EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| - | 
| -  // Check bounds. | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  gfx::Rect panel3_expected_bounds(panel2_expected_bounds.x(), | 
| -                                   panel2_expected_bounds.bottom(), | 
| -                                   panel2_expected_bounds.width(), | 
| -                                   panel3_initial_bounds.height()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Check other properties. | 
| -  EXPECT_FALSE(panel1->IsAlwaysOnTop()); | 
| -  EXPECT_FALSE(panel2->IsAlwaysOnTop()); | 
| -  EXPECT_FALSE(panel3->IsAlwaysOnTop()); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(panel3->IsMinimized()); | 
| - | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT | | 
| -                panel::RESIZABLE_TOP | panel::RESIZABLE_TOP_LEFT | | 
| -                panel::RESIZABLE_TOP_RIGHT | panel::RESIZABLE_BOTTOM, | 
| -            panel1->CanResizeByMouse()); | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT | | 
| -                panel::RESIZABLE_BOTTOM, | 
| -            panel2->CanResizeByMouse()); | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT | | 
| -                panel::RESIZABLE_BOTTOM | panel::RESIZABLE_BOTTOM_LEFT | | 
| -                panel::RESIZABLE_BOTTOM_RIGHT, | 
| -            panel3->CanResizeByMouse()); | 
| - | 
| -  EXPECT_EQ(panel::TOP_ROUNDED, panel1_testing->GetWindowCornerStyle()); | 
| -  EXPECT_EQ(panel::NOT_ROUNDED, panel2_testing->GetWindowCornerStyle()); | 
| -  EXPECT_EQ(panel::BOTTOM_ROUNDED, panel3_testing->GetWindowCornerStyle()); | 
| - | 
| -  Panel::AttentionMode expected_attention_mode = | 
| -      static_cast<Panel::AttentionMode>(Panel::USE_PANEL_ATTENTION | | 
| -                                        Panel::USE_SYSTEM_ATTENTION); | 
| -  EXPECT_EQ(expected_attention_mode, panel1->attention_mode()); | 
| -  EXPECT_EQ(expected_attention_mode, panel2->attention_mode()); | 
| -  EXPECT_EQ(expected_attention_mode, panel3->attention_mode()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       CheckMinimizedStackedPanelProperties) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  gfx::Rect panel3_initial_bounds = gfx::Rect(0, 0, 120, 110); | 
| -  Panel* panel3 = CreateStackedPanel("3", panel3_initial_bounds, stack); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| -  std::unique_ptr<NativePanelTesting> panel3_testing( | 
| -      CreateNativePanelTesting(panel3)); | 
| - | 
| -  // Minimize these 2 panels. | 
| -  panel1->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  panel2->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  panel3->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| - | 
| -  // Check that all 2 panels are in a stack. | 
| -  ASSERT_EQ(0, panel_manager->docked_collection()->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| -  EXPECT_EQ(stack, panel1->stack()); | 
| -  EXPECT_EQ(stack, panel2->stack()); | 
| -  EXPECT_EQ(stack, panel3->stack()); | 
| - | 
| -  // Check buttons. | 
| -  EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| -  EXPECT_TRUE(panel2_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| -  EXPECT_TRUE(panel3_testing->IsButtonVisible(panel::CLOSE_BUTTON)); | 
| - | 
| -  if (PanelManager::CanUseSystemMinimize()) | 
| -    EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  else | 
| -    EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| - | 
| -  EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::RESTORE_BUTTON)); | 
| - | 
| -  // Check bounds. | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  panel1_expected_bounds.set_height(panel1->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  gfx::Rect panel3_expected_bounds(panel2_expected_bounds.x(), | 
| -                                   panel2_expected_bounds.bottom(), | 
| -                                   panel2_expected_bounds.width(), | 
| -                                   panel3->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Check other properties. | 
| -  EXPECT_FALSE(panel1->IsAlwaysOnTop()); | 
| -  EXPECT_FALSE(panel2->IsAlwaysOnTop()); | 
| -  EXPECT_FALSE(panel3->IsAlwaysOnTop()); | 
| - | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| - | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT, | 
| -            panel1->CanResizeByMouse()); | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT, | 
| -            panel2->CanResizeByMouse()); | 
| -  EXPECT_EQ(panel::RESIZABLE_LEFT | panel::RESIZABLE_RIGHT, | 
| -            panel3->CanResizeByMouse()); | 
| - | 
| -  EXPECT_EQ(panel::TOP_ROUNDED, panel1_testing->GetWindowCornerStyle()); | 
| -  EXPECT_EQ(panel::NOT_ROUNDED, panel2_testing->GetWindowCornerStyle()); | 
| -  EXPECT_EQ(panel::BOTTOM_ROUNDED, panel3_testing->GetWindowCornerStyle()); | 
| - | 
| -  Panel::AttentionMode expected_attention_mode = | 
| -      static_cast<Panel::AttentionMode>(Panel::USE_PANEL_ATTENTION | | 
| -                                        Panel::USE_SYSTEM_ATTENTION); | 
| -  EXPECT_EQ(expected_attention_mode, panel1->attention_mode()); | 
| -  EXPECT_EQ(expected_attention_mode, panel2->attention_mode()); | 
| -  EXPECT_EQ(expected_attention_mode, panel3->attention_mode()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, ClickTitlebar) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| - | 
| -  gfx::Point panel1_origin = panel2->GetBounds().origin(); | 
| -  gfx::Point panel2_origin = panel2->GetBounds().origin(); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| - | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Clicking on P2's titlebar to collapse it. | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(panel2_origin); | 
| -  panel2_testing->ReleaseMouseButtonTitlebar(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_height(panel2->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Clicking on P2's titlebar to expand it. | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(panel2_origin); | 
| -  panel2_testing->ReleaseMouseButtonTitlebar(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_height(panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Clicking on P2's titlebar with APPLY_TO_ALL modifier to collapse all | 
| -  // panels. | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(panel2_origin, | 
| -                                               panel::APPLY_TO_ALL); | 
| -  panel2_testing->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  panel1_expected_bounds.set_height(panel1->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_y(panel1_expected_bounds.bottom()); | 
| -  panel2_expected_bounds.set_height(panel2->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Clicking on P1's titlebar with APPLY_TO_ALL modifier to expand all | 
| -  // panels. | 
| -  panel1_testing->PressLeftMouseButtonTitlebar(panel1_origin, | 
| -                                               panel::APPLY_TO_ALL); | 
| -  panel1_testing->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  panel1_expected_bounds.set_height(panel1_initial_bounds.height()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_y(panel1_expected_bounds.bottom()); | 
| -  panel2_expected_bounds.set_height(panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, CallMinimizeAndRestoreApi) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| - | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Collapsing P1 by calling its Minimize API. | 
| -  panel1->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  panel1_expected_bounds.set_height(panel1->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_y(panel1_expected_bounds.bottom()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  // Expanding P1 by calling its Restore API. | 
| -  panel1->Restore(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  panel1_expected_bounds.set_height(panel1_initial_bounds.height()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_y(panel1_expected_bounds.bottom()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, ExpandToFitWithinScreen) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| -  gfx::Rect work_area = | 
| -      panel_manager->display_settings_provider()->GetPrimaryWorkArea(); | 
| - | 
| -  // Create 4 stacked panels. P4 is the active panel. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 90, 200, 150), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 150, 120), stack); | 
| -  Panel* panel4 = CreateStackedPanel("4", gfx::Rect(0, 0, 150, 100), stack); | 
| -  ASSERT_EQ(4, stack->num_panels()); | 
| -  ASSERT_FALSE(panel1->IsMinimized()); | 
| -  ASSERT_FALSE(panel2->IsMinimized()); | 
| -  ASSERT_FALSE(panel3->IsMinimized()); | 
| -  ASSERT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_LE(panel4->GetBounds().bottom(), work_area.bottom()); | 
| -  int old_stack_top_position = panel1->GetBounds().y(); | 
| - | 
| -  // Collapse P2. | 
| -  panel2->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  ASSERT_FALSE(panel1->IsMinimized()); | 
| -  ASSERT_TRUE(panel2->IsMinimized()); | 
| -  ASSERT_FALSE(panel3->IsMinimized()); | 
| -  ASSERT_FALSE(panel4->IsMinimized()); | 
| - | 
| -  // Grow P2's restored height. | 
| -  gfx::Size panel2_full_size = panel2->full_size(); | 
| -  panel2_full_size.set_height(panel2_full_size.height() + 30); | 
| -  panel2->set_full_size(panel2_full_size); | 
| - | 
| -  // Expand P2. Expect that the least recently active panel P1 is minimized in | 
| -  // order to make space for P2. | 
| -  panel2->Restore(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  WaitForBoundsAnimationFinished(panel4); | 
| -  ASSERT_TRUE(panel1->IsMinimized()); | 
| -  ASSERT_FALSE(panel2->IsMinimized()); | 
| -  ASSERT_FALSE(panel3->IsMinimized()); | 
| -  ASSERT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_EQ(old_stack_top_position, panel1->GetBounds().y()); | 
| -  EXPECT_LE(panel4->GetBounds().bottom(), work_area.bottom()); | 
| -  EXPECT_EQ(panel2->GetBounds().height(), panel2_full_size.height()); | 
| - | 
| -  // Grow P1's restored height. | 
| -  gfx::Size panel1_full_size = panel1->full_size(); | 
| -  panel1_full_size.set_height(panel1_full_size.height() + 180); | 
| -  panel1->set_full_size(panel1_full_size); | 
| - | 
| -  // Expand P1. Expect that both P2 and P3 are collapsed and the stack moves | 
| -  // up in order to make space for P1. | 
| -  panel1->Restore(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  WaitForBoundsAnimationFinished(panel4); | 
| -  ASSERT_FALSE(panel1->IsMinimized()); | 
| -  ASSERT_TRUE(panel2->IsMinimized()); | 
| -  ASSERT_TRUE(panel3->IsMinimized()); | 
| -  ASSERT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_LT(panel1->GetBounds().y(), old_stack_top_position); | 
| -  EXPECT_GE(panel1->GetBounds().y(), work_area.y()); | 
| -  EXPECT_LE(panel4->GetBounds().bottom(), work_area.bottom()); | 
| -  EXPECT_EQ(panel1->GetBounds().height(), panel1_full_size.height()); | 
| -  old_stack_top_position = panel1->GetBounds().y(); | 
| - | 
| -  // Expand P3. Expect that P1 get collapsed in order to make space for P3. | 
| -  panel3->Restore(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  WaitForBoundsAnimationFinished(panel4); | 
| -  ASSERT_TRUE(panel1->IsMinimized()); | 
| -  ASSERT_TRUE(panel2->IsMinimized()); | 
| -  ASSERT_FALSE(panel3->IsMinimized()); | 
| -  ASSERT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_EQ(old_stack_top_position, panel1->GetBounds().y()); | 
| -  EXPECT_LE(panel4->GetBounds().bottom(), work_area.bottom()); | 
| - | 
| -  // Grow P2's restored height by a very large value such that the stack with | 
| -  // P2 in full height will not fit within the screen. | 
| -  panel2_full_size = panel2->full_size(); | 
| -  panel2_full_size.set_height(panel2_full_size.height() + 500); | 
| -  panel2->set_full_size(panel2_full_size); | 
| - | 
| -  // Expand P2. Expect: | 
| -  // 1) Both P1 and P3 are collapsed | 
| -  // 2) The stack moves up to the top of the screen | 
| -  // 3) P2's restored height is reduced | 
| -  panel2->Restore(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  WaitForBoundsAnimationFinished(panel4); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| -  EXPECT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_EQ(panel1->GetBounds().y(), work_area.y()); | 
| -  EXPECT_EQ(panel4->GetBounds().bottom(), work_area.bottom()); | 
| -  EXPECT_LT(panel2->GetBounds().height(), panel2_full_size.height()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, ExpandAllToFitWithinScreen) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| -  gfx::Rect work_area = | 
| -      panel_manager->display_settings_provider()->GetPrimaryWorkArea(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 150, 200, 200), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 150, 120), stack); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| - | 
| -  // Collapse all panels by clicking on P2's titlebar with APPLY_TO_ALL | 
| -  // modifier. | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), | 
| -                                               panel::APPLY_TO_ALL); | 
| -  panel2_testing->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  ASSERT_TRUE(panel1->IsMinimized()); | 
| -  ASSERT_TRUE(panel2->IsMinimized()); | 
| -  ASSERT_TRUE(panel3->IsMinimized()); | 
| - | 
| -  // Grow P2's restored height by a very large value. | 
| -  gfx::Size panel2_full_size = panel2->full_size(); | 
| -  panel2_full_size.set_height(panel2_full_size.height() + 500); | 
| -  panel2->set_full_size(panel2_full_size); | 
| - | 
| -  // Expand all panels by clicking on P2's titlebar with APPLY_TO_ALL | 
| -  // modifier again. Expect only P2 is expanded due to no available space for | 
| -  // P1 and P3. | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), | 
| -                                               panel::APPLY_TO_ALL); | 
| -  panel2_testing->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| -  EXPECT_EQ(panel1->GetBounds().y(), work_area.y()); | 
| -  EXPECT_EQ(panel3->GetBounds().bottom(), work_area.bottom()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, MinimizeButtonVisibility) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  gfx::Rect panel3_initial_bounds = gfx::Rect(0, 0, 250, 120); | 
| -  Panel* panel3 = CreateStackedPanel("3", panel3_initial_bounds, stack); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| -  std::unique_ptr<NativePanelTesting> panel3_testing( | 
| -      CreateNativePanelTesting(panel3)); | 
| - | 
| -  // Only P1 shows minimize button. | 
| -  if (PanelManager::CanUseSystemMinimize()) | 
| -    EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  else | 
| -    EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| - | 
| -  // Drag P2 away to unstack from P1. | 
| -  // Expect only P2, top panel of the stack consisting P2 and P3, shows minimize | 
| -  // button. | 
| -  gfx::Point mouse_location(panel2->GetBounds().origin()); | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(mouse_location); | 
| -  gfx::Vector2d drag_delta_to_unstack(120, 50); | 
| -  panel2_testing->DragTitlebar(mouse_location + drag_delta_to_unstack); | 
| -  panel2_testing->FinishDragTitlebar(); | 
| -  ASSERT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| - | 
| -  if (PanelManager::CanUseSystemMinimize()) { | 
| -    EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -    EXPECT_TRUE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  } else { | 
| -    EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -    EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  } | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| - | 
| -  // Drag P1 to stack to the top edge of P2. | 
| -  // Expect only P1, top panel of the stack consisting P1, P2 and P3, shows | 
| -  // minimize button. | 
| -  gfx::Rect bounds1 = panel1->GetBounds(); | 
| -  gfx::Rect bounds2 = panel2->GetBounds(); | 
| -  mouse_location = bounds1.origin(); | 
| -  panel1_testing->PressLeftMouseButtonTitlebar(mouse_location); | 
| -  gfx::Vector2d drag_delta_to_stack(bounds2.x() - bounds1.x(), | 
| -                                    bounds2.y() - bounds1.bottom()); | 
| -  panel1_testing->DragTitlebar(mouse_location + drag_delta_to_stack); | 
| -  panel1_testing->FinishDragTitlebar(); | 
| -  ASSERT_EQ(0, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| - | 
| -  if (PanelManager::CanUseSystemMinimize()) | 
| -    EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  else | 
| -    EXPECT_FALSE(panel1_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel2_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| -  EXPECT_FALSE(panel3_testing->IsButtonVisible(panel::MINIMIZE_BUTTON)); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, DISABLED_ClickMinimizeButton) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| - | 
| -  // Collapsing P1 by calling its Minimize API. | 
| -  panel1->OnMinimizeButtonClicked(panel::NO_MODIFIER); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel1_testing->VerifySystemMinimizeState()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, UngroupMinimizedPanels) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  gfx::Rect panel3_initial_bounds = gfx::Rect(0, 0, 250, 120); | 
| -  Panel* panel3 = CreateStackedPanel("3", panel3_initial_bounds, stack); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| - | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| -  std::unique_ptr<NativePanelTesting> panel3_testing( | 
| -      CreateNativePanelTesting(panel3)); | 
| - | 
| -  // Minimize these 3 panels. | 
| -  panel1->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  panel2->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  panel3->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| - | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| - | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  panel1_expected_bounds.set_height(panel1->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  gfx::Rect panel3_expected_bounds(panel2_expected_bounds.x(), | 
| -                                   panel2_expected_bounds.bottom(), | 
| -                                   panel2_expected_bounds.width(), | 
| -                                   panel3->TitleOnlyHeight()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Drag P2 away to unstack from P1. | 
| -  // Expect P2 and P3 are still stacked and minimized while P1 becomes detached | 
| -  // and expanded. The minimize button of P2 should become visible now. | 
| -  gfx::Point mouse_location(panel2->GetBounds().origin()); | 
| -  panel2_testing->PressLeftMouseButtonTitlebar(mouse_location); | 
| -  gfx::Vector2d drag_delta(120, 50); | 
| -  panel2_testing->DragTitlebar(mouse_location + drag_delta); | 
| -  panel2_testing->FinishDragTitlebar(); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  ASSERT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| - | 
| -  panel1_expected_bounds.set_height(panel1_initial_bounds.height()); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.Offset(drag_delta); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  panel3_expected_bounds.Offset(drag_delta); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Drag P3 away to unstack from P2. | 
| -  // Expect both panels become detached and expanded. | 
| -  mouse_location = panel3->GetBounds().origin(); | 
| -  panel3_testing->PressLeftMouseButtonTitlebar(mouse_location); | 
| -  panel3_testing->DragTitlebar(mouse_location + drag_delta); | 
| -  panel3_testing->FinishDragTitlebar(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  ASSERT_EQ(3, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->num_stacks()); | 
| - | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(panel3->IsMinimized()); | 
| - | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  panel2_expected_bounds.set_height(panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  panel3_expected_bounds.Offset(drag_delta); | 
| -  panel3_expected_bounds.set_height(panel3_initial_bounds.height()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToStackWithMostPanels) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 2 panels. | 
| -  StackedPanelCollection* stack1 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("1", gfx::Rect(200, 50, 200, 150), stack1); | 
| -  CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack1); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack1->num_panels()); | 
| - | 
| -  // Create another stack with 3 panels. | 
| -  StackedPanelCollection* stack2 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("3", gfx::Rect(100, 50, 200, 150), stack2); | 
| -  CreateStackedPanel("4", gfx::Rect(0, 0, 150, 100), stack2); | 
| -  CreateStackedPanel("5", gfx::Rect(0, 0, 250, 120), stack2); | 
| -  ASSERT_EQ(5, panel_manager->num_panels()); | 
| -  ASSERT_EQ(2, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack2->num_panels()); | 
| - | 
| -  // Create new panel. Expect that it will append to stack2 since it has most | 
| -  // panels. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(6, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack1->num_panels()); | 
| -  EXPECT_EQ(4, stack2->num_panels()); | 
| -  EXPECT_TRUE(stack2->HasPanel(new_panel)); | 
| -  EXPECT_TRUE(new_panel == stack2->bottom_panel()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToRightMostStack) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 2 panels. | 
| -  StackedPanelCollection* stack1 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("1", gfx::Rect(100, 50, 200, 150), stack1); | 
| -  CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack1); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack1->num_panels()); | 
| - | 
| -  // Create another stack with 2 panels. | 
| -  StackedPanelCollection* stack2 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("3", gfx::Rect(200, 50, 200, 150), stack2); | 
| -  CreateStackedPanel("4", gfx::Rect(0, 0, 150, 100), stack2); | 
| -  ASSERT_EQ(4, panel_manager->num_panels()); | 
| -  ASSERT_EQ(2, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack2->num_panels()); | 
| - | 
| -  // Create new panel. Both stack1 and stack2 have same number of panels. Since | 
| -  // stack2 is right-most, new panel will be added to it. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack1->num_panels()); | 
| -  EXPECT_EQ(3, stack2->num_panels()); | 
| -  EXPECT_TRUE(stack2->HasPanel(new_panel)); | 
| -  EXPECT_TRUE(new_panel == stack2->bottom_panel()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToTopMostStack) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 2 panels. | 
| -  StackedPanelCollection* stack1 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("1", gfx::Rect(100, 90, 200, 150), stack1); | 
| -  CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack1); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack1->num_panels()); | 
| - | 
| -  // Create another stack with 2 panels. | 
| -  StackedPanelCollection* stack2 = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("3", gfx::Rect(100, 50, 200, 150), stack2); | 
| -  CreateStackedPanel("4", gfx::Rect(0, 0, 150, 100), stack2); | 
| -  ASSERT_EQ(4, panel_manager->num_panels()); | 
| -  ASSERT_EQ(2, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack2->num_panels()); | 
| - | 
| -  // Create new panel. Both stack1 and stack2 have same number of panels and | 
| -  // same right position. Since stack2 is top-most, new panel will be added to | 
| -  // it. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack1->num_panels()); | 
| -  EXPECT_EQ(3, stack2->num_panels()); | 
| -  EXPECT_TRUE(stack2->HasPanel(new_panel)); | 
| -  EXPECT_TRUE(new_panel == stack2->bottom_panel()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToGroupWithRightMostDetachedPanel) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 detached panels. | 
| -  CreateDetachedPanel("1", gfx::Rect(200, 50, 250, 150)); | 
| -  Panel* panel2 = CreateDetachedPanel("2", gfx::Rect(250, 100, 150, 100)); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, panel_manager->detached_collection()->num_panels()); | 
| - | 
| -  // Create new panel. Expect that new panel will stack to the bottom of panel2 | 
| -  // since it is right-most. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(3, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack = panel_manager->stacks().front(); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_TRUE(panel2 == stack->top_panel()); | 
| -  EXPECT_TRUE(new_panel == stack->bottom_panel()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToGroupWitTopMostDetachedPanel) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 detached panels. | 
| -  CreateDetachedPanel("1", gfx::Rect(200, 100, 100, 150)); | 
| -  Panel* panel2 = CreateDetachedPanel("2", gfx::Rect(200, 50, 100, 100)); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, panel_manager->detached_collection()->num_panels()); | 
| - | 
| -  // Create new panel. Expect that new panel will stack to the bottom of panel2 | 
| -  // since it is top-most. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(3, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack = panel_manager->stacks().front(); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_TRUE(panel2 == stack->top_panel()); | 
| -  EXPECT_TRUE(new_panel == stack->bottom_panel()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToStackWithCollapseToFit) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 4 panels. | 
| -  // The panels from most recent active to least recent active are: | 
| -  //   P4 P3 P2 P1 | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 50, 200, 140), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 150), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 180, 120), stack); | 
| -  Panel* panel4 = CreateStackedPanel("4", gfx::Rect(0, 0, 170, 110), stack); | 
| -  ASSERT_EQ(4, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(4, stack->num_panels()); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(panel3->IsMinimized()); | 
| -  EXPECT_FALSE(panel4->IsMinimized()); | 
| - | 
| -  // Create a panel. Expect the least recent active panel P1 gets minimized such | 
| -  // that there is enough space for new panel to append to the stack. | 
| -  // The panels from most recent active to least recent active are: | 
| -  //   PM P4 P3 P2 P1* | 
| -  CreatePanelParams params1("M", gfx::Rect(50, 50, 300, 110), SHOW_AS_ACTIVE); | 
| -  params1.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel1 = CreatePanelWithParams(params1); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(5, stack->num_panels()); | 
| -  EXPECT_TRUE(new_panel1 == stack->bottom_panel()); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(panel3->IsMinimized()); | 
| -  EXPECT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_FALSE(new_panel1->IsMinimized()); | 
| - | 
| -  // Create another panel. Expect P2 and P3 are minimized such that there is | 
| -  // enough space for new panel to append to the stack. | 
| -  CreatePanelParams params2("N", gfx::Rect(50, 50, 300, 180), SHOW_AS_ACTIVE); | 
| -  params2.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel2 = CreatePanelWithParams(params2); | 
| -  EXPECT_EQ(6, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(6, stack->num_panels()); | 
| -  EXPECT_TRUE(new_panel2 == stack->bottom_panel()); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| -  EXPECT_FALSE(panel4->IsMinimized()); | 
| -  EXPECT_FALSE(new_panel1->IsMinimized()); | 
| -  EXPECT_FALSE(new_panel2->IsMinimized()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelToGroupWithDetachedPanelWithCollapseToFit) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 detached panels. | 
| -  // Since P2 is active, it will not get collapsed when the new panel to stack | 
| -  // with needs the space. | 
| -  Panel* panel1 = | 
| -      CreateInactiveDetachedPanel("1", gfx::Rect(100, 310, 200, 200)); | 
| -  Panel* panel2 = CreateDetachedPanel("2", gfx::Rect(300, 300, 150, 200)); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, panel_manager->detached_collection()->num_panels()); | 
| - | 
| -  // Create new panel. Expect panel1 is minimized such that there is enough | 
| -  // space for new panel to append to panel1. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 300, 220), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(3, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack = panel_manager->stacks().front(); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_TRUE(panel1 == stack->top_panel()); | 
| -  EXPECT_TRUE(new_panel == stack->bottom_panel()); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(new_panel->IsMinimized()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelAsDetachedDueToNoPanelToGroupWith) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 2 panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  CreateStackedPanel("1", gfx::Rect(100, 350, 200, 100), stack); | 
| -  CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| - | 
| -  // Create 2 detached panels. | 
| -  CreateDetachedPanel("3", gfx::Rect(300, 450, 200, 100)); | 
| -  CreateDetachedPanel("4", gfx::Rect(250, 150, 150, 200)); | 
| -  ASSERT_EQ(4, panel_manager->num_panels()); | 
| -  ASSERT_EQ(2, panel_manager->detached_collection()->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| - | 
| -  // Create new panel. Expect that new panel has to be created as detached due | 
| -  // to that there is not enough space from any stack or detached panel. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 300, 300), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(3, panel_manager->detached_collection()->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_TRUE(panel_manager->detached_collection()->HasPanel(new_panel)); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelFromDifferentExtension) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 test extensions. | 
| -  base::DictionaryValue empty_value; | 
| -  scoped_refptr<extensions::Extension> extension1 = | 
| -      CreateExtension(FILE_PATH_LITERAL("TestExtension1"), | 
| -                      extensions::Manifest::INTERNAL, empty_value); | 
| -  std::string extension1_app_name = | 
| -      web_app::GenerateApplicationNameFromExtensionId(extension1->id()); | 
| -  scoped_refptr<extensions::Extension> extension2 = | 
| -      CreateExtension(FILE_PATH_LITERAL("TestExtension2"), | 
| -                      extensions::Manifest::INTERNAL, empty_value); | 
| -  std::string extension2_app_name = | 
| -      web_app::GenerateApplicationNameFromExtensionId(extension2->id()); | 
| - | 
| -  // Create 2 panels from extension1. Expect that these 2 panels stack together. | 
| -  CreatePanelParams params1( | 
| -      extension1_app_name, gfx::Rect(50, 50, 100, 100), SHOW_AS_ACTIVE); | 
| -  params1.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel1 = CreatePanelWithParams(params1); | 
| -  CreatePanelParams params2( | 
| -      extension1_app_name, gfx::Rect(100, 100, 200, 100), SHOW_AS_ACTIVE); | 
| -  params2.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel2 = CreatePanelWithParams(params2); | 
| -  EXPECT_EQ(2, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack1 = panel_manager->stacks().back(); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel1)); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel2)); | 
| - | 
| -  // Create 2 panels from extension2. Expect that these 2 panels form a separate | 
| -  // stack. | 
| -  CreatePanelParams params3( | 
| -      extension2_app_name, gfx::Rect(350, 350, 100, 100), SHOW_AS_ACTIVE); | 
| -  params3.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel3 = CreatePanelWithParams(params3); | 
| -  CreatePanelParams params4( | 
| -      extension2_app_name, gfx::Rect(100, 100, 200, 100), SHOW_AS_ACTIVE); | 
| -  params4.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel4 = CreatePanelWithParams(params4); | 
| -  EXPECT_EQ(4, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack2 = panel_manager->stacks().back(); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel3)); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel4)); | 
| - | 
| -  // Create one more panel from extension1. Expect that new panel should join | 
| -  // with the stack of panel1 and panel2. | 
| -  CreatePanelParams params5( | 
| -      extension1_app_name, gfx::Rect(0, 0, 100, 100), SHOW_AS_ACTIVE); | 
| -  params5.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel5 = CreatePanelWithParams(params5); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel5)); | 
| - | 
| -  // Create one more panel from extension2. Expect that new panel should join | 
| -  // with the stack of panel3 and panel4. | 
| -  CreatePanelParams params6( | 
| -      extension2_app_name, gfx::Rect(0, 0, 100, 100), SHOW_AS_ACTIVE); | 
| -  params6.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* panel6 = CreatePanelWithParams(params6); | 
| -  EXPECT_EQ(6, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel6)); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelFromDifferentProfile) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create a new profile. | 
| -  Profile* profile1 = browser()->profile(); | 
| -  std::unique_ptr<TestingProfile> profile2(new TestingProfile()); | 
| - | 
| -  // Create 2 panels from profile1. Expect that these 2 panels stack together. | 
| -  CreatePanelParams params1( | 
| -      "1", gfx::Rect(50, 50, 100, 100), SHOW_AS_ACTIVE); | 
| -  params1.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params1.profile = profile1; | 
| -  Panel* panel1 = CreatePanelWithParams(params1); | 
| -  CreatePanelParams params2( | 
| -      "2", gfx::Rect(100, 100, 200, 100), SHOW_AS_ACTIVE); | 
| -  params2.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params2.profile = profile1; | 
| -  Panel* panel2 = CreatePanelWithParams(params2); | 
| -  EXPECT_EQ(2, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack1 = panel_manager->stacks().back(); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel1)); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel2)); | 
| - | 
| -  // Create 2 panels from profile2. Expect that these 2 panels form a separate | 
| -  // stack. | 
| -  CreatePanelParams params3( | 
| -      "3", gfx::Rect(350, 350, 100, 100), SHOW_AS_ACTIVE); | 
| -  params3.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params3.profile = profile2.get(); | 
| -  Panel* panel3 = CreatePanelWithParams(params3); | 
| -  CreatePanelParams params4( | 
| -      "4", gfx::Rect(100, 100, 200, 100), SHOW_AS_ACTIVE); | 
| -  params4.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params4.profile = profile2.get(); | 
| -  Panel* panel4 = CreatePanelWithParams(params4); | 
| -  EXPECT_EQ(4, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  StackedPanelCollection* stack2 = panel_manager->stacks().back(); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel3)); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel4)); | 
| - | 
| -  // Create one more panel from profile1. Expect that new panel should join | 
| -  // with the stack of panel1 and panel2. | 
| -  CreatePanelParams params5( | 
| -      "5", gfx::Rect(0, 0, 100, 100), SHOW_AS_ACTIVE); | 
| -  params5.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params5.profile = profile1; | 
| -  Panel* panel5 = CreatePanelWithParams(params5); | 
| -  EXPECT_EQ(5, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_TRUE(stack1->HasPanel(panel5)); | 
| - | 
| -  // Create one more panel from profile2. Expect that new panel should join | 
| -  // with the stack of panel3 and panel4. | 
| -  CreatePanelParams params6( | 
| -      "6", gfx::Rect(0, 0, 100, 100), SHOW_AS_ACTIVE); | 
| -  params6.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  params6.profile = profile2.get(); | 
| -  Panel* panel6 = CreatePanelWithParams(params6); | 
| -  EXPECT_EQ(6, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->num_stacks()); | 
| -  EXPECT_TRUE(stack2->HasPanel(panel6)); | 
| - | 
| -  // Wait until all panels created from profile2 get fully closed since profile2 | 
| -  // is going out of scope at the exit of this function. | 
| -  CloseWindowAndWait(panel3); | 
| -  CloseWindowAndWait(panel4); | 
| -  CloseWindowAndWait(panel6); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelNotWithSystemMinimizedDetachedPanel) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 1 detached panel. | 
| -  Panel* panel1 = CreateDetachedPanel("1", gfx::Rect(200, 50, 250, 150)); | 
| -  EXPECT_EQ(1, panel_manager->num_panels()); | 
| -  EXPECT_EQ(0, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, panel1->collection()->type()); | 
| - | 
| -  // Minimize the detached panel by system. | 
| -  panel1->OnMinimizeButtonClicked(panel::NO_MODIFIER); | 
| - | 
| -  // Create new panel. Expect that new panel will open as a separate detached | 
| -  // panel, instead of being grouped with the system-minimized detached panel. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(2, panel_manager->num_panels()); | 
| -  EXPECT_EQ(2, panel_manager->detached_collection()->num_panels()); | 
| -  EXPECT_EQ(0, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, panel1->collection()->type()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, new_panel->collection()->type()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       AddNewPanelNotWithSystemMinimizedStack) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 2 panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 90, 200, 150), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  EXPECT_EQ(2, panel_manager->num_panels()); | 
| -  EXPECT_EQ(0, panel_manager->detached_collection()->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel1->collection()->type()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel2->collection()->type()); | 
| - | 
| -  // Minimize the stack by system. | 
| -  stack->OnMinimizeButtonClicked(panel1, panel::NO_MODIFIER); | 
| - | 
| -  // Create new panel. Expect that new panel will open as a separate detached | 
| -  // panel, instead of appending to the system-minimized stack. | 
| -  CreatePanelParams params("N", gfx::Rect(50, 50, 150, 100), SHOW_AS_ACTIVE); | 
| -  params.create_mode = PanelManager::CREATE_AS_DETACHED; | 
| -  Panel* new_panel = CreatePanelWithParams(params); | 
| -  EXPECT_EQ(3, panel_manager->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->detached_collection()->num_panels()); | 
| -  EXPECT_EQ(1, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(2, stack->num_panels()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel1->collection()->type()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel2->collection()->type()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, new_panel->collection()->type()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, ClosePanels) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  gfx::Rect panel3_initial_bounds = gfx::Rect(0, 0, 250, 120); | 
| -  Panel* panel3 = CreateStackedPanel("3", panel3_initial_bounds, stack); | 
| -  ASSERT_EQ(3, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| - | 
| -  gfx::Rect panel1_expected_bounds(panel1_initial_bounds); | 
| -  EXPECT_EQ(panel1_expected_bounds, panel1->GetBounds()); | 
| -  gfx::Rect panel2_expected_bounds(panel1_expected_bounds.x(), | 
| -                                   panel1_expected_bounds.bottom(), | 
| -                                   panel1_expected_bounds.width(), | 
| -                                   panel2_initial_bounds.height()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  gfx::Rect panel3_expected_bounds(panel2_expected_bounds.x(), | 
| -                                   panel2_expected_bounds.bottom(), | 
| -                                   panel2_expected_bounds.width(), | 
| -                                   panel3_initial_bounds.height()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Close P1. Expect that P2 and P3 should move up. | 
| -  CloseWindowAndWait(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel2->collection()->type()); | 
| -  EXPECT_EQ(PanelCollection::STACKED, panel3->collection()->type()); | 
| - | 
| -  panel2_expected_bounds.set_y(panel1_expected_bounds.y()); | 
| -  EXPECT_EQ(panel2_expected_bounds, panel2->GetBounds()); | 
| -  panel3_expected_bounds.set_y(panel2_expected_bounds.bottom()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  // Close P2. Expect that P3 should become detached and move up. | 
| -  CloseWindowAndWait(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  ASSERT_EQ(1, panel_manager->num_panels()); | 
| -  ASSERT_EQ(0, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, panel3->collection()->type()); | 
| - | 
| -  panel3_expected_bounds.set_y(panel2_expected_bounds.y()); | 
| -  EXPECT_EQ(panel3_expected_bounds, panel3->GetBounds()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -// Skip the test since active state might not be fully supported for some window | 
| -// managers. | 
| -#if defined(OS_MACOSX) | 
| -#define MAYBE_FocusNextPanelOnPanelClose DISABLED_FocusNextPanelOnPanelClose | 
| -#else | 
| -#define MAYBE_FocusNextPanelOnPanelClose FocusNextPanelOnPanelClose | 
| -#endif | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       MAYBE_FocusNextPanelOnPanelClose) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 50, 200, 200), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 150, 120), stack); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| -  ASSERT_FALSE(panel1->IsActive()); | 
| -  ASSERT_FALSE(panel2->IsActive()); | 
| -  ASSERT_TRUE(panel3->IsActive()); | 
| - | 
| -  // Close P3. Expect P2 should become active. | 
| -  CloseWindowAndWait(panel3); | 
| -  EXPECT_FALSE(panel1->IsActive()); | 
| -  EXPECT_TRUE(panel2->IsActive()); | 
| - | 
| -  // Close P2. Expect P1 should become active. | 
| -  CloseWindowAndWait(panel2); | 
| -  EXPECT_TRUE(panel1->IsActive()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -// Skip the test since active state might not be fully supported for some window | 
| -// managers. | 
| -#if defined(OS_MACOSX) | 
| -#define MAYBE_FocusNextUnminimizedPanelOnPanelClose \ | 
| -    DISABLED_FocusNextUnminimizedPanelOnPanelClose | 
| -#else | 
| -#define MAYBE_FocusNextUnminimizedPanelOnPanelClose \ | 
| -    FocusNextUnminimizedPanelOnPanelClose | 
| -#endif | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       MAYBE_FocusNextUnminimizedPanelOnPanelClose) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 3 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 50, 200, 200), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 150, 120), stack); | 
| -  ASSERT_EQ(3, stack->num_panels()); | 
| -  ASSERT_FALSE(panel1->IsActive()); | 
| -  ASSERT_FALSE(panel2->IsActive()); | 
| -  ASSERT_TRUE(panel3->IsActive()); | 
| - | 
| -  // Minimize P2. | 
| -  panel2->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| - | 
| -  // Close P3. Expect P1, not P2, should become active. | 
| -  CloseWindowAndWait(panel3); | 
| -  EXPECT_TRUE(panel1->IsActive()); | 
| -  EXPECT_FALSE(panel2->IsActive()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       ExpandCollapsedTopPanelOnBottomPanelClose) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  Panel* panel1 = CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| - | 
| -  // Collapse top panel. | 
| -  int original_panel1_height = panel1->GetBounds().height(); | 
| -  panel1->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| - | 
| -  // Close bottom panel. Expect that top panel should become detached and | 
| -  // expanded. | 
| -  CloseWindowAndWait(panel2); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  EXPECT_EQ(1, panel_manager->num_panels()); | 
| -  EXPECT_EQ(0, panel_manager->num_stacks()); | 
| -  EXPECT_EQ(PanelCollection::DETACHED, panel1->collection()->type()); | 
| -  EXPECT_FALSE(panel1->IsMinimized()); | 
| -  EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); | 
| -  EXPECT_EQ(original_panel1_height, panel1->GetBounds().height()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -// The activation waiting logic does not work well on MacOSX. Disabled for now. | 
| -#if defined(OS_MACOSX) | 
| -#define MAYBE_FocusCollapsedStackedPanel DISABLED_FocusCollapsedStackedPanel | 
| -#else | 
| -#define MAYBE_FocusCollapsedStackedPanel FocusCollapsedStackedPanel | 
| -#endif | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       MAYBE_FocusCollapsedStackedPanel) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  gfx::Rect panel1_initial_bounds = gfx::Rect(100, 50, 200, 150); | 
| -  CreateStackedPanel("1", panel1_initial_bounds, stack); | 
| -  gfx::Rect panel2_initial_bounds = gfx::Rect(0, 0, 150, 100); | 
| -  Panel* panel2 = CreateStackedPanel("2", panel2_initial_bounds, stack); | 
| -  ASSERT_EQ(2, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(2, stack->num_panels()); | 
| - | 
| -  // Collapse a panel. | 
| -  panel2->Minimize(); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_FALSE(panel2->IsActive()); | 
| - | 
| -  // Focus the panel. Expect the panel is expanded. | 
| -  panel2->Activate(); | 
| -  WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); | 
| -  EXPECT_FALSE(panel2->IsMinimized()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       UpdateStackedPanelsOnPrimaryDisplayChange) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create one stack with 5 panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(50, 50, 700, 100), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 100, 100), stack); | 
| -  Panel* panel3 = CreateStackedPanel("3", gfx::Rect(0, 0, 100, 100), stack); | 
| -  Panel* panel4 = CreateStackedPanel("4", gfx::Rect(0, 0, 100, 100), stack); | 
| -  Panel* panel5 = CreateStackedPanel("5", gfx::Rect(0, 0, 100, 100), stack); | 
| -  ASSERT_EQ(5, panel_manager->num_panels()); | 
| -  ASSERT_EQ(1, panel_manager->num_stacks()); | 
| -  ASSERT_EQ(5, stack->num_panels()); | 
| - | 
| -  // Make the primary display smaller. | 
| -  // Expect that all panels except P5 should be collapsed and their bounds | 
| -  // should be updated. | 
| -  int new_primary_area_width = 500; | 
| -  gfx::Rect primary_display_area(0, 0, new_primary_area_width, 300); | 
| -  gfx::Rect primary_work_area(0, 0, new_primary_area_width, 280); | 
| -  mock_display_settings_provider()->SetPrimaryDisplay( | 
| -      primary_display_area, primary_work_area); | 
| -  WaitForBoundsAnimationFinished(panel1); | 
| -  WaitForBoundsAnimationFinished(panel2); | 
| -  WaitForBoundsAnimationFinished(panel3); | 
| -  WaitForBoundsAnimationFinished(panel4); | 
| -  WaitForBoundsAnimationFinished(panel5); | 
| - | 
| -  EXPECT_TRUE(panel1->IsMinimized()); | 
| -  EXPECT_TRUE(panel2->IsMinimized()); | 
| -  EXPECT_TRUE(panel3->IsMinimized()); | 
| -  EXPECT_TRUE(panel4->IsMinimized()); | 
| -  EXPECT_FALSE(panel5->IsMinimized()); | 
| - | 
| -  gfx::Rect bounds1 = panel1->GetBounds(); | 
| -  EXPECT_EQ(primary_work_area.x(), bounds1.x()); | 
| -  EXPECT_LE(bounds1.x(), primary_work_area.right()); | 
| -  EXPECT_LE(primary_work_area.y(), bounds1.y()); | 
| -  EXPECT_EQ(new_primary_area_width, bounds1.width()); | 
| - | 
| -  gfx::Rect bounds2 = panel2->GetBounds(); | 
| -  EXPECT_EQ(bounds1.x(), bounds2.x()); | 
| -  EXPECT_EQ(bounds1.width(), bounds2.width()); | 
| -  EXPECT_EQ(bounds1.bottom(), bounds2.y()); | 
| - | 
| -  gfx::Rect bounds3 = panel3->GetBounds(); | 
| -  EXPECT_EQ(bounds2.x(), bounds3.x()); | 
| -  EXPECT_EQ(bounds2.width(), bounds3.width()); | 
| -  EXPECT_EQ(bounds2.bottom(), bounds3.y()); | 
| - | 
| -  gfx::Rect bounds4 = panel4->GetBounds(); | 
| -  EXPECT_EQ(bounds3.x(), bounds4.x()); | 
| -  EXPECT_EQ(bounds3.width(), bounds4.width()); | 
| -  EXPECT_EQ(bounds3.bottom(), bounds4.y()); | 
| - | 
| -  gfx::Rect bounds5 = panel5->GetBounds(); | 
| -  EXPECT_EQ(bounds4.x(), bounds5.x()); | 
| -  EXPECT_EQ(bounds4.width(), bounds5.width()); | 
| -  EXPECT_EQ(bounds4.bottom(), bounds5.y()); | 
| -  EXPECT_LE(bounds5.bottom(), primary_work_area.bottom()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
| - | 
| -IN_PROC_BROWSER_TEST_F(StackedPanelBrowserTest, | 
| -                       KeepShowingStackedPanelCreatedBeforeFullScreenMode) { | 
| -  PanelManager* panel_manager = PanelManager::GetInstance(); | 
| - | 
| -  // Create 2 stacked panels. | 
| -  StackedPanelCollection* stack = panel_manager->CreateStack(); | 
| -  Panel* panel1 = CreateStackedPanel("1", gfx::Rect(100, 50, 200, 150), stack); | 
| -  Panel* panel2 = CreateStackedPanel("2", gfx::Rect(0, 0, 150, 100), stack); | 
| -  std::unique_ptr<NativePanelTesting> panel1_testing( | 
| -      CreateNativePanelTesting(panel1)); | 
| -  std::unique_ptr<NativePanelTesting> panel2_testing( | 
| -      CreateNativePanelTesting(panel2)); | 
| - | 
| -  // Panels should be visible at first. | 
| -  EXPECT_TRUE(panel1_testing->IsWindowVisible()); | 
| -  EXPECT_TRUE(panel2_testing->IsWindowVisible()); | 
| - | 
| -  // Panels' visibility should not be affected when entering full-screen mode. | 
| -  mock_display_settings_provider()->EnableFullScreenMode(true); | 
| -  EXPECT_TRUE(panel1_testing->IsWindowVisible()); | 
| -  EXPECT_TRUE(panel2_testing->IsWindowVisible()); | 
| - | 
| -  // Panels' visibility should not be affected when leaving full-screen mode. | 
| -  mock_display_settings_provider()->EnableFullScreenMode(false); | 
| -  EXPECT_TRUE(panel1_testing->IsWindowVisible()); | 
| -  EXPECT_TRUE(panel2_testing->IsWindowVisible()); | 
| - | 
| -  panel_manager->CloseAll(); | 
| -} | 
|  |