diff options
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); } /** |