| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/common/accessibility_delegate.h" | 5 #include "ash/common/accessibility_delegate.h" |
| 6 #include "ash/common/wm/window_state.h" | 6 #include "ash/common/wm/window_state.h" |
| 7 #include "ash/common/wm/wm_event.h" | 7 #include "ash/common/wm/wm_event.h" |
| 8 #include "ash/common/wm_shell.h" | 8 #include "ash/common/wm_shell.h" |
| 9 #include "ash/common/wm_window.h" | 9 #include "ash/common/wm_window.h" |
| 10 #include "ash/public/cpp/shell_window_ids.h" | 10 #include "ash/public/cpp/shell_window_ids.h" |
| (...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 411 EXPECT_FALSE(is_active); | 411 EXPECT_FALSE(is_active); |
| 412 | 412 |
| 413 EXPECT_FALSE(is_resizing); | 413 EXPECT_FALSE(is_resizing); |
| 414 shell_surface->Resize(HTBOTTOMRIGHT); | 414 shell_surface->Resize(HTBOTTOMRIGHT); |
| 415 shell_surface->AcknowledgeConfigure(0); | 415 shell_surface->AcknowledgeConfigure(0); |
| 416 EXPECT_TRUE(is_resizing); | 416 EXPECT_TRUE(is_resizing); |
| 417 } | 417 } |
| 418 | 418 |
| 419 TEST_F(ShellSurfaceTest, ModalWindow) { | 419 TEST_F(ShellSurfaceTest, ModalWindow) { |
| 420 std::unique_ptr<Surface> surface(new Surface); | 420 std::unique_ptr<Surface> surface(new Surface); |
| 421 std::unique_ptr<ShellSurface> shell_surface( | 421 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 422 new ShellSurface(surface.get(), nullptr, gfx::Rect(), true, false, | 422 surface.get(), nullptr, ShellSurface::BoundsMode::SHELL, gfx::Point(), |
| 423 ash::kShellWindowId_SystemModalContainer)); | 423 true, false, ash::kShellWindowId_SystemModalContainer)); |
| 424 gfx::Size desktop_size(640, 480); | 424 gfx::Size desktop_size(640, 480); |
| 425 std::unique_ptr<Buffer> desktop_buffer( | 425 std::unique_ptr<Buffer> desktop_buffer( |
| 426 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(desktop_size))); | 426 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(desktop_size))); |
| 427 surface->Attach(desktop_buffer.get()); | 427 surface->Attach(desktop_buffer.get()); |
| 428 surface->SetInputRegion(SkRegion()); | 428 surface->SetInputRegion(SkRegion()); |
| 429 surface->Commit(); | 429 surface->Commit(); |
| 430 | 430 |
| 431 EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen()); | 431 EXPECT_FALSE(ash::WmShell::Get()->IsSystemModalWindowOpen()); |
| 432 | 432 |
| 433 // Creating a surface without input region should not make it modal. | 433 // Creating a surface without input region should not make it modal. |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 502 geometry.OffsetFromOrigin(), | 502 geometry.OffsetFromOrigin(), |
| 503 geometry.size()), | 503 geometry.size()), |
| 504 popup->GetWidget()->GetWindowBoundsInScreen()); | 504 popup->GetWidget()->GetWindowBoundsInScreen()); |
| 505 } | 505 } |
| 506 | 506 |
| 507 TEST_F(ShellSurfaceTest, SurfaceShadow) { | 507 TEST_F(ShellSurfaceTest, SurfaceShadow) { |
| 508 gfx::Size buffer_size(128, 128); | 508 gfx::Size buffer_size(128, 128); |
| 509 std::unique_ptr<Buffer> buffer( | 509 std::unique_ptr<Buffer> buffer( |
| 510 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 510 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 511 std::unique_ptr<Surface> surface(new Surface); | 511 std::unique_ptr<Surface> surface(new Surface); |
| 512 std::unique_ptr<ShellSurface> shell_surface( | 512 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 513 new ShellSurface(surface.get(), nullptr, gfx::Rect(), true, false, | 513 surface.get(), nullptr, ShellSurface::BoundsMode::SHELL, gfx::Point(), |
| 514 ash::kShellWindowId_DefaultContainer)); | 514 true, false, ash::kShellWindowId_DefaultContainer)); |
| 515 surface->Attach(buffer.get()); | 515 surface->Attach(buffer.get()); |
| 516 surface->Commit(); | 516 surface->Commit(); |
| 517 | 517 |
| 518 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); | 518 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); |
| 519 | 519 |
| 520 // 1) Initial state, no shadow. | 520 // 1) Initial state, no shadow. |
| 521 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); | 521 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); |
| 522 ASSERT_TRUE(shadow); | 522 ASSERT_TRUE(shadow); |
| 523 EXPECT_FALSE(shadow->layer()->visible()); | 523 EXPECT_FALSE(shadow->layer()->visible()); |
| 524 | 524 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 | 576 |
| 577 EXPECT_EQ(*surface->window()->children().begin(), | 577 EXPECT_EQ(*surface->window()->children().begin(), |
| 578 shell_surface->shadow_underlay()); | 578 shell_surface->shadow_underlay()); |
| 579 } | 579 } |
| 580 | 580 |
| 581 TEST_F(ShellSurfaceTest, NonSurfaceShadow) { | 581 TEST_F(ShellSurfaceTest, NonSurfaceShadow) { |
| 582 gfx::Size buffer_size(128, 128); | 582 gfx::Size buffer_size(128, 128); |
| 583 std::unique_ptr<Buffer> buffer( | 583 std::unique_ptr<Buffer> buffer( |
| 584 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 584 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 585 std::unique_ptr<Surface> surface(new Surface); | 585 std::unique_ptr<Surface> surface(new Surface); |
| 586 std::unique_ptr<ShellSurface> shell_surface( | 586 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 587 new ShellSurface(surface.get(), nullptr, gfx::Rect(), true, false, | 587 surface.get(), nullptr, ShellSurface::BoundsMode::SHELL, gfx::Point(), |
| 588 ash::kShellWindowId_DefaultContainer)); | 588 true, false, ash::kShellWindowId_DefaultContainer)); |
| 589 surface->Attach(buffer.get()); | 589 surface->Attach(buffer.get()); |
| 590 surface->Commit(); | 590 surface->Commit(); |
| 591 | 591 |
| 592 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); | 592 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); |
| 593 | 593 |
| 594 // 1) Initial state, no shadow. | 594 // 1) Initial state, no shadow. |
| 595 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); | 595 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); |
| 596 ASSERT_TRUE(shadow); | 596 ASSERT_TRUE(shadow); |
| 597 EXPECT_FALSE(shadow->layer()->visible()); | 597 EXPECT_FALSE(shadow->layer()->visible()); |
| 598 | 598 |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 ASSERT_NE(underlay_it, window->children().end()); | 659 ASSERT_NE(underlay_it, window->children().end()); |
| 660 ASSERT_NE(std::next(underlay_it), window->children().end()); | 660 ASSERT_NE(std::next(underlay_it), window->children().end()); |
| 661 EXPECT_EQ(*std::next(underlay_it), shell_surface->shadow_overlay()); | 661 EXPECT_EQ(*std::next(underlay_it), shell_surface->shadow_overlay()); |
| 662 } | 662 } |
| 663 | 663 |
| 664 TEST_F(ShellSurfaceTest, ShadowWithStateChange) { | 664 TEST_F(ShellSurfaceTest, ShadowWithStateChange) { |
| 665 gfx::Size buffer_size(64, 64); | 665 gfx::Size buffer_size(64, 64); |
| 666 std::unique_ptr<Buffer> buffer( | 666 std::unique_ptr<Buffer> buffer( |
| 667 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 667 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 668 std::unique_ptr<Surface> surface(new Surface); | 668 std::unique_ptr<Surface> surface(new Surface); |
| 669 // Set the bounds to disable auto managed mode. | 669 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 670 std::unique_ptr<ShellSurface> shell_surface( | 670 surface.get(), nullptr, ShellSurface::BoundsMode::CLIENT, gfx::Point(), |
| 671 new ShellSurface(surface.get(), nullptr, gfx::Rect(640, 480), true, false, | 671 true, false, ash::kShellWindowId_DefaultContainer)); |
| 672 ash::kShellWindowId_DefaultContainer)); | |
| 673 | 672 |
| 674 // Postion the widget at 10,10 so that we get non zero offset. | 673 // Postion the widget at 10,10 so that we get non zero offset. |
| 675 const gfx::Size content_size(100, 100); | 674 const gfx::Size content_size(100, 100); |
| 676 const gfx::Rect original_bounds(gfx::Point(10, 10), content_size); | 675 const gfx::Rect original_bounds(gfx::Point(10, 10), content_size); |
| 677 shell_surface->SetGeometry(original_bounds); | 676 shell_surface->SetGeometry(original_bounds); |
| 678 surface->Attach(buffer.get()); | 677 surface->Attach(buffer.get()); |
| 679 surface->Commit(); | 678 surface->Commit(); |
| 680 | 679 |
| 681 // Placing a shadow at screen origin will make the shadow's origin (-10, -10). | 680 // Placing a shadow at screen origin will make the shadow's origin (-10, -10). |
| 682 const gfx::Rect shadow_bounds(content_size); | 681 const gfx::Rect shadow_bounds(content_size); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); | 720 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); |
| 722 surface->Commit(); | 721 surface->Commit(); |
| 723 EXPECT_EQ(expected_shadow_bounds, shadow->layer()->parent()->bounds()); | 722 EXPECT_EQ(expected_shadow_bounds, shadow->layer()->parent()->bounds()); |
| 724 } | 723 } |
| 725 | 724 |
| 726 TEST_F(ShellSurfaceTest, ShadowWithTransform) { | 725 TEST_F(ShellSurfaceTest, ShadowWithTransform) { |
| 727 gfx::Size buffer_size(64, 64); | 726 gfx::Size buffer_size(64, 64); |
| 728 std::unique_ptr<Buffer> buffer( | 727 std::unique_ptr<Buffer> buffer( |
| 729 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 728 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 730 std::unique_ptr<Surface> surface(new Surface); | 729 std::unique_ptr<Surface> surface(new Surface); |
| 731 // Set the bounds to disable auto managed mode. | 730 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 732 std::unique_ptr<ShellSurface> shell_surface( | 731 surface.get(), nullptr, ShellSurface::BoundsMode::CLIENT, gfx::Point(), |
| 733 new ShellSurface(surface.get(), nullptr, gfx::Rect(640, 400), true, false, | 732 true, false, ash::kShellWindowId_DefaultContainer)); |
| 734 ash::kShellWindowId_DefaultContainer)); | |
| 735 | 733 |
| 736 // Postion the widget at 10,10 so that we get non zero offset. | 734 // Postion the widget at 10,10 so that we get non zero offset. |
| 737 const gfx::Size content_size(100, 100); | 735 const gfx::Size content_size(100, 100); |
| 738 const gfx::Rect original_bounds(gfx::Point(10, 10), content_size); | 736 const gfx::Rect original_bounds(gfx::Point(10, 10), content_size); |
| 739 shell_surface->SetGeometry(original_bounds); | 737 shell_surface->SetGeometry(original_bounds); |
| 740 surface->Attach(buffer.get()); | 738 surface->Attach(buffer.get()); |
| 741 surface->Commit(); | 739 surface->Commit(); |
| 742 | 740 |
| 743 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); | 741 aura::Window* window = shell_surface->GetWidget()->GetNativeWindow(); |
| 744 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); | 742 wm::Shadow* shadow = wm::ShadowController::GetShadowForWindow(window); |
| 745 | 743 |
| 746 // Placing a shadow at screen origin will make the shadow's origin (-10, -10). | 744 // Placing a shadow at screen origin will make the shadow's origin (-10, -10). |
| 747 const gfx::Rect shadow_bounds(content_size); | 745 const gfx::Rect shadow_bounds(content_size); |
| 748 | 746 |
| 749 // Shadow bounds relative to its parent should not be affected by a transform. | 747 // Shadow bounds relative to its parent should not be affected by a transform. |
| 750 gfx::Transform transform; | 748 gfx::Transform transform; |
| 751 transform.Translate(50, 50); | 749 transform.Translate(50, 50); |
| 752 window->SetTransform(transform); | 750 window->SetTransform(transform); |
| 753 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); | 751 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); |
| 754 surface->Commit(); | 752 surface->Commit(); |
| 755 EXPECT_TRUE(shadow->layer()->visible()); | 753 EXPECT_TRUE(shadow->layer()->visible()); |
| 756 EXPECT_EQ(gfx::Rect(-10, -10, 100, 100), shadow->layer()->parent()->bounds()); | 754 EXPECT_EQ(gfx::Rect(-10, -10, 100, 100), shadow->layer()->parent()->bounds()); |
| 757 } | 755 } |
| 758 | 756 |
| 759 TEST_F(ShellSurfaceTest, ShadowStartMaximized) { | 757 TEST_F(ShellSurfaceTest, ShadowStartMaximized) { |
| 760 std::unique_ptr<Surface> surface(new Surface); | 758 std::unique_ptr<Surface> surface(new Surface); |
| 761 std::unique_ptr<ShellSurface> shell_surface( | 759 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 762 new ShellSurface(surface.get(), nullptr, gfx::Rect(640, 480), true, false, | 760 surface.get(), nullptr, ShellSurface::BoundsMode::CLIENT, gfx::Point(), |
| 763 ash::kShellWindowId_DefaultContainer)); | 761 true, false, ash::kShellWindowId_DefaultContainer)); |
| 764 shell_surface->Maximize(); | 762 shell_surface->Maximize(); |
| 765 views::Widget* widget = shell_surface->GetWidget(); | 763 views::Widget* widget = shell_surface->GetWidget(); |
| 766 aura::Window* window = widget->GetNativeWindow(); | 764 aura::Window* window = widget->GetNativeWindow(); |
| 767 | 765 |
| 768 // There is no shadow when started in maximized state. | 766 // There is no shadow when started in maximized state. |
| 769 EXPECT_FALSE(wm::ShadowController::GetShadowForWindow(window)); | 767 EXPECT_FALSE(wm::ShadowController::GetShadowForWindow(window)); |
| 770 | 768 |
| 771 // Sending a shadow bounds in maximized state won't create a shaodw. | 769 // Sending a shadow bounds in maximized state won't create a shaodw. |
| 772 shell_surface->SetRectangularSurfaceShadow(gfx::Rect(10, 10, 100, 100)); | 770 shell_surface->SetRectangularSurfaceShadow(gfx::Rect(10, 10, 100, 100)); |
| 773 surface->Commit(); | 771 surface->Commit(); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 shell_surface->GetWidget()->GetWindowBoundsInScreen().width()); | 819 shell_surface->GetWidget()->GetWindowBoundsInScreen().width()); |
| 822 } | 820 } |
| 823 | 821 |
| 824 TEST_F(ShellSurfaceTest, ImmersiveFullscreenBackground) { | 822 TEST_F(ShellSurfaceTest, ImmersiveFullscreenBackground) { |
| 825 const gfx::Size display_size = | 823 const gfx::Size display_size = |
| 826 display::Screen::GetScreen()->GetPrimaryDisplay().size(); | 824 display::Screen::GetScreen()->GetPrimaryDisplay().size(); |
| 827 const gfx::Size buffer_size(display_size); | 825 const gfx::Size buffer_size(display_size); |
| 828 std::unique_ptr<Buffer> buffer( | 826 std::unique_ptr<Buffer> buffer( |
| 829 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); | 827 new Buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size))); |
| 830 std::unique_ptr<Surface> surface(new Surface); | 828 std::unique_ptr<Surface> surface(new Surface); |
| 831 std::unique_ptr<ShellSurface> shell_surface( | 829 std::unique_ptr<ShellSurface> shell_surface(new ShellSurface( |
| 832 new ShellSurface(surface.get(), nullptr, gfx::Rect(100, 100), true, false, | 830 surface.get(), nullptr, ShellSurface::BoundsMode::CLIENT, gfx::Point(), |
| 833 ash::kShellWindowId_DefaultContainer)); | 831 true, false, ash::kShellWindowId_DefaultContainer)); |
| 834 | 832 |
| 835 surface->Attach(buffer.get()); | 833 surface->Attach(buffer.get()); |
| 836 | 834 |
| 837 gfx::Rect shadow_bounds(10, 10, 100, 100); | 835 gfx::Rect shadow_bounds(10, 10, 100, 100); |
| 838 shell_surface->SetGeometry(shadow_bounds); | 836 shell_surface->SetGeometry(shadow_bounds); |
| 839 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); | 837 shell_surface->SetRectangularSurfaceShadow(shadow_bounds); |
| 840 surface->Commit(); | 838 surface->Commit(); |
| 841 EXPECT_EQ(shadow_bounds, | 839 EXPECT_EQ(shadow_bounds, |
| 842 shell_surface->GetWidget()->GetWindowBoundsInScreen()); | 840 shell_surface->GetWidget()->GetWindowBoundsInScreen()); |
| 843 ASSERT_EQ(shadow_bounds, shell_surface->shadow_underlay()->bounds()); | 841 ASSERT_EQ(shadow_bounds, shell_surface->shadow_underlay()->bounds()); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 861 EXPECT_TRUE(shell_surface->shadow_underlay()->IsVisible()); | 859 EXPECT_TRUE(shell_surface->shadow_underlay()->IsVisible()); |
| 862 EXPECT_EQ(shadow_bounds, shell_surface->shadow_underlay()->bounds()); | 860 EXPECT_EQ(shadow_bounds, shell_surface->shadow_underlay()->bounds()); |
| 863 } | 861 } |
| 864 | 862 |
| 865 TEST_F(ShellSurfaceTest, SpokenFeedbackFullscreenBackground) { | 863 TEST_F(ShellSurfaceTest, SpokenFeedbackFullscreenBackground) { |
| 866 const gfx::Size display_size = | 864 const gfx::Size display_size = |
| 867 display::Screen::GetScreen()->GetPrimaryDisplay().size(); | 865 display::Screen::GetScreen()->GetPrimaryDisplay().size(); |
| 868 const gfx::Size buffer_size(display_size); | 866 const gfx::Size buffer_size(display_size); |
| 869 Buffer buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)); | 867 Buffer buffer(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)); |
| 870 Surface surface; | 868 Surface surface; |
| 871 ShellSurface shell_surface(&surface, nullptr, gfx::Rect(100, 100), true, | 869 ShellSurface shell_surface(&surface, nullptr, |
| 872 false, ash::kShellWindowId_DefaultContainer); | 870 ShellSurface::BoundsMode::CLIENT, gfx::Point(), |
| 871 true, false, ash::kShellWindowId_DefaultContainer); |
| 873 surface.Attach(&buffer); | 872 surface.Attach(&buffer); |
| 874 | 873 |
| 875 gfx::Rect shadow_bounds(10, 10, 100, 100); | 874 gfx::Rect shadow_bounds(10, 10, 100, 100); |
| 876 shell_surface.SetGeometry(shadow_bounds); | 875 shell_surface.SetGeometry(shadow_bounds); |
| 877 shell_surface.SetRectangularSurfaceShadow(shadow_bounds); | 876 shell_surface.SetRectangularSurfaceShadow(shadow_bounds); |
| 878 surface.Commit(); | 877 surface.Commit(); |
| 879 EXPECT_EQ(shadow_bounds, | 878 EXPECT_EQ(shadow_bounds, |
| 880 shell_surface.GetWidget()->GetWindowBoundsInScreen()); | 879 shell_surface.GetWidget()->GetWindowBoundsInScreen()); |
| 881 ASSERT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); | 880 ASSERT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); |
| 882 | 881 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 911 EXPECT_EQ(shell_surface.shadow_underlay(), | 910 EXPECT_EQ(shell_surface.shadow_underlay(), |
| 912 static_cast<ui::EventTargeter*>(targeter)->FindTargetForEvent( | 911 static_cast<ui::EventTargeter*>(targeter)->FindTargetForEvent( |
| 913 shell_window, &ev_out)); | 912 shell_window, &ev_out)); |
| 914 EXPECT_NE(shell_surface.shadow_underlay(), | 913 EXPECT_NE(shell_surface.shadow_underlay(), |
| 915 static_cast<ui::EventTargeter*>(targeter)->FindTargetForEvent( | 914 static_cast<ui::EventTargeter*>(targeter)->FindTargetForEvent( |
| 916 shell_window, &ev_in)); | 915 shell_window, &ev_in)); |
| 917 | 916 |
| 918 // Create a new surface | 917 // Create a new surface |
| 919 Buffer buffer2(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)); | 918 Buffer buffer2(exo_test_helper()->CreateGpuMemoryBuffer(buffer_size)); |
| 920 Surface surface2; | 919 Surface surface2; |
| 921 ShellSurface shell_surface2(&surface2, nullptr, gfx::Rect(640, 480), true, | 920 ShellSurface shell_surface2( |
| 922 false, ash::kShellWindowId_DefaultContainer); | 921 &surface2, nullptr, ShellSurface::BoundsMode::CLIENT, gfx::Point(), true, |
| 922 false, ash::kShellWindowId_DefaultContainer); |
| 923 surface2.Attach(&buffer2); | 923 surface2.Attach(&buffer2); |
| 924 shell_surface2.SetRectangularSurfaceShadow(shadow_bounds); | 924 shell_surface2.SetRectangularSurfaceShadow(shadow_bounds); |
| 925 surface2.Commit(); | 925 surface2.Commit(); |
| 926 | 926 |
| 927 // spoken-feedback was already on, so underlay should fill screen | 927 // spoken-feedback was already on, so underlay should fill screen |
| 928 EXPECT_EQ(display::Screen::GetScreen()->GetPrimaryDisplay().bounds(), | 928 EXPECT_EQ(display::Screen::GetScreen()->GetPrimaryDisplay().bounds(), |
| 929 shell_surface2.shadow_underlay()->bounds()); | 929 shell_surface2.shadow_underlay()->bounds()); |
| 930 | 930 |
| 931 // De-activated shell-surface should NOT have fullscreen underlay | 931 // De-activated shell-surface should NOT have fullscreen underlay |
| 932 EXPECT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); | 932 EXPECT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); |
| 933 | 933 |
| 934 // Disable spoken feedback. Shadow underlay is restored. | 934 // Disable spoken feedback. Shadow underlay is restored. |
| 935 ash::WmShell::Get()->accessibility_delegate()->ToggleSpokenFeedback( | 935 ash::WmShell::Get()->accessibility_delegate()->ToggleSpokenFeedback( |
| 936 ash::A11Y_NOTIFICATION_NONE); | 936 ash::A11Y_NOTIFICATION_NONE); |
| 937 shell_surface.OnAccessibilityModeChanged(); | 937 shell_surface.OnAccessibilityModeChanged(); |
| 938 shell_surface2.OnAccessibilityModeChanged(); | 938 shell_surface2.OnAccessibilityModeChanged(); |
| 939 | 939 |
| 940 EXPECT_TRUE(shell_surface.shadow_underlay()->IsVisible()); | 940 EXPECT_TRUE(shell_surface.shadow_underlay()->IsVisible()); |
| 941 EXPECT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); | 941 EXPECT_EQ(shadow_bounds, shell_surface.shadow_underlay()->bounds()); |
| 942 EXPECT_EQ(shadow_bounds, shell_surface2.shadow_underlay()->bounds()); | 942 EXPECT_EQ(shadow_bounds, shell_surface2.shadow_underlay()->bounds()); |
| 943 } | 943 } |
| 944 | 944 |
| 945 } // namespace | 945 } // namespace |
| 946 } // namespace exo | 946 } // namespace exo |
| OLD | NEW |