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

Side by Side Diff: apps/shell_window_geometry_cache.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, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « apps/shell_window_geometry_cache.h ('k') | apps/shell_window_geometry_cache_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "apps/shell_window_geometry_cache.h" 5 #include "apps/shell_window_geometry_cache.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 140
141 // Not in the map means loading data for the extension didn't finish yet or 141 // Not in the map means loading data for the extension didn't finish yet or
142 // the cache was not constructed until after the extension was loaded. 142 // the cache was not constructed until after the extension was loaded.
143 // Attempt to load from sync to address the latter case. 143 // Attempt to load from sync to address the latter case.
144 if (extension_data_it == cache_.end()) { 144 if (extension_data_it == cache_.end()) {
145 LoadGeometryFromStorage(extension_id); 145 LoadGeometryFromStorage(extension_id);
146 extension_data_it = cache_.find(extension_id); 146 extension_data_it = cache_.find(extension_id);
147 DCHECK(extension_data_it != cache_.end()); 147 DCHECK(extension_data_it != cache_.end());
148 } 148 }
149 149
150 ExtensionData::const_iterator window_data = extension_data_it->second.find( 150 ExtensionData::const_iterator window_data_it = extension_data_it->second.find(
151 window_id); 151 window_id);
152 152
153 if (window_data == extension_data_it->second.end()) 153 if (window_data_it == extension_data_it->second.end())
154 return false;
155
156 const WindowData& window_data = window_data_it->second;
157
158 // Check for and do not return corrupt data.
159 if ((bounds && window_data.bounds.IsEmpty()) ||
160 (screen_bounds && window_data.screen_bounds.IsEmpty()) ||
161 (window_state && window_data.window_state == ui::SHOW_STATE_DEFAULT))
154 return false; 162 return false;
155 163
156 if (bounds) 164 if (bounds)
157 *bounds = window_data->second.bounds; 165 *bounds = window_data.bounds;
158 if (screen_bounds) 166 if (screen_bounds)
159 *screen_bounds = window_data->second.screen_bounds; 167 *screen_bounds = window_data.screen_bounds;
160 if (window_state) 168 if (window_state)
161 *window_state = window_data->second.window_state; 169 *window_state = window_data.window_state;
162 return true; 170 return true;
163 } 171 }
164 172
165 void ShellWindowGeometryCache::Shutdown() { 173 void ShellWindowGeometryCache::Shutdown() {
166 SyncToStorage(); 174 SyncToStorage();
167 } 175 }
168 176
169 177
170 ShellWindowGeometryCache::WindowData::WindowData() 178 ShellWindowGeometryCache::WindowData::WindowData()
171 : window_state(ui::SHOW_STATE_DEFAULT) { 179 : window_state(ui::SHOW_STATE_DEFAULT) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
299 return false; 307 return false;
300 } 308 }
301 309
302 content::BrowserContext* 310 content::BrowserContext*
303 ShellWindowGeometryCache::Factory::GetBrowserContextToUse( 311 ShellWindowGeometryCache::Factory::GetBrowserContextToUse(
304 content::BrowserContext* context) const { 312 content::BrowserContext* context) const {
305 return chrome::GetBrowserContextRedirectedInIncognito(context); 313 return chrome::GetBrowserContextRedirectedInIncognito(context);
306 } 314 }
307 315
308 } // namespace apps 316 } // namespace apps
OLDNEW
« no previous file with comments | « apps/shell_window_geometry_cache.h ('k') | apps/shell_window_geometry_cache_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698