Index: ash/display/resolution_notification_controller.cc |
diff --git a/ash/display/resolution_notification_controller.cc b/ash/display/resolution_notification_controller.cc |
index 315dd5ab5b65cb512ba195cf4f9c1d231443ac29..9819b69095e8e63c98148d79f1685ce9fa85758f 100644 |
--- a/ash/display/resolution_notification_controller.cc |
+++ b/ash/display/resolution_notification_controller.cc |
@@ -5,6 +5,7 @@ |
#include "ash/display/resolution_notification_controller.h" |
#include "ash/display/display_controller.h" |
+#include "ash/display/display_info.h" |
#include "ash/display/display_manager.h" |
#include "ash/shell.h" |
#include "ash/system/system_notifier.h" |
@@ -102,8 +103,8 @@ const char ResolutionNotificationController::kNotificationId[] = |
struct ResolutionNotificationController::ResolutionChangeInfo { |
ResolutionChangeInfo(int64 display_id, |
- const gfx::Size& old_resolution, |
- const gfx::Size& new_resolution, |
+ const DisplayMode& old_resolution, |
+ const DisplayMode& new_resolution, |
const base::Closure& accept_callback); |
~ResolutionChangeInfo(); |
@@ -111,14 +112,14 @@ struct ResolutionNotificationController::ResolutionChangeInfo { |
int64 display_id; |
// The resolution before the change. |
- gfx::Size old_resolution; |
+ DisplayMode old_resolution; |
// The requested resolution. Note that this may be different from |
// |current_resolution| which is the actual resolution set. |
- gfx::Size new_resolution; |
+ DisplayMode new_resolution; |
// The actual resolution after the change. |
- gfx::Size current_resolution; |
+ DisplayMode current_resolution; |
// The callback when accept is chosen. |
base::Closure accept_callback; |
@@ -137,8 +138,8 @@ struct ResolutionNotificationController::ResolutionChangeInfo { |
ResolutionNotificationController::ResolutionChangeInfo::ResolutionChangeInfo( |
int64 display_id, |
- const gfx::Size& old_resolution, |
- const gfx::Size& new_resolution, |
+ const DisplayMode& old_resolution, |
+ const DisplayMode& new_resolution, |
const base::Closure& accept_callback) |
: display_id(display_id), |
old_resolution(old_resolution), |
@@ -166,29 +167,24 @@ ResolutionNotificationController::~ResolutionNotificationController() { |
Shell::GetScreen()->RemoveObserver(this); |
} |
-void ResolutionNotificationController::SetDisplayResolutionAndNotify( |
+void ResolutionNotificationController::PrepareNotification( |
int64 display_id, |
- const gfx::Size& old_resolution, |
- const gfx::Size& new_resolution, |
+ const DisplayMode& old_resolution, |
+ const DisplayMode& new_resolution, |
const base::Closure& accept_callback) { |
// If multiple resolution changes are invoked for the same display, |
// the original resolution for the first resolution change has to be used |
// instead of the specified |old_resolution|. |
- gfx::Size original_resolution; |
+ DisplayMode original_resolution; |
if (change_info_ && change_info_->display_id == display_id) { |
- DCHECK(change_info_->new_resolution == old_resolution); |
+ DCHECK(change_info_->new_resolution.size == old_resolution.size); |
original_resolution = change_info_->old_resolution; |
} |
change_info_.reset(new ResolutionChangeInfo( |
display_id, old_resolution, new_resolution, accept_callback)); |
- if (!original_resolution.IsEmpty()) |
+ if (!original_resolution.size.IsEmpty()) |
change_info_->old_resolution = original_resolution; |
- |
- // SetDisplayResolution() causes OnConfigurationChanged() and the notification |
- // will be shown at that point. |
- Shell::GetInstance()->display_manager()->SetDisplayResolution( |
- display_id, new_resolution); |
} |
bool ResolutionNotificationController::DoesNotificationTimeout() { |
@@ -224,16 +220,17 @@ void ResolutionNotificationController::CreateOrUpdateNotification( |
Shell::GetInstance()->display_manager()->GetDisplayNameForId( |
change_info_->display_id)); |
const base::string16 message = |
- (change_info_->new_resolution == change_info_->current_resolution) ? |
+ (change_info_->new_resolution.size == |
+ change_info_->current_resolution.size) ? |
l10n_util::GetStringFUTF16( |
IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED, |
display_name, |
- base::UTF8ToUTF16(change_info_->new_resolution.ToString())) : |
+ base::UTF8ToUTF16(change_info_->new_resolution.size.ToString())) : |
l10n_util::GetStringFUTF16( |
IDS_ASH_STATUS_TRAY_DISPLAY_RESOLUTION_CHANGED_TO_UNSUPPORTED, |
display_name, |
- base::UTF8ToUTF16(change_info_->new_resolution.ToString()), |
- base::UTF8ToUTF16(change_info_->current_resolution.ToString())); |
+ base::UTF8ToUTF16(change_info_->new_resolution.size.ToString()), |
+ base::UTF8ToUTF16(change_info_->current_resolution.size.ToString())); |
ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
scoped_ptr<Notification> notification(new Notification( |
@@ -279,9 +276,9 @@ void ResolutionNotificationController::RevertResolutionChange() { |
message_center::MessageCenter::Get()->RemoveNotification( |
kNotificationId, false /* by_user */); |
int64 display_id = change_info_->display_id; |
- gfx::Size old_resolution = change_info_->old_resolution; |
+ DisplayMode old_resolution = change_info_->old_resolution; |
change_info_.reset(); |
- Shell::GetInstance()->display_manager()->SetDisplayResolution( |
+ Shell::GetInstance()->display_manager()->SetDisplayMode( |
display_id, old_resolution); |
} |
@@ -303,9 +300,8 @@ void ResolutionNotificationController::OnDisplayConfigurationChanged() { |
if (!change_info_) |
return; |
- const DisplayInfo& info = Shell::GetInstance()->display_manager()-> |
- GetDisplayInfo(change_info_->display_id); |
- change_info_->current_resolution = info.bounds_in_native().size(); |
+ change_info_->current_resolution = Shell::GetInstance()->display_manager()-> |
+ GetActiveModeForDisplayId(change_info_->display_id); |
CreateOrUpdateNotification(true); |
if (g_use_timer && change_info_->timeout_count > 0) { |
change_info_->timer.Start(FROM_HERE, |