forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This moves GetPrimaryDisplayDimensions() and DisplayCount() out of base and into a new DisplayUtils class (currently alongside the metrics code, since that's the only place that they're called). These methods add a GDK dependency that prevents Chrome OS from including process_util (which depends on SysInfo) in its libchrome library. BUG=chromium-os:16153 TEST=moved existing unit tests Review URL: http://codereview.chromium.org/7128001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89194 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
derat@chromium.org
committed
Jun 15, 2011
1 parent
32d7925
commit e9c0ba7
Showing
13 changed files
with
157 additions
and
108 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
// Copyright (c) 2011 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. | ||
|
||
#ifndef CHROME_BROWSER_METRICS_DISPLAY_UTILS_H_ | ||
#define CHROME_BROWSER_METRICS_DISPLAY_UTILS_H_ | ||
#pragma once | ||
|
||
#include "base/basictypes.h" | ||
|
||
class DisplayUtils { | ||
public: | ||
// Returns the pixel dimensions of the primary display via the | ||
// width and height parameters. | ||
static void GetPrimaryDisplayDimensions(int* width, int* height); | ||
|
||
// Returns the number of displays. | ||
static int GetDisplayCount(); | ||
|
||
private: | ||
DISALLOW_COPY_AND_ASSIGN(DisplayUtils); | ||
}; | ||
|
||
#endif // CHROME_BROWSER_METRICS_DISPLAY_UTILS_H_ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
// Copyright (c) 2011 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 "chrome/browser/metrics/display_utils.h" | ||
|
||
#include <ApplicationServices/ApplicationServices.h> | ||
|
||
// static | ||
void DisplayUtils::GetPrimaryDisplayDimensions(int* width, int* height) { | ||
CGDirectDisplayID main_display = CGMainDisplayID(); | ||
if (width) | ||
*width = CGDisplayPixelsWide(main_display); | ||
if (height) | ||
*height = CGDisplayPixelsHigh(main_display); | ||
} | ||
|
||
// static | ||
int DisplayUtils::GetDisplayCount() { | ||
// Don't just return the number of online displays. It includes displays | ||
// that mirror other displays, which are not desired in the count. It's | ||
// tempting to use the count returned by CGGetActiveDisplayList, but active | ||
// displays exclude sleeping displays, and those are desired in the count. | ||
|
||
// It would be ridiculous to have this many displays connected, but | ||
// CGDirectDisplayID is just an integer, so supporting up to this many | ||
// doesn't hurt. | ||
CGDirectDisplayID online_displays[128]; | ||
CGDisplayCount online_display_count = 0; | ||
if (CGGetOnlineDisplayList(arraysize(online_displays), | ||
online_displays, | ||
&online_display_count) != kCGErrorSuccess) { | ||
// 1 is a reasonable assumption. | ||
return 1; | ||
} | ||
|
||
int display_count = 0; | ||
for (CGDisplayCount online_display_index = 0; | ||
online_display_index < online_display_count; | ||
++online_display_index) { | ||
CGDirectDisplayID online_display = online_displays[online_display_index]; | ||
if (CGDisplayMirrorsDisplay(online_display) == kCGNullDirectDisplay) { | ||
// If this display doesn't mirror any other, include it in the count. | ||
// The primary display in a mirrored set will be counted, but those that | ||
// mirror it will not be. | ||
++display_count; | ||
} | ||
} | ||
|
||
return display_count; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Copyright (c) 2011 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 "chrome/browser/metrics/display_utils.h" | ||
|
||
#include <gdk/gdk.h> | ||
|
||
#include "content/browser/browser_thread.h" | ||
|
||
// static | ||
void DisplayUtils::GetPrimaryDisplayDimensions(int* width, int* height) { | ||
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | ||
GdkScreen* screen = gdk_screen_get_default(); | ||
if (width) | ||
*width = gdk_screen_get_width(screen); | ||
if (height) | ||
*height = gdk_screen_get_height(screen); | ||
} | ||
|
||
// static | ||
int DisplayUtils::GetDisplayCount() { | ||
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | ||
// This query is kinda bogus for Linux -- do we want number of X screens? | ||
// The number of monitors Xinerama has? We'll just use whatever GDK uses. | ||
GdkScreen* screen = gdk_screen_get_default(); | ||
return gdk_screen_get_n_monitors(screen); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// Copyright (c) 2011 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 "base/message_loop.h" | ||
#include "chrome/browser/metrics/display_utils.h" | ||
#include "content/browser/browser_thread.h" | ||
#include "testing/gtest/include/gtest/gtest.h" | ||
|
||
TEST(DisplayUtilsTest, GetPrimaryDisplayDimensions) { | ||
MessageLoop message_loop; | ||
BrowserThread ui_thread(BrowserThread::UI, &message_loop); | ||
int width = 0, height = 0; | ||
// We aren't actually testing that it's correct, just that it's sane. | ||
DisplayUtils::GetPrimaryDisplayDimensions(&width, &height); | ||
EXPECT_GE(width, 10); | ||
EXPECT_GE(height, 10); | ||
} | ||
|
||
TEST(DisplayUtilsTest, GetDisplayCount) { | ||
MessageLoop message_loop; | ||
BrowserThread ui_thread(BrowserThread::UI, &message_loop); | ||
// We aren't actually testing that it's correct, just that it's sane. | ||
EXPECT_GE(DisplayUtils::GetDisplayCount(), 1); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
// Copyright (c) 2011 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 "chrome/browser/metrics/display_utils.h" | ||
|
||
#include <windows.h> | ||
|
||
// static | ||
void DisplayUtils::GetPrimaryDisplayDimensions(int* width, int* height) { | ||
if (width) | ||
*width = GetSystemMetrics(SM_CXSCREEN); | ||
|
||
if (height) | ||
*height = GetSystemMetrics(SM_CYSCREEN); | ||
} | ||
|
||
// static | ||
int DisplayUtils::GetDisplayCount() { | ||
return GetSystemMetrics(SM_CMONITORS); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters