Index: chrome/browser/ui/window_sizer/window_sizer.cc |
diff --git a/chrome/browser/ui/window_sizer/window_sizer.cc b/chrome/browser/ui/window_sizer/window_sizer.cc |
index ba299daf4df930caafeac701f7c13eccd3a2cb92..e33378e7d5d482c129684f933e9b441f6dab6114 100644 |
--- a/chrome/browser/ui/window_sizer/window_sizer.cc |
+++ b/chrome/browser/ui/window_sizer/window_sizer.cc |
@@ -25,14 +25,17 @@ class DefaultMonitorInfoProvider : public MonitorInfoProvider { |
public: |
// Overridden from MonitorInfoProvider: |
virtual gfx::Rect GetPrimaryDisplayWorkArea() const OVERRIDE { |
- return gfx::Screen::GetPrimaryDisplay().work_area(); |
+ return gfx::Screen::GetPrimaryDisplay( |
+ gfx::Screen::BadTwoWorldsContext()).work_area(); |
} |
virtual gfx::Rect GetPrimaryDisplayBounds() const OVERRIDE { |
- return gfx::Screen::GetPrimaryDisplay().bounds(); |
+ return gfx::Screen::GetPrimaryDisplay( |
+ gfx::Screen::BadTwoWorldsContext()).bounds(); |
} |
virtual gfx::Rect GetMonitorWorkAreaMatching( |
const gfx::Rect& match_rect) const OVERRIDE { |
- return gfx::Screen::GetDisplayMatching(match_rect).work_area(); |
+ return gfx::Screen::GetDisplayMatching( |
+ gfx::Screen::BadTwoWorldsContext(), match_rect).work_area(); |
} |
}; |
@@ -158,24 +161,25 @@ void WindowSizer::GetBrowserWindowBounds(const std::string& app_name, |
const Browser* browser, |
gfx::Rect* window_bounds) { |
const WindowSizer sizer(new DefaultStateProvider(app_name, browser), browser); |
- sizer.DetermineWindowBounds(specified_bounds, window_bounds); |
+ sizer.DetermineWindowBounds(specified_bounds, window_bounds, browser); |
} |
/////////////////////////////////////////////////////////////////////////////// |
// WindowSizer, private: |
void WindowSizer::DetermineWindowBounds(const gfx::Rect& specified_bounds, |
- gfx::Rect* bounds) const { |
+ gfx::Rect* bounds, |
+ const Browser* browser) const { |
*bounds = specified_bounds; |
if (bounds->IsEmpty()) { |
- if (GetBoundsOverride(specified_bounds, bounds)) |
+ if (GetBoundsOverride(specified_bounds, bounds, browser)) |
return; |
// See if there's saved placement information. |
- if (!GetLastWindowBounds(bounds)) { |
- if (!GetSavedWindowBounds(bounds)) { |
+ if (!GetLastWindowBounds(bounds, browser)) { |
+ if (!GetSavedWindowBounds(bounds, browser)) { |
// No saved placement, figure out some sensible default size based on |
// the user's screen size. |
- GetDefaultWindowBounds(bounds); |
+ GetDefaultWindowBounds(bounds, browser); |
} |
} |
} else { |
@@ -192,7 +196,8 @@ void WindowSizer::DetermineWindowBounds(const gfx::Rect& specified_bounds, |
} |
} |
-bool WindowSizer::GetLastWindowBounds(gfx::Rect* bounds) const { |
+bool WindowSizer::GetLastWindowBounds(gfx::Rect* bounds, |
+ const Browser* browser) const { |
DCHECK(bounds); |
if (!state_provider_.get() || |
!state_provider_->GetLastActiveWindowState(bounds)) |
@@ -201,28 +206,31 @@ bool WindowSizer::GetLastWindowBounds(gfx::Rect* bounds) const { |
bounds->Offset(kWindowTilePixels, kWindowTilePixels); |
AdjustBoundsToBeVisibleOnMonitorContaining(last_window_bounds, |
gfx::Rect(), |
- bounds); |
+ bounds, |
+ browser); |
return true; |
} |
-bool WindowSizer::GetSavedWindowBounds(gfx::Rect* bounds) const { |
+bool WindowSizer::GetSavedWindowBounds(gfx::Rect* bounds, |
+ const Browser* browser) const { |
DCHECK(bounds); |
gfx::Rect saved_work_area; |
if (!state_provider_.get() || |
!state_provider_->GetPersistentState(bounds, &saved_work_area)) |
return false; |
- AdjustBoundsToBeVisibleOnMonitorContaining(*bounds, saved_work_area, bounds); |
+ AdjustBoundsToBeVisibleOnMonitorContaining( |
+ *bounds, saved_work_area, bounds, browser); |
return true; |
} |
-void WindowSizer::GetDefaultWindowBounds(gfx::Rect* default_bounds) const { |
-#if defined(USE_ASH) |
- // TODO(beng): insufficient but currently necessary. http://crbug.com/133312 |
- if (chrome::ShouldOpenAshOnStartup()) { |
+void WindowSizer::GetDefaultWindowBounds(gfx::Rect* default_bounds, |
+ const Browser* browser) const { |
+ // TODO(scottmg): http://crbug.com/133312 |
+ if (chrome::GetHostDesktopTypeForBrowser(browser) == |
+ chrome::HOST_DESKTOP_TYPE_ASH) { |
GetDefaultWindowBoundsAsh(default_bounds); |
return; |
} |
-#endif |
DCHECK(default_bounds); |
DCHECK(monitor_info_provider_.get()); |
@@ -259,7 +267,8 @@ void WindowSizer::GetDefaultWindowBounds(gfx::Rect* default_bounds) const { |
void WindowSizer::AdjustBoundsToBeVisibleOnMonitorContaining( |
const gfx::Rect& other_bounds, |
const gfx::Rect& saved_work_area, |
- gfx::Rect* bounds) const { |
+ gfx::Rect* bounds, |
+ const Browser* browser) const { |
DCHECK(bounds); |
DCHECK(monitor_info_provider_.get()); |
@@ -270,7 +279,7 @@ void WindowSizer::AdjustBoundsToBeVisibleOnMonitorContaining( |
// If height or width are 0, reset to the default size. |
gfx::Rect default_bounds; |
- GetDefaultWindowBounds(&default_bounds); |
+ GetDefaultWindowBounds(&default_bounds, browser); |
if (bounds->height() <= 0) |
bounds->set_height(default_bounds.height()); |
if (bounds->width() <= 0) |
@@ -332,11 +341,13 @@ void WindowSizer::AdjustBoundsToBeVisibleOnMonitorContaining( |
bool WindowSizer::GetBoundsOverride( |
const gfx::Rect& specified_bounds, |
- gfx::Rect* bounds) const { |
+ gfx::Rect* bounds, |
+ const Browser* browser) const { |
#if defined(USE_ASH) |
- // TODO(beng): insufficient but currently necessary. http://crbug.com/133312 |
- if (chrome::ShouldOpenAshOnStartup()) |
- return GetBoundsOverrideAsh(specified_bounds, bounds); |
+ // TODO(scottmg): http://crbug.com/133312 |
+ if (chrome::GetHostDesktopTypeForBrowser(browser) == |
+ chrome::HOST_DESKTOP_TYPE_ASH) |
+ return GetBoundsOverrideAsh(specified_bounds, bounds, browser); |
#endif |
return false; |
} |