diff options
author | tdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-03 21:35:06 +0000 |
---|---|---|
committer | tdresser@chromium.org <tdresser@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-03 21:35:06 +0000 |
commit | d1d067abf68561a23f8bdff954d90fbab73b420a (patch) | |
tree | e6bfec8daf95b7dc097cb68a5be1ab32ed530ea6 /ui/aura/window_event_dispatcher.cc | |
parent | 5b597e18292ed8551ad694258cbd3542bdb134cd (diff) | |
download | chromium_src-d1d067abf68561a23f8bdff954d90fbab73b420a.zip chromium_src-d1d067abf68561a23f8bdff954d90fbab73b420a.tar.gz chromium_src-d1d067abf68561a23f8bdff954d90fbab73b420a.tar.bz2 |
CHECK that ui::Windows being destroyed have been hidden if necessary
There have been a bunch of crashes due to the GestureRecognizer targeting
touches to windows that have been destroyed. When a window is hidden
(in WindowEventDispatcher::OnWindowHidden), all references to that window
are removed from the GestureRecognizer.
It looks like some windows with touches targeted to them are being
destroyed without being hidden first. This change CHECKs that this
never occurs.
BUG=342040
Review URL: https://codereview.chromium.org/224063002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261531 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/aura/window_event_dispatcher.cc')
-rw-r--r-- | ui/aura/window_event_dispatcher.cc | 13 |
1 files changed, 1 insertions, 12 deletions
diff --git a/ui/aura/window_event_dispatcher.cc b/ui/aura/window_event_dispatcher.cc index 5489596..36d8e6c 100644 --- a/ui/aura/window_event_dispatcher.cc +++ b/ui/aura/window_event_dispatcher.cc @@ -307,7 +307,7 @@ void WindowEventDispatcher::OnWindowHidden(Window* invisible, if (invisible->Contains(old_dispatch_target_)) old_dispatch_target_ = NULL; - CleanupGestureState(invisible); + invisible->CleanupGestureState(); // Do not clear the capture, and the |event_dispatch_target_| if the // window is moving across hosts, because the target itself is actually still @@ -333,17 +333,6 @@ void WindowEventDispatcher::OnWindowHidden(Window* invisible, } } -void WindowEventDispatcher::CleanupGestureState(Window* window) { - ui::GestureRecognizer::Get()->CancelActiveTouches(window); - ui::GestureRecognizer::Get()->CleanupStateForConsumer(window); - const Window::Windows& windows = window->children(); - for (Window::Windows::const_iterator iter = windows.begin(); - iter != windows.end(); - ++iter) { - CleanupGestureState(*iter); - } -} - Window* WindowEventDispatcher::GetGestureTarget(ui::GestureEvent* event) { Window* target = NULL; if (!event->IsEndingEvent()) { |