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 {
private Handler mHandler;
private String mInstanceId;
private BroadcastReceiver mWindowDestroyedBroadcastReceiver;
private IntentFilter mWindowDestroyedIntentFilter;
private BroadcastReceiver mScreenOffBroadcastReceiver;
private FrameLayout mCastWebContentsLayout;
private AudioManager mAudioManager;
private ContentViewRenderView mContentViewRenderView;
......@@ -62,6 +62,8 @@ public class CastWebContentsActivity extends Activity {
public static final String 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.
......@@ -131,6 +133,7 @@ public class CastWebContentsActivity extends Activity {
LocalBroadcastManager.getInstance(this).unregisterReceiver(
mWindowDestroyedBroadcastReceiver);
}
mWindowDestroyedBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
......@@ -138,16 +141,35 @@ public class CastWebContentsActivity extends Activity {
maybeFinishLater();
}
};
mWindowDestroyedIntentFilter = new IntentFilter();
mWindowDestroyedIntentFilter.addDataScheme(intent.getData().getScheme());
mWindowDestroyedIntentFilter.addDataAuthority(intent.getData().getAuthority(), null);
mWindowDestroyedIntentFilter.addDataPath(mInstanceId, PatternMatcher.PATTERN_LITERAL);
mWindowDestroyedIntentFilter.addAction(ACTION_STOP_ACTIVITY);
IntentFilter windowDestroyedIntentFilter = new IntentFilter();
windowDestroyedIntentFilter.addDataScheme(intent.getData().getScheme());
windowDestroyedIntentFilter.addDataAuthority(intent.getData().getAuthority(), null);
windowDestroyedIntentFilter.addDataPath(mInstanceId, PatternMatcher.PATTERN_LITERAL);
windowDestroyedIntentFilter.addAction(ACTION_STOP_ACTIVITY);
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(
CastWebContentsComponent.ACTION_EXTRA_WEB_CONTENTS);
if (webContents == null) {
Log.e(TAG, "Received null WebContents in intent.");
maybeFinishLater();
......@@ -179,6 +201,15 @@ public class CastWebContentsActivity extends Activity {
@Override
protected void 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();
}
......
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