diff options
author | tapted <tapted@chromium.org> | 2015-08-20 23:53:16 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-21 06:53:56 +0000 |
commit | a9d687f73a76dd4dcf3c87f1899894395e2caf99 (patch) | |
tree | 4f476f0f47e8dd6e3fbfd4baf80aa6e0a453f46a /ui | |
parent | 4afaf293c0edacc841de83040bf54eaa0a7932f8 (diff) | |
download | chromium_src-a9d687f73a76dd4dcf3c87f1899894395e2caf99.zip chromium_src-a9d687f73a76dd4dcf3c87f1899894395e2caf99.tar.gz chromium_src-a9d687f73a76dd4dcf3c87f1899894395e2caf99.tar.bz2 |
MacViews: Implement NativeWidgetMac::GetWorkAreaBoundsInScreen()
It's needed to position some menus, among other things.
It's just [[window screen] visibleFrame], but it should have some test
coverage too.
BUG=522794, 454698
Review URL: https://codereview.chromium.org/1306763002
Cr-Commit-Position: refs/heads/master@{#344709}
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/widget/native_widget_mac.mm | 3 | ||||
-rw-r--r-- | ui/views/widget/native_widget_mac_unittest.mm | 21 |
2 files changed, 22 insertions, 2 deletions
diff --git a/ui/views/widget/native_widget_mac.mm b/ui/views/widget/native_widget_mac.mm index 0139943..4f92b40 100644 --- a/ui/views/widget/native_widget_mac.mm +++ b/ui/views/widget/native_widget_mac.mm @@ -515,8 +515,7 @@ void NativeWidgetMac::ClearNativeFocus() { } gfx::Rect NativeWidgetMac::GetWorkAreaBoundsInScreen() const { - NOTIMPLEMENTED(); - return gfx::Rect(); + return gfx::ScreenRectFromNSRect([[GetNativeWindow() screen] visibleFrame]); } Widget::MoveLoopResult NativeWidgetMac::RunMoveLoop( diff --git a/ui/views/widget/native_widget_mac_unittest.mm b/ui/views/widget/native_widget_mac_unittest.mm index f97fcb0..bc6c65c 100644 --- a/ui/views/widget/native_widget_mac_unittest.mm +++ b/ui/views/widget/native_widget_mac_unittest.mm @@ -962,6 +962,27 @@ TEST_F(NativeWidgetMacTest, InvalidateShadow) { widget->CloseNow(); } +// Test the expected result of GetWorkAreaBoundsInScreen(). +TEST_F(NativeWidgetMacTest, GetWorkAreaBoundsInScreen) { + Widget widget; + Widget::InitParams params = CreateParams(Widget::InitParams::TYPE_POPUP); + params.ownership = Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; + + // This is relative to the top-left of the primary screen, so unless the bot's + // display is smaller than 400x300, the window will be wholly contained there. + params.bounds = gfx::Rect(100, 100, 300, 200); + widget.Init(params); + widget.Show(); + NSRect expected = [[[NSScreen screens] objectAtIndex:0] visibleFrame]; + NSRect actual = gfx::ScreenRectToNSRect(widget.GetWorkAreaBoundsInScreen()); + EXPECT_FALSE(NSIsEmptyRect(actual)); + EXPECT_NSEQ(expected, actual); + + [widget.GetNativeWindow() close]; + actual = gfx::ScreenRectToNSRect(widget.GetWorkAreaBoundsInScreen()); + EXPECT_TRUE(NSIsEmptyRect(actual)); +} + } // namespace test } // namespace views |