Commit 709dbe41 authored by Sandeep Vijayasekar's avatar Sandeep Vijayasekar Committed by Commit Bot

[Chromecast] Cast and Mirroring sessions terminate when screen turns off (TVs running ATV)

BUG=internal b/33367899
TEST=casting and turning off TV will end cast session

Change-Id: Ieba06c25a4b0eb9e1daa137dc790f8c6102105f7
Reviewed-on: https://chromium-review.googlesource.com/585569Reviewed-by: default avatarLuke Halliwell <halliwell@chromium.org>
Commit-Queue: Sandeep Vijayasekar <sandv@chromium.org>
Cr-Commit-Position: refs/heads/master@{#490825}
parent f4e4fa6c
...@@ -49,7 +49,7 @@ public class CastWebContentsActivity extends Activity { ...@@ -49,7 +49,7 @@ public class CastWebContentsActivity extends Activity {
private Handler mHandler; private Handler mHandler;
private String mInstanceId; private String mInstanceId;
private BroadcastReceiver mWindowDestroyedBroadcastReceiver; private BroadcastReceiver mWindowDestroyedBroadcastReceiver;
private IntentFilter mWindowDestroyedIntentFilter; private BroadcastReceiver mScreenOffBroadcastReceiver;
private FrameLayout mCastWebContentsLayout; private FrameLayout mCastWebContentsLayout;
private AudioManager mAudioManager; private AudioManager mAudioManager;
private ContentViewRenderView mContentViewRenderView; private ContentViewRenderView mContentViewRenderView;
...@@ -62,6 +62,8 @@ public class CastWebContentsActivity extends Activity { ...@@ -62,6 +62,8 @@ public class CastWebContentsActivity extends Activity {
public static final String ACTION_STOP_ACTIVITY = public static final String ACTION_STOP_ACTIVITY =
"com.google.android.apps.castshell.intent.action.STOP_ACTIVITY"; "com.google.android.apps.castshell.intent.action.STOP_ACTIVITY";
public static final String ACTION_SCREEN_OFF =
"com.google.android.apps.castshell.intent.action.ACTION_SCREEN_OFF";
/* /*
* Intended to be called from "onStop" to determine if this is a "legitimate" stop or not. * Intended to be called from "onStop" to determine if this is a "legitimate" stop or not.
...@@ -131,6 +133,7 @@ public class CastWebContentsActivity extends Activity { ...@@ -131,6 +133,7 @@ public class CastWebContentsActivity extends Activity {
LocalBroadcastManager.getInstance(this).unregisterReceiver( LocalBroadcastManager.getInstance(this).unregisterReceiver(
mWindowDestroyedBroadcastReceiver); mWindowDestroyedBroadcastReceiver);
} }
mWindowDestroyedBroadcastReceiver = new BroadcastReceiver() { mWindowDestroyedBroadcastReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
...@@ -138,16 +141,35 @@ public class CastWebContentsActivity extends Activity { ...@@ -138,16 +141,35 @@ public class CastWebContentsActivity extends Activity {
maybeFinishLater(); maybeFinishLater();
} }
}; };
mWindowDestroyedIntentFilter = new IntentFilter();
mWindowDestroyedIntentFilter.addDataScheme(intent.getData().getScheme()); IntentFilter windowDestroyedIntentFilter = new IntentFilter();
mWindowDestroyedIntentFilter.addDataAuthority(intent.getData().getAuthority(), null); windowDestroyedIntentFilter.addDataScheme(intent.getData().getScheme());
mWindowDestroyedIntentFilter.addDataPath(mInstanceId, PatternMatcher.PATTERN_LITERAL); windowDestroyedIntentFilter.addDataAuthority(intent.getData().getAuthority(), null);
mWindowDestroyedIntentFilter.addAction(ACTION_STOP_ACTIVITY); windowDestroyedIntentFilter.addDataPath(mInstanceId, PatternMatcher.PATTERN_LITERAL);
windowDestroyedIntentFilter.addAction(ACTION_STOP_ACTIVITY);
LocalBroadcastManager.getInstance(this).registerReceiver( LocalBroadcastManager.getInstance(this).registerReceiver(
mWindowDestroyedBroadcastReceiver, mWindowDestroyedIntentFilter); mWindowDestroyedBroadcastReceiver, windowDestroyedIntentFilter);
if (mScreenOffBroadcastReceiver != null) {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mScreenOffBroadcastReceiver);
}
mScreenOffBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
detachWebContentsIfAny();
maybeFinishLater();
}
};
IntentFilter screenOffIntentFilter = new IntentFilter();
screenOffIntentFilter.addAction(ACTION_SCREEN_OFF);
LocalBroadcastManager.getInstance(this).registerReceiver(
mScreenOffBroadcastReceiver, screenOffIntentFilter);
WebContents webContents = (WebContents) intent.getParcelableExtra( WebContents webContents = (WebContents) intent.getParcelableExtra(
CastWebContentsComponent.ACTION_EXTRA_WEB_CONTENTS); CastWebContentsComponent.ACTION_EXTRA_WEB_CONTENTS);
if (webContents == null) { if (webContents == null) {
Log.e(TAG, "Received null WebContents in intent."); Log.e(TAG, "Received null WebContents in intent.");
maybeFinishLater(); maybeFinishLater();
...@@ -179,6 +201,15 @@ public class CastWebContentsActivity extends Activity { ...@@ -179,6 +201,15 @@ public class CastWebContentsActivity extends Activity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
if (DEBUG) Log.d(TAG, "onDestroy"); if (DEBUG) Log.d(TAG, "onDestroy");
if (mWindowDestroyedBroadcastReceiver != null) {
LocalBroadcastManager.getInstance(this).unregisterReceiver(
mWindowDestroyedBroadcastReceiver);
}
if (mScreenOffBroadcastReceiver != null) {
LocalBroadcastManager.getInstance(this).unregisterReceiver(mScreenOffBroadcastReceiver);
}
super.onDestroy(); super.onDestroy();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment