Index: ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java |
diff --git a/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java b/ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java |
similarity index 55% |
copy from ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java |
copy to ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java |
index cc0198c972d7b25a1e00ea4f8bd81df37cd240e5..821a8a8cb500e522dce0401622dad09c68b8c23d 100644 |
--- a/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java |
+++ b/ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java |
@@ -6,23 +6,18 @@ package org.chromium.ui.gfx; |
import android.app.Activity; |
import android.content.ActivityNotFoundException; |
-import android.content.ContentResolver; |
import android.content.Intent; |
-import android.content.res.Resources; |
import android.os.Bundle; |
import android.util.SparseArray; |
import android.widget.Toast; |
-import org.chromium.base.JNINamespace; |
- |
import java.util.HashMap; |
/** |
* The window that has access to the main activity and is able to create and receive intents, |
* and show error messages. |
*/ |
-@JNINamespace("ui") |
-public class NativeWindow { |
+public class ActivityNativeWindow extends NativeWindow { |
// Constants used for intent request code bounding. |
private static final int REQUEST_CODE_PREFIX = 1000; |
@@ -30,74 +25,20 @@ public class NativeWindow { |
// A string used as a key to store intent errors in a bundle |
static final String WINDOW_CALLBACK_ERRORS = "window_callback_errors"; |
- // Native pointer to the c++ WindowAndroid object. |
- private int mNativeWindowAndroid = 0; |
private int mNextRequestCode = 0; |
protected Activity mActivity; |
- private SparseArray<IntentCallback> mOutstandingIntents; |
- private HashMap<Integer, String> mIntentErrors; |
- |
- /** |
- * An interface that intent callback objects have to implement. |
- */ |
- public interface IntentCallback { |
- /** |
- * Handles the data returned by the requested intent. |
- * @param window A window reference. |
- * @param resultCode Result code of the requested intent. |
- * @param contentResolver An instance of ContentResolver class for accessing returned data. |
- * @param data The data returned by the intent. |
- */ |
- public void onIntentCompleted(NativeWindow window, int resultCode, |
- ContentResolver contentResolver, Intent data); |
- } |
+ protected SparseArray<IntentCallback> mOutstandingIntents; |
+ protected HashMap<Integer, String> mIntentErrors; |
/** |
- * Constructs a Window object, saves a reference to the main activity, and initializes the |
- * outstanding intent map. NativeWindowAndroid gets lazily loaded on getNativePointer(). |
- * @param activity The main application activity. |
+ * @param activity |
*/ |
- public NativeWindow(Activity activity) { |
+ public ActivityNativeWindow(Activity activity) { |
+ super(activity); |
mActivity = activity; |
mOutstandingIntents = new SparseArray<IntentCallback>(); |
mIntentErrors = new HashMap<Integer, String>(); |
- mNativeWindowAndroid = 0; |
- } |
- |
- /** |
- * Destroys the c++ WindowAndroid object if one has been created. |
- */ |
- public void destroy() { |
- if (mNativeWindowAndroid != 0) { |
- nativeDestroy(mNativeWindowAndroid); |
- mNativeWindowAndroid = 0; |
- } |
- } |
- /** |
- * Shows an intent 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. |
- * @return Whether the intent was shown. |
- */ |
- public boolean showIntent(Intent intent, IntentCallback callback) { |
- return showIntent(intent, callback, null); |
- } |
- |
- /** |
- * Shows an intent 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 the error string to be show if activity is paused before intent |
- * results. |
- * @return Whether the intent was shown. |
- */ |
- public boolean showIntent(Intent intent, IntentCallback callback, int errorId) { |
- String error = null; |
- try { |
- error = mActivity.getString(errorId); |
- } catch (Resources.NotFoundException e) { } |
- return showIntent(intent, callback, error); |
} |
/** |
@@ -107,6 +48,7 @@ public class NativeWindow { |
* @param error The error string to be show if activity is paused before intent results. |
* @return Whether the intent was shown. |
*/ |
+ @Override |
public boolean showIntent(Intent intent, IntentCallback callback, String error) { |
int requestCode = REQUEST_CODE_PREFIX + mNextRequestCode; |
mNextRequestCode = (mNextRequestCode + 1) % REQUEST_CODE_RANGE_SIZE; |
@@ -124,6 +66,40 @@ public class NativeWindow { |
} |
/** |
+ * Displays an error message with a provided error message string. |
+ * @param error The error message string to be displayed. |
+ */ |
+ @Override |
+ public void showError(String error) { |
+ if (error != null) { |
+ Toast.makeText(mActivity, error, Toast.LENGTH_SHORT).show(); |
+ } |
+ } |
+ |
+ /** |
+ * Displays an error message for a nonexistent callback. |
+ * @param error The error message string to be displayed. |
+ */ |
+ protected void showCallbackNonExistentError(String error) { |
+ showError(error); |
+ } |
+ |
+ /** |
+ * Broadcasts the given intent to all interested BroadcastReceivers. |
+ */ |
+ @Override |
+ public void sendBroadcast(Intent intent) { |
+ mActivity.sendBroadcast(intent); |
+ } |
+ |
+ /** |
+ * @return Application activity. |
+ */ |
+ public Activity getActivity() { |
+ return mActivity; |
+ } |
+ |
+ /** |
* Saves the error messages that should be shown if any pending intents would return |
* after the application has been put onPause. |
* @param bundle The bundle to save the information in onPause |
@@ -149,41 +125,6 @@ public class NativeWindow { |
} |
/** |
- * Displays an error message with a provided error message string. |
- * @param error The error message string to be displayed. |
- */ |
- public void showError(String error) { |
- if (error != null) Toast.makeText(mActivity, error, Toast.LENGTH_SHORT).show(); |
- } |
- |
- /** |
- * Displays an error message with a provided error message string id. |
- * @param errorId The string id of the error message string to be displayed. |
- */ |
- public void showError(int errorId) { |
- String error = null; |
- try { |
- error = mActivity.getString(errorId); |
- } catch (Resources.NotFoundException e) { } |
- showError(error); |
- } |
- |
- /** |
- * Displays an error message for a nonexistent callback. |
- * @param error The error message string to be displayed. |
- */ |
- protected void showCallbackNonExistentError(String error) { |
- showError(error); |
- } |
- |
- /** |
- * @return The main application activity. |
- */ |
- public Activity getActivity() { |
- return mActivity; |
- } |
- |
- /** |
* Responds to the intent result if the intent was created by the native window. |
* @param requestCode Request code of the requested intent. |
* @param resultCode Result code of the requested intent. |
@@ -208,19 +149,4 @@ public class NativeWindow { |
return false; |
} |
- /** |
- * Returns a pointer to the c++ AndroidWindow object and calls the initializer if |
- * the object has not been previously initialized. |
- * @return A pointer to the c++ AndroidWindow. |
- */ |
- public int getNativePointer() { |
- if (mNativeWindowAndroid == 0) { |
- mNativeWindowAndroid = nativeInit(); |
- } |
- return mNativeWindowAndroid; |
- } |
- |
- private native int nativeInit(); |
- private native void nativeDestroy(int nativeWindowAndroid); |
- |
} |