diff options
author | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 06:10:57 +0000 |
---|---|---|
committer | stevenjb@chromium.org <stevenjb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-09 06:10:57 +0000 |
commit | 68eeede20e63fbb9a8756ed73e482b87dde57c72 (patch) | |
tree | 26d1bd889cbfd7b32131d585a97dcb9b447b8733 /chrome/browser/extensions/shell_window_geometry_cache.cc | |
parent | c2ff9b4ec2549c5b3b36c11fe2fca7b5495adf9a (diff) | |
download | chromium_src-68eeede20e63fbb9a8756ed73e482b87dde57c72.zip chromium_src-68eeede20e63fbb9a8756ed73e482b87dde57c72.tar.gz chromium_src-68eeede20e63fbb9a8756ed73e482b87dde57c72.tar.bz2 |
Save and restore State for ShellWindows, including panels
This replaces ShellWindow::CreateParams::State with
ui::WindowShowState for simplicty and consistency with
Browser session restore.
BUG=233556
TBR=flackr@chromium.org, skuhne@chromium.org, sky@chromium.org
Original CL: https://codereview.chromium.org/14031021/
+ disabled flakey browser tests on linux
Review URL: https://chromiumcodereview.appspot.com/14663010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@199145 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/shell_window_geometry_cache.cc')
-rw-r--r-- | chrome/browser/extensions/shell_window_geometry_cache.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/chrome/browser/extensions/shell_window_geometry_cache.cc b/chrome/browser/extensions/shell_window_geometry_cache.cc index f08f085..7d01f9c 100644 --- a/chrome/browser/extensions/shell_window_geometry_cache.cc +++ b/chrome/browser/extensions/shell_window_geometry_cache.cc @@ -40,18 +40,21 @@ ShellWindowGeometryCache::~ShellWindowGeometryCache() { void ShellWindowGeometryCache::SaveGeometry( const std::string& extension_id, const std::string& window_id, - const gfx::Rect& bounds) { + const gfx::Rect& bounds, + ui::WindowShowState window_state) { ExtensionData& extension_data = cache_[extension_id]; // If we don't have any unsynced changes and this is a duplicate of what's // already in the cache, just ignore it. if (extension_data[window_id].bounds == bounds && + extension_data[window_id].window_state == window_state && !ContainsKey(unsynced_extensions_, extension_id)) return; base::Time now = base::Time::Now(); extension_data[window_id].bounds = bounds; + extension_data[window_id].window_state = window_state; extension_data[window_id].last_change = now; if (extension_data.size() > kMaxCachedWindows) { @@ -99,6 +102,7 @@ void ShellWindowGeometryCache::SyncToStorage() { value->SetInteger("y", bounds.y()); value->SetInteger("w", bounds.width()); value->SetInteger("h", bounds.height()); + value->SetInteger("state", it->second.window_state); value->SetString( "ts", base::Int64ToString(it->second.last_change.ToInternalValue())); dict->SetWithoutPathExpansion(it->first, value); @@ -110,7 +114,8 @@ void ShellWindowGeometryCache::SyncToStorage() { bool ShellWindowGeometryCache::GetGeometry( const std::string& extension_id, const std::string& window_id, - gfx::Rect* bounds) const { + gfx::Rect* bounds, + ui::WindowShowState* window_state) const { std::map<std::string, ExtensionData>::const_iterator extension_data_it = cache_.find(extension_id); @@ -125,7 +130,10 @@ bool ShellWindowGeometryCache::GetGeometry( if (window_data == extension_data_it->second.end()) return false; - *bounds = window_data->second.bounds; + if (bounds) + *bounds = window_data->second.bounds; + if (window_state) + *window_state = window_data->second.window_state; return true; } @@ -171,8 +179,7 @@ void ShellWindowGeometryCache::OnExtensionLoaded( // overwrite that information since it is probably the result of an // application starting up very quickly. const std::string& window_id = it.key(); - ExtensionData::iterator cached_window = - extension_data.find(window_id); + ExtensionData::iterator cached_window = extension_data.find(window_id); if (cached_window == extension_data.end()) { const base::DictionaryValue* stored_window; if (it.value().GetAsDictionary(&stored_window)) { @@ -187,6 +194,10 @@ void ShellWindowGeometryCache::OnExtensionLoaded( window_data.bounds.set_width(i); if (stored_window->GetInteger("h", &i)) window_data.bounds.set_height(i); + if (stored_window->GetInteger("state", &i)) { + window_data.window_state = + static_cast<ui::WindowShowState>(i); + } std::string ts_as_string; if (stored_window->GetString("ts", &ts_as_string)) { int64 ts; |