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

Unified Diff: ui/android/java/src/org/chromium/ui/gfx/NativeWindow.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
« no previous file with comments | « ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java
diff --git a/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java b/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java
index cc0198c972d7b25a1e00ea4f8bd81df37cd240e5..3782d309f73af821245ba51828e1f578701076b2 100644
--- a/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java
+++ b/ui/android/java/src/org/chromium/ui/gfx/NativeWindow.java
@@ -4,38 +4,22 @@
package org.chromium.ui.gfx;
-import android.app.Activity;
-import android.content.ActivityNotFoundException;
import android.content.ContentResolver;
+import android.content.Context;
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.
+ * The window base class that has the minimum functionality.
*/
@JNINamespace("ui")
-public class NativeWindow {
-
- // Constants used for intent request code bounding.
- private static final int REQUEST_CODE_PREFIX = 1000;
- private static final int REQUEST_CODE_RANGE_SIZE = 100;
- // A string used as a key to store intent errors in a bundle
- static final String WINDOW_CALLBACK_ERRORS = "window_callback_errors";
+public abstract class NativeWindow {
// 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;
+
+ private Context mContext;
/**
* An interface that intent callback objects have to implement.
@@ -53,159 +37,44 @@ public class NativeWindow {
}
/**
- * 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.
+ * Constructs a Window object, saves a reference to the context.
+ * @param context
*/
- public NativeWindow(Activity activity) {
- mActivity = activity;
- mOutstandingIntents = new SparseArray<IntentCallback>();
- mIntentErrors = new HashMap<Integer, String>();
+ public NativeWindow(Context context) {
mNativeWindowAndroid = 0;
+ mContext = context;
}
/**
- * Destroys the c++ WindowAndroid object if one has been created.
+ * Stub overridden by extending class.
*/
- public void destroy() {
- if (mNativeWindowAndroid != 0) {
- nativeDestroy(mNativeWindowAndroid);
- mNativeWindowAndroid = 0;
- }
- }
+ abstract public void sendBroadcast(Intent intent);
/**
- * 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.
+ * Stub overridden by extending class.
*/
- public boolean showIntent(Intent intent, IntentCallback callback) {
- return showIntent(intent, callback, null);
- }
+ abstract public boolean showIntent(Intent intent, IntentCallback callback, String error);
/**
- * 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.
+ * Stub overridden by extending class.
*/
- 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);
- }
+ abstract public void showError(String error);
/**
- * 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 error The error string to be show if activity is paused before intent results.
- * @return Whether the intent was shown.
+ * @return context.
*/
- public boolean showIntent(Intent intent, IntentCallback callback, String error) {
- int requestCode = REQUEST_CODE_PREFIX + mNextRequestCode;
- mNextRequestCode = (mNextRequestCode + 1) % REQUEST_CODE_RANGE_SIZE;
-
- try {
- mActivity.startActivityForResult(intent, requestCode);
- } catch (ActivityNotFoundException e) {
- return false;
- }
-
- mOutstandingIntents.put(requestCode, callback);
- if (error != null) mIntentErrors.put(requestCode, error);
-
- return true;
+ public Context getContext() {
+ return mContext;
}
/**
- * 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
- */
- public void saveInstanceState(Bundle bundle) {
- bundle.putSerializable(WINDOW_CALLBACK_ERRORS, mIntentErrors);
- }
-
- /**
- * Restores 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 restore the information from onResume
- */
- public void restoreInstanceState(Bundle bundle) {
- if (bundle == null) return;
-
- Object errors = bundle.getSerializable(WINDOW_CALLBACK_ERRORS);
- if (errors instanceof HashMap) {
- @SuppressWarnings("unchecked")
- HashMap<Integer, String> intentErrors = (HashMap<Integer, String>) errors;
- mIntentErrors = intentErrors;
- }
- }
-
- /**
- * 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.
- * @param data The data returned by the intent.
- * @return Boolean value of whether the intent was started by the native window.
+ * Destroys the c++ WindowAndroid object if one has been created.
*/
- public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
- IntentCallback callback = mOutstandingIntents.get(requestCode);
- mOutstandingIntents.delete(requestCode);
- String errorMessage = mIntentErrors.remove(requestCode);
-
- if (callback != null) {
- callback.onIntentCompleted(this, resultCode,
- mActivity.getContentResolver(), data);
- return true;
- } else {
- if (errorMessage != null) {
- showCallbackNonExistentError(errorMessage);
- return true;
- }
+ public void destroy() {
+ if (mNativeWindowAndroid != 0) {
+ nativeDestroy(mNativeWindowAndroid);
+ mNativeWindowAndroid = 0;
}
- return false;
}
/**
« no previous file with comments | « ui/android/java/src/org/chromium/ui/gfx/ActivityNativeWindow.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698