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

Unified Diff: chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java

Issue 2874943002: [Chromecast] Add service for "displaying" cast web contents. (Closed)
Patch Set: [Chromecast] Add service for "displaying" cast web contents. Created 3 years, 7 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: chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java
diff --git a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java
index 49a1f14afd152a51e33bb29eafab327e8639a022..1978703ab6154bc0ca81ce48aea0ef6278d959cc 100644
--- a/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java
+++ b/chromecast/browser/android/apk/src/org/chromium/chromecast/shell/CastContentWindowAndroid.java
@@ -4,13 +4,7 @@
package org.chromium.chromecast.shell;
-import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.Uri;
-import android.os.PatternMatcher;
-import android.support.v4.content.LocalBroadcastManager;
import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
@@ -21,11 +15,12 @@ import org.chromium.content_public.browser.WebContents;
/**
* The Java component of CastContentWindowAndroid. This class is responsible for
* starting, stopping and monitoring CastWebContentsActivity.
- *
+ * <p>
* See chromecast/browser/cast_content_window_android.* for the native half.
*/
@JNINamespace("chromecast::shell")
-public class CastContentWindowAndroid {
+public class CastContentWindowAndroid implements CastWebContentsComponent.OnComponentClosedHandler,
+ CastWebContentsComponent.OnKeyDownHandler {
private static final String TAG = "cr_CastContentWindowAndroid";
private static final boolean DEBUG = true;
@@ -33,9 +28,8 @@ public class CastContentWindowAndroid {
// ref should be checked that it is not zero before it is used.
private long mNativeCastContentWindowAndroid;
private Context mContext;
- private IntentFilter mActivityClosedIntentFilter;
- private BroadcastReceiver mActivityClosedBroadcastReceiver;
private String mInstanceId;
+ private CastWebContentsComponent mComponent;
private static int sInstanceId = 1;
@@ -46,19 +40,12 @@ public class CastContentWindowAndroid {
nativeCastContentWindowAndroid, ContextUtils.getApplicationContext());
}
- private CastContentWindowAndroid(long nativeCastContentWindowAndroid, Context context) {
+ private CastContentWindowAndroid(long nativeCastContentWindowAndroid, final Context context) {
mNativeCastContentWindowAndroid = nativeCastContentWindowAndroid;
mContext = context;
mInstanceId = Integer.toString(sInstanceId++);
- }
- private Uri getInstanceUri() {
- Uri instanceUri = new Uri.Builder()
- .scheme(CastWebContentsActivity.ACTION_DATA_SCHEME)
- .authority(CastWebContentsActivity.ACTION_DATA_AUTHORITY)
- .path(mInstanceId)
- .build();
- return instanceUri;
+ mComponent = new CastWebContentsComponent(mInstanceId, this, this);
}
@SuppressWarnings("unused")
@@ -66,36 +53,7 @@ public class CastContentWindowAndroid {
private void showWebContents(WebContents webContents) {
if (DEBUG) Log.d(TAG, "showWebContents");
- Intent intent = new Intent(
- Intent.ACTION_VIEW, getInstanceUri(), mContext, CastWebContentsActivity.class);
-
- mActivityClosedBroadcastReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction() == CastWebContentsActivity.ACTION_ACTIVITY_STOPPED) {
- onActivityStopped();
- } else if (intent.getAction() == CastWebContentsActivity.ACTION_KEY_EVENT) {
- int keyCode =
- intent.getIntExtra(CastWebContentsActivity.ACTION_EXTRA_KEY_CODE, 0);
- onKeyDown(keyCode);
- }
- }
- };
- mActivityClosedIntentFilter = new IntentFilter();
- mActivityClosedIntentFilter.addDataScheme(intent.getData().getScheme());
- mActivityClosedIntentFilter.addDataAuthority(intent.getData().getAuthority(), null);
- mActivityClosedIntentFilter.addDataPath(
- intent.getData().getPath(), PatternMatcher.PATTERN_LITERAL);
- mActivityClosedIntentFilter.addAction(CastWebContentsActivity.ACTION_ACTIVITY_STOPPED);
- mActivityClosedIntentFilter.addAction(CastWebContentsActivity.ACTION_KEY_EVENT);
- LocalBroadcastManager.getInstance(mContext).registerReceiver(
- mActivityClosedBroadcastReceiver, mActivityClosedIntentFilter);
-
- intent.putExtra(CastWebContentsActivity.ACTION_EXTRA_WEB_CONTENTS, webContents);
- // FLAG_ACTIVITY_SINGLE_TOP will try to reuse existing activity.
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK
- | Intent.FLAG_ACTIVITY_SINGLE_TOP);
- mContext.startActivity(intent);
+ mComponent.start(mContext, webContents);
}
@SuppressWarnings("unused")
@@ -111,24 +69,26 @@ public class CastContentWindowAndroid {
// Instrumentation.startActivitySync to guarentee onCreate is run.
if (DEBUG) Log.d(TAG, "onNativeDestroyed");
- Intent intent = new Intent(CastWebContentsActivity.ACTION_STOP_ACTIVITY, getInstanceUri());
- LocalBroadcastManager.getInstance(mContext).sendBroadcastSync(intent);
+ mComponent.stop(mContext);
}
- private void onActivityStopped() {
- if (DEBUG) Log.d(TAG, "onActivityStopped");
+ @Override
+ public void onKeyDown(int keyCode) {
+ if (DEBUG) Log.d(TAG, "onKeyDown");
if (mNativeCastContentWindowAndroid != 0) {
- nativeOnActivityStopped(mNativeCastContentWindowAndroid);
+ nativeOnKeyDown(mNativeCastContentWindowAndroid, keyCode);
}
}
- private void onKeyDown(int keyCode) {
- if (DEBUG) Log.d(TAG, "onKeyDown");
+ @Override
+ public void onComponentClosed() {
+ if (DEBUG) Log.d(TAG, "onComponentClosed");
if (mNativeCastContentWindowAndroid != 0) {
- nativeOnKeyDown(mNativeCastContentWindowAndroid, keyCode);
+ nativeOnActivityStopped(mNativeCastContentWindowAndroid);
}
}
private native void nativeOnActivityStopped(long nativeCastContentWindowAndroid);
+
private native void nativeOnKeyDown(long nativeCastContentWindowAndroid, int keyCode);
}

Powered by Google App Engine
This is Rietveld 408576698