From e39bc5e7891b2b2bb4bc6f08e4579da4b1d11fb8 Mon Sep 17 00:00:00 2001 From: "johnnyg@chromium.org" Date: Tue, 5 Jan 2010 23:15:21 +0000 Subject: Refactor the calculation of desktop size to use an existing common method rather than windows-specific logic. Part of notifications port to linux. BUG=23954 TEST=none Review URL: http://codereview.chromium.org/524039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@35575 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/notifications/balloon_collection.cc | 17 +++++++++++ .../notifications/balloon_collection_linux.cc | 5 ---- .../notifications/balloon_collection_mac.mm | 5 ---- .../notifications/balloon_collection_win.cc | 35 ---------------------- 4 files changed, 17 insertions(+), 45 deletions(-) diff --git a/chrome/browser/notifications/balloon_collection.cc b/chrome/browser/notifications/balloon_collection.cc index ed8a671..e148911 100644 --- a/chrome/browser/notifications/balloon_collection.cc +++ b/chrome/browser/notifications/balloon_collection.cc @@ -8,6 +8,7 @@ #include "base/logging.h" #include "base/stl_util-inl.h" #include "chrome/browser/notifications/balloon.h" +#include "chrome/browser/window_sizer.h" namespace { @@ -207,3 +208,19 @@ gfx::Point BalloonCollectionImpl::Layout::NextPosition( } return gfx::Point(x, y); } + +bool BalloonCollectionImpl::Layout::RefreshSystemMetrics() { + bool changed = false; + + scoped_ptr info_provider( + WindowSizer::CreateDefaultMonitorInfoProvider()); + + gfx::Rect new_work_area = info_provider->GetPrimaryMonitorWorkArea(); + if (!work_area_.Equals(new_work_area)) { + work_area_.SetRect(new_work_area.x(), new_work_area.y(), + new_work_area.width(), new_work_area.height()); + changed = true; + } + + return changed; +} diff --git a/chrome/browser/notifications/balloon_collection_linux.cc b/chrome/browser/notifications/balloon_collection_linux.cc index e1439f2..bab6895 100644 --- a/chrome/browser/notifications/balloon_collection_linux.cc +++ b/chrome/browser/notifications/balloon_collection_linux.cc @@ -11,8 +11,3 @@ Balloon* BalloonCollectionImpl::MakeBalloon(const Notification& notification, // TODO(johnnyg): http://crbug.com/23954. Hook up to views. return new Balloon(notification, profile, this); } - -bool BalloonCollectionImpl::Layout::RefreshSystemMetrics() { - // TODO(johnnyg): http://crbug.com/23954. Part of future Linux support. - return false; -} diff --git a/chrome/browser/notifications/balloon_collection_mac.mm b/chrome/browser/notifications/balloon_collection_mac.mm index 2bff15e..6a652e0 100644 --- a/chrome/browser/notifications/balloon_collection_mac.mm +++ b/chrome/browser/notifications/balloon_collection_mac.mm @@ -12,8 +12,3 @@ Balloon* BalloonCollectionImpl::MakeBalloon(const Notification& notification, return new Balloon(notification, profile, this); } -bool BalloonCollectionImpl::Layout::RefreshSystemMetrics() { - // TODO(johnnyg): http://crbug.com/23066. Part of future Mac support. - return false; -} - diff --git a/chrome/browser/notifications/balloon_collection_win.cc b/chrome/browser/notifications/balloon_collection_win.cc index 53d9808..4c294cc 100644 --- a/chrome/browser/notifications/balloon_collection_win.cc +++ b/chrome/browser/notifications/balloon_collection_win.cc @@ -6,29 +6,9 @@ #include "base/gfx/rect.h" #include "base/logging.h" -#include "base/stl_util-inl.h" #include "chrome/browser/notifications/balloon.h" #include "chrome/browser/views/notifications/balloon_view.h" -namespace { - -void GetMainScreenWorkArea(gfx::Rect* bounds) { - DCHECK(bounds); - RECT work_area = {0}; - if (::SystemParametersInfo(SPI_GETWORKAREA, 0, &work_area, 0)) { - bounds->SetRect(work_area.left, work_area.top, - work_area.right, work_area.bottom); - } else { - // If call to ::SystemParametersInfo fails for some reason, we simply get - // the full screen size as an alternative. - bounds->SetRect(0, 0, - ::GetSystemMetrics(SM_CXSCREEN) - 1, - ::GetSystemMetrics(SM_CYSCREEN) - 1); - } -} - -} // namespace - Balloon* BalloonCollectionImpl::MakeBalloon(const Notification& notification, Profile* profile) { Balloon* balloon = new Balloon(notification, profile, this); @@ -37,18 +17,3 @@ Balloon* BalloonCollectionImpl::MakeBalloon(const Notification& notification, balloon->set_content_size(size); return balloon; } - -bool BalloonCollectionImpl::Layout::RefreshSystemMetrics() { - bool changed = false; - - gfx::Rect new_work_area(work_area_.x(), work_area_.y(), - work_area_.width(), work_area_.height()); - GetMainScreenWorkArea(&new_work_area); - if (!work_area_.Equals(new_work_area)) { - work_area_.SetRect(new_work_area.x(), new_work_area.y(), - new_work_area.width(), new_work_area.height()); - changed = true; - } - - return changed; -} -- cgit v1.1