summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/layout/snapshots.xml4
-rw-r--r--res/menu/snapshots_context.xml2
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/com/android/browser/BaseUi.java6
-rw-r--r--src/com/android/browser/Controller.java8
-rw-r--r--src/com/android/browser/NavScreen.java6
-rw-r--r--src/com/android/browser/NavigationBarPhone.java31
-rw-r--r--src/com/android/browser/PhoneUi.java25
-rw-r--r--src/com/android/browser/PreloadController.java14
-rw-r--r--src/com/android/browser/TabControl.java14
-rw-r--r--src/com/android/browser/UI.java3
11 files changed, 65 insertions, 52 deletions
diff --git a/res/layout/snapshots.xml b/res/layout/snapshots.xml
index 48d2883..54d4e01 100644
--- a/res/layout/snapshots.xml
+++ b/res/layout/snapshots.xml
@@ -33,8 +33,8 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="@string/empty_bookmarks_folder"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:text="@string/empty_snapshots_folder"
android:visibility="gone" />
</FrameLayout>
diff --git a/res/menu/snapshots_context.xml b/res/menu/snapshots_context.xml
index 01880dd..af7a776 100644
--- a/res/menu/snapshots_context.xml
+++ b/res/menu/snapshots_context.xml
@@ -18,6 +18,6 @@
<group android:id="@+id/CONTEXT_MENU">
<item
android:id="@+id/delete_context_menu_id"
- android:title="@string/remove_bookmark"/>
+ android:title="@string/remove_snapshot"/>
</group>
</menu>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 39cd1a7..a33670a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1004,4 +1004,8 @@
<string name="ua_switcher_desktop">Desktop</string>
<!-- Preload permission label [CHAR LIMIT=40] -->
<string name="permission_preload_label">Preload results</string>
+ <!-- Empty text for the "saved pages" tab that is shown when no saved pages exist. [CHAR LIMIT=None] -->
+ <string name="empty_snapshots_folder">There are no saved pages.</string>
+ <!-- Menu option to delete the currently selected saved page [CHAR LIMIT=50] -->
+ <string name="remove_snapshot">Delete saved page</string>
</resources>
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index d1445d8..b270dea 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -35,6 +35,7 @@ import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
@@ -653,6 +654,11 @@ public abstract class BaseUi implements UI, OnTouchListener {
}
@Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ return false;
+ }
+
+ @Override
public void onOptionsMenuClosed(boolean inLoad) {
}
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index 9b81870..8a4433e 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -1512,6 +1512,10 @@ public class Controller
// won't get onKeyUp for MENU. So it is important to reset it here.
mMenuIsDown = false;
}
+ if (mUi.onOptionsItemSelected(item)) {
+ // ui callback handled it
+ return true;
+ }
switch (item.getItemId()) {
// -- Main menu
case R.id.new_tab_menu_id:
@@ -2462,10 +2466,6 @@ public class Controller
boolean noModifiers = event.hasNoModifiers();
// Even if MENU is already held down, we need to call to super to open
// the IME on long press.
- if (KeyEvent.KEYCODE_MENU == keyCode) {
- event.startTracking();
- return true;
- }
if (!noModifiers
&& ((KeyEvent.KEYCODE_MENU == keyCode)
|| (KeyEvent.KEYCODE_CTRL_LEFT == keyCode)
diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java
index 23317b5..ee20535 100644
--- a/src/com/android/browser/NavScreen.java
+++ b/src/com/android/browser/NavScreen.java
@@ -23,6 +23,7 @@ import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.view.ViewConfiguration;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebView;
@@ -59,6 +60,7 @@ public class NavScreen extends RelativeLayout
NavTabGallery mScroller;
TabAdapter mAdapter;
int mOrientation;
+ boolean mNeedsMenu;
public NavScreen(Activity activity, UiController ctl, PhoneUi ui) {
super(activity);
@@ -122,6 +124,10 @@ public class NavScreen extends RelativeLayout
? LinearLayout.HORIZONTAL : LinearLayout.VERTICAL);
// update state for active tab
mScroller.setSelection(mUiController.getTabControl().getTabPosition(mUi.getActiveTab()));
+ mNeedsMenu = !ViewConfiguration.get(getContext()).hasPermanentMenuKey();
+ if (!mNeedsMenu) {
+ mMore.setVisibility(View.GONE);
+ }
}
@Override
diff --git a/src/com/android/browser/NavigationBarPhone.java b/src/com/android/browser/NavigationBarPhone.java
index 2030169..400b695 100644
--- a/src/com/android/browser/NavigationBarPhone.java
+++ b/src/com/android/browser/NavigationBarPhone.java
@@ -167,30 +167,6 @@ public class NavigationBarPhone extends NavigationBarBase implements
return mMenuShowing;
}
- void showMenu() {
- // called from menu key, use tab switcher as anchor
- mMenuShowing = true;
- if (isEditingUrl()) {
- stopEditingUrl();
- post(new Runnable() {
- @Override
- public void run() {
- showMenu();
- }
- });
- } else {
- mBaseUi.getTitleBar().setSkipTitleBarAnimations(true);
- mBaseUi.showTitleBar();
- mBaseUi.getTitleBar().setSkipTitleBarAnimations(false);
- post(new Runnable() {
- @Override
- public void run() {
- showMenu(mTabSwitcher);
- }
- });
- }
- }
-
void showMenu(View anchor) {
mMenuShowing = true;
mPopupMenu = new PopupMenu(mContext, anchor);
@@ -202,13 +178,6 @@ public class NavigationBarPhone extends NavigationBarBase implements
mPopupMenu.show();
}
- void dismissMenu() {
- if (mPopupMenu != null) {
- mPopupMenu.dismiss();
- mBaseUi.suggestHideTitleBar();
- }
- }
-
@Override
public void onDismiss(PopupMenu menu) {
onMenuHidden();
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 9e3310b..28db6f0 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -23,6 +23,7 @@ import android.view.ActionMode;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.webkit.WebView;
import android.widget.FrameLayout;
@@ -78,16 +79,6 @@ public class PhoneUi extends BaseUi {
}
@Override
- public boolean onMenuKey() {
- if (mNavigationBar.isMenuShowing()) {
- mNavigationBar.dismissMenu();
- } else {
- mNavigationBar.showMenu();
- }
- return true;
- }
-
- @Override
public boolean dispatchKey(int code, KeyEvent event) {
return false;
}
@@ -169,6 +160,20 @@ public class PhoneUi extends BaseUi {
// menu handling callbacks
@Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ menu.setGroupVisible(R.id.NAV_MENU, (mNavScreen == null));
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ if (mNavScreen != null) {
+ hideNavScreen(false);
+ }
+ return false;
+ }
+
+ @Override
public void onContextMenuCreated(Menu menu) {
hideTitleBar();
}
diff --git a/src/com/android/browser/PreloadController.java b/src/com/android/browser/PreloadController.java
index 11586ea..652ea8e 100644
--- a/src/com/android/browser/PreloadController.java
+++ b/src/com/android/browser/PreloadController.java
@@ -81,11 +81,25 @@ public class PreloadController implements WebViewController {
@Override
public void onPageStarted(Tab tab, WebView view, Bitmap favicon) {
if (LOGD_ENABLED) Log.d(LOGTAG, "onPageStarted()");
+ if (view != null) {
+ // Clear history of all previously visited pages. When the
+ // user visits a preloaded tab, the only item in the history
+ // list should the currently viewed page.
+ view.clearHistory();
+ }
}
@Override
public void onPageFinished(Tab tab) {
if (LOGD_ENABLED) Log.d(LOGTAG, "onPageFinished()");
+ if (tab != null) {
+ final WebView view = tab.getWebView();
+ if (view != null) {
+ // Clear history of all previously visited pages. When the
+ // user visits a preloaded tab.
+ view.clearHistory();
+ }
+ }
}
@Override
diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java
index 1be2016..6473c88 100644
--- a/src/com/android/browser/TabControl.java
+++ b/src/com/android/browser/TabControl.java
@@ -389,6 +389,11 @@ class TabControl {
// ignore tab
} else if (id == currentId || restoreAll) {
Tab t = createNewTab();
+ if (t == null) {
+ // We could "break" at this point, but we want
+ // sNextId to be set correctly.
+ continue;
+ }
tabMap.put(id, t);
// Me must set the current tab before restoring the state
// so that all the client classes are set.
@@ -416,11 +421,12 @@ class TabControl {
// added the tab to the front as they are not current
mTabQueue.add(0, t);
}
- // make sure that there is no id overlap between the restored
- // and new tabs
- sNextId = maxId + 1;
-
}
+
+ // make sure that there is no id overlap between the restored
+ // and new tabs
+ sNextId = maxId + 1;
+
if (mCurrentTab == -1) {
if (getTabCount() > 0) {
setCurrentTab(getTab(0));
diff --git a/src/com/android/browser/UI.java b/src/com/android/browser/UI.java
index 4b58872..23897f7 100644
--- a/src/com/android/browser/UI.java
+++ b/src/com/android/browser/UI.java
@@ -22,6 +22,7 @@ import android.os.Bundle;
import android.view.ActionMode;
import android.view.KeyEvent;
import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.webkit.WebView;
@@ -102,6 +103,8 @@ public interface UI {
public void onExtendedMenuOpened();
+ public boolean onOptionsItemSelected(MenuItem item);
+
public void onOptionsMenuClosed(boolean inLoad);
public void onExtendedMenuClosed(boolean inLoad);