Fix crash on pasting text in a WebView
WindowDecorActionBar and Chrome's ContentViewCore each have their own ActionMode reference. ActionModeImpl.finish() nulls WindowDecorActionBar's reference and calls mCallback.onDestroyActionMode() to null ContentViewCore's reference. But if the callback is deferred, there is a period when the ActionMode is finished (and mCallback is null), but ContentViewCore doesn't know. ContentViewCore may try to invalidate() the ActionMode, which will crash on the null mCallback. Make ActionModeImpl more permissive so that calling invalidate() during this period does nothing. BUG:18758329 Change-Id: I407fa0e0cd3cffa217e165caed83130d44760316
This commit is contained in:
@@ -993,6 +993,13 @@ public class WindowDecorActionBar extends ActionBar implements
|
||||
|
||||
@Override
|
||||
public void invalidate() {
|
||||
if (mActionMode != this) {
|
||||
// Not the active action mode - no-op. It's possible we are
|
||||
// currently deferring onDestroy, so the app doesn't yet know we
|
||||
// are going away and is trying to use us. That's also a no-op.
|
||||
return;
|
||||
}
|
||||
|
||||
mMenu.stopDispatchingItemsChanged();
|
||||
try {
|
||||
mCallback.onPrepareActionMode(this, mMenu);
|
||||
|
||||
Reference in New Issue
Block a user