Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1714)

Unified Diff: apps/shell_window.cc

Issue 21444002: Do not restore corrupt cached app window bounds. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix browser tests Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | apps/shell_window_geometry_cache.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: apps/shell_window.cc
diff --git a/apps/shell_window.cc b/apps/shell_window.cc
index 3fd2314f28fa1dc7f1889c1157c0e265b1d0d456..428ca5c758173d59896c5cbaaf670f3c35fc9b16 100644
--- a/apps/shell_window.cc
+++ b/apps/shell_window.cc
@@ -108,7 +108,9 @@ void ShellWindow::Init(const GURL& url,
// If left and top are left undefined, the native shell window will center
// the window on the main screen in a platform-defined manner.
- ui::WindowShowState cached_state = ui::SHOW_STATE_DEFAULT;
+ CreateParams new_params = params;
+
+ // Load cached state if it exists.
if (!params.window_key.empty()) {
window_key_ = params.window_key;
@@ -116,26 +118,23 @@ void ShellWindow::Init(const GURL& url,
gfx::Rect cached_bounds;
gfx::Rect cached_screen_bounds;
+ ui::WindowShowState cached_state = ui::SHOW_STATE_DEFAULT;
if (cache->GetGeometry(extension()->id(), params.window_key, &cached_bounds,
&cached_screen_bounds, &cached_state)) {
- bounds = cached_bounds;
// App window has cached screen bounds, make sure it fits on screen in
// case the screen resolution changed.
- if (!cached_screen_bounds.IsEmpty()) {
- gfx::Screen* screen = gfx::Screen::GetNativeScreen();
- gfx::Display display = screen->GetDisplayMatching(cached_bounds);
- gfx::Rect current_screen_bounds = display.work_area();
- AdjustBoundsToBeVisibleOnScreen(cached_bounds,
- cached_screen_bounds,
- current_screen_bounds,
- params.minimum_size,
- &bounds);
- }
+ gfx::Screen* screen = gfx::Screen::GetNativeScreen();
+ gfx::Display display = screen->GetDisplayMatching(cached_bounds);
+ gfx::Rect current_screen_bounds = display.work_area();
+ AdjustBoundsToBeVisibleOnScreen(cached_bounds,
+ cached_screen_bounds,
+ current_screen_bounds,
+ params.minimum_size,
+ &bounds);
+ new_params.state = cached_state;
}
}
- CreateParams new_params = params;
-
gfx::Size& minimum_size = new_params.minimum_size;
gfx::Size& maximum_size = new_params.maximum_size;
@@ -158,9 +157,6 @@ void ShellWindow::Init(const GURL& url,
new_params.bounds = bounds;
- if (cached_state != ui::SHOW_STATE_DEFAULT)
- new_params.state = cached_state;
-
native_app_window_.reset(NativeAppWindow::Create(this, new_params));
if (!new_params.hidden) {
@@ -589,16 +585,12 @@ void ShellWindow::AdjustBoundsToBeVisibleOnScreen(
const gfx::Rect& current_screen_bounds,
const gfx::Size& minimum_size,
gfx::Rect* bounds) const {
- if (!bounds)
- return;
-
*bounds = cached_bounds;
// Reposition and resize the bounds if the cached_screen_bounds is different
// from the current screen bounds and the current screen bounds doesn't
// completely contain the bounds.
- if (!cached_screen_bounds.IsEmpty() &&
- cached_screen_bounds != current_screen_bounds &&
+ if (cached_screen_bounds != current_screen_bounds &&
!current_screen_bounds.Contains(cached_bounds)) {
bounds->set_width(
std::max(minimum_size.width(),
« no previous file with comments | « no previous file | apps/shell_window_geometry_cache.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698