package org.chromium.ui.base;
import android.app.Activity;
+import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentSender.SendIntentException;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.Log;
private static final int REQUEST_CODE_RANGE_SIZE = 100;
private static final String TAG = "ActivityWindowAndroid";
- private Activity mActivity;
+ private final Activity mActivity;
private int mNextRequestCode = 0;
public ActivityWindowAndroid(Activity activity) {
}
@Override
+ public int showCancelableIntent(PendingIntent intent, IntentCallback callback, int errorId) {
+ int requestCode = generateNextRequestCode();
+
+ try {
+ mActivity.startIntentSenderForResult(
+ intent.getIntentSender(), requestCode, new Intent(), 0, 0, 0);
+ } catch (SendIntentException e) {
+ return START_INTENT_FAILURE;
+ }
+
+ storeCallbackData(requestCode, callback, errorId);
+ return requestCode;
+ }
+
+ @Override
public int showCancelableIntent(Intent intent, IntentCallback callback, int errorId) {
- int requestCode = REQUEST_CODE_PREFIX + mNextRequestCode;
- mNextRequestCode = (mNextRequestCode + 1) % REQUEST_CODE_RANGE_SIZE;
+ int requestCode = generateNextRequestCode();
try {
mActivity.startActivityForResult(intent, requestCode);
} catch (ActivityNotFoundException e) {
- return -1;
+ return START_INTENT_FAILURE;
}
- mOutstandingIntents.put(requestCode, callback);
- mIntentErrors.put(requestCode, mApplicationContext.getString(errorId));
-
+ storeCallbackData(requestCode, callback, errorId);
return requestCode;
}
return null;
}
}
+
+ private int generateNextRequestCode() {
+ int requestCode = REQUEST_CODE_PREFIX + mNextRequestCode;
+ mNextRequestCode = (mNextRequestCode + 1) % REQUEST_CODE_RANGE_SIZE;
+ return requestCode;
+ }
+
+ private void storeCallbackData(int requestCode, IntentCallback callback, int errorId) {
+ mOutstandingIntents.put(requestCode, callback);
+ mIntentErrors.put(requestCode, mApplicationContext.getString(errorId));
+ }
}