Merge "Handle chrome sync account deleted case" into honeycomb
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 77a27a1..c95ce21 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -195,7 +195,8 @@
</receiver>
<service
android:name=".widget.BookmarkThumbnailWidgetService"
- android:exported="true" />
+ android:permission="android.permission.BIND_REMOTEVIEWS"
+ android:exported="false" />
<!-- Makes .BrowserActivity the search target for any activity in Browser -->
<meta-data android:name="android.app.default_searchable" android:value=".BrowserActivity" />
diff --git a/res/drawable-hdpi/trashcan.png b/res/drawable-hdpi/trashcan.png
new file mode 100644
index 0000000..89b23ee
--- /dev/null
+++ b/res/drawable-hdpi/trashcan.png
Binary files differ
diff --git a/res/drawable-mdpi/trashcan.png b/res/drawable-mdpi/trashcan.png
new file mode 100644
index 0000000..f32bf27
--- /dev/null
+++ b/res/drawable-mdpi/trashcan.png
Binary files differ
diff --git a/res/layout/browser_add_bookmark.xml b/res/layout/browser_add_bookmark.xml
index 5eebc0b..df46be5 100644
--- a/res/layout/browser_add_bookmark.xml
+++ b/res/layout/browser_add_bookmark.xml
@@ -86,7 +86,7 @@
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:text="@string/remove"
- android:drawableLeft="@*android:drawable/ic_menu_delete"
+ android:drawableLeft="@drawable/trashcan"
android:visibility="gone"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
diff --git a/res/values/all_search_engines.xml b/res/values/all_search_engines.xml
index 08cf763..14aba39 100644
--- a/res/values/all_search_engines.xml
+++ b/res/values/all_search_engines.xml
@@ -208,9 +208,9 @@
<item>Google</item>
<item>google.com</item>
<item>http://www.google.com/favicon.ico</item>
- <item>http://www.google.com/m?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}</item>
+ <item>http://www.google.com/search?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}</item>
<item>UTF-8</item>
- <item>http://www.google.com/complete/search?hl={language}&json=true&q={searchTerms}</item>
+ <item>http://www.google.com/complete/search?hl={language}&client=android&q={searchTerms}</item>
</string-array>
<string-array name="bing_en_NZ" translatable="false">
<item>Bing</item>
diff --git a/src/com/android/browser/AutoFillSettingsFragment.java b/src/com/android/browser/AutoFillSettingsFragment.java
index 389be1f..3a7ae12 100644
--- a/src/com/android/browser/AutoFillSettingsFragment.java
+++ b/src/com/android/browser/AutoFillSettingsFragment.java
@@ -65,11 +65,18 @@
private class PhoneNumberValidator implements TextWatcher {
// Keep in sync with kPhoneNumberLength in chrome/browser/autofill/phone_number.cc
private static final int PHONE_NUMBER_LENGTH = 7;
+ private static final String PHONE_NUMBER_SEPARATORS_REGEX = "[\\s\\.\\(\\)-]";
public void afterTextChanged(Editable s) {
- int phoneNumberLength = s.toString().length();
+ String phoneNumber = s.toString();
+ int phoneNumberLength = phoneNumber.length();
- if (phoneNumberLength > 0 && phoneNumberLength < PHONE_NUMBER_LENGTH) {
+ // Strip out any phone number separators.
+ phoneNumber = phoneNumber.replaceAll(PHONE_NUMBER_SEPARATORS_REGEX, "");
+
+ int strippedPhoneNumberLength = phoneNumber.length();
+
+ if (phoneNumberLength > 0 && strippedPhoneNumberLength < PHONE_NUMBER_LENGTH) {
mPhoneEdit.setError(getResources().getText(
R.string.autofill_profile_editor_phone_number_invalid));
} else {
diff --git a/src/com/android/browser/BrowserHistoryPage.java b/src/com/android/browser/BrowserHistoryPage.java
index f3c7a7f..5d8d153 100644
--- a/src/com/android/browser/BrowserHistoryPage.java
+++ b/src/com/android/browser/BrowserHistoryPage.java
@@ -55,11 +55,9 @@
import android.view.ViewStub;
import android.webkit.WebIconDatabase.IconListener;
import android.widget.AdapterView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
-import android.widget.ExpandableListView;
-import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
-import android.widget.ExpandableListView.OnChildClickListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
@@ -69,7 +67,7 @@
* days of viewing.
*/
public class BrowserHistoryPage extends Fragment
- implements LoaderCallbacks<Cursor>, OnChildClickListener {
+ implements LoaderCallbacks<Cursor> {
static final int LOADER_HISTORY = 1;
static final int LOADER_MOST_VISITED = 2;
@@ -250,6 +248,8 @@
mChildWrapper = new HistoryChildWrapper(mAdapter);
mChildList = new ListView(getActivity());
mChildList.setAdapter(mChildWrapper);
+ mChildList.setOnItemClickListener(mChildItemClickListener);
+ registerForContextMenu(mChildList);
ViewGroup prefs = (ViewGroup) mRoot.findViewById(com.android.internal.R.id.prefs);
prefs.addView(mChildList);
@@ -272,6 +272,14 @@
}
};
+ private OnItemClickListener mChildItemClickListener = new OnItemClickListener() {
+ @Override
+ public void onItemClick(
+ AdapterView<?> parent, View view, int position, long id) {
+ mCallbacks.onUrlSelected(((HistoryItem) view).getUrl(), false);
+ }
+ };
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -337,11 +345,7 @@
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
- ExpandableListContextMenuInfo i = (ExpandableListContextMenuInfo) menuInfo;
- // Do not allow a context menu to come up from the group views.
- if (!(i.targetView instanceof HistoryItem)) {
- return;
- }
+ AdapterContextMenuInfo i = (AdapterContextMenuInfo) menuInfo;
// Inflate the menu
Activity parent = getActivity();
@@ -380,8 +384,8 @@
@Override
public boolean onContextItemSelected(MenuItem item) {
- ExpandableListContextMenuInfo i =
- (ExpandableListContextMenuInfo) item.getMenuInfo();
+ AdapterContextMenuInfo i =
+ (AdapterContextMenuInfo) item.getMenuInfo();
if (i == null) {
return false;
}
@@ -424,16 +428,6 @@
return super.onContextItemSelected(item);
}
- @Override
- public boolean onChildClick(ExpandableListView parent, View v,
- int groupPosition, int childPosition, long id) {
- if (v instanceof HistoryItem) {
- mCallbacks.onUrlSelected(((HistoryItem) v).getUrl(), false);
- return true;
- }
- return false;
- }
-
private static abstract class HistoryWrapper extends BaseAdapter {
protected HistoryAdapter mAdapter;
diff --git a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
index 6604a5f..b991abd 100644
--- a/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
+++ b/src/com/android/browser/widget/BookmarkThumbnailWidgetProvider.java
@@ -90,7 +90,7 @@
RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.bookmarkthumbnailwidget);
views.setOnClickPendingIntent(R.id.app_shortcut, launchBrowser);
- views.setRemoteAdapter(R.id.bookmarks_list, updateIntent);
+ views.setRemoteAdapter(appWidgetId, R.id.bookmarks_list, updateIntent);
appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.bookmarks_list);
Intent ic = new Intent(context, BookmarkThumbnailWidgetService.class);
views.setPendingIntentTemplate(R.id.bookmarks_list,
diff --git a/tools/get_search_engines.py b/tools/get_search_engines.py
index cd73423..bd6e5f8 100755
--- a/tools/get_search_engines.py
+++ b/tools/get_search_engines.py
@@ -39,16 +39,15 @@
google_data = ["google", "Google", "google.com",
"http://www.google.com/favicon.ico",
- "http://www.google.com/m?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}",
+ "http://www.google.com/search?hl={language}&ie={inputEncoding}&source=android-browser&q={searchTerms}",
"UTF-8",
- "http://www.google.com/complete/search?hl={language}&json=true&q={searchTerms}"]
+ "http://www.google.com/complete/search?hl={language}&client=android&q={searchTerms}"]
class SearchEngineManager(object):
"""Manages list of search engines and creates locale specific lists.
The main method useful for the caller is generateListForLocale(), which
- creates a locale specific search_engines.xml file suitable for use by the
- Android WebSearchProvider implementation.
+ creates a locale specific donottranslate-search_engines.xml file.
"""
def __init__(self):
@@ -195,7 +194,7 @@
self.writeEngineList(os.path.join(self.resdir, 'values'), "default")
def generateListForLocale(self, locale):
- """Creates a new locale specific search_engines.xml file.
+ """Creates a new locale specific donottranslate-search_engines.xml file.
The new file contains search engines specific to that country. If required
this function updates all_search_engines.xml file with any new search
@@ -237,7 +236,7 @@
text.append(' </string-array>\n');
self.generateXmlFromTemplate(os.path.join(sys.path[0], 'search_engines.template.xml'),
- os.path.join(dir_path, 'search_engines.xml'),
+ os.path.join(dir_path, 'donottranslate-search_engines.xml'),
text)
def generateXmlFromTemplate(self, template_path, out_path, text):
@@ -265,4 +264,3 @@
for locale in locales:
manager.generateListForLocale(locale)
manager.writeAllEngines()
-