diff options
author | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-14 00:44:06 +0000 |
---|---|---|
committer | aruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-14 00:44:06 +0000 |
commit | 766ab500a15f453f145dd6bb49dd280dd26b5b67 (patch) | |
tree | 9ae7ee083f2ad38b669dca6cb7a992d325b86940 /ui/android | |
parent | fbaa71d911d15808639210ce05eeba770514c949 (diff) | |
download | chromium_src-766ab500a15f453f145dd6bb49dd280dd26b5b67.zip chromium_src-766ab500a15f453f145dd6bb49dd280dd26b5b67.tar.gz chromium_src-766ab500a15f453f145dd6bb49dd280dd26b5b67.tar.bz2 |
[Android] Allow the intent to be cancelled.
showCancelableIntent() could be used to get a request code for
cancelIntent(int).
BUG=328205
Review URL: https://codereview.chromium.org/100173007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240823 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/android')
-rw-r--r-- | ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java | 11 | ||||
-rw-r--r-- | ui/android/java/src/org/chromium/ui/base/WindowAndroid.java | 22 |
2 files changed, 29 insertions, 4 deletions
diff --git a/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java index e5812df..342ba68 100644 --- a/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java +++ b/ui/android/java/src/org/chromium/ui/base/ActivityWindowAndroid.java @@ -37,20 +37,25 @@ public class ActivityWindowAndroid extends WindowAndroid { } @Override - public boolean showIntent(Intent intent, IntentCallback callback, int errorId) { + public int showCancelableIntent(Intent intent, IntentCallback callback, int errorId) { int requestCode = REQUEST_CODE_PREFIX + mNextRequestCode; mNextRequestCode = (mNextRequestCode + 1) % REQUEST_CODE_RANGE_SIZE; try { mActivity.startActivityForResult(intent, requestCode); } catch (ActivityNotFoundException e) { - return false; + return -1; } mOutstandingIntents.put(requestCode, callback); mIntentErrors.put(requestCode, mApplicationContext.getString(errorId)); - return true; + return requestCode; + } + + @Override + public void cancelIntent(int requestCode) { + mActivity.finishActivity(requestCode); } @Override diff --git a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java index 44469e5..90fbb68 100644 --- a/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java +++ b/ui/android/java/src/org/chromium/ui/base/WindowAndroid.java @@ -53,8 +53,28 @@ public class WindowAndroid { * @return Whether the intent was shown. */ public boolean showIntent(Intent intent, IntentCallback callback, int errorId) { + return showCancelableIntent(intent, callback, errorId) >= 0; + } + + /** + * Shows an intent that could be canceled and returns the results to the callback object. + * @param intent The intent that needs to be showed. + * @param callback The object that will receive the results for the intent. + * @param errorId The ID of error string to be show if activity is paused before intent + * results. + * @return A non-negative request code that could be used for finishActivity, or -1 if failed. + */ + public int showCancelableIntent(Intent intent, IntentCallback callback, int errorId) { Log.d(TAG, "Can't show intent as context is not an Activity: " + intent); - return false; + return -1; + } + + /** + * Force finish another activity that you had previously started with showCancelableIntent. + * @param requestCode The request code returned from showCancelableIntent. + */ + public void cancelIntent(int requestCode) { + Log.d(TAG, "Can't cancel intent as context is not an Activity: " + requestCode); } /** |