| Index: chrome/browser/ui/window_sizer/window_sizer_ash.cc
|
| diff --git a/chrome/browser/ui/window_sizer/window_sizer_ash.cc b/chrome/browser/ui/window_sizer/window_sizer_ash.cc
|
| index aa8b535972ccad1d26db9d3e3262d1f8b58e0e18..59a383c3510651538eef8e58f494cd05194bb5cb 100644
|
| --- a/chrome/browser/ui/window_sizer/window_sizer_ash.cc
|
| +++ b/chrome/browser/ui/window_sizer/window_sizer_ash.cc
|
| @@ -11,12 +11,9 @@
|
| #include "ash/wm/workspace/auto_window_management.h"
|
| #include "base/command_line.h"
|
| #include "base/compiler_specific.h"
|
| -#include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/browser_list.h"
|
| #include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/fullscreen/fullscreen_controller.h"
|
| -#include "chrome/browser/ui/host_desktop.h"
|
| #include "ui/aura/root_window.h"
|
| #include "ui/aura/window.h"
|
| #include "ui/aura/window_delegate.h"
|
| @@ -89,85 +86,66 @@ int WindowSizer::GetForceMaximizedWidthLimit() {
|
| return maximum_limit;
|
| }
|
|
|
| -bool WindowSizer::GetBoundsOverrideAsh(gfx::Rect* bounds_in_screen,
|
| - ui::WindowShowState* show_state) const {
|
| +void WindowSizer::GetTabbedBrowserBoundsAsh(
|
| + gfx::Rect* bounds_in_screen,
|
| + ui::WindowShowState* show_state) const {
|
| DCHECK(show_state);
|
| DCHECK(bounds_in_screen);
|
| + DCHECK(!browser_ || browser_->is_type_tabbed());
|
|
|
| - if (browser_ &&
|
| - browser_->host_desktop_type() != chrome::HOST_DESKTOP_TYPE_ASH) {
|
| - return false;
|
| - }
|
| bounds_in_screen->SetRect(0, 0, 0, 0);
|
|
|
| - // Experiment: Force the maximize mode for all windows.
|
| - if (ash::Shell::IsForcedMaximizeMode()) {
|
| - // Exceptions: Do not maximize popups and do not maximize windowed V1 apps
|
| - // which explicitly specify a |show_state| (they might be tuned for a
|
| - // particular resolution / type).
|
| - bool is_tabbed = browser_ && browser_->is_type_tabbed();
|
| - bool is_popup = browser_ && browser_->is_type_popup();
|
| - if (!is_popup && (is_tabbed || *show_state == ui::SHOW_STATE_DEFAULT))
|
| - *show_state = ui::SHOW_STATE_MAXIMIZED;
|
| - }
|
| + // Experiment: Force the maximize mode for all tabbed windows
|
| + if (ash::Shell::IsForcedMaximizeMode())
|
| + *show_state = ui::SHOW_STATE_MAXIMIZED;
|
|
|
| ui::WindowShowState passed_show_state = *show_state;
|
| bool has_saved_bounds = true;
|
| if (!GetSavedWindowBounds(bounds_in_screen, show_state)) {
|
| has_saved_bounds = false;
|
| - GetDefaultWindowBounds(bounds_in_screen);
|
| + GetDefaultWindowBoundsAsh(bounds_in_screen);
|
| }
|
|
|
| - if (browser_ && browser_->is_type_tabbed()) {
|
| - aura::RootWindow* active = ash::Shell::GetActiveRootWindow();
|
| - // Always open new window in the active display.
|
| - gfx::Rect work_area =
|
| - screen_->GetDisplayMatching(active->GetBoundsInScreen()).work_area();
|
| -
|
| - // This is a window / app. See if there is no window and try to place it.
|
| - int count = GetNumberOfValidTopLevelBrowserWindows(work_area);
|
| - aura::Window* top_window = ash::GetTopWindowForNewWindow(active);
|
| - // Our window should not have any impact if we are already on top.
|
| - if (browser_->window() &&
|
| - top_window == browser_->window()->GetNativeWindow())
|
| - top_window = NULL;
|
| -
|
| - // If there is no valid other window we take the coordinates as is.
|
| - if ((!count || !top_window)) {
|
| - if (has_saved_bounds) {
|
| - // Restore to previous state - if there is one.
|
| - bounds_in_screen->AdjustToFit(work_area);
|
| - return true;
|
| - }
|
| - // When using "small screens" we want to always open in full screen mode.
|
| - if (passed_show_state == ui::SHOW_STATE_DEFAULT &&
|
| - !browser_->is_session_restore() &&
|
| - work_area.width() <= GetForceMaximizedWidthLimit() &&
|
| - (!browser_->window() || !browser_->window()->IsFullscreen()) &&
|
| - (!browser_->fullscreen_controller() ||
|
| - !browser_->fullscreen_controller()->IsFullscreenForBrowser()))
|
| - *show_state = ui::SHOW_STATE_MAXIMIZED;
|
| - return true;
|
| - }
|
| - bool maximized = ash::wm::IsWindowMaximized(top_window);
|
| - // We ignore the saved show state, but look instead for the top level
|
| - // window's show state.
|
| - if (passed_show_state == ui::SHOW_STATE_DEFAULT) {
|
| - *show_state = maximized ? ui::SHOW_STATE_MAXIMIZED :
|
| - ui::SHOW_STATE_DEFAULT;
|
| + aura::RootWindow* active = ash::Shell::GetActiveRootWindow();
|
| + // Always open new window in the active display.
|
| + gfx::Rect work_area =
|
| + screen_->GetDisplayMatching(active->GetBoundsInScreen()).work_area();
|
| +
|
| + // This is a window / app. See if there is no window and try to place it.
|
| + int count = GetNumberOfValidTopLevelBrowserWindows(work_area);
|
| + aura::Window* top_window = ash::GetTopWindowForNewWindow(active);
|
| + // Our window should not have any impact if we are already on top.
|
| + if (browser_->window() &&
|
| + top_window == browser_->window()->GetNativeWindow())
|
| + top_window = NULL;
|
| +
|
| + // If there is no valid other window we take the coordinates as is.
|
| + if ((!count || !top_window)) {
|
| + if (has_saved_bounds) {
|
| + // Restore to previous state - if there is one.
|
| + bounds_in_screen->AdjustToFit(work_area);
|
| + return;
|
| }
|
|
|
| - if (maximized)
|
| - return true;
|
| -
|
| - // Use the size of the other window. The window's bound will be rearranged
|
| - // in ash::WorkspaceLayoutManager using this location.
|
| - *bounds_in_screen = top_window->GetBoundsInScreen();
|
| -
|
| - return true;
|
| + // When using "small screens" we want to always open in full screen mode.
|
| + if (passed_show_state == ui::SHOW_STATE_DEFAULT &&
|
| + !browser_->is_session_restore() &&
|
| + work_area.width() <= GetForceMaximizedWidthLimit() &&
|
| + (!browser_->window() || !browser_->window()->IsFullscreen()))
|
| + *show_state = ui::SHOW_STATE_MAXIMIZED;
|
| + return;
|
| + }
|
| + bool maximized = ash::wm::IsWindowMaximized(top_window);
|
| + // We ignore the saved show state, but look instead for the top level
|
| + // window's show state.
|
| + if (passed_show_state == ui::SHOW_STATE_DEFAULT) {
|
| + *show_state = maximized ? ui::SHOW_STATE_MAXIMIZED :
|
| + ui::SHOW_STATE_DEFAULT;
|
| }
|
|
|
| - return false;
|
| + // Use the size of the other window. The window's bound will be rearranged
|
| + // in ash::WorkspaceLayoutManager using this location.
|
| + *bounds_in_screen = top_window->GetBoundsInScreen();
|
| }
|
|
|
| void WindowSizer::GetDefaultWindowBoundsAsh(gfx::Rect* default_bounds) const {
|
|
|