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; |
+ } |
} |