summaryrefslogtreecommitdiffstats
path: root/views/focus/view_storage.cc
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-11 23:50:55 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-05-11 23:50:55 +0000
commit0d52b23006174f37ba0337c170506b9580ccaf29 (patch)
tree889e57066b28a69e288132c72d0dc560cf5e2051 /views/focus/view_storage.cc
parent1bdf29eb27c00bd1be0a6f3eb65d33ecddde274f (diff)
downloadchromium_src-0d52b23006174f37ba0337c170506b9580ccaf29.zip
chromium_src-0d52b23006174f37ba0337c170506b9580ccaf29.tar.gz
chromium_src-0d52b23006174f37ba0337c170506b9580ccaf29.tar.bz2
Removing floating views, they are not used anymore.
BUG=None TEST=Run unit_tests, ui_tests, interactive ui_tests. Make sure focus traversal still works. Review URL: http://codereview.chromium.org/113215 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@15817 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views/focus/view_storage.cc')
-rw-r--r--views/focus/view_storage.cc101
1 files changed, 17 insertions, 84 deletions
diff --git a/views/focus/view_storage.cc b/views/focus/view_storage.cc
index a108530..9b8b9ee 100644
--- a/views/focus/view_storage.cc
+++ b/views/focus/view_storage.cc
@@ -11,27 +11,6 @@
namespace views {
-// This struct contains the information to locate a specific view.
-// Locating a view is not always straight-forward as a view can be a floating
-// view, or the child of a floating view. Floating views are frequently deleted
-// and recreated (typically when their container is laid out).
-struct ViewLocationInfo {
- // True if the view is floating or the child of a floating view. False
- // otherwise.
- bool is_floating_view;
-
- // If non floating, this is the stored view. If floating, the parent of the
- // floating view.
- View* view;
-
- // The id of the floating view.
- int floating_view_id;
-
- // The path from the floating view to the stored view. The path is composed
- // of the indexes of the views in the hierarchy.
- std::vector<int> floating_view_to_view_path;
-};
-
// static
ViewStorage* ViewStorage::GetSharedInstance() {
return Singleton<ViewStorage>::get();
@@ -41,9 +20,6 @@ ViewStorage::ViewStorage() : view_storage_next_id_(0) {
}
ViewStorage::~ViewStorage() {
- STLDeleteContainerPairSecondPointers(id_to_view_location_.begin(),
- id_to_view_location_.end());
-
STLDeleteContainerPairSecondPointers(view_to_ids_.begin(),
view_to_ids_.end());
}
@@ -54,38 +30,21 @@ int ViewStorage::CreateStorageID() {
void ViewStorage::StoreView(int storage_id, View* view) {
DCHECK(view);
- std::map<int, ViewLocationInfo*>::iterator iter =
- id_to_view_location_.find(storage_id);
- DCHECK(iter == id_to_view_location_.end());
+ std::map<int, View*>::iterator iter = id_to_view_.find(storage_id);
- if (iter != id_to_view_location_.end())
+ if (iter != id_to_view_.end()) {
+ NOTREACHED();
RemoveView(storage_id);
-
- ViewLocationInfo* view_location_info = new ViewLocationInfo();
- View* floating_view_parent = view->RetrieveFloatingViewParent();
- if (floating_view_parent) {
- // The view is a floating view or is a child of a floating view.
- view_location_info->is_floating_view = true;
- view_location_info->view = floating_view_parent->GetParent();
- view_location_info->floating_view_id =
- floating_view_parent->GetFloatingViewID();
- // Ley's store the path from the floating view to the actual view so we can
- // locate it when restoring.
- View::GetViewPath(floating_view_parent, view,
- &(view_location_info->floating_view_to_view_path));
- } else {
- // It is a non floating view, it can be stored as is.
- view_location_info->is_floating_view = false;
- view_location_info->view = view;
}
- id_to_view_location_[storage_id] = view_location_info;
+
+ id_to_view_[storage_id] = view;
std::vector<int>* ids = NULL;
std::map<View*, std::vector<int>*>::iterator id_iter =
- view_to_ids_.find(view_location_info->view);
+ view_to_ids_.find(view);
if (id_iter == view_to_ids_.end()) {
ids = new std::vector<int>();
- view_to_ids_[view_location_info->view] = ids;
+ view_to_ids_[view] = ids;
} else {
ids = id_iter->second;
}
@@ -93,31 +52,10 @@ void ViewStorage::StoreView(int storage_id, View* view) {
}
View* ViewStorage::RetrieveView(int storage_id) {
- std::map<int, ViewLocationInfo*>::iterator iter =
- id_to_view_location_.find(storage_id);
- if (iter == id_to_view_location_.end())
+ std::map<int, View*>::iterator iter = id_to_view_.find(storage_id);
+ if (iter == id_to_view_.end())
return NULL;
-
- ViewLocationInfo* view_location_info = iter->second;
- if (view_location_info->is_floating_view) {
- View* floating_view = view_location_info->view->
- RetrieveFloatingViewForID(view_location_info->floating_view_id);
- View* v = NULL;
- if (floating_view) {
- v = View::GetViewForPath(floating_view,
- view_location_info->floating_view_to_view_path);
- }
- if (!v) {
- // If we have not found the view, it means either the floating view with
- // the id we have is gone, or it has changed and the actual child view
- // we have the path for is not accessible. In that case, let's make sure
- // we don't leak the ViewLocationInfo.
- RemoveView(storage_id);
- }
- return v;
- } else {
- return view_location_info->view;
- }
+ return iter->second;
}
void ViewStorage::RemoveView(int storage_id) {
@@ -141,15 +79,12 @@ void ViewStorage::ViewRemoved(View* parent, View* removed) {
void ViewStorage::EraseView(int storage_id, bool remove_all_ids) {
// Remove the view from id_to_view_location_.
- std::map<int, ViewLocationInfo*>::iterator location_iter =
- id_to_view_location_.find(storage_id);
- if (location_iter == id_to_view_location_.end())
+ std::map<int, View*>::iterator view_iter = id_to_view_.find(storage_id);
+ if (view_iter == id_to_view_.end())
return;
- ViewLocationInfo* view_location = location_iter->second;
- View* view = view_location->view;
- delete view_location;
- id_to_view_location_.erase(location_iter);
+ View* view = view_iter->second;
+ id_to_view_.erase(view_iter);
// Also update view_to_ids_.
std::map<View*, std::vector<int>*>::iterator ids_iter =
@@ -159,11 +94,9 @@ void ViewStorage::EraseView(int storage_id, bool remove_all_ids) {
if (remove_all_ids) {
for (size_t i = 0; i < ids->size(); ++i) {
- location_iter = id_to_view_location_.find((*ids)[i]);
- if (location_iter != id_to_view_location_.end()) {
- delete location_iter->second;
- id_to_view_location_.erase(location_iter);
- }
+ view_iter = id_to_view_.find((*ids)[i]);
+ if (view_iter != id_to_view_.end())
+ id_to_view_.erase(view_iter);
}
ids->clear();
} else {