Chromium Code Reviews| Index: ash/wm/overview/window_selector.cc |
| diff --git a/ash/wm/overview/window_selector.cc b/ash/wm/overview/window_selector.cc |
| index d9903da69c51d9925d578a3cc58028ea9021f37c..79d428f2040cc170a41cd8b9b93f2f734b1d9ea0 100644 |
| --- a/ash/wm/overview/window_selector.cc |
| +++ b/ash/wm/overview/window_selector.cc |
| @@ -256,6 +256,7 @@ WindowSelector::WindowSelector(const WindowList& windows, |
| std::vector<WindowSelectorPanels*> panels_items; |
| for (size_t i = 0; i < windows.size(); ++i) { |
| + WindowSelectorItem* item = NULL; |
| if (windows[i] != restore_focus_window_) |
| windows[i]->AddObserver(this); |
| observed_windows_.insert(windows[i]); |
| @@ -276,9 +277,13 @@ WindowSelector::WindowSelector(const WindowList& windows, |
| panels_item = *iter; |
| } |
| panels_item->AddWindow(windows[i]); |
| + item = panels_item; |
| } else { |
| - windows_.push_back(new WindowSelectorWindow(windows[i])); |
| + item = new WindowSelectorWindow(windows[i]); |
| + windows_.push_back(item); |
| } |
| + // Verify that the window has been added to an item in overview. |
| + CHECK(item->TargetedWindow(windows[i])); |
| } |
| UMA_HISTOGRAM_COUNTS_100("Ash.WindowSelector.Items", windows_.size()); |
| @@ -396,8 +401,11 @@ void WindowSelector::OnWindowDestroying(aura::Window* window) { |
| window->RemoveObserver(this); |
| if (window == restore_focus_window_) |
| restore_focus_window_ = NULL; |
| - if (iter == windows_.end()) |
| + if (iter == windows_.end()) { |
| + CHECK(std::find(observed_windows_.begin(), |
| + observed_windows_.end(), window) == observed_windows_.end()); |
| return; |
| + } |
| observed_windows_.erase(window); |
|
flackr
2013/11/22 22:42:34
I could alternately move this line up before the e
|
| (*iter)->RemoveWindow(window); |