summaryrefslogtreecommitdiffstats
path: root/ui/android
diff options
context:
space:
mode:
authoraruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-14 00:44:06 +0000
committeraruslan@chromium.org <aruslan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-14 00:44:06 +0000
commit766ab500a15f453f145dd6bb49dd280dd26b5b67 (patch)
tree9ae7ee083f2ad38b669dca6cb7a992d325b86940 /ui/android
parentfbaa71d911d15808639210ce05eeba770514c949 (diff)
downloadchromium_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.java11
-rw-r--r--ui/android/java/src/org/chromium/ui/base/WindowAndroid.java22
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);
}
/**