summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorJean-Baptiste Queru <jbq@google.com>2009-08-11 13:12:34 -0700
committerJean-Baptiste Queru <jbq@google.com>2009-08-11 13:12:34 -0700
commitac1e59d887651220f5367cc7fa4207b34eab774d (patch)
tree971ee29f4bceffd00248b4aa17a7413078e4f14d /core/java/android
parent5c1207be90fdf296c1b83034b7c68915e1749284 (diff)
downloadframeworks_base-ac1e59d887651220f5367cc7fa4207b34eab774d.zip
frameworks_base-ac1e59d887651220f5367cc7fa4207b34eab774d.tar.gz
frameworks_base-ac1e59d887651220f5367cc7fa4207b34eab774d.tar.bz2
donut snapshot
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/app/SearchDialog.java46
-rw-r--r--core/java/android/app/SuggestionsAdapter.java9
-rw-r--r--core/java/android/net/http/EventHandler.java5
-rw-r--r--core/java/android/net/http/HttpsConnection.java5
-rw-r--r--core/java/android/net/http/LoggingEventHandler.java4
-rw-r--r--core/java/android/provider/Checkin.java42
-rw-r--r--core/java/android/webkit/GearsPermissionsManager.java8
-rw-r--r--core/java/android/webkit/LoadListener.java15
-rw-r--r--core/java/android/webkit/WebSettings.java1
9 files changed, 52 insertions, 83 deletions
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 18e4a52..70aceeb 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -693,39 +693,6 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
return mLaunchComponent.flattenToShortString().startsWith("com.android.browser/");
}
- /*
- * Menu.
- */
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Show search settings menu item if anyone handles the intent for it
- Intent settingsIntent = new Intent(SearchManager.INTENT_ACTION_SEARCH_SETTINGS);
- settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- PackageManager pm = getContext().getPackageManager();
- ActivityInfo activityInfo = settingsIntent.resolveActivityInfo(pm, 0);
- if (activityInfo != null) {
- settingsIntent.setClassName(activityInfo.applicationInfo.packageName,
- activityInfo.name);
- CharSequence label = activityInfo.loadLabel(getContext().getPackageManager());
- menu.add(Menu.NONE, Menu.NONE, Menu.NONE, label)
- .setIcon(android.R.drawable.ic_menu_preferences)
- .setAlphabeticShortcut('P')
- .setIntent(settingsIntent);
- return true;
- }
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onMenuOpened(int featureId, Menu menu) {
- // The menu shows up above the IME, regardless of whether it is in front
- // of the drop-down or not. This looks weird when there is no IME, so
- // we make sure it is visible.
- mSearchAutoComplete.ensureImeVisible();
- return super.onMenuOpened(featureId, menu);
- }
-
/**
* Listeners of various types
*/
@@ -899,16 +866,15 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
return;
}
try {
+ // First stop the existing search before starting voice search, or else we'll end
+ // up showing the search dialog again once we return to the app.
+ ((SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE)).
+ stopSearch();
+
if (mSearchable.getVoiceSearchLaunchWebSearch()) {
getContext().startActivity(mVoiceWebSearchIntent);
} else if (mSearchable.getVoiceSearchLaunchRecognizer()) {
- Intent appSearchIntent = createVoiceAppSearchIntent(mVoiceAppSearchIntent);
-
- // Stop the existing search before starting voice search, or else we'll end
- // up showing the search dialog again once we return to the app.
- ((SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE)).
- stopSearch();
-
+ Intent appSearchIntent = createVoiceAppSearchIntent(mVoiceAppSearchIntent);
getContext().startActivity(appSearchIntent);
}
} catch (ActivityNotFoundException e) {
diff --git a/core/java/android/app/SuggestionsAdapter.java b/core/java/android/app/SuggestionsAdapter.java
index 4a00e48..bd4e66e 100644
--- a/core/java/android/app/SuggestionsAdapter.java
+++ b/core/java/android/app/SuggestionsAdapter.java
@@ -658,7 +658,14 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
if (col == NONE) {
return null;
}
- return cursor.getString(col);
+ try {
+ return cursor.getString(col);
+ } catch (Exception e) {
+ Log.e(LOG_TAG,
+ "unexpected error retrieving valid column from cursor, "
+ + "did the remote process die?", e);
+ return null;
+ }
}
}
diff --git a/core/java/android/net/http/EventHandler.java b/core/java/android/net/http/EventHandler.java
index 830d1f1..a035c19 100644
--- a/core/java/android/net/http/EventHandler.java
+++ b/core/java/android/net/http/EventHandler.java
@@ -141,7 +141,10 @@ public interface EventHandler {
* SSL certificate error callback. Handles SSL error(s) on the way
* up to the user. The callback has to make sure that restartConnection() is called,
* otherwise the connection will be suspended indefinitely.
+ * @return True if the callback can handle the error, which means it will
+ * call restartConnection() to unblock the thread later,
+ * otherwise return false.
*/
- public void handleSslErrorRequest(SslError error);
+ public boolean handleSslErrorRequest(SslError error);
}
diff --git a/core/java/android/net/http/HttpsConnection.java b/core/java/android/net/http/HttpsConnection.java
index 55b733f..8a69d0d 100644
--- a/core/java/android/net/http/HttpsConnection.java
+++ b/core/java/android/net/http/HttpsConnection.java
@@ -323,7 +323,10 @@ public class HttpsConnection extends Connection {
mSuspended = true;
}
// don't hold the lock while calling out to the event handler
- eventHandler.handleSslErrorRequest(error);
+ boolean canHandle = eventHandler.handleSslErrorRequest(error);
+ if(!canHandle) {
+ throw new IOException("failed to handle "+ error);
+ }
synchronized (mSuspendLock) {
if (mSuspended) {
try {
diff --git a/core/java/android/net/http/LoggingEventHandler.java b/core/java/android/net/http/LoggingEventHandler.java
index 1b18651..bdafa0b 100644
--- a/core/java/android/net/http/LoggingEventHandler.java
+++ b/core/java/android/net/http/LoggingEventHandler.java
@@ -82,9 +82,11 @@ public class LoggingEventHandler implements EventHandler {
}
}
- public void handleSslErrorRequest(SslError error) {
+ public boolean handleSslErrorRequest(SslError error) {
if (HttpLog.LOGV) {
HttpLog.v("LoggingEventHandler: handleSslErrorRequest():" + error);
}
+ // return false so that the caller thread won't wait forever
+ return false;
}
}
diff --git a/core/java/android/provider/Checkin.java b/core/java/android/provider/Checkin.java
index f2c275e..6b491ab 100644
--- a/core/java/android/provider/Checkin.java
+++ b/core/java/android/provider/Checkin.java
@@ -109,6 +109,11 @@ public final class Checkin {
SYSTEM_TOMBSTONE,
TEST,
BATTERY_DISCHARGE_INFO,
+ MARKET_DOWNLOAD,
+ MARKET_INSTALL,
+ MARKET_REMOVE,
+ MARKET_REFUND,
+ MARKET_UNINSTALL,
}
}
@@ -147,43 +152,6 @@ public final class Checkin {
TEST,
NETWORK_RX_MOBILE,
NETWORK_TX_MOBILE,
- MARKET_DOWNLOAD_REQUESTED,
- MARKET_DOWNLOAD_SCHEDULED,
- MARKET_DOWNLOAD_CANCELLED_PENDING,
- MARKET_DOWNLOAD_CANCELLED,
- MARKET_DOWNLOAD_OK,
- MARKET_DOWNLOAD_FAILED,
- MARKET_DOWNLOAD_DECLINED,
- MARKET_INSTALL_SCHEDULED,
- MARKET_INSTALL_FAILED,
- MARKET_INSTALL_OK,
- MARKET_REMOVE_SCHEDULED,
- MARKET_REMOVE_MALICIOUS_SCHEDULED,
- MARKET_REMOVE_ABORTED,
- MARKET_REMOVE_FAILED,
- MARKET_REMOVE_OK,
- MARKET_UNINSTALL_SCHEDULED,
- MARKET_REFUND_REQUESTED,
- MARKET_REFUND_OK,
- MARKET_REFUND_FAILED,
- MARKET_REASON_ALREADY_EXISTS,
- MARKET_REASON_INVALID_APK,
- MARKET_REASON_INSUFFICIENT_STORAGE,
- MARKET_REASON_DUPLICATE_PACKAGE,
- MARKET_REASON_UPDATE_INCOMPATIBLE,
- MARKET_REASON_MISSING_SHARED_LIBRARY,
- MARKET_REASON_REPLACE_COULDNT_DELETE,
- MARKET_REASON_PARSE_NOT_APK,
- MARKET_REASON_PARSE_BAD_MANIFEST,
- MARKET_REASON_PARSE_NO_CERTIFICATES,
- MARKET_REASON_PARSE_INCONSISTENT_CERTIFICATES,
- MARKET_REASON_PARSE_CERTIFICATE_ENCODING,
- MARKET_REASON_PARSE_BAD_PACKAGE_NAME,
- MARKET_REASON_PARSE_BAD_SHARED_USER_ID,
- MARKET_REASON_PARSE_MANIFEST_MALFORMED,
- MARKET_REASON_PARSE_MANIFEST_EMPTY,
- MARKET_REASON_UNKNOWN,
- MARKET_STALE_INSTALL_ATTEMPT,
PHONE_CDMA_REGISTERED,
PHONE_CDMA_DATA_ATTEMPTED,
PHONE_CDMA_DATA_CONNECTED,
diff --git a/core/java/android/webkit/GearsPermissionsManager.java b/core/java/android/webkit/GearsPermissionsManager.java
index e70e449..6549cb8 100644
--- a/core/java/android/webkit/GearsPermissionsManager.java
+++ b/core/java/android/webkit/GearsPermissionsManager.java
@@ -139,7 +139,13 @@ class GearsPermissionsManager {
file = new File(file.getAbsolutePath() + File.separator
+ GEARS_DATABASE_DIR + File.separator + GEARS_DATABASE_FILE);
// Remember whether or not we need to create the LocationAccess table.
- boolean needToCreateTables = !file.exists();
+ boolean needToCreateTables = false;
+ if (!file.exists()) {
+ needToCreateTables = true;
+ // Create the path or else SQLiteDatabase.openOrCreateDatabase()
+ // may throw on the device.
+ file.getParentFile().mkdirs();
+ }
// If the database file does not yet exist and the system location
// setting says that the Gears origins need to be removed from the
// location permission table, it means that we don't actually need
diff --git a/core/java/android/webkit/LoadListener.java b/core/java/android/webkit/LoadListener.java
index 9ca2909..c3f3594 100644
--- a/core/java/android/webkit/LoadListener.java
+++ b/core/java/android/webkit/LoadListener.java
@@ -106,6 +106,7 @@ class LoadListener extends Handler implements EventHandler {
private String mErrorDescription;
private SslError mSslError;
private RequestHandle mRequestHandle;
+ private RequestHandle mSslErrorRequestHandle;
// Request data. It is only valid when we are doing a load from the
// cache. It is needed if the cache returns a redirect
@@ -693,7 +694,7 @@ class LoadListener extends Handler implements EventHandler {
* IMPORTANT: as this is called from network thread, can't call native
* directly
*/
- public void handleSslErrorRequest(SslError error) {
+ public boolean handleSslErrorRequest(SslError error) {
if (WebView.LOGV_ENABLED) {
Log.v(LOGTAG,
"LoadListener.handleSslErrorRequest(): url:" + url() +
@@ -701,6 +702,15 @@ class LoadListener extends Handler implements EventHandler {
" certificate: " + error.getCertificate());
}
sendMessageInternal(obtainMessage(MSG_SSL_ERROR, error));
+ // if it has been canceled, return false so that the network thread
+ // won't be blocked. If it is not canceled, save the mRequestHandle
+ // so that if it is canceled when MSG_SSL_ERROR is handled, we can
+ // still call handleSslErrorResponse which will call restartConnection
+ // to unblock the network thread.
+ if (!mCancelled) {
+ mSslErrorRequestHandle = mRequestHandle;
+ }
+ return !mCancelled;
}
// Handle the ssl error on the WebCore thread.
@@ -708,7 +718,10 @@ class LoadListener extends Handler implements EventHandler {
if (!mCancelled) {
mSslError = error;
Network.getInstance(mContext).handleSslErrorRequest(this);
+ } else if (mSslErrorRequestHandle != null) {
+ mSslErrorRequestHandle.handleSslErrorResponse(true);
}
+ mSslErrorRequestHandle = null;
}
/**
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index c5012f1..a038b55 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -199,6 +199,7 @@ public class WebSettings {
switch (msg.what) {
case SYNC:
synchronized (WebSettings.this) {
+ checkGearsPermissions();
if (mBrowserFrame.mNativeFrame != 0) {
nativeSync(mBrowserFrame.mNativeFrame);
}