Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1572)

Unified Diff: chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc

Issue 16687002: Add additional properties to display system info on ChromeOS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc
diff --git a/chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc b/chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc
index 653bb4c89543ce42c24e304dae20a29836ef0c6c..80cd99f8405173eae4c20845c416c3b9b8e7b789 100644
--- a/chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc
+++ b/chrome/browser/extensions/api/system_info_display/display_info_provider_chromeos.cc
@@ -6,7 +6,9 @@
#include "ash/display/display_manager.h"
#include "ash/shell.h"
+#include "base/message_loop_proxy.h"
#include "base/strings/string_number_conversions.h"
+#include "content/public/browser/browser_thread.h"
#include "ui/gfx/display.h"
#include "ui/gfx/rect.h"
@@ -18,13 +20,24 @@ namespace {
// TODO(hshi): determine the DPI of the screen.
const float kDpi96 = 96.0;
+const int kBaseRotation = 90;
} // namespace
using api::system_info_display::Bounds;
using api::system_info_display::DisplayUnitInfo;
+void DisplayInfoProvider::RequestInfo(const RequestInfoCallback& callback) {
+ DisplayInfo requested_info;
+ bool success = QueryInfo(&requested_info);
+
+ base::MessageLoopProxy::current()->PostTask(
+ FROM_HERE,
+ base::Bind(callback, requested_info, success));
+}
+
bool DisplayInfoProvider::QueryInfo(DisplayInfo* info) {
+ DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
DCHECK(info);
info->clear();
@@ -39,17 +52,30 @@ bool DisplayInfoProvider::QueryInfo(DisplayInfo* info) {
const gfx::Rect& bounds = display->bounds();
const gfx::Rect& work_area = display->work_area();
const float dpi = display->device_scale_factor() * kDpi96;
+ const gfx::Insets overscan_insets =
+ display_manager->GetOverscanInsets(display->id());
+
unit->id = base::Int64ToString(display->id());
unit->name = display_manager->GetDisplayNameForId(display->id());
unit->is_primary = (display->id() == primary_id);
+ if (display_manager->IsMirrored() &&
+ display_manager->mirrored_display().id() != display->id()) {
+ unit->mirroring_source_id =
+ base::Int64ToString(display_manager->mirrored_display().id());
+ }
unit->is_internal = display->IsInternal();
unit->is_enabled = true;
unit->dpi_x = dpi;
unit->dpi_y = dpi;
+ unit->rotation = static_cast<int>(display->rotation()) * kBaseRotation;
Greg Spencer (Chromium) 2013/06/10 19:17:42 Should this be "% 360"? Just to prevent invalid v
tbarzic 2013/06/10 19:53:51 I think it is safe to assume rotation returned fro
unit->bounds.left = bounds.x();
unit->bounds.top = bounds.y();
unit->bounds.width = bounds.width();
unit->bounds.height = bounds.height();
+ unit->visible_area.left = overscan_insets.left();
+ unit->visible_area.top = overscan_insets.top();
+ unit->visible_area.width = bounds.width();
+ unit->visible_area.height = bounds.height();
unit->work_area.left = work_area.x();
unit->work_area.top = work_area.y();
unit->work_area.width = work_area.width();

Powered by Google App Engine
This is Rietveld 408576698