diff options
author | Jean-Baptiste Queru <jbq@google.com> | 2009-08-11 13:12:34 -0700 |
---|---|---|
committer | Jean-Baptiste Queru <jbq@google.com> | 2009-08-11 13:12:34 -0700 |
commit | ac1e59d887651220f5367cc7fa4207b34eab774d (patch) | |
tree | 971ee29f4bceffd00248b4aa17a7413078e4f14d /core/java/android | |
parent | 5c1207be90fdf296c1b83034b7c68915e1749284 (diff) | |
download | frameworks_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.java | 46 | ||||
-rw-r--r-- | core/java/android/app/SuggestionsAdapter.java | 9 | ||||
-rw-r--r-- | core/java/android/net/http/EventHandler.java | 5 | ||||
-rw-r--r-- | core/java/android/net/http/HttpsConnection.java | 5 | ||||
-rw-r--r-- | core/java/android/net/http/LoggingEventHandler.java | 4 | ||||
-rw-r--r-- | core/java/android/provider/Checkin.java | 42 | ||||
-rw-r--r-- | core/java/android/webkit/GearsPermissionsManager.java | 8 | ||||
-rw-r--r-- | core/java/android/webkit/LoadListener.java | 15 | ||||
-rw-r--r-- | core/java/android/webkit/WebSettings.java | 1 |
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); } |