Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3035)

Unified Diff: chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java

Issue 79573003: Upstreaming AppMenu. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Actually add tvdpi Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java
diff --git a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java
index c0d18efc54cea7daf55e4fb173f9735760d1ea36..02a6a628f938b8a113749ff8125c34c7a45d75d0 100644
--- a/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java
+++ b/chrome/android/testshell/java/src/org/chromium/chrome/testshell/ChromiumTestShellActivity.java
@@ -6,12 +6,12 @@ package org.chromium.chrome.testshell;
import android.app.Activity;
import android.content.Intent;
+import android.content.res.TypedArray;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
-import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
@@ -20,6 +20,8 @@ import org.chromium.base.BaseSwitches;
import org.chromium.base.CommandLine;
import org.chromium.base.MemoryPressureListener;
import org.chromium.chrome.browser.DevToolsServer;
+import org.chromium.chrome.browser.appmenu.AppMenuHandler;
+import org.chromium.chrome.browser.appmenu.AppMenuPropertiesDelegate;
import org.chromium.chrome.browser.printing.PrintingControllerFactory;
import org.chromium.chrome.browser.printing.TabPrinter;
import org.chromium.chrome.testshell.sync.SyncController;
@@ -37,7 +39,7 @@ import org.chromium.ui.base.WindowAndroid;
/**
* The {@link android.app.Activity} component of a basic test shell to test Chrome features.
*/
-public class ChromiumTestShellActivity extends Activity implements MenuHandler {
+public class ChromiumTestShellActivity extends Activity implements AppMenuPropertiesDelegate {
private static final String TAG = "ChromiumTestShellActivity";
private WindowAndroid mWindow;
@@ -46,6 +48,8 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler {
private SyncController mSyncController;
private PrintingController mPrintingController;
+ private AppMenuHandler mAppMenuHandler;
+
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -87,7 +91,8 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler {
mTabManager.setStartupUrl(startupUrl);
}
TestShellToolbar mToolbar = (TestShellToolbar) findViewById(R.id.toolbar);
- mToolbar.setMenuHandler(this);
+ mAppMenuHandler = new AppMenuHandler(this, this, R.menu.main_menu);
+ mToolbar.setMenuHandler(mAppMenuHandler);
mDevToolsServer = new DevToolsServer("chromium_testshell");
mDevToolsServer.setRemoteDebuggingEnabled(true);
@@ -201,19 +206,15 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler {
}
/**
- * From {@link MenuHandler}.
+ * Override the menu key event to show AppMenu.
*/
@Override
- public void showPopupMenu() {
- openOptionsMenu();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.main_menu, menu);
- menu.findItem(R.id.print).setVisible(ApiCompatibilityUtils.isPrintingSupported());
- return true;
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) {
+ mAppMenuHandler.showAppMenu(findViewById(R.id.menu_button), true, false);
+ return true;
+ }
+ return super.onKeyDown(keyCode, event);
}
@Override
@@ -230,22 +231,17 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler {
mPrintingController.startPrint(new TabPrinter(getActiveTab()));
}
return true;
+ case R.id.back_menu_id:
+ if (getActiveTab().canGoBack()) getActiveTab().goBack();
+ return true;
+ case R.id.forward_menu_id:
+ if (getActiveTab().canGoForward()) getActiveTab().goForward();
+ return true;
default:
return super.onOptionsItemSelected(item);
}
}
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- menu.setGroupVisible(R.id.MAIN_MENU, true);
- MenuItem signinItem = menu.findItem(R.id.signin);
- if (ChromeSigninController.get(this).isSignedIn())
- signinItem.setTitle(ChromeSigninController.get(this).getSignedInAccountName());
- else
- signinItem.setTitle(R.string.signin_sign_in);
- return true;
- }
-
private void waitForDebuggerIfNeeded() {
if (CommandLine.getInstance().hasSwitch(BaseSwitches.WAIT_FOR_JAVA_DEBUGGER)) {
Log.e(TAG, "Waiting for Java debugger to connect...");
@@ -257,4 +253,53 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler {
private static String getUrlFromIntent(Intent intent) {
return intent != null ? intent.getDataString() : null;
}
+
+ @Override
+ public boolean shouldShowAppMenu() {
+ return true;
+ }
+
+ @Override
+ public void prepareMenu(Menu menu) {
+ // Disable the "Back" menu item if there is no page to go to.
+ MenuItem backMenuItem = menu.findItem(R.id.back_menu_id);
+ backMenuItem.setEnabled(getActiveTab().canGoBack());
+
+ // Disable the "Forward" menu item if there is no page to go to.
+ MenuItem forwardMenuItem = menu.findItem(R.id.forward_menu_id);
+ forwardMenuItem.setEnabled(getActiveTab().canGoForward());
+
+ // ChromiumTestShell does not know about bookmarks yet
+ menu.findItem(R.id.bookmark_this_page_id).setEnabled(false);
+
+ MenuItem signinItem = menu.findItem(R.id.signin);
+ if (ChromeSigninController.get(this).isSignedIn()) {
+ signinItem.setTitle(ChromeSigninController.get(this).getSignedInAccountName());
+ } else {
+ signinItem.setTitle(R.string.signin_sign_in);
+ }
+
+ menu.findItem(R.id.print).setVisible(ApiCompatibilityUtils.isPrintingSupported());
+
+ menu.setGroupVisible(R.id.MAIN_MENU, true);
+ }
+
+ @Override
+ public boolean shouldShowIconRow() {
+ return true;
+ }
+
+ @Override
+ public int getMenuThemeResourceId() {
+ return android.R.style.Theme_Holo_Light;
+ }
+
+ @Override
+ public int getItemRowHeight() {
+ TypedArray a = obtainStyledAttributes(
+ new int[] {android.R.attr.listPreferredItemHeightSmall});
+ int itemRowHeight = a.getDimensionPixelSize(0, 0);
+ a.recycle();
+ return itemRowHeight;
+ }
}

Powered by Google App Engine
This is Rietveld 408576698