summaryrefslogtreecommitdiffstats
path: root/ash/display/display_manager_unittest.cc
diff options
context:
space:
mode:
authorsheu@chromium.org <sheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-11 00:35:28 +0000
committersheu@chromium.org <sheu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-02-11 00:35:28 +0000
commit065f99f47b7ea639bd313a96db8f34dc1de9c58e (patch)
treeb110216e4e53abcc2969181c8a4552a4818f5e60 /ash/display/display_manager_unittest.cc
parent13669105e9d85af58d1798abe40dc1b199a239c7 (diff)
downloadchromium_src-065f99f47b7ea639bd313a96db8f34dc1de9c58e.zip
chromium_src-065f99f47b7ea639bd313a96db8f34dc1de9c58e.tar.gz
chromium_src-065f99f47b7ea639bd313a96db8f34dc1de9c58e.tar.bz2
Read compositor VSync information from platform, when possible
The current query of VSync information through the GL context can be unreliable on platforms that can dynamically disable vblanks, or multi-monitor setups. Preferentially query the VSync information through the platform windowing system (presently: XRandR on CrOS) when possible. BUG=328953 TEST=local build, run on CrOS snow Review URL: https://codereview.chromium.org/138903025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@250250 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display/display_manager_unittest.cc')
-rw-r--r--ash/display/display_manager_unittest.cc82
1 files changed, 49 insertions, 33 deletions
diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc
index 9300ccc8..5b43b1b 100644
--- a/ash/display/display_manager_unittest.cc
+++ b/ash/display/display_manager_unittest.cc
@@ -719,49 +719,60 @@ TEST_F(DisplayManagerTest, DontRememberBestResolution) {
int display_id = 1000;
DisplayInfo native_display_info =
CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1000, 500));
- std::vector<Resolution> resolutions;
- resolutions.push_back(Resolution(gfx::Size(1000, 500), false));
- resolutions.push_back(Resolution(gfx::Size(800, 300), false));
- resolutions.push_back(Resolution(gfx::Size(400, 500), false));
+ std::vector<DisplayMode> display_modes;
+ display_modes.push_back(
+ DisplayMode(gfx::Size(1000, 500), 58.0f, false, true));
+ display_modes.push_back(
+ DisplayMode(gfx::Size(800, 300), 59.0f, false, false));
+ display_modes.push_back(
+ DisplayMode(gfx::Size(400, 500), 60.0f, false, false));
- native_display_info.set_resolutions(resolutions);
+ native_display_info.set_display_modes(display_modes);
std::vector<DisplayInfo> display_info_list;
display_info_list.push_back(native_display_info);
display_manager()->OnNativeDisplaysChanged(display_info_list);
- gfx::Size selected;
- EXPECT_FALSE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
+ DisplayMode mode;
+ EXPECT_FALSE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
// Unsupported resolution.
display_manager()->SetDisplayResolution(display_id, gfx::Size(800, 4000));
- EXPECT_FALSE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
+ EXPECT_FALSE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
// Supported resolution.
display_manager()->SetDisplayResolution(display_id, gfx::Size(800, 300));
- EXPECT_TRUE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
- EXPECT_EQ("800x300", selected.ToString());
+ EXPECT_TRUE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
+ EXPECT_EQ("800x300", mode.size.ToString());
+ EXPECT_EQ(59.0f, mode.refresh_rate);
+ EXPECT_FALSE(mode.native);
// Best resolution.
display_manager()->SetDisplayResolution(display_id, gfx::Size(1000, 500));
- EXPECT_FALSE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
+ EXPECT_TRUE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
+ EXPECT_EQ("1000x500", mode.size.ToString());
+ EXPECT_EQ(58.0f, mode.refresh_rate);
+ EXPECT_TRUE(mode.native);
}
TEST_F(DisplayManagerTest, ResolutionFallback) {
int display_id = 1000;
DisplayInfo native_display_info =
CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1000, 500));
- std::vector<Resolution> resolutions;
- resolutions.push_back(Resolution(gfx::Size(1000, 500), false));
- resolutions.push_back(Resolution(gfx::Size(800, 300), false));
- resolutions.push_back(Resolution(gfx::Size(400, 500), false));
+ std::vector<DisplayMode> display_modes;
+ display_modes.push_back(
+ DisplayMode(gfx::Size(1000, 500), 58.0f, false, true));
+ display_modes.push_back(
+ DisplayMode(gfx::Size(800, 300), 59.0f, false, false));
+ display_modes.push_back(
+ DisplayMode(gfx::Size(400, 500), 60.0f, false, false));
- std::vector<Resolution> copy = resolutions;
- native_display_info.set_resolutions(copy);
+ std::vector<DisplayMode> copy = display_modes;
+ native_display_info.set_display_modes(copy);
std::vector<DisplayInfo> display_info_list;
display_info_list.push_back(native_display_info);
@@ -770,31 +781,36 @@ TEST_F(DisplayManagerTest, ResolutionFallback) {
display_manager()->SetDisplayResolution(display_id, gfx::Size(800, 300));
DisplayInfo new_native_display_info =
CreateDisplayInfo(display_id, gfx::Rect(0, 0, 400, 500));
- copy = resolutions;
- new_native_display_info.set_resolutions(copy);
+ copy = display_modes;
+ new_native_display_info.set_display_modes(copy);
std::vector<DisplayInfo> new_display_info_list;
new_display_info_list.push_back(new_native_display_info);
display_manager()->OnNativeDisplaysChanged(new_display_info_list);
- gfx::Size selected;
- EXPECT_TRUE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
- EXPECT_EQ("400x500", selected.ToString());
+ DisplayMode mode;
+ EXPECT_TRUE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
+ EXPECT_EQ("400x500", mode.size.ToString());
+ EXPECT_EQ(60.0f, mode.refresh_rate);
+ EXPECT_FALSE(mode.native);
}
{
- // Best resolution should not be set.
+ // Best resolution should find itself on the resolutions list.
display_manager()->SetDisplayResolution(display_id, gfx::Size(800, 300));
DisplayInfo new_native_display_info =
CreateDisplayInfo(display_id, gfx::Rect(0, 0, 1000, 500));
- std::vector<Resolution> copy = resolutions;
- new_native_display_info.set_resolutions(copy);
+ std::vector<DisplayMode> copy = display_modes;
+ new_native_display_info.set_display_modes(copy);
std::vector<DisplayInfo> new_display_info_list;
new_display_info_list.push_back(new_native_display_info);
display_manager()->OnNativeDisplaysChanged(new_display_info_list);
- gfx::Size selected;
- EXPECT_FALSE(display_manager()->GetSelectedResolutionForDisplayId(
- display_id, &selected));
+ DisplayMode mode;
+ EXPECT_TRUE(
+ display_manager()->GetSelectedModeForDisplayId(display_id, &mode));
+ EXPECT_EQ("1000x500", mode.size.ToString());
+ EXPECT_EQ(58.0f, mode.refresh_rate);
+ EXPECT_TRUE(mode.native);
}
}