Index: chrome/browser/ui/panels/panel_browsertest.cc |
diff --git a/chrome/browser/ui/panels/panel_browsertest.cc b/chrome/browser/ui/panels/panel_browsertest.cc |
deleted file mode 100644 |
index 954a9e5c9ed616794790fca796f495c652609ebb..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/panels/panel_browsertest.cc |
+++ /dev/null |
@@ -1,1769 +0,0 @@ |
-// Copyright (c) 2012 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 <stddef.h> |
- |
-#include "base/bind.h" |
-#include "base/run_loop.h" |
-#include "base/strings/utf_string_conversions.h" |
-#include "build/build_config.h" |
-#include "chrome/app/chrome_command_ids.h" |
-#include "chrome/browser/chrome_notification_types.h" |
-#include "chrome/browser/devtools/devtools_window.h" |
-#include "chrome/browser/extensions/extension_apitest.h" |
-#include "chrome/browser/net/url_request_mock_util.h" |
-#include "chrome/browser/prefs/browser_prefs.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_commands.h" |
-#include "chrome/browser/ui/browser_finder.h" |
-#include "chrome/browser/ui/browser_list.h" |
-#include "chrome/browser/ui/browser_window.h" |
-#include "chrome/browser/ui/panels/base_panel_browser_test.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/test_panel_active_state_observer.h" |
-#include "chrome/browser/web_applications/web_app.h" |
-#include "chrome/common/chrome_switches.h" |
-#include "chrome/common/url_constants.h" |
-#include "chrome/grit/generated_resources.h" |
-#include "chrome/test/base/interactive_test_utils.h" |
-#include "chrome/test/base/ui_test_utils.h" |
-#include "components/app_modal/app_modal_dialog.h" |
-#include "components/app_modal/native_app_modal_dialog.h" |
-#include "components/prefs/pref_service.h" |
-#include "content/public/browser/native_web_keyboard_event.h" |
-#include "content/public/browser/notification_service.h" |
-#include "content/public/browser/web_contents.h" |
-#include "content/public/common/url_constants.h" |
-#include "content/public/test/browser_test_utils.h" |
-#include "extensions/browser/extension_registry.h" |
-#include "extensions/common/constants.h" |
-#include "net/test/url_request/url_request_mock_http_job.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "ui/base/hit_test.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/events/event.h" |
-#include "ui/events/event_utils.h" |
-#include "ui/events/keycodes/dom/dom_code.h" |
- |
-using content::WebContents; |
- |
-class PanelBrowserTest : public BasePanelBrowserTest { |
- public: |
- PanelBrowserTest() : BasePanelBrowserTest() { |
- } |
- |
- protected: |
- // Helper function for debugging. |
- void PrintAllPanelBounds() { |
- const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels(); |
- DLOG(WARNING) << "PanelBounds:"; |
- for (size_t i = 0; i < panels.size(); ++i) { |
- DLOG(WARNING) << "#=" << i |
- << ", ptr=" << panels[i] |
- << ", x=" << panels[i]->GetBounds().x() |
- << ", y=" << panels[i]->GetBounds().y() |
- << ", width=" << panels[i]->GetBounds().width() |
- << ", height" << panels[i]->GetBounds().height(); |
- } |
- } |
- |
- std::vector<gfx::Rect> GetAllPanelBounds() { |
- std::vector<Panel*> panels = PanelManager::GetInstance()->panels(); |
- std::vector<gfx::Rect> bounds; |
- for (size_t i = 0; i < panels.size(); i++) |
- bounds.push_back(panels[i]->GetBounds()); |
- return bounds; |
- } |
- |
- std::vector<gfx::Rect> AddXDeltaToBounds(const std::vector<gfx::Rect>& bounds, |
- const std::vector<int>& delta_x) { |
- std::vector<gfx::Rect> new_bounds = bounds; |
- for (size_t i = 0; i < bounds.size(); ++i) |
- new_bounds[i].Offset(delta_x[i], 0); |
- return new_bounds; |
- } |
- |
- std::vector<Panel::ExpansionState> GetAllPanelExpansionStates() { |
- std::vector<Panel*> panels = PanelManager::GetInstance()->panels(); |
- std::vector<Panel::ExpansionState> expansion_states; |
- for (size_t i = 0; i < panels.size(); i++) |
- expansion_states.push_back(panels[i]->expansion_state()); |
- return expansion_states; |
- } |
- |
- std::vector<bool> GetAllPanelActiveStates() { |
- std::vector<Panel*> panels = PanelManager::GetInstance()->panels(); |
- std::vector<bool> active_states; |
- for (size_t i = 0; i < panels.size(); i++) |
- active_states.push_back(panels[i]->IsActive()); |
- return active_states; |
- } |
- |
- std::vector<bool> ProduceExpectedActiveStates( |
- int expected_active_panel_index) { |
- std::vector<Panel*> panels = PanelManager::GetInstance()->panels(); |
- std::vector<bool> active_states; |
- for (int i = 0; i < static_cast<int>(panels.size()); i++) |
- active_states.push_back(i == expected_active_panel_index); |
- return active_states; |
- } |
- |
- void WaitForPanelActiveStates(const std::vector<bool>& old_states, |
- const std::vector<bool>& new_states) { |
- DCHECK(old_states.size() == new_states.size()); |
- std::vector<Panel*> panels = PanelManager::GetInstance()->panels(); |
- for (size_t i = 0; i < old_states.size(); i++) { |
- if (old_states[i] != new_states[i]){ |
- WaitForPanelActiveState( |
- panels[i], new_states[i] ? SHOW_AS_ACTIVE : SHOW_AS_INACTIVE); |
- } |
- } |
- } |
- |
- void TestMinimizeRestore() { |
- // This constant is used to generate a point 'sufficiently higher then |
- // top edge of the panel'. On some platforms (Mac) we extend hover area |
- // a bit above the minimized panel as well, so it takes significant |
- // distance to 'move mouse out' of the hover-sensitive area. |
- const int kFarEnoughFromHoverArea = 153; |
- |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- std::vector<Panel*> panels = panel_manager->panels(); |
- std::vector<gfx::Rect> test_begin_bounds = GetAllPanelBounds(); |
- std::vector<gfx::Rect> expected_bounds = test_begin_bounds; |
- std::vector<Panel::ExpansionState> expected_expansion_states( |
- panels.size(), Panel::EXPANDED); |
- std::vector<NativePanelTesting*> native_panels_testing(panels.size()); |
- for (size_t i = 0; i < panels.size(); ++i) { |
- native_panels_testing[i] = CreateNativePanelTesting(panels[i]); |
- } |
- |
- // Verify titlebar click does not minimize. |
- for (size_t index = 0; index < panels.size(); ++index) { |
- // Press left mouse button. Verify nothing changed. |
- native_panels_testing[index]->PressLeftMouseButtonTitlebar( |
- panels[index]->GetBounds().origin()); |
- EXPECT_EQ(expected_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(expected_expansion_states, GetAllPanelExpansionStates()); |
- |
- // Release mouse button. Verify nothing changed. |
- native_panels_testing[index]->ReleaseMouseButtonTitlebar(); |
- EXPECT_EQ(expected_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(expected_expansion_states, GetAllPanelExpansionStates()); |
- } |
- |
- // Minimize all panels for next stage in test. |
- for (size_t index = 0; index < panels.size(); ++index) { |
- panels[index]->Minimize(); |
- expected_bounds[index].set_height(panel::kMinimizedPanelHeight); |
- expected_bounds[index].set_y( |
- test_begin_bounds[index].y() + |
- test_begin_bounds[index].height() - panel::kMinimizedPanelHeight); |
- expected_expansion_states[index] = Panel::MINIMIZED; |
- EXPECT_EQ(expected_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(expected_expansion_states, GetAllPanelExpansionStates()); |
- } |
- |
- // Setup bounds and expansion states for minimized and titlebar-only |
- // states. |
- std::vector<Panel::ExpansionState> titlebar_exposed_states( |
- panels.size(), Panel::TITLE_ONLY); |
- std::vector<gfx::Rect> minimized_bounds = expected_bounds; |
- std::vector<Panel::ExpansionState> minimized_states( |
- panels.size(), Panel::MINIMIZED); |
- std::vector<gfx::Rect> titlebar_exposed_bounds = test_begin_bounds; |
- for (size_t index = 0; index < panels.size(); ++index) { |
- titlebar_exposed_bounds[index].set_height( |
- panels[index]->native_panel()->TitleOnlyHeight()); |
- titlebar_exposed_bounds[index].set_y( |
- test_begin_bounds[index].y() + |
- test_begin_bounds[index].height() - |
- panels[index]->native_panel()->TitleOnlyHeight()); |
- } |
- |
- // Test hover. All panels are currently in minimized state. |
- EXPECT_EQ(minimized_states, GetAllPanelExpansionStates()); |
- for (size_t index = 0; index < panels.size(); ++index) { |
- // Hover mouse on minimized panel. |
- // Verify titlebar is exposed on all panels. |
- gfx::Point hover_point(panels[index]->GetBounds().origin()); |
- MoveMouseAndWaitForExpansionStateChange(panels[index], hover_point); |
- EXPECT_EQ(titlebar_exposed_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(titlebar_exposed_states, GetAllPanelExpansionStates()); |
- |
- // Hover mouse above the panel. Verify all panels are minimized. |
- hover_point.set_y( |
- panels[index]->GetBounds().y() - kFarEnoughFromHoverArea); |
- MoveMouseAndWaitForExpansionStateChange(panels[index], hover_point); |
- EXPECT_EQ(minimized_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(minimized_states, GetAllPanelExpansionStates()); |
- |
- // Hover mouse below minimized panel. |
- // Verify titlebar is exposed on all panels. |
- hover_point.set_y(panels[index]->GetBounds().y() + |
- panels[index]->GetBounds().height() + 5); |
- MoveMouseAndWaitForExpansionStateChange(panels[index], hover_point); |
- EXPECT_EQ(titlebar_exposed_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(titlebar_exposed_states, GetAllPanelExpansionStates()); |
- |
- // Hover below titlebar exposed panel. Verify nothing changed. |
- hover_point.set_y(panels[index]->GetBounds().y() + |
- panels[index]->GetBounds().height() + 6); |
- MoveMouse(hover_point); |
- EXPECT_EQ(titlebar_exposed_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(titlebar_exposed_states, GetAllPanelExpansionStates()); |
- |
- // Hover mouse above panel. Verify all panels are minimized. |
- hover_point.set_y( |
- panels[index]->GetBounds().y() - kFarEnoughFromHoverArea); |
- MoveMouseAndWaitForExpansionStateChange(panels[index], hover_point); |
- EXPECT_EQ(minimized_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(minimized_states, GetAllPanelExpansionStates()); |
- } |
- |
- // Test restore. All panels are currently in minimized state. |
- for (size_t index = 0; index < panels.size(); ++index) { |
- // Hover on the last panel. This is to test the case of clicking on the |
- // panel when it's in titlebar exposed state. |
- if (index == panels.size() - 1) |
- MoveMouse(minimized_bounds[index].origin()); |
- |
- // Click minimized or title bar exposed panel as the case may be. |
- // Verify panel is restored to its original size. |
- native_panels_testing[index]->PressLeftMouseButtonTitlebar( |
- panels[index]->GetBounds().origin()); |
- native_panels_testing[index]->ReleaseMouseButtonTitlebar(); |
- expected_bounds[index].set_height( |
- test_begin_bounds[index].height()); |
- expected_bounds[index].set_y(test_begin_bounds[index].y()); |
- expected_expansion_states[index] = Panel::EXPANDED; |
- EXPECT_EQ(expected_bounds, GetAllPanelBounds()); |
- EXPECT_EQ(expected_expansion_states, GetAllPanelExpansionStates()); |
- |
- // Hover again on the last panel which is now restored, to reset the |
- // titlebar exposed state. |
- if (index == panels.size() - 1) |
- MoveMouse(minimized_bounds[index].origin()); |
- } |
- |
- // The below could be separate tests, just adding a TODO here for tracking. |
- // TODO(prasadt): Add test for dragging when in titlebar exposed state. |
- // TODO(prasadt): Add test in presence of auto hiding task bar. |
- |
- for (size_t i = 0; i < panels.size(); ++i) |
- delete native_panels_testing[i]; |
- } |
-}; |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CheckDockedPanelProperties) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- DockedPanelCollection* docked_collection = panel_manager->docked_collection(); |
- |
- // Create 3 docked panels that are in expanded, title-only or minimized states |
- // respectively. |
- Panel* panel1 = CreatePanelWithBounds("1", gfx::Rect(0, 0, 100, 100)); |
- Panel* panel2 = CreatePanelWithBounds("2", gfx::Rect(0, 0, 100, 100)); |
- Panel* panel3 = CreatePanelWithBounds("3", gfx::Rect(0, 0, 100, 100)); |
- panel2->SetExpansionState(Panel::TITLE_ONLY); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel2->expansion_state()); |
- panel3->SetExpansionState(Panel::MINIMIZED); |
- EXPECT_EQ(Panel::MINIMIZED, panel3->expansion_state()); |
- std::unique_ptr<NativePanelTesting> panel1_testing( |
- CreateNativePanelTesting(panel1)); |
- std::unique_ptr<NativePanelTesting> panel2_testing( |
- CreateNativePanelTesting(panel2)); |
- std::unique_ptr<NativePanelTesting> panel3_testing( |
- CreateNativePanelTesting(panel3)); |
- |
- // Ensure that the layout message can get a chance to be processed so that |
- // the button visibility can be updated. |
- base::RunLoop().RunUntilIdle(); |
- |
- EXPECT_EQ(3, panel_manager->num_panels()); |
- EXPECT_TRUE(docked_collection->HasPanel(panel1)); |
- EXPECT_TRUE(docked_collection->HasPanel(panel2)); |
- EXPECT_TRUE(docked_collection->HasPanel(panel3)); |
- |
- EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel2->expansion_state()); |
- EXPECT_EQ(Panel::MINIMIZED, panel3->expansion_state()); |
- |
- EXPECT_TRUE(panel1->IsAlwaysOnTop()); |
- EXPECT_TRUE(panel2->IsAlwaysOnTop()); |
- EXPECT_TRUE(panel3->IsAlwaysOnTop()); |
- |
- EXPECT_TRUE(panel1_testing->IsButtonVisible(panel::CLOSE_BUTTON)); |
- EXPECT_TRUE(panel2_testing->IsButtonVisible(panel::CLOSE_BUTTON)); |
- EXPECT_TRUE(panel3_testing->IsButtonVisible(panel::CLOSE_BUTTON)); |
- |
- EXPECT_TRUE(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_TRUE(panel2_testing->IsButtonVisible(panel::RESTORE_BUTTON)); |
- EXPECT_TRUE(panel3_testing->IsButtonVisible(panel::RESTORE_BUTTON)); |
- |
- // Expanded panel cannot be resized at the bottom. |
- EXPECT_EQ(panel::RESIZABLE_EXCEPT_BOTTOM, panel1->CanResizeByMouse()); |
- EXPECT_EQ(panel::NOT_RESIZABLE, panel2->CanResizeByMouse()); |
- EXPECT_EQ(panel::NOT_RESIZABLE, panel3->CanResizeByMouse()); |
- |
- EXPECT_EQ(panel::TOP_ROUNDED, panel1_testing->GetWindowCornerStyle()); |
- EXPECT_EQ(panel::TOP_ROUNDED, panel1_testing->GetWindowCornerStyle()); |
- EXPECT_EQ(panel::TOP_ROUNDED, panel3_testing->GetWindowCornerStyle()); |
- |
- EXPECT_EQ(Panel::USE_PANEL_ATTENTION, panel1->attention_mode()); |
- EXPECT_EQ(Panel::USE_PANEL_ATTENTION, panel2->attention_mode()); |
- EXPECT_EQ(Panel::USE_PANEL_ATTENTION, panel3->attention_mode()); |
- |
- panel_manager->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreatePanel) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- EXPECT_EQ(0, panel_manager->num_panels()); // No panels initially. |
- |
- Panel* panel = CreatePanel("PanelTest"); |
- EXPECT_EQ(1, panel_manager->num_panels()); |
- |
- gfx::Rect bounds = panel->GetBounds(); |
- EXPECT_GT(bounds.x(), 0); |
- EXPECT_GT(bounds.y(), 0); |
- EXPECT_GT(bounds.width(), 0); |
- EXPECT_GT(bounds.height(), 0); |
- |
- EXPECT_EQ(bounds.right(), |
- panel_manager->docked_collection()->StartingRightPosition()); |
- |
- CloseWindowAndWait(panel); |
- |
- EXPECT_EQ(0, panel_manager->num_panels()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateBigPanel) { |
- gfx::Rect work_area = PanelManager::GetInstance()-> |
- display_settings_provider()->GetPrimaryWorkArea(); |
- Panel* panel = CreatePanelWithBounds("BigPanel", work_area); |
- gfx::Rect bounds = panel->GetBounds(); |
- EXPECT_EQ(panel->max_size().width(), bounds.width()); |
- EXPECT_LT(bounds.width(), work_area.width()); |
- EXPECT_EQ(panel->max_size().height(), bounds.height()); |
- EXPECT_LT(bounds.height(), work_area.height()); |
- panel->Close(); |
-} |
- |
-class WaitForStableInitialSize : public TestPanelNotificationObserver { |
- public: |
- explicit WaitForStableInitialSize(Panel* panel) |
- : TestPanelNotificationObserver( |
- chrome::NOTIFICATION_PANEL_COLLECTION_UPDATED, |
- content::NotificationService::AllSources()), |
- panel_(panel) {} |
- ~WaitForStableInitialSize() override {} |
- |
- protected: |
- bool AtExpectedState() override { |
- return panel_->GetBounds().height() > panel_->TitleOnlyHeight(); |
- } |
- Panel* panel_; |
-}; |
- |
-class WaitForAutoResizeWider : public TestPanelNotificationObserver { |
- public: |
- explicit WaitForAutoResizeWider(Panel* panel) |
- : TestPanelNotificationObserver( |
- chrome::NOTIFICATION_PANEL_COLLECTION_UPDATED, |
- content::NotificationService::AllSources()), |
- panel_(panel), |
- initial_size_(panel->GetBounds().size()) {} |
- ~WaitForAutoResizeWider() override {} |
- |
- protected: |
- bool AtExpectedState() override { |
- return panel_->GetBounds().width() > initial_size_.width(); |
- } |
- Panel* panel_; |
- gfx::Size initial_size_; |
-}; |
- |
-class WaitForAutoResizeNarrower : public TestPanelNotificationObserver { |
- public: |
- explicit WaitForAutoResizeNarrower(Panel* panel) |
- : TestPanelNotificationObserver( |
- chrome::NOTIFICATION_PANEL_COLLECTION_UPDATED, |
- content::NotificationService::AllSources()), |
- panel_(panel), |
- initial_size_(panel->GetBounds().size()) {} |
- ~WaitForAutoResizeNarrower() override {} |
- |
- protected: |
- bool AtExpectedState() override { |
- return panel_->GetBounds().width() < initial_size_.width(); |
- } |
- Panel* panel_; |
- gfx::Size initial_size_; |
-}; |
- |
-// crbug.com/160504 |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DISABLED_AutoResize) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- panel_manager->enable_auto_sizing(true); |
- // Bigger space is needed by this test. |
- mock_display_settings_provider()->SetPrimaryDisplay( |
- gfx::Rect(0, 0, 1200, 900), gfx::Rect(0, 0, 1200, 900)); |
- |
- // Create a test panel with web contents loaded. |
- CreatePanelParams params("PanelTest1", gfx::Rect(), SHOW_AS_ACTIVE); |
- GURL url(ui_test_utils::GetTestUrl( |
- base::FilePath(kTestDir), |
- base::FilePath(FILE_PATH_LITERAL("update-preferred-size.html")))); |
- params.url = url; |
- Panel* panel = CreatePanelWithParams(params); |
- |
- // Ensure panel has auto resized to original web content size. |
- // The resize will update the docked panel collection. |
- WaitForStableInitialSize initial_resize(panel); |
- initial_resize.Wait(); |
- gfx::Rect initial_bounds = panel->GetBounds(); |
- |
- // Expand the test page. The resize will update the docked panel collection. |
- WaitForAutoResizeWider enlarge(panel); |
- EXPECT_TRUE(content::ExecuteScript( |
- panel->GetWebContents(), "changeSize(50);")); |
- enlarge.Wait(); |
- gfx::Rect bounds_on_grow = panel->GetBounds(); |
- EXPECT_GT(bounds_on_grow.width(), initial_bounds.width()); |
- EXPECT_EQ(bounds_on_grow.height(), initial_bounds.height()); |
- |
- // Shrink the test page. The resize will update the docked panel collection. |
- WaitForAutoResizeNarrower shrink(panel); |
- EXPECT_TRUE(content::ExecuteScript( |
- panel->GetWebContents(), "changeSize(-30);")); |
- shrink.Wait(); |
- gfx::Rect bounds_on_shrink = panel->GetBounds(); |
- EXPECT_LT(bounds_on_shrink.width(), bounds_on_grow.width()); |
- EXPECT_GT(bounds_on_shrink.width(), initial_bounds.width()); |
- EXPECT_EQ(bounds_on_shrink.height(), initial_bounds.height()); |
- |
- // Verify resizing turns off auto-resizing and panel no longer auto-resizes. |
- gfx::Rect previous_bounds = panel->GetBounds(); |
- // These should be identical because the panel is expanded. |
- EXPECT_EQ(previous_bounds.size(), panel->GetRestoredBounds().size()); |
- gfx::Size new_size(previous_bounds.size()); |
- new_size.Enlarge(5, 5); |
- gfx::Rect new_bounds(previous_bounds.origin(), new_size); |
- panel->SetBounds(new_bounds); |
- EXPECT_FALSE(panel->auto_resizable()); |
- EXPECT_EQ(new_bounds.size(), panel->GetBounds().size()); |
- EXPECT_EQ(new_bounds.size(), panel->GetRestoredBounds().size()); |
- |
- // Turn back on auto-resize and verify that panel auto resizes. |
- content::WindowedNotificationObserver auto_resize_enabled( |
- chrome::NOTIFICATION_PANEL_COLLECTION_UPDATED, |
- content::NotificationService::AllSources()); |
- panel->SetAutoResizable(true); |
- auto_resize_enabled.Wait(); |
- gfx::Rect bounds_auto_resize_enabled = panel->GetBounds(); |
- EXPECT_EQ(bounds_on_shrink.width(), bounds_auto_resize_enabled.width()); |
- EXPECT_EQ(bounds_on_shrink.height(), bounds_auto_resize_enabled.height()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ResizePanel) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- panel_manager->enable_auto_sizing(true); |
- |
- Panel* panel = CreatePanel("TestPanel"); |
- EXPECT_TRUE(panel->auto_resizable()); |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- |
- // Verify resizing turns off auto-resizing and that it works. |
- gfx::Rect original_bounds = panel->GetBounds(); |
- // These should be identical because the panel is expanded. |
- EXPECT_EQ(original_bounds.size(), panel->GetRestoredBounds().size()); |
- gfx::Size new_size(original_bounds.size()); |
- new_size.Enlarge(5, 5); |
- gfx::Rect new_bounds(original_bounds.origin(), new_size); |
- panel->SetBounds(new_bounds); |
- EXPECT_FALSE(panel->auto_resizable()); |
- EXPECT_EQ(new_bounds.size(), panel->GetBounds().size()); |
- EXPECT_EQ(new_bounds.size(), panel->GetRestoredBounds().size()); |
- |
- // Verify current height unaffected when panel is not expanded. |
- panel->SetExpansionState(Panel::MINIMIZED); |
- int original_height = panel->GetBounds().height(); |
- new_size.Enlarge(5, 5); |
- new_bounds.set_size(new_size); |
- panel->SetBounds(new_bounds); |
- EXPECT_EQ(new_bounds.size().width(), panel->GetBounds().width()); |
- EXPECT_EQ(original_height, panel->GetBounds().height()); |
- EXPECT_EQ(new_bounds.size(), panel->GetRestoredBounds().size()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, AnimateBounds) { |
- // Create a detached panel, instead of docked panel because it cannot be |
- // moved to any location. |
- Panel* panel = CreateDetachedPanel("1", gfx::Rect(200, 100, 100, 100)); |
- std::unique_ptr<NativePanelTesting> panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- // Validates that no animation should be triggered when the panel is being |
- // dragged. |
- gfx::Point mouse_location(panel->GetBounds().origin()); |
- panel_testing->PressLeftMouseButtonTitlebar(mouse_location); |
- panel_testing->DragTitlebar(mouse_location + gfx::Vector2d(-100, 5)); |
- EXPECT_FALSE(panel_testing->IsAnimatingBounds()); |
- panel_testing->FinishDragTitlebar(); |
- |
- // Set bounds with animation. |
- gfx::Rect bounds = gfx::Rect(10, 20, 150, 160); |
- panel->SetPanelBounds(bounds); |
- EXPECT_TRUE(panel_testing->IsAnimatingBounds()); |
- WaitForBoundsAnimationFinished(panel); |
- EXPECT_FALSE(panel_testing->IsAnimatingBounds()); |
- EXPECT_EQ(bounds, panel->GetBounds()); |
- |
- // Set bounds without animation. |
- bounds = gfx::Rect(30, 40, 200, 220); |
- panel->SetPanelBoundsInstantly(bounds); |
- EXPECT_FALSE(panel_testing->IsAnimatingBounds()); |
- EXPECT_EQ(bounds, panel->GetBounds()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, RestoredBounds) { |
- Panel* panel = CreatePanelWithBounds("PanelTest", gfx::Rect(0, 0, 100, 100)); |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds()); |
- |
- panel->SetExpansionState(Panel::MINIMIZED); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- gfx::Rect bounds = panel->GetBounds(); |
- gfx::Rect restored = panel->GetRestoredBounds(); |
- EXPECT_EQ(bounds.x(), restored.x()); |
- EXPECT_GT(bounds.y(), restored.y()); |
- EXPECT_EQ(bounds.width(), restored.width()); |
- EXPECT_LT(bounds.height(), restored.height()); |
- |
- panel->SetExpansionState(Panel::TITLE_ONLY); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
- bounds = panel->GetBounds(); |
- restored = panel->GetRestoredBounds(); |
- EXPECT_EQ(bounds.x(), restored.x()); |
- EXPECT_GT(bounds.y(), restored.y()); |
- EXPECT_EQ(bounds.width(), restored.width()); |
- EXPECT_LT(bounds.height(), restored.height()); |
- |
- panel->SetExpansionState(Panel::MINIMIZED); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- bounds = panel->GetBounds(); |
- restored = panel->GetRestoredBounds(); |
- EXPECT_EQ(bounds.x(), restored.x()); |
- EXPECT_GT(bounds.y(), restored.y()); |
- EXPECT_EQ(bounds.width(), restored.width()); |
- EXPECT_LT(bounds.height(), restored.height()); |
- |
- panel->SetExpansionState(Panel::EXPANDED); |
- EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds()); |
- |
- // Verify that changing the panel bounds does not affect the restored height. |
- int saved_restored_height = restored.height(); |
- panel->SetExpansionState(Panel::MINIMIZED); |
- bounds = gfx::Rect(10, 20, 300, 400); |
- panel->SetPanelBounds(bounds); |
- EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height()); |
- |
- panel->SetExpansionState(Panel::TITLE_ONLY); |
- bounds = gfx::Rect(20, 30, 100, 200); |
- panel->SetPanelBounds(bounds); |
- EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height()); |
- |
- panel->SetExpansionState(Panel::EXPANDED); |
- bounds = gfx::Rect(40, 60, 300, 400); |
- panel->SetPanelBounds(bounds); |
- EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height()); |
- panel->set_full_size(bounds.size()); |
- EXPECT_NE(saved_restored_height, panel->GetRestoredBounds().height()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestore) { |
- // Test with one panel. |
- CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); |
- TestMinimizeRestore(); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreTwoPanels) { |
- // Test with two panels. |
- CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); |
- CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110)); |
- TestMinimizeRestore(); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreThreePanels) { |
- // Test with three panels. |
- CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); |
- CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110)); |
- CreatePanelWithBounds("PanelTest3", gfx::Rect(0, 0, 120, 120)); |
- TestMinimizeRestore(); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreButtonClick) { |
- // Test with three panels. |
- Panel* panel1 = CreatePanel("PanelTest1"); |
- Panel* panel2 = CreatePanel("PanelTest2"); |
- Panel* panel3 = CreatePanel("PanelTest3"); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click restore button on an expanded panel. Expect no change. |
- panel1->OnRestoreButtonClicked(panel::NO_MODIFIER); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click minimize button on an expanded panel. Only that panel will minimize. |
- panel1->OnMinimizeButtonClicked(panel::NO_MODIFIER); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click minimize button on a minimized panel. Expect no change. |
- panel1->OnMinimizeButtonClicked(panel::NO_MODIFIER); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Minimize all panels by clicking minimize button on an expanded panel |
- // with the apply-all modifier. |
- panel2->OnMinimizeButtonClicked(panel::APPLY_TO_ALL); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- // Click restore button on a minimized panel. Only that panel will restore. |
- panel2->OnRestoreButtonClicked(panel::NO_MODIFIER); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- // Restore all panels by clicking restore button on a minimized panel. |
- panel3->OnRestoreButtonClicked(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
-} |
- |
-// http://crbug.com/243891 flaky on Linux |
-#if defined(OS_LINUX) |
-#define MAYBE_RestoreAllWithTitlebarClick DISABLED_RestoreAllWithTitlebarClick |
-#else |
-#define MAYBE_RestoreAllWithTitlebarClick RestoreAllWithTitlebarClick |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_RestoreAllWithTitlebarClick) { |
- // Test with three panels. |
- Panel* panel1 = CreatePanel("PanelTest1"); |
- Panel* panel2 = CreatePanel("PanelTest2"); |
- Panel* panel3 = CreatePanel("PanelTest3"); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- std::unique_ptr<NativePanelTesting> test_panel1( |
- CreateNativePanelTesting(panel1)); |
- std::unique_ptr<NativePanelTesting> test_panel2( |
- CreateNativePanelTesting(panel2)); |
- std::unique_ptr<NativePanelTesting> test_panel3( |
- CreateNativePanelTesting(panel3)); |
- |
- // Click on an expanded panel's titlebar using the apply-all modifier. |
- // Verify expansion state is unchanged. |
- test_panel2->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel2->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click on a minimized panel's titlebar using the apply-all modifier. |
- panel1->Minimize(); |
- panel2->Minimize(); |
- panel3->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- // Nothing changes until mouse is released. |
- test_panel1->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- // Verify all panels restored when mouse is released. |
- test_panel1->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Minimize a single panel. Then click on expanded panel with apply-all |
- // modifier. Verify nothing changes. |
- panel1->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- test_panel2->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel2->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Minimize another panel. Then click on a minimized panel with apply-all |
- // modifier to restore all panels. |
- panel2->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- test_panel2->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel2->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click on the single minimized panel. Verify all are restored. |
- panel1->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- test_panel1->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel1->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Click on the single expanded panel. Verify nothing changes. |
- panel1->Minimize(); |
- panel3->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- test_panel2->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel2->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- // Hover over a minimized panel and click on the titlebar while it is in |
- // title-only mode. Should restore all panels. |
- panel2->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- MoveMouseAndWaitForExpansionStateChange(panel2, panel2->GetBounds().origin()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel2->expansion_state()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel3->expansion_state()); |
- |
- test_panel3->PressLeftMouseButtonTitlebar(panel3->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel3->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- |
- // Draw attention to a minimized panel. Click on a minimized panel that is |
- // not drawing attention. Verify restore all applies without affecting |
- // draw attention. |
- panel1->Minimize(); |
- panel2->Minimize(); |
- panel3->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- panel1->FlashFrame(true); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- |
- test_panel2->PressLeftMouseButtonTitlebar(panel2->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel2->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- |
- // Restore all panels by clicking on the minimized panel that is drawing |
- // attention. Verify restore all applies and clears draw attention. |
- panel1->Minimize(); |
- panel2->Minimize(); |
- panel3->Minimize(); |
- EXPECT_TRUE(panel1->IsMinimized()); |
- EXPECT_TRUE(panel2->IsMinimized()); |
- EXPECT_TRUE(panel3->IsMinimized()); |
- |
- test_panel1->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin(), |
- panel::APPLY_TO_ALL); |
- test_panel1->ReleaseMouseButtonTitlebar(panel::APPLY_TO_ALL); |
- EXPECT_FALSE(panel1->IsMinimized()); |
- EXPECT_FALSE(panel2->IsMinimized()); |
- EXPECT_FALSE(panel3->IsMinimized()); |
- EXPECT_FALSE(panel1->IsDrawingAttention()); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- MinimizeRestoreOnAutoHidingDesktopBar) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- DockedPanelCollection* docked_collection = panel_manager->docked_collection(); |
- int expected_bottom_on_expanded = docked_collection->work_area().bottom(); |
- int expected_bottom_on_title_only = expected_bottom_on_expanded; |
- int expected_bottom_on_minimized = expected_bottom_on_expanded; |
- |
- // Turn on auto-hiding. |
- static const int bottom_bar_thickness = 40; |
- mock_display_settings_provider()->EnableAutoHidingDesktopBar( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_BOTTOM, |
- true, |
- bottom_bar_thickness); |
- expected_bottom_on_title_only -= bottom_bar_thickness; |
- |
- Panel* panel = CreatePanel("1"); |
- int initial_height = panel->GetBounds().height(); |
- |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- EXPECT_EQ(expected_bottom_on_expanded, panel->GetBounds().bottom()); |
- |
- panel->Minimize(); |
- WaitForBoundsAnimationFinished(panel); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- EXPECT_EQ(panel::kMinimizedPanelHeight, panel->GetBounds().height()); |
- EXPECT_EQ(expected_bottom_on_minimized, panel->GetBounds().bottom()); |
- |
- panel->SetExpansionState(Panel::TITLE_ONLY); |
- WaitForBoundsAnimationFinished(panel); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
- EXPECT_EQ(panel::kTitlebarHeight, panel->GetBounds().height()); |
- EXPECT_EQ(expected_bottom_on_title_only, panel->GetBounds().bottom()); |
- |
- panel->Restore(); |
- WaitForBoundsAnimationFinished(panel); |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- EXPECT_EQ(initial_height, panel->GetBounds().height()); |
- EXPECT_EQ(expected_bottom_on_expanded, panel->GetBounds().bottom()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ChangeAutoHideTaskBarThickness) { |
- PanelManager* manager = PanelManager::GetInstance(); |
- DockedPanelCollection* docked_collection = manager->docked_collection(); |
- int initial_starting_right_position = |
- docked_collection->StartingRightPosition(); |
- |
- int bottom_bar_thickness = 20; |
- int right_bar_thickness = 30; |
- mock_display_settings_provider()->EnableAutoHidingDesktopBar( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_BOTTOM, |
- true, |
- bottom_bar_thickness); |
- mock_display_settings_provider()->EnableAutoHidingDesktopBar( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_RIGHT, |
- true, |
- right_bar_thickness); |
- EXPECT_EQ(initial_starting_right_position, |
- docked_collection->StartingRightPosition()); |
- |
- Panel* panel = CreatePanel("PanelTest"); |
- panel->SetExpansionState(Panel::TITLE_ONLY); |
- WaitForBoundsAnimationFinished(panel); |
- |
- EXPECT_EQ(docked_collection->work_area().bottom() - bottom_bar_thickness, |
- panel->GetBounds().bottom()); |
- EXPECT_EQ(docked_collection->StartingRightPosition(), |
- panel->GetBounds().right()); |
- |
- initial_starting_right_position = docked_collection->StartingRightPosition(); |
- int bottom_bar_thickness_delta = 10; |
- bottom_bar_thickness += bottom_bar_thickness_delta; |
- int right_bar_thickness_delta = 15; |
- right_bar_thickness += right_bar_thickness_delta; |
- mock_display_settings_provider()->SetDesktopBarThickness( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_BOTTOM, |
- bottom_bar_thickness); |
- mock_display_settings_provider()->SetDesktopBarThickness( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_RIGHT, |
- right_bar_thickness); |
- base::MessageLoopForUI::current()->RunUntilIdle(); |
- EXPECT_EQ(initial_starting_right_position, |
- docked_collection->StartingRightPosition()); |
- EXPECT_EQ(docked_collection->work_area().bottom() - bottom_bar_thickness, |
- panel->GetBounds().bottom()); |
- EXPECT_EQ(docked_collection->StartingRightPosition(), |
- panel->GetBounds().right()); |
- |
- initial_starting_right_position = docked_collection->StartingRightPosition(); |
- bottom_bar_thickness_delta = 20; |
- bottom_bar_thickness -= bottom_bar_thickness_delta; |
- right_bar_thickness_delta = 10; |
- right_bar_thickness -= right_bar_thickness_delta; |
- mock_display_settings_provider()->SetDesktopBarThickness( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_BOTTOM, |
- bottom_bar_thickness); |
- mock_display_settings_provider()->SetDesktopBarThickness( |
- DisplaySettingsProvider::DESKTOP_BAR_ALIGNED_RIGHT, |
- right_bar_thickness); |
- base::MessageLoopForUI::current()->RunUntilIdle(); |
- EXPECT_EQ(docked_collection->StartingRightPosition(), |
- initial_starting_right_position); |
- EXPECT_EQ(docked_collection->work_area().bottom() - bottom_bar_thickness, |
- panel->GetBounds().bottom()); |
- EXPECT_EQ(docked_collection->StartingRightPosition(), |
- panel->GetBounds().right()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ActivatePanelOrTabbedWindow) { |
- if (!WmSupportWindowActivation()) { |
- LOG(WARNING) << "Skipping test due to WM problems."; |
- return; |
- } |
- |
- Panel* panel1 = CreatePanel("Panel1"); |
- Panel* panel2 = CreatePanel("Panel2"); |
- |
- // Activate main tabbed window. |
- browser()->window()->Activate(); |
- WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
- |
- // Activate a panel. |
- panel2->Activate(); |
- WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); |
- |
- // Activate the main tabbed window back. |
- browser()->window()->Activate(); |
- WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
- |
- // Activate another panel. |
- panel1->Activate(); |
- WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
- WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
- |
- // Switch focus between panels. |
- panel2->Activate(); |
- WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); |
- WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-// TODO(jianli): To be enabled for other platforms. |
-#if defined(OS_WIN) || defined(OS_LINUX) |
-#define MAYBE_ActivateDeactivateBasic ActivateDeactivateBasic |
-#else |
-#define MAYBE_ActivateDeactivateBasic DISABLED_ActivateDeactivateBasic |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_ActivateDeactivateBasic) { |
- if (!WmSupportWindowActivation()) { |
- LOG(WARNING) << "Skipping test due to WM problems."; |
- return; |
- } |
- |
- // Create an active panel. |
- Panel* panel = CreatePanel("PanelTest"); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); // doublecheck active state |
- EXPECT_TRUE(native_panel_testing->VerifyActiveState(true)); |
- |
- // Deactivate the panel. |
- panel->Deactivate(); |
- WaitForPanelActiveState(panel, SHOW_AS_INACTIVE); |
- |
- // On GTK there is no way to deactivate a window. So the Deactivate() call |
- // above does not actually deactivate the window, but simply lowers it. |
-#if !defined(OS_LINUX) |
- EXPECT_TRUE(native_panel_testing->VerifyActiveState(false)); |
-#endif |
- |
- // This test does not reactivate the panel because the panel might not be |
- // reactivated programmatically once it is deactivated. |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, ActivateDeactivateMultiple) { |
- if (!WmSupportWindowActivation()) { |
- LOG(WARNING) << "Skipping test due to WM problems."; |
- return; |
- } |
- |
- BrowserWindow* tabbed_window = browser()->window(); |
- |
- // Create 4 panels in the following screen layout: |
- // P3 P2 P1 P0 |
- const int kNumPanels = 4; |
- for (int i = 0; i < kNumPanels; ++i) |
- CreatePanelWithBounds(MakePanelName(i), gfx::Rect(0, 0, 100, 100)); |
- const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels(); |
- |
- std::vector<bool> expected_active_states; |
- std::vector<bool> last_active_states; |
- |
- // The last created panel, P3, should be active. |
- expected_active_states = ProduceExpectedActiveStates(3); |
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
- EXPECT_FALSE(tabbed_window->IsActive()); |
- |
- // Activating P1 should cause P3 to lose focus. |
- panels[1]->Activate(); |
- last_active_states = expected_active_states; |
- expected_active_states = ProduceExpectedActiveStates(1); |
- WaitForPanelActiveStates(last_active_states, expected_active_states); |
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
- |
- // Minimizing inactive panel P2 should not affect other panels' active states. |
- panels[2]->SetExpansionState(Panel::MINIMIZED); |
- EXPECT_EQ(expected_active_states, GetAllPanelActiveStates()); |
- EXPECT_FALSE(tabbed_window->IsActive()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionBasic) { |
- Panel* panel = CreateInactivePanel("P1"); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- // Test that the attention is drawn when the expanded panel is not in focus. |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- EXPECT_FALSE(panel->IsActive()); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- panel->FlashFrame(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); |
- |
- // Stop drawing attention. |
- panel->FlashFrame(false); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); |
- |
- // Draw attention, then minimize. Titlebar should remain visible. |
- panel->FlashFrame(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- |
- panel->Minimize(); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
- |
- // Stop drawing attention. Titlebar should no longer be visible. |
- panel->FlashFrame(false); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionWhileMinimized) { |
- Panel* panel1 = CreateInactivePanel("P1"); |
- Panel* panel2 = CreateInactivePanel("P2"); |
- |
- std::unique_ptr<NativePanelTesting> native_panel1_testing( |
- CreateNativePanelTesting(panel1)); |
- |
- // Test that the attention is drawn and the title-bar is brought up when the |
- // minimized panel is drawing attention. |
- panel1->Minimize(); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- panel1->FlashFrame(true); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_TRUE(native_panel1_testing->VerifyDrawingAttention()); |
- |
- // Test that we cannot bring up other minimized panel if the mouse is over |
- // the panel that draws attension. |
- panel2->Minimize(); |
- gfx::Point hover_point(panel1->GetBounds().origin()); |
- MoveMouse(hover_point); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- // Test that we cannot bring down the panel that is drawing the attention. |
- hover_point.set_y(hover_point.y() - 200); |
- MoveMouse(hover_point); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- |
- // Test that the attention is cleared when activated. |
- panel1->Activate(); |
- WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
- EXPECT_FALSE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
- EXPECT_FALSE(native_panel1_testing->VerifyDrawingAttention()); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-// Verify that minimized state of a panel is correct after draw attention |
-// is stopped when there are other minimized panels. |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, StopDrawingAttentionWhileMinimized) { |
- Panel* panel1 = CreateInactivePanel("P1"); |
- Panel* panel2 = CreateInactivePanel("P2"); |
- |
- panel1->Minimize(); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- panel2->Minimize(); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- // Verify panel returns to minimized state when no longer drawing attention. |
- panel1->FlashFrame(true); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- |
- panel1->FlashFrame(false); |
- EXPECT_FALSE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- |
- // Hover over other minimized panel to bring up titlebars. |
- gfx::Point hover_point(panel2->GetBounds().origin()); |
- MoveMouseAndWaitForExpansionStateChange(panel1, hover_point); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel2->expansion_state()); |
- |
- // Verify panel keeps titlebar visible when no longer drawing attention |
- // if titlebars are up. |
- panel1->FlashFrame(true); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- |
- panel1->FlashFrame(false); |
- EXPECT_FALSE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- |
- // Move mouse away. All panels should return to minimized state. |
- hover_point.set_y(hover_point.y() - 200); |
- MoveMouseAndWaitForExpansionStateChange(panel1, hover_point); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- // Verify minimized panel that is drawing attention stays in title-only mode |
- // after attention is cleared if mouse is in the titlebar area. |
- panel1->FlashFrame(true); |
- EXPECT_TRUE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- |
- gfx::Point hover_point_in_panel(panel1->GetBounds().origin()); |
- MoveMouse(hover_point_in_panel); |
- |
- panel1->FlashFrame(false); |
- EXPECT_FALSE(panel1->IsDrawingAttention()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- // Typical user scenario will detect the mouse in the panel |
- // after attention is cleared, causing titles to pop up, so |
- // we simulate that here. |
- MoveMouseAndWaitForExpansionStateChange(panel2, hover_point_in_panel); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel1->expansion_state()); |
- EXPECT_EQ(Panel::TITLE_ONLY, panel2->expansion_state()); |
- |
- // Move mouse away and panels should go back to fully minimized state. |
- MoveMouseAndWaitForExpansionStateChange(panel1, hover_point); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionWhenActive) { |
- // Create an active panel. |
- Panel* panel = CreatePanel("P1"); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- // Test that the attention should not be drawn if the expanded panel is in |
- // focus. |
- panel->FlashFrame(true); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionResetOnActivate) { |
- Panel* panel = CreateInactivePanel("P1"); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- panel->FlashFrame(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); |
- |
- // Test that the attention is cleared when panel gets focus. |
- panel->Activate(); |
- WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- DrawAttentionMinimizedNotResetOnActivate) { |
- Panel* panel = CreateInactivePanel("P1"); |
- |
- panel->Minimize(); |
- EXPECT_TRUE(panel->IsMinimized()); |
- panel->FlashFrame(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- |
- // Simulate panel being activated while minimized. Cannot call |
- // Activate() as that expands the panel. |
- panel->OnActiveStateChanged(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); // Unchanged. |
- |
- // Unminimize panel to show that attention would have been cleared |
- // if panel had not been minimized. |
- panel->Restore(); |
- EXPECT_FALSE(panel->IsMinimized()); |
- EXPECT_TRUE(panel->IsDrawingAttention()); // Unchanged. |
- |
- panel->OnActiveStateChanged(true); |
- EXPECT_FALSE(panel->IsDrawingAttention()); // Attention cleared. |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionResetOnClick) { |
- Panel* panel = CreateInactivePanel("P1"); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- panel->FlashFrame(true); |
- EXPECT_TRUE(panel->IsDrawingAttention()); |
- EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); |
- |
- // Test that the attention is cleared when panel gets focus. |
- native_panel_testing->PressLeftMouseButtonTitlebar( |
- panel->GetBounds().origin()); |
- native_panel_testing->ReleaseMouseButtonTitlebar(); |
- |
- WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); |
- EXPECT_FALSE(panel->IsDrawingAttention()); |
- EXPECT_FALSE(native_panel_testing->VerifyDrawingAttention()); |
- |
- panel->Close(); |
-} |
- |
-// http://crbug.com/175760; several panel tests failing regularly on mac. |
-#if defined(OS_MACOSX) |
-#define MAYBE_MinimizeImmediatelyAfterRestore \ |
- DISABLED_MinimizeImmediatelyAfterRestore |
-#else |
-#define MAYBE_MinimizeImmediatelyAfterRestore MinimizeImmediatelyAfterRestore |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- MAYBE_MinimizeImmediatelyAfterRestore) { |
- CreatePanelParams params("Panel Test", gfx::Rect(), SHOW_AS_ACTIVE); |
- Panel* panel = CreatePanelWithParams(params); |
- std::unique_ptr<NativePanelTesting> native_panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- PanelActiveStateObserver signal(panel, false); |
- panel->Minimize(); // this should deactivate. |
- signal.Wait(); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- |
- panel->Restore(); |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- |
- // Verify that minimizing a panel right after expansion works. |
- panel->Minimize(); |
- EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, FocusLostOnMinimize) { |
- CreatePanelParams params("Initially Active", gfx::Rect(), SHOW_AS_ACTIVE); |
- Panel* panel = CreatePanelWithParams(params); |
- EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); |
- |
- PanelActiveStateObserver signal(panel, false); |
- panel->Minimize(); |
- signal.Wait(); |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateInactiveSwitchToActive) { |
- Panel* panel = CreateInactivePanel("1"); |
- |
- panel->Activate(); |
- WaitForPanelActiveState(panel, SHOW_AS_ACTIVE); |
- |
- panel->Close(); |
-} |
- |
-// TODO(dimich): try/enable on other platforms. See bug 103253 for details on |
-// why this is disabled on windows. |
-#if defined(OS_MACOSX) |
-#define MAYBE_MinimizeTwoPanelsWithoutTabbedWindow \ |
- MinimizeTwoPanelsWithoutTabbedWindow |
-#else |
-#define MAYBE_MinimizeTwoPanelsWithoutTabbedWindow \ |
- DISABLED_MinimizeTwoPanelsWithoutTabbedWindow |
-#endif |
- |
-// When there are 2 panels and no chrome window, minimizing one panel does |
-// not expand/focuses another. |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- MAYBE_MinimizeTwoPanelsWithoutTabbedWindow) { |
- CreatePanelParams params("Initially Inactive", gfx::Rect(), SHOW_AS_INACTIVE); |
- Panel* panel1 = CreatePanelWithParams(params); |
- Panel* panel2 = CreatePanelWithParams(params); |
- |
- // Close main tabbed window. |
- content::WindowedNotificationObserver signal( |
- chrome::NOTIFICATION_BROWSER_CLOSED, |
- content::Source<Browser>(browser())); |
- chrome::CloseWindow(browser()); |
- signal.Wait(); |
- |
- EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
- EXPECT_EQ(Panel::EXPANDED, panel2->expansion_state()); |
- panel1->Activate(); |
- WaitForPanelActiveState(panel1, SHOW_AS_ACTIVE); |
- |
- panel1->SetExpansionState(Panel::MINIMIZED); |
- base::RunLoop().RunUntilIdle(); |
- WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- |
- panel2->SetExpansionState(Panel::MINIMIZED); |
- base::RunLoop().RunUntilIdle(); |
- WaitForPanelActiveState(panel2, SHOW_AS_INACTIVE); |
- EXPECT_EQ(Panel::MINIMIZED, panel2->expansion_state()); |
- |
- // Verify that panel1 is still minimized and not active. |
- WaitForPanelActiveState(panel1, SHOW_AS_INACTIVE); |
- EXPECT_EQ(Panel::MINIMIZED, panel1->expansion_state()); |
- |
- // Another check for the same. |
- EXPECT_FALSE(panel1->IsActive()); |
- EXPECT_FALSE(panel2->IsActive()); |
- |
- panel1->Close(); |
- panel2->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- NonExtensionDomainPanelsCloseOnUninstall) { |
- // Create a test extension. |
- base::DictionaryValue empty_value; |
- scoped_refptr<extensions::Extension> extension = |
- CreateExtension(FILE_PATH_LITERAL("TestExtension"), |
- extensions::Manifest::INTERNAL, empty_value); |
- std::string extension_app_name = |
- web_app::GenerateApplicationNameFromExtensionId(extension->id()); |
- |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- EXPECT_EQ(0, panel_manager->num_panels()); |
- |
- // Create a panel with the extension as host. |
- CreatePanelParams params(extension_app_name, gfx::Rect(), SHOW_AS_ACTIVE); |
- std::string extension_domain_url(extensions::kExtensionScheme); |
- extension_domain_url += "://"; |
- extension_domain_url += extension->id(); |
- extension_domain_url += "/hello.html"; |
- params.url = GURL(extension_domain_url); |
- Panel* panel = CreatePanelWithParams(params); |
- EXPECT_EQ(1, panel_manager->num_panels()); |
- |
- // Create a panel with a non-extension host. |
- CreatePanelParams params1(extension_app_name, gfx::Rect(), SHOW_AS_ACTIVE); |
- params1.url = GURL(url::kAboutBlankURL); |
- Panel* panel1 = CreatePanelWithParams(params1); |
- EXPECT_EQ(2, panel_manager->num_panels()); |
- |
- // Create another extension and a panel from that extension. |
- scoped_refptr<extensions::Extension> extension_other = |
- CreateExtension(FILE_PATH_LITERAL("TestExtensionOther"), |
- extensions::Manifest::INTERNAL, empty_value); |
- std::string extension_app_name_other = |
- web_app::GenerateApplicationNameFromExtensionId(extension_other->id()); |
- Panel* panel_other = CreatePanel(extension_app_name_other); |
- |
- content::WindowedNotificationObserver signal( |
- chrome::NOTIFICATION_PANEL_CLOSED, |
- content::Source<Panel>(panel)); |
- content::WindowedNotificationObserver signal1( |
- chrome::NOTIFICATION_PANEL_CLOSED, |
- content::Source<Panel>(panel1)); |
- |
- // Send unload notification on the first extension. |
- extensions::ExtensionRegistry* registry = |
- extensions::ExtensionRegistry::Get(browser()->profile()); |
- registry->RemoveEnabled(extension->id()); |
- registry->TriggerOnUnloaded( |
- extension.get(), extensions::UnloadedExtensionInfo::REASON_UNINSTALL); |
- |
- // Wait for the panels opened by the first extension to close. |
- signal.Wait(); |
- signal1.Wait(); |
- |
- // Verify that the panel that's left is the panel from the second extension. |
- EXPECT_EQ(panel_other, panel_manager->panels()[0]); |
- panel_other->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, OnBeforeUnloadOnClose) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- EXPECT_EQ(0, panel_manager->num_panels()); // No panels initially. |
- |
- const base::string16 title_first_close = base::UTF8ToUTF16("TitleFirstClose"); |
- const base::string16 title_second_close = |
- base::UTF8ToUTF16("TitleSecondClose"); |
- |
- // Create a test panel with web contents loaded. |
- CreatePanelParams params("PanelTest1", gfx::Rect(0, 0, 300, 300), |
- SHOW_AS_ACTIVE); |
- params.url = ui_test_utils::GetTestUrl( |
- base::FilePath(kTestDir), |
- base::FilePath(FILE_PATH_LITERAL("onbeforeunload.html"))); |
- Panel* panel = CreatePanelWithParams(params); |
- EXPECT_EQ(1, panel_manager->num_panels()); |
- |
- // Close panel and verify it closes despite having a onbeforeunload handler. |
- CloseWindowAndWait(panel); |
- EXPECT_EQ(0, panel_manager->num_panels()); |
-} |
- |
-// http://crbug.com/175760; several panel tests failing regularly on mac. |
-#if defined(OS_MACOSX) |
-#define MAYBE_SizeClamping DISABLED_SizeClamping |
-#else |
-#define MAYBE_SizeClamping SizeClamping |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_SizeClamping) { |
- // Using '0' sizes is equivalent of not providing sizes in API and causes |
- // minimum sizes to be applied to facilitate auto-sizing. |
- CreatePanelParams params("Panel", gfx::Rect(), SHOW_AS_ACTIVE); |
- Panel* panel = CreatePanelWithParams(params); |
- EXPECT_EQ(panel->min_size().width(), panel->GetBounds().width()); |
- EXPECT_EQ(panel->min_size().height(), panel->GetBounds().height()); |
- int reasonable_width = panel->min_size().width() + 10; |
- int reasonable_height = panel->min_size().height() + 20; |
- |
- panel->Close(); |
- |
- // Using reasonable actual sizes should avoid clamping. |
- CreatePanelParams params1("Panel1", |
- gfx::Rect(0, 0, |
- reasonable_width, reasonable_height), |
- SHOW_AS_ACTIVE); |
- panel = CreatePanelWithParams(params1); |
- EXPECT_EQ(reasonable_width, panel->GetBounds().width()); |
- EXPECT_EQ(reasonable_height, panel->GetBounds().height()); |
- panel->Close(); |
- |
- // Using just one size should auto-compute some reasonable other size. |
- int given_height = 200; |
- CreatePanelParams params2("Panel2", gfx::Rect(0, 0, 0, given_height), |
- SHOW_AS_ACTIVE); |
- panel = CreatePanelWithParams(params2); |
- EXPECT_GT(panel->GetBounds().width(), 0); |
- EXPECT_EQ(given_height, panel->GetBounds().height()); |
- panel->Close(); |
-} |
- |
-// http://crbug.com/175760; several panel tests failing regularly on mac. |
-// http://crbug.com/179890; TightAutosizeAroundSingleLine broken on Windows by |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- DISABLED_TightAutosizeAroundSingleLine) { |
- PanelManager::GetInstance()->enable_auto_sizing(true); |
- // Using 0 sizes triggers auto-sizing. |
- CreatePanelParams params("Panel", gfx::Rect(), SHOW_AS_ACTIVE); |
- params.url = GURL("data:text/html;charset=utf-8,<!doctype html><body>"); |
- Panel* panel = CreatePanelWithParams(params); |
- |
- // Ensure panel has auto resized to original web content size. |
- WaitForStableInitialSize initial_resize(panel); |
- initial_resize.Wait(); |
- |
- int initial_width = panel->GetBounds().width(); |
- int initial_height = panel->GetBounds().height(); |
- |
- // Inject some HTML content into the panel. |
- WaitForAutoResizeWider enlarge(panel); |
- EXPECT_TRUE(content::ExecuteScript( |
- panel->GetWebContents(), |
- "document.body.innerHTML =" |
- " '<nobr>line of text and a <button>Button</button>';")); |
- enlarge.Wait(); |
- |
- // The panel should have become larger in both dimensions (the minimums |
- // has to be set to be smaller then a simple 1-line content, so the autosize |
- // can work correctly. |
- EXPECT_GT(panel->GetBounds().width(), initial_width); |
- EXPECT_GT(panel->GetBounds().height(), initial_height); |
- |
- panel->Close(); |
-} |
- |
-// http://crbug.com/175760; several panel tests failing regularly on mac. |
-#if defined(OS_MACOSX) |
-#define MAYBE_DefaultMaxSizeOnDisplaySettingsChange \ |
- DISABLED_DefaultMaxSizeOnDisplaySettingsChange |
-#else |
-#define MAYBE_DefaultMaxSizeOnDisplaySettingsChange \ |
- DefaultMaxSizeOnDisplaySettingsChange |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- MAYBE_DefaultMaxSizeOnDisplaySettingsChange) { |
- Panel* panel = CreatePanelWithBounds("1", gfx::Rect(0, 0, 240, 220)); |
- |
- gfx::Size old_max_size = panel->max_size(); |
- gfx::Size old_full_size = panel->full_size(); |
- |
- // Shrink the work area. Expect max size and full size become smaller. |
- gfx::Rect smaller_work_area(0, 0, 500, 300); |
- mock_display_settings_provider()->SetPrimaryDisplay( |
- smaller_work_area, smaller_work_area); |
- EXPECT_GT(old_max_size.width(), panel->max_size().width()); |
- EXPECT_GT(old_max_size.height(), panel->max_size().height()); |
- EXPECT_GT(smaller_work_area.width(), panel->max_size().width()); |
- EXPECT_GT(smaller_work_area.height(), panel->max_size().height()); |
- EXPECT_GT(old_full_size.width(), panel->full_size().width()); |
- EXPECT_GT(old_full_size.height(), panel->full_size().height()); |
- EXPECT_GE(panel->max_size().width(), panel->full_size().width()); |
- EXPECT_GE(panel->max_size().height(), panel->full_size().height()); |
- |
- panel->Close(); |
-} |
- |
-// http://crbug.com/175760; several panel tests failing regularly on mac. |
-#if defined(OS_MACOSX) |
-#define MAYBE_CustomMaxSizeOnDisplaySettingsChange \ |
- DISABLED_CustomMaxSizeOnDisplaySettingsChange |
-#else |
-#define MAYBE_CustomMaxSizeOnDisplaySettingsChange \ |
- CustomMaxSizeOnDisplaySettingsChange |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- MAYBE_CustomMaxSizeOnDisplaySettingsChange) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- Panel* panel = CreatePanelWithBounds("1", gfx::Rect(0, 0, 240, 220)); |
- |
- // Trigger custom max size by user resizing. |
- gfx::Size bigger_size = gfx::Size(550, 400); |
- gfx::Point mouse_location = panel->GetBounds().origin(); |
- panel_manager->StartResizingByMouse(panel, |
- mouse_location, |
- HTTOPLEFT); |
- mouse_location.Offset(panel->GetBounds().width() - bigger_size.width(), |
- panel->GetBounds().height() - bigger_size.height()); |
- panel_manager->ResizeByMouse(mouse_location); |
- panel_manager->EndResizingByMouse(false); |
- |
- gfx::Size old_max_size = panel->max_size(); |
- EXPECT_EQ(bigger_size, old_max_size); |
- gfx::Size old_full_size = panel->full_size(); |
- EXPECT_EQ(bigger_size, old_full_size); |
- |
- // Shrink the work area. Expect max size and full size become smaller. |
- gfx::Rect smaller_work_area(0, 0, 500, 300); |
- mock_display_settings_provider()->SetPrimaryDisplay( |
- smaller_work_area, smaller_work_area); |
- EXPECT_GT(old_max_size.width(), panel->max_size().width()); |
- EXPECT_GT(old_max_size.height(), panel->max_size().height()); |
- EXPECT_GE(smaller_work_area.width(), panel->max_size().width()); |
- EXPECT_EQ(smaller_work_area.height(), panel->max_size().height()); |
- EXPECT_GT(old_full_size.width(), panel->full_size().width()); |
- EXPECT_GT(old_full_size.height(), panel->full_size().height()); |
- EXPECT_GE(panel->max_size().width(), panel->full_size().width()); |
- EXPECT_GE(panel->max_size().height(), panel->full_size().height()); |
- EXPECT_EQ(smaller_work_area.height(), panel->full_size().height()); |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DevTools) { |
- // Create a test panel with web contents loaded. |
- CreatePanelParams params("1", gfx::Rect(0, 0, 200, 220), SHOW_AS_ACTIVE); |
- GURL url(ui_test_utils::GetTestUrl( |
- base::FilePath(kTestDir), |
- base::FilePath(FILE_PATH_LITERAL("update-preferred-size.html")))); |
- params.url = url; |
- Panel* panel = CreatePanelWithParams(params); |
- |
- // Open devtools. |
- size_t num_browsers = 1; |
- EXPECT_EQ(num_browsers, chrome::GetBrowserCount(browser()->profile())); |
- content::WindowedNotificationObserver signal( |
- chrome::NOTIFICATION_BROWSER_WINDOW_READY, |
- content::NotificationService::AllSources()); |
- EXPECT_TRUE(panel->ExecuteCommandIfEnabled(IDC_DEV_TOOLS)); |
- signal.Wait(); |
- |
- // Check that the new browser window that opened is dev tools window. |
- ++num_browsers; |
- EXPECT_EQ(num_browsers, chrome::GetBrowserCount(browser()->profile())); |
- for (auto* b : *BrowserList::GetInstance()) { |
- if (b == browser()) |
- continue; |
- ASSERT_TRUE(b->is_devtools()); |
- } |
- |
- panel->Close(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DevToolsConsole) { |
- // Create a test panel with web contents loaded. |
- CreatePanelParams params("1", gfx::Rect(0, 0, 200, 220), SHOW_AS_ACTIVE); |
- GURL url(ui_test_utils::GetTestUrl( |
- base::FilePath(kTestDir), |
- base::FilePath(FILE_PATH_LITERAL("update-preferred-size.html")))); |
- params.url = url; |
- Panel* panel = CreatePanelWithParams(params); |
- |
- // Open devtools console. |
- size_t num_browsers = 1; |
- EXPECT_EQ(num_browsers, chrome::GetBrowserCount(browser()->profile())); |
- content::WindowedNotificationObserver signal( |
- chrome::NOTIFICATION_BROWSER_WINDOW_READY, |
- content::NotificationService::AllSources()); |
- EXPECT_TRUE(panel->ExecuteCommandIfEnabled(IDC_DEV_TOOLS_CONSOLE)); |
- signal.Wait(); |
- |
- // Check that the new browser window that opened is dev tools window. |
- ++num_browsers; |
- EXPECT_EQ(num_browsers, chrome::GetBrowserCount(browser()->profile())); |
- for (auto* b : *BrowserList::GetInstance()) { |
- if (b == browser()) |
- continue; |
- ASSERT_TRUE(b->is_devtools()); |
- } |
- |
- panel->Close(); |
-} |
- |
-#if defined(OS_WIN) |
-#define MAYBE_Accelerator Accelerator |
-#else |
-#define MAYBE_Accelerator DISABLED_Accelerator |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_Accelerator) { |
- PanelManager* panel_manager = PanelManager::GetInstance(); |
- |
- // Create a test panel with web contents loaded. |
- CreatePanelParams params("1", gfx::Rect(), SHOW_AS_ACTIVE); |
- GURL url(ui_test_utils::GetTestUrl( |
- base::FilePath(kTestDir), |
- base::FilePath(FILE_PATH_LITERAL("update-preferred-size.html")))); |
- params.url = url; |
- Panel* panel = CreatePanelWithParams(params); |
- EXPECT_EQ(1, panel_manager->num_panels()); |
- |
- // Close the panel by accelerator. |
- content::WindowedNotificationObserver signal( |
- chrome::NOTIFICATION_PANEL_CLOSED, |
- content::Source<Panel>(panel)); |
- |
- ui::KeyEvent ui_event(ui::ET_KEY_PRESSED, ui::VKEY_W, ui::DomCode::US_W, |
- ui::EF_CONTROL_DOWN); |
- content::NativeWebKeyboardEvent key_event(ui_event); |
- panel->HandleKeyboardEvent(key_event); |
- signal.Wait(); |
- EXPECT_EQ(0, panel_manager->num_panels()); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- HideDockedPanelCreatedBeforeFullScreenMode) { |
- // Create a docked panel. |
- Panel* panel = CreatePanel("PanelTest"); |
- std::unique_ptr<NativePanelTesting> panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- // Panel should be visible at first. |
- EXPECT_TRUE(panel_testing->IsWindowVisible()); |
- |
- // Panel should become hidden when entering full-screen mode. |
- mock_display_settings_provider()->EnableFullScreenMode(true); |
- EXPECT_FALSE(panel_testing->IsWindowVisible()); |
- |
- // Panel should become visible when leaving full-screen mode. |
- mock_display_settings_provider()->EnableFullScreenMode(false); |
- EXPECT_TRUE(panel_testing->IsWindowVisible()); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-IN_PROC_BROWSER_TEST_F(PanelBrowserTest, |
- HideDockedPanelCreatedOnFullScreenMode) { |
- // Enable full-screen mode first. |
- mock_display_settings_provider()->EnableFullScreenMode(true); |
- |
- // Create a docked panel without waiting for it to be shown since it is not |
- // supposed to be shown on full-screen mode. |
- CreatePanelParams params("1", gfx::Rect(0, 0, 250, 200), SHOW_AS_ACTIVE); |
- params.wait_for_fully_created = false; |
- Panel* panel = CreatePanelWithParams(params); |
- std::unique_ptr<NativePanelTesting> panel_testing( |
- CreateNativePanelTesting(panel)); |
- |
- // Panel should not be shown on full-screen mode. |
- EXPECT_FALSE(panel_testing->IsWindowVisible()); |
- |
- // Panel should become visible when leaving full-screen mode. |
- mock_display_settings_provider()->EnableFullScreenMode(false); |
- EXPECT_TRUE(panel_testing->IsWindowVisible()); |
- |
- PanelManager::GetInstance()->CloseAll(); |
-} |
- |
-class PanelExtensionApiTest : public ExtensionApiTest { |
- protected: |
- void SetUpCommandLine(base::CommandLine* command_line) override { |
- ExtensionApiTest::SetUpCommandLine(command_line); |
- command_line->AppendSwitch(switches::kEnablePanels); |
- } |
-}; |
- |
-#if defined(OS_LINUX) || (!defined(OS_WIN) && defined(USE_AURA)) || \ |
- defined(OS_MACOSX) |
-// Focus test fails if there is no window manager on Linux. |
-// Aura panels have different behavior that do not apply to this test. |
-#define MAYBE_FocusChangeEventOnMinimize DISABLED_FocusChangeEventOnMinimize |
-#else |
-#define MAYBE_FocusChangeEventOnMinimize FocusChangeEventOnMinimize |
-#endif |
-IN_PROC_BROWSER_TEST_F(PanelExtensionApiTest, |
- MAYBE_FocusChangeEventOnMinimize) { |
- // This is needed so the subsequently created panels can be activated. |
- // On a Mac, it transforms background-only test process into foreground one. |
- ASSERT_TRUE(ui_test_utils::BringBrowserWindowToFront(browser())); |
- ASSERT_TRUE(RunExtensionTest("panels/focus_change_on_minimize")) << message_; |
-} |