merge in honeycomb-release history after reset to honeycomb
diff --git a/res/layout/history_header.xml b/res/layout/history_header.xml
index e03b009..f77a697 100644
--- a/res/layout/history_header.xml
+++ b/res/layout/history_header.xml
@@ -21,4 +21,5 @@
android:textAppearance="?android:attr/textAppearanceMedium"
android:paddingLeft="35dip"
android:gravity="center_vertical"
- />
\ No newline at end of file
+ android:background="?android:attr/activatedBackgroundIndicator"
+ />
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index 6ea2bff..66abd9a 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -54,6 +54,7 @@
import android.view.ViewGroup;
import android.view.ViewStub;
import android.webkit.WebIconDatabase.IconListener;
+import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
@@ -245,6 +246,7 @@
mAdapter = new HistoryAdapter(getActivity());
mGroupList.setAdapter(new HistoryGroupWrapper(mAdapter));
mGroupList.setOnItemClickListener(mGroupItemClickListener);
+ mGroupList.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
mChildWrapper = new HistoryChildWrapper(mAdapter);
mChildList = new ListView(getActivity());
mChildList.setAdapter(mChildWrapper);
@@ -269,6 +271,7 @@
CharSequence title = ((TextView) view).getText();
mFragmentBreadCrumbs.setTitle(title, title);
mChildWrapper.setSelectedGroup(position);
+ mGroupList.setItemChecked(position, true);
}
};
@@ -557,13 +560,13 @@
@Override
public int getGroupCount() {
- return super.getGroupCount() + (mMostVisited != null ? 1 : 0);
+ return super.getGroupCount() + (!isMostVisitedEmpty() ? 1 : 0);
}
@Override
public int getChildrenCount(int groupPosition) {
if (groupPosition >= super.getGroupCount()) {
- if (mMostVisited == null) {
+ if (isMostVisitedEmpty()) {
return 0;
}
return mMostVisited.getCount();
@@ -576,6 +579,10 @@
if (!super.isEmpty()) {
return false;
}
+ return isMostVisitedEmpty();
+ }
+
+ private boolean isMostVisitedEmpty() {
return mMostVisited == null
|| mMostVisited.isClosed()
|| mMostVisited.getCount() == 0;
diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java
index b0057ed..1ab02ed 100644
--- a/src/com/android/browser/TabBar.java
+++ b/src/com/android/browser/TabBar.java
@@ -230,6 +230,17 @@
}
}
+ boolean showsTitleBarIndicator() {
+ Tab tab = mTabControl.getCurrentTab();
+ if (tab != null) {
+ TabView tv = mTabMap.get(tab);
+ if (tv != null) {
+ return tv.showsIndicator();
+ }
+ }
+ return false;
+ }
+
// callback after fake titlebar is shown
void onShowTitleBar() {
showTitleBarIndicator(false);
@@ -251,10 +262,14 @@
if (mTabControl.getCurrentTab() != null
&& !isLoading()) {
if (visibleTitleHeight == 0) {
- mUi.hideFakeTitleBar();
- showTitleBarIndicator(true);
+ if (!showsTitleBarIndicator()) {
+ mUi.hideFakeTitleBar();
+ showTitleBarIndicator(true);
+ }
} else {
- showTitleBarIndicator(false);
+ if (showsTitleBarIndicator()) {
+ showTitleBarIndicator(false);
+ }
}
}
mVisibleTitleHeight = visibleTitleHeight;
@@ -336,6 +351,10 @@
}
}
+ boolean showsIndicator() {
+ return (mIndicator.getVisibility() == View.VISIBLE);
+ }
+
@Override
public void onClick(View v) {
if (v == mClose) {
diff --git a/src/com/android/browser/UrlHandler.java b/src/com/android/browser/UrlHandler.java
index 9e41990..f1d1c4c 100644
--- a/src/com/android/browser/UrlHandler.java
+++ b/src/com/android/browser/UrlHandler.java
@@ -119,8 +119,7 @@
return false;
}
- boolean startActivityForUrl(String url)
- {
+ boolean startActivityForUrl(String url) {
Intent intent;
// perform generic parsing of the URI to turn it into an Intent.
try {
@@ -173,8 +172,7 @@
// In case a physical keyboard is attached, handle clicks with the menu key
// depressed by opening in a new tab
- boolean handleMenuClick(Tab tab, String url)
- {
+ boolean handleMenuClick(Tab tab, String url) {
if (mController.isMenuDown()) {
mController.openTab(tab, url, false);
mActivity.closeOptionsMenu();
@@ -184,6 +182,8 @@
return false;
}
+ // TODO: Move this class into Tab, where it can be properly stopped upon
+ // closure of the tab
private class RLZTask extends AsyncTask<Void, Void, String> {
private Tab mTab;
private Uri mSiteUri;
@@ -215,10 +215,13 @@
}
protected void onPostExecute(String result) {
- // If the Activity Manager is not invoked, load the URL directly
- if (!startActivityForUrl(result)) {
- if (!handleMenuClick(mTab, result)) {
- mController.loadUrl(mWebView, result);
+ // Make sure the Tab was not closed while handling the task
+ if (mController.getTabControl().getTabIndex(mTab) != -1) {
+ // If the Activity Manager is not invoked, load the URL directly
+ if (!startActivityForUrl(result)) {
+ if (!handleMenuClick(mTab, result)) {
+ mController.loadUrl(mWebView, result);
+ }
}
}
}