summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authortapted <tapted@chromium.org>2015-08-20 23:53:16 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-21 06:53:56 +0000
commita9d687f73a76dd4dcf3c87f1899894395e2caf99 (patch)
tree4f476f0f47e8dd6e3fbfd4baf80aa6e0a453f46a /ui
parent4afaf293c0edacc841de83040bf54eaa0a7932f8 (diff)
downloadchromium_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.mm3
-rw-r--r--ui/views/widget/native_widget_mac_unittest.mm21
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