Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(936)

Unified Diff: ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java

Issue 10962002: Adding NativeWindow base class with no activity. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: deleted whitespace in OWNERS Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
-
}
« no previous file with comments | « ui/android/java/src/org/chromium/ui/SelectFileDialog.java ('k') | ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698