Commit 148c09b8 authored by Daniel Park's avatar Daniel Park Committed by Commit Bot

[Long Back Press for History] Detect back button long press

Bug: 800033
Change-Id: I53c2b05a204f30b187efa4b703525c76a5a9dfb9
Reviewed-on: https://chromium-review.googlesource.com/940331
Commit-Queue: Daniel Park <danielpark@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#547765}
parent 8092f39d
...@@ -29,6 +29,7 @@ import android.view.LayoutInflater; ...@@ -29,6 +29,7 @@ import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.view.ViewConfiguration;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.Window; import android.view.Window;
import android.view.WindowManager; import android.view.WindowManager;
...@@ -278,6 +279,8 @@ public class ChromeTabbedActivity ...@@ -278,6 +279,8 @@ public class ChromeTabbedActivity
private AppIndexingUtil mAppIndexingUtil; private AppIndexingUtil mAppIndexingUtil;
private Runnable mShowHistoryRunnable;
/** /**
* Whether an initial tab needs to be created during UI initialization. * Whether an initial tab needs to be created during UI initialization.
*/ */
...@@ -2031,6 +2034,13 @@ public class ChromeTabbedActivity ...@@ -2031,6 +2034,13 @@ public class ChromeTabbedActivity
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
// Detecting a long press of the back button via onLongPress is broken in Android N.
// To work around this, use a postDelayed, which is supported in all versions.
if (keyCode == KeyEvent.KEYCODE_BACK && !isTablet()) {
if (mShowHistoryRunnable == null) mShowHistoryRunnable = this ::showFullHistoryForTab;
mHandler.postDelayed(mShowHistoryRunnable, ViewConfiguration.getLongPressTimeout());
return super.onKeyDown(keyCode, event);
}
if (!mUIInitialized) { if (!mUIInitialized) {
return super.onKeyDown(keyCode, event); return super.onKeyDown(keyCode, event);
} }
...@@ -2040,6 +2050,16 @@ public class ChromeTabbedActivity ...@@ -2040,6 +2050,16 @@ public class ChromeTabbedActivity
|| super.onKeyDown(keyCode, event); || super.onKeyDown(keyCode, event);
} }
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && !isTablet()) {
mHandler.removeCallbacks(mShowHistoryRunnable);
}
return super.onKeyUp(keyCode, event);
}
private void showFullHistoryForTab() {}
@Override @Override
public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, Menu menu, public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, Menu menu,
int deviceId) { int deviceId) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment