diff options
author | John Reck <jreck@google.com> | 2010-10-26 19:01:24 -0700 |
---|---|---|
committer | John Reck <jreck@google.com> | 2010-10-29 17:09:25 -0700 |
commit | fb3017ffd8aa3f2342380270cf468e3a68914e69 (patch) | |
tree | 8480ed9bae90628844de42d663af27e7a3093e46 | |
parent | c54d328a499ec0c35f73e5cf57169541e8bf1cd3 (diff) | |
download | packages_apps_Browser-fb3017ffd8aa3f2342380270cf468e3a68914e69.zip packages_apps_Browser-fb3017ffd8aa3f2342380270cf468e3a68914e69.tar.gz packages_apps_Browser-fb3017ffd8aa3f2342380270cf468e3a68914e69.tar.bz2 |
Fixes tab title not updating correctly
Bug: 3130982
Fixes the bug where the tab title would stay the same until a new
title was received. Now the title changes to "Loading..." until a
new title is received, or changes to the URL if the page finishes
or is canceled without receiving a title.
Change-Id: I667acbaeea5383b6a434c20337d404f49b947b0d
-rw-r--r-- | src/com/android/browser/SuggestionsAdapter.java | 30 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/TabBar.java | 16 | ||||
-rw-r--r-- | src/com/android/browser/TabControl.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/UrlUtils.java | 49 |
5 files changed, 67 insertions, 32 deletions
diff --git a/src/com/android/browser/SuggestionsAdapter.java b/src/com/android/browser/SuggestionsAdapter.java index 7cfcc6b..626283a 100644 --- a/src/com/android/browser/SuggestionsAdapter.java +++ b/src/com/android/browser/SuggestionsAdapter.java @@ -60,10 +60,6 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli private static final String COMBINED_SELECTION = "(url LIKE ? OR url LIKE ? OR url LIKE ? OR url LIKE ? OR title LIKE ?)"; - // Regular expression which matches http://, followed by some stuff, followed by - // optionally a trailing slash, all matched as separate groups. - private static final Pattern STRIP_URL_PATTERN = Pattern.compile("^(http://)(.*?)(/$)?"); - Context mContext; Filter mFilter; SuggestionResults mResults; @@ -475,7 +471,7 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli */ private String getTitle(String title, String url) { if (TextUtils.isEmpty(title) || TextUtils.getTrimmedLength(title) == 0) { - title = stripUrl(url); + title = UrlUtils.stripUrl(url); } return title; } @@ -493,31 +489,9 @@ public class SuggestionsAdapter extends BaseAdapter implements Filterable, OnCli || title.equals(url)) { return null; } else { - return stripUrl(url); - } - } - - /** - * Strips the provided url of preceding "http://" and any trailing "/". Does not - * strip "https://". If the provided string cannot be stripped, the original string - * is returned. - * - * TODO: Put this in TextUtils to be used by other packages doing something similar. - * - * @param url a url to strip, like "http://www.google.com/" - * @return a stripped url like "www.google.com", or the original string if it could - * not be stripped - */ - private String stripUrl(String url) { - if (url == null) return null; - Matcher m = STRIP_URL_PATTERN.matcher(url); - if (m.matches() && m.groupCount() == 3) { - return m.group(2); - } else { - return url; + return UrlUtils.stripUrl(url); } } - } class SearchesCursor extends CursorSource { diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index 910f753..2436e84 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -510,7 +510,7 @@ class Tab { mActivity.onPageStarted(view, url, favicon); } if (getTabChangeListener() != null) { - getTabChangeListener().onPageStarted(Tab.this, favicon); + getTabChangeListener().onPageStarted(Tab.this, url, favicon); } } diff --git a/src/com/android/browser/TabBar.java b/src/com/android/browser/TabBar.java index 26b72f7..a939639 100644 --- a/src/com/android/browser/TabBar.java +++ b/src/com/android/browser/TabBar.java @@ -67,8 +67,10 @@ public class TabBar extends LinearLayout private boolean mUserRequestedUrlbar; private boolean mTitleVisible; private boolean mShowUrlMode; + private boolean mHasReceivedTitle; private Drawable mGenericFavicon; + private String mLoadingText; public TabBar(BrowserActivity context, TabControl tabcontrol, TitleBarXLarge titlebar) { super(context); @@ -89,6 +91,7 @@ public class TabBar extends LinearLayout mNewTab = (ImageButton) findViewById(R.id.newtab); mNewTab.setOnClickListener(this); mGenericFavicon = res.getDrawable(R.drawable.app_web_browser_sm); + mLoadingText = res.getString(R.string.title_bar_loading); // TODO: Change enabled states based on whether you can go // back/forward. Probably should be done inside onPageStarted. @@ -355,7 +358,7 @@ public class TabBar extends LinearLayout if (title != null) { mTabView.setDisplayTitle(title); } else if (url != null) { - mTabView.setDisplayTitle(url); + mTabView.setDisplayTitle(UrlUtils.stripUrl(url)); } } } @@ -437,6 +440,7 @@ public class TabBar extends LinearLayout @Override public void onUrlAndTitle(Tab tab, String url, String title) { + mHasReceivedTitle = true; TabViewData tvd = mTabMap.get(tab); if (tvd != null) { tvd.setUrlAndTitle(url, title); @@ -445,13 +449,21 @@ public class TabBar extends LinearLayout @Override public void onPageFinished(Tab tab) { + if (!mHasReceivedTitle) { + TabViewData tvd = mTabMap.get(tab); + if (tvd != null) { + tvd.setUrlAndTitle(tvd.mUrl, null); + } + } } @Override - public void onPageStarted(Tab tab, Bitmap favicon) { + public void onPageStarted(Tab tab, String url, Bitmap favicon) { + mHasReceivedTitle = false; TabViewData tvd = mTabMap.get(tab); if (tvd != null) { tvd.setFavicon(favicon); + tvd.setUrlAndTitle(url, mLoadingText); } } diff --git a/src/com/android/browser/TabControl.java b/src/com/android/browser/TabControl.java index 55bfb48..fcccad1 100644 --- a/src/com/android/browser/TabControl.java +++ b/src/com/android/browser/TabControl.java @@ -695,7 +695,7 @@ class TabControl { public void onFavicon(Tab tab, Bitmap favicon); - public void onPageStarted(Tab tab, Bitmap favicon); + public void onPageStarted(Tab tab, String url, Bitmap favicon); public void onPageFinished(Tab tab); diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java new file mode 100644 index 0000000..cb6377a --- /dev/null +++ b/src/com/android/browser/UrlUtils.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2010 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.browser; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class UrlUtils { + + // Regular expression which matches http://, followed by some stuff, followed by + // optionally a trailing slash, all matched as separate groups. + private static final Pattern STRIP_URL_PATTERN = Pattern.compile("^(http://)(.*?)(/$)?"); + + private UrlUtils() { /* cannot be instantiated */ } + + /** + * Strips the provided url of preceding "http://" and any trailing "/". Does not + * strip "https://". If the provided string cannot be stripped, the original string + * is returned. + * + * TODO: Put this in TextUtils to be used by other packages doing something similar. + * + * @param url a url to strip, like "http://www.google.com/" + * @return a stripped url like "www.google.com", or the original string if it could + * not be stripped + */ + /* package */ static String stripUrl(String url) { + if (url == null) return null; + Matcher m = STRIP_URL_PATTERN.matcher(url); + if (m.matches() && m.groupCount() == 3) { + return m.group(2); + } else { + return url; + } + } +} |