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 2b8d5233ad5fb1f4fd71c751a0905864c0b137fe..ac07e29f1c7a06481032083b5f83de406588677e 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,6 +6,7 @@ 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; |
@@ -19,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.testshell.sync.SyncController; |
import org.chromium.content.browser.ActivityContentVideoViewClient; |
import org.chromium.content.browser.BrowserStartupController; |
@@ -33,7 +36,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; |
@@ -41,6 +44,8 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler { |
private DevToolsServer mDevToolsServer; |
private SyncController mSyncController; |
+ private AppMenuHandler mAppMenuHandler; |
+ |
@Override |
protected void onCreate(final Bundle savedInstanceState) { |
super.onCreate(savedInstanceState); |
@@ -77,7 +82,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); |
+ mToolbar.setMenuHandler(mAppMenuHandler); |
mWindow = new ActivityWindowAndroid(this); |
mWindow.restoreInstanceState(savedInstanceState); |
@@ -186,18 +192,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); |
- 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 |
@@ -209,22 +212,17 @@ public class ChromiumTestShellActivity extends Activity implements MenuHandler { |
else |
SyncController.openSigninDialog(getFragmentManager()); |
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..."); |
@@ -236,4 +234,51 @@ 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.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; |
+ } |
} |