| 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;
|
| }
|
|
|