OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.chrome.browser.media.remote; | 5 package org.chromium.chrome.browser.media.remote; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.graphics.Bitmap; | 8 import android.graphics.Bitmap; |
9 import android.net.Uri; | 9 import android.net.Uri; |
10 import android.os.Handler; | 10 import android.os.Handler; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 | 102 |
103 private Runnable mConnectionFailureNotifier = new Runnable() { | 103 private Runnable mConnectionFailureNotifier = new Runnable() { |
104 @Override | 104 @Override |
105 public void run() { | 105 public void run() { |
106 release(); | 106 release(); |
107 mConnectionFailureNotifierQueued = false; | 107 mConnectionFailureNotifierQueued = false; |
108 } | 108 } |
109 }; | 109 }; |
110 | 110 |
111 /** True if we are waiting for the MediaRouter route to connect or recon
nect */ | 111 /** True if we are waiting for the MediaRouter route to connect or recon
nect */ |
112 private boolean mConnectionFailureNotifierQueued = false; | 112 private boolean mConnectionFailureNotifierQueued; |
113 | 113 |
114 private void clearConnectionFailureCallback() { | 114 private void clearConnectionFailureCallback() { |
115 getHandler().removeCallbacks(mConnectionFailureNotifier); | 115 getHandler().removeCallbacks(mConnectionFailureNotifier); |
116 mConnectionFailureNotifierQueued = false; | 116 mConnectionFailureNotifierQueued = false; |
117 } | 117 } |
118 | 118 |
119 @Override | 119 @Override |
120 public void onRouteChanged(MediaRouter router, RouteInfo route) { | 120 public void onRouteChanged(MediaRouter router, RouteInfo route) { |
121 // We only care about changes to the current route. | 121 // We only care about changes to the current route. |
122 if (!route.equals(getCurrentRoute())) return; | 122 if (!route.equals(getCurrentRoute())) return; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 protected static final long CONNECTION_FAILURE_NOTIFICATION_DELAY_MS = 10000
L; | 156 protected static final long CONNECTION_FAILURE_NOTIFICATION_DELAY_MS = 10000
L; |
157 private static final long END_OF_VIDEO_THRESHOLD_MS = 500L; | 157 private static final long END_OF_VIDEO_THRESHOLD_MS = 500L; |
158 private static final String TAG = "MediaFling"; | 158 private static final String TAG = "MediaFling"; |
159 private final Set<MediaStateListener> mAvailableRouteListeners; | 159 private final Set<MediaStateListener> mAvailableRouteListeners; |
160 private final Context mContext; | 160 private final Context mContext; |
161 private RouteInfo mCurrentRoute; | 161 private RouteInfo mCurrentRoute; |
162 private final DeviceDiscoveryCallback mDeviceDiscoveryCallback;; | 162 private final DeviceDiscoveryCallback mDeviceDiscoveryCallback;; |
163 private final DeviceSelectionCallback mDeviceSelectionCallback; | 163 private final DeviceSelectionCallback mDeviceSelectionCallback; |
164 | 164 |
165 private final Handler mHandler; | 165 private final Handler mHandler; |
166 private boolean mIsPrepared = false; | 166 private boolean mIsPrepared; |
167 | 167 |
168 private final MediaRouter mMediaRouter; | 168 private final MediaRouter mMediaRouter; |
169 | 169 |
170 private final MediaRouteSelector mMediaRouteSelector; | 170 private final MediaRouteSelector mMediaRouteSelector; |
171 /** | 171 /** |
172 * The media state listener connects to the web page that requested casting.
It will be null if | 172 * The media state listener connects to the web page that requested casting.
It will be null if |
173 * that page is no longer in a tab, but closing the page or tab should not s
top cast. Cast can | 173 * that page is no longer in a tab, but closing the page or tab should not s
top cast. Cast can |
174 * still be controlled through the notification even if the page is closed. | 174 * still be controlled through the notification even if the page is closed. |
175 */ | 175 */ |
176 private MediaStateListener mMediaStateListener; | 176 private MediaStateListener mMediaStateListener; |
177 | 177 |
178 // There are times when the player state shown to user (e.g. just after pres
sing the pause | 178 // There are times when the player state shown to user (e.g. just after pres
sing the pause |
179 // button) should update before we receive an update from the Chromecast, so
we have to track | 179 // button) should update before we receive an update from the Chromecast, so
we have to track |
180 // two player states. | 180 // two player states. |
181 private PlayerState mRemotePlayerState = PlayerState.FINISHED; | 181 private PlayerState mRemotePlayerState = PlayerState.FINISHED; |
182 private PlayerState mDisplayedPlayerState = PlayerState.FINISHED; | 182 private PlayerState mDisplayedPlayerState = PlayerState.FINISHED; |
183 private boolean mRoutesAvailable = false; | 183 private boolean mRoutesAvailable; |
184 private final Set<UiListener> mUiListeners; | 184 private final Set<UiListener> mUiListeners; |
185 private boolean mWatchingRouteSelection = false; | 185 private boolean mWatchingRouteSelection; |
186 | 186 |
187 private long mMediaElementAttachedTimestampMs = 0; | 187 private long mMediaElementAttachedTimestampMs; |
188 private long mMediaElementDetachedTimestampMs = 0; | 188 private long mMediaElementDetachedTimestampMs; |
189 | 189 |
190 protected AbstractMediaRouteController() { | 190 protected AbstractMediaRouteController() { |
191 mContext = ContextUtils.getApplicationContext(); | 191 mContext = ContextUtils.getApplicationContext(); |
192 assert (getContext() != null); | 192 assert (getContext() != null); |
193 | 193 |
194 mHandler = new Handler(); | 194 mHandler = new Handler(); |
195 | 195 |
196 mMediaRouteSelector = buildMediaRouteSelector(); | 196 mMediaRouteSelector = buildMediaRouteSelector(); |
197 | 197 |
198 MediaRouter mediaRouter; | 198 MediaRouter mediaRouter; |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
644 @Override | 644 @Override |
645 public String getUriPlaying() { | 645 public String getUriPlaying() { |
646 return null; | 646 return null; |
647 } | 647 } |
648 | 648 |
649 // Used by J | 649 // Used by J |
650 void setPreparedForTesting() { | 650 void setPreparedForTesting() { |
651 mIsPrepared = true; | 651 mIsPrepared = true; |
652 } | 652 } |
653 } | 653 } |
OLD | NEW |