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 a2c6635bb89ea2a7cb36bcbbd8e6569934ab5346..1e689002f2a246e2eb89fb4037373041ddf28d9f 100644 |
--- a/chrome/browser/ui/window_sizer/window_sizer.cc |
+++ b/chrome/browser/ui/window_sizer/window_sizer.cc |
@@ -193,11 +193,10 @@ void WindowSizer::DetermineWindowBoundsAndShowState( |
if (bounds->IsEmpty()) { |
#if defined(USE_ASH) |
// See if ash should decide the window placement. |
- // TODO(beng): insufficient but currently necessary. |
- // http://crbug.com/133312 |
- if (chrome::ShouldOpenAshOnStartup() && |
- GetBoundsOverrideAsh(bounds, show_state)) |
+ if (IsTabbedBrowserInAsh()) { |
+ GetBoundsOverrideAsh(bounds, show_state); |
return; |
+ } |
#endif |
// See if there's last active window's placement information. |
if (GetLastWindowBounds(bounds, show_state)) |
@@ -213,9 +212,7 @@ void WindowSizer::DetermineWindowBoundsAndShowState( |
// In case of a popup with an 'unspecified' location in ash, we are |
// looking for a good screen location. We are interpreting (0,0) as an |
// unspecified location. |
- if (chrome::ShouldOpenAshOnStartup() && |
- browser_ && browser_->is_type_popup() && |
- bounds->x() == 0 && bounds->y() == 0) { |
+ if (IsPopupBrowserInAsh() && bounds->origin().IsOrigin()) { |
*bounds = ChromeShellDelegate::instance()->window_positioner()-> |
GetPopupPosition(*bounds); |
return; |
@@ -399,3 +396,19 @@ ui::WindowShowState WindowSizer::GetWindowDefaultShowState() const { |
// Otherwise we use the default which can be overridden later on. |
return ui::SHOW_STATE_DEFAULT; |
} |
+ |
+bool WindowSizer::IsTabbedBrowserInAsh() const { |
+ // TODO(beng): insufficient but currently necessary. http://crbug.com/133312 |
+ return chrome::ShouldOpenAshOnStartup() && |
+ browser_ && |
+ browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH && |
+ browser_->is_type_tabbed(); |
+} |
+ |
+bool WindowSizer::IsPopupBrowserInAsh() const { |
+ // TODO(beng): insufficient but currently necessary. http://crbug.com/133312 |
+ return chrome::ShouldOpenAshOnStartup() && |
+ browser_ && |
+ browser_->host_desktop_type() == chrome::HOST_DESKTOP_TYPE_ASH && |
+ browser_->is_type_popup(); |
+} |