Remove-dependency-on-com.google.android.gms.cast.patch 70 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628
  1. From: Wengling Chen <feiyu2817@gmail.com>
  2. Date: Sat, 2 Nov 2019 08:00:04 +0100
  3. Subject: Remove dependency on com.google.android.gms.cast
  4. ---
  5. chrome/android/BUILD.gn | 8 --
  6. chrome/android/java/AndroidManifest.xml | 16 ---
  7. .../settings/PasswordSettings.java | 14 ---
  8. .../modules/chrome_feature_modules.gni | 3 -
  9. .../media_router/browser/android/BUILD.gn | 9 --
  10. .../media_router/CastSessionUtil.java | 35 ------
  11. .../components/media_router/MediaSink.java | 44 +-------
  12. .../media_router/MediaStatusBridge.java | 40 ++-----
  13. .../caf/BaseNotificationController.java | 46 --------
  14. .../caf/BaseSessionController.java | 100 +----------------
  15. .../caf/CafBaseMediaRouteProvider.java | 103 +-----------------
  16. .../caf/CafMediaRouteProvider.java | 16 ---
  17. .../media_router/caf/CafMessageHandler.java | 97 +----------------
  18. .../media_router/caf/CastMediaSource.java | 10 +-
  19. .../media_router/caf/CastOptionsProvider.java | 22 +---
  20. .../caf/CastSessionController.java | 84 --------------
  21. .../media_router/caf/CastUtils.java | 18 ---
  22. .../CafExpandedControllerActivity.java | 33 +-----
  23. .../CafRemotingMediaRouteProvider.java | 2 +-
  24. .../remoting/FlingingControllerAdapter.java | 74 -------------
  25. .../caf/remoting/RemotingMediaSource.java | 8 +-
  26. .../remoting/RemotingSessionController.java | 26 -----
  27. .../test/android/cast_emulator/BUILD.gn | 1 -
  28. third_party/android_deps/BUILD.gn | 39 -------
  29. 24 files changed, 29 insertions(+), 819 deletions(-)
  30. diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
  31. --- a/chrome/android/BUILD.gn
  32. +++ b/chrome/android/BUILD.gn
  33. @@ -280,13 +280,10 @@ android_library("chrome_java") {
  34. ":usage_stats_proto_java",
  35. "$google_play_services_package:google_play_services_base_java",
  36. "$google_play_services_package:google_play_services_basement_java",
  37. - "$google_play_services_package:google_play_services_cast_framework_java",
  38. - "$google_play_services_package:google_play_services_cast_java",
  39. "$google_play_services_package:google_play_services_tasks_java",
  40. "//base:base_java",
  41. "//base:jni_java",
  42. "//chrome/android/features/keyboard_accessory:public_java",
  43. - "//chrome/android/modules/cablev2_authenticator/public:java",
  44. "//chrome/android/modules/image_editor/provider:java",
  45. "//chrome/android/modules/stack_unwinder/provider:java",
  46. "//chrome/android/webapk/libs/client:client_java",
  47. @@ -770,8 +767,6 @@ junit_binary("chrome_junit_tests") {
  48. ":partner_location_descriptor_proto_java",
  49. "$google_play_services_package:google_play_services_base_java",
  50. "$google_play_services_package:google_play_services_basement_java",
  51. - "$google_play_services_package:google_play_services_cast_framework_java",
  52. - "$google_play_services_package:google_play_services_cast_java",
  53. "//base:base_java",
  54. "//base:base_java_test_support",
  55. "//base:base_junit_test_support",
  56. @@ -987,8 +982,6 @@ android_library("chrome_test_java") {
  57. ":partner_location_descriptor_proto_java",
  58. "$google_play_services_package:google_play_services_base_java",
  59. "$google_play_services_package:google_play_services_basement_java",
  60. - "$google_play_services_package:google_play_services_cast_framework_java",
  61. - "$google_play_services_package:google_play_services_cast_java",
  62. "$google_play_services_package:google_play_services_tasks_java",
  63. "//base:base_java",
  64. "//base:base_java_test_support",
  65. @@ -2136,7 +2129,6 @@ android_library("base_module_java") {
  66. # Deps to pull services into base module.
  67. # TODO(crbug.com/1126301): Consider moving these to the chrome module to
  68. # reduce base dex size.
  69. - "$google_play_services_package:google_play_services_cast_framework_java",
  70. "//components/background_task_scheduler:background_task_scheduler_java",
  71. "//components/payments/content/android:service_java",
  72. "//third_party/android_sdk/androidx_browser:androidx_browser_java",
  73. diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
  74. --- a/chrome/android/java/AndroidManifest.xml
  75. +++ b/chrome/android/java/AndroidManifest.xml
  76. @@ -711,16 +711,6 @@ by a child template that "extends" this file.
  77. </intent-filter>
  78. </activity>
  79. - <activity android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity"
  80. - android:theme="@style/Theme.Chromium.Activity"
  81. - android:label="Chrome.CafExpandedControllerActivity"
  82. - android:hardwareAccelerated="true"
  83. - android:launchMode="singleTask"
  84. - android:noHistory="true"
  85. - android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
  86. - android:excludeFromRecents="true">
  87. - </activity>
  88. -
  89. <!-- This activity is used to restart the main Chrome process. Should never be exported. -->
  90. <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
  91. android:launchMode="singleInstance"
  92. @@ -1178,12 +1168,6 @@ by a child template that "extends" this file.
  93. <meta-data android:name="com.google.ar.core" android:value="optional" />
  94. {% endif %}
  95. - <!-- Cast support -->
  96. - <meta-data
  97. - android:name=
  98. - "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
  99. - android:value="org.chromium.components.media_router.caf.CastOptionsProvider"/>
  100. -
  101. {% block base_application_definitions %}
  102. {% endblock %}
  103. {% block extra_application_definitions_for_test %}
  104. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  105. --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  106. +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
  107. @@ -41,7 +41,6 @@ import org.chromium.chrome.browser.profiles.Profile;
  108. import org.chromium.chrome.browser.settings.ChromeManagedPreferenceDelegate;
  109. import org.chromium.chrome.browser.settings.SettingsLauncher;
  110. import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
  111. -import org.chromium.chrome.browser.webauthn.CableAuthenticatorModuleProvider;
  112. import org.chromium.components.browser_ui.settings.ChromeBasePreference;
  113. import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
  114. import org.chromium.components.browser_ui.settings.SearchUtils;
  115. @@ -559,19 +558,6 @@ public class PasswordSettings
  116. }
  117. private void displaySecurityKeyLink() {
  118. - if (mSecurityKey == null) {
  119. - mSecurityKey = new ChromeBasePreference(getStyledContext());
  120. - mSecurityKey.setKey(PREF_KEY_SECURITY_KEY_LINK);
  121. - mSecurityKey.setTitle(R.string.phone_as_security_key_text);
  122. - mSecurityKey.setOnPreferenceClickListener(preference -> {
  123. - SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
  124. - settingsLauncher.launchSettingsActivity(
  125. - getActivity(), CableAuthenticatorModuleProvider.class, null);
  126. - return true;
  127. - });
  128. - mSecurityKey.setOrder(ORDER_SECURITY_KEY);
  129. - }
  130. - getPreferenceScreen().addPreference(mSecurityKey);
  131. }
  132. private Context getStyledContext() {
  133. diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni
  134. --- a/chrome/android/modules/chrome_feature_modules.gni
  135. +++ b/chrome/android/modules/chrome_feature_modules.gni
  136. @@ -8,8 +8,6 @@ import(
  137. import("//chrome/android/features/dev_ui/dev_ui_module.gni")
  138. import("//chrome/android/features/tab_ui/tab_ui_module.gni")
  139. import("//chrome/android/modules/buildflags.gni")
  140. -import(
  141. - "//chrome/android/modules/cablev2_authenticator/cablev2_authenticator_module.gni")
  142. import("//chrome/android/modules/extra_icu/extra_icu_module.gni")
  143. import("//chrome/android/modules/stack_unwinder/stack_unwinder_module.gni")
  144. import("//chrome/android/modules/test_dummy/test_dummy_module.gni")
  145. @@ -68,7 +66,6 @@ if (!disable_autofill_assistant_dfm) {
  146. if (!disable_tab_ui_dfm) {
  147. monochrome_module_descs += [ tab_ui_module_desc ]
  148. }
  149. -monochrome_module_descs += [ cablev2_authenticator_module_desc ]
  150. # Modules shipped in Trichrome (Android Q+).
  151. trichrome_module_descs = monochrome_module_descs
  152. diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn
  153. --- a/components/media_router/browser/android/BUILD.gn
  154. +++ b/components/media_router/browser/android/BUILD.gn
  155. @@ -11,10 +11,6 @@ android_library("java") {
  156. resources_package = "org.chromium.components.media_router"
  157. deps = [
  158. ":java_resources",
  159. - "$google_play_services_package:google_play_services_base_java",
  160. - "$google_play_services_package:google_play_services_basement_java",
  161. - "$google_play_services_package:google_play_services_cast_framework_java",
  162. - "$google_play_services_package:google_play_services_cast_java",
  163. "//base:base_java",
  164. "//base:jni_java",
  165. "//components/browser_ui/media/android:java",
  166. @@ -75,8 +71,6 @@ android_library("java") {
  167. android_library("cast_options_provider_java") {
  168. sources = [ "java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java" ]
  169. deps = [
  170. - "$google_play_services_package:google_play_services_cast_framework_java",
  171. - "$google_play_services_package:google_play_services_cast_java",
  172. ]
  173. }
  174. @@ -142,9 +136,6 @@ java_library("junit") {
  175. deps = [
  176. ":java",
  177. ":test_support_java",
  178. - "$google_play_services_package:google_play_services_basement_java",
  179. - "$google_play_services_package:google_play_services_cast_framework_java",
  180. - "$google_play_services_package:google_play_services_cast_java",
  181. "//base:base_java",
  182. "//base:base_java_test_support",
  183. "//base:base_junit_test_support",
  184. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  185. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  186. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/CastSessionUtil.java
  187. @@ -4,9 +4,6 @@
  188. package org.chromium.components.media_router;
  189. -import com.google.android.gms.cast.CastDevice;
  190. -import com.google.android.gms.cast.RemoteMediaPlayer;
  191. -
  192. import org.chromium.components.browser_ui.media.MediaNotificationInfo;
  193. import org.chromium.services.media_session.MediaMetadata;
  194. @@ -18,36 +15,4 @@ public class CastSessionUtil {
  195. // The value is borrowed from the Android Cast SDK code to match their behavior.
  196. public static final double MIN_VOLUME_LEVEL_DELTA = 1e-7;
  197. -
  198. - /**
  199. - * Builds a MediaMetadata from the given CastDevice and MediaPlayer, and sets it on the builder
  200. - */
  201. - public static void setNotificationMetadata(MediaNotificationInfo.Builder builder,
  202. - CastDevice castDevice, RemoteMediaPlayer mediaPlayer) {
  203. - MediaMetadata notificationMetadata = new MediaMetadata("", "", "");
  204. - builder.setMetadata(notificationMetadata);
  205. -
  206. - if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
  207. -
  208. - if (mediaPlayer == null) return;
  209. -
  210. - com.google.android.gms.cast.MediaInfo info = mediaPlayer.getMediaInfo();
  211. - if (info == null) return;
  212. -
  213. - com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
  214. - if (metadata == null) return;
  215. -
  216. - String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
  217. - if (title != null) notificationMetadata.setTitle(title);
  218. -
  219. - String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
  220. - if (artist == null) {
  221. - artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
  222. - }
  223. - if (artist != null) notificationMetadata.setArtist(artist);
  224. -
  225. - String album =
  226. - metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
  227. - if (album != null) notificationMetadata.setAlbum(album);
  228. - }
  229. }
  230. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  231. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  232. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaSink.java
  233. @@ -8,41 +8,24 @@ import androidx.annotation.Nullable;
  234. import androidx.mediarouter.media.MediaRouter;
  235. import androidx.mediarouter.media.MediaRouter.RouteInfo;
  236. -import com.google.android.gms.cast.CastDevice;
  237. -
  238. /**
  239. * A common descriptor of a device that can present some URI.
  240. */
  241. public class MediaSink {
  242. private static final String CAST_SINK_URN_PREFIX = "urn:x-org.chromium:media:sink:cast-";
  243. - private final String mId;
  244. - private final String mName;
  245. - private final CastDevice mDevice;
  246. -
  247. - /**
  248. - * Constructor.
  249. - * @param id A unique identifier of the sink.
  250. - * @param name A user friendly name of the sink.
  251. - * @param device {@link CastDevice} corresponding to this sink.
  252. - */
  253. - public MediaSink(String id, String name, CastDevice device) {
  254. - mId = id;
  255. - mName = name;
  256. - mDevice = device;
  257. - }
  258. /**
  259. * @return The unique identifier of the sink.
  260. */
  261. public String getId() {
  262. - return mId;
  263. + return "";
  264. }
  265. /**
  266. * @return The user friendly name of the sink.
  267. */
  268. public String getName() {
  269. - return mName;
  270. + return "";
  271. }
  272. /**
  273. @@ -52,17 +35,8 @@ public class MediaSink {
  274. return CAST_SINK_URN_PREFIX + getId();
  275. }
  276. - public CastDevice getDevice() {
  277. - return mDevice;
  278. - }
  279. -
  280. @Override
  281. public boolean equals(Object o) {
  282. - if (o == this) return true;
  283. - if (o instanceof MediaSink) {
  284. - MediaSink other = (MediaSink) o;
  285. - return mId.equals(other.getId()) && mName.equals(other.getName());
  286. - }
  287. return false;
  288. }
  289. @@ -70,23 +44,15 @@ public class MediaSink {
  290. public int hashCode() {
  291. final int prime = 31;
  292. int result = 1;
  293. - result = prime * result + ((mId == null) ? 0 : mId.hashCode());
  294. - result = prime * result + ((mName == null) ? 0 : mName.hashCode());
  295. return result;
  296. }
  297. - @Override
  298. - public String toString() {
  299. - return String.format("MediaSink: %s, %s", getId(), getName());
  300. - }
  301. -
  302. /**
  303. * @param route The route information provided by Android.
  304. * @return A new MediaSink instance corresponding to the specified {@link RouteInfo}.
  305. */
  306. public static MediaSink fromRoute(MediaRouter.RouteInfo route) {
  307. - return new MediaSink(
  308. - route.getId(), route.getName(), CastDevice.getFromBundle(route.getExtras()));
  309. + return null;
  310. }
  311. /**
  312. @@ -97,10 +63,6 @@ public class MediaSink {
  313. */
  314. @Nullable
  315. public static MediaSink fromSinkId(String sinkId, MediaRouter router) {
  316. - for (MediaRouter.RouteInfo route : router.getRoutes()) {
  317. - MediaSink sink = MediaSink.fromRoute(route);
  318. - if (sink.getId().equals(sinkId)) return sink;
  319. - }
  320. return null;
  321. }
  322. }
  323. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  324. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  325. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/MediaStatusBridge.java
  326. @@ -4,10 +4,6 @@
  327. package org.chromium.components.media_router;
  328. -import com.google.android.gms.cast.MediaInfo;
  329. -import com.google.android.gms.cast.MediaMetadata;
  330. -import com.google.android.gms.cast.MediaStatus;
  331. -
  332. import org.chromium.base.annotations.CalledByNative;
  333. import org.chromium.base.annotations.JNINamespace;
  334. @@ -17,11 +13,6 @@ import org.chromium.base.annotations.JNINamespace;
  335. */
  336. @JNINamespace("media_router")
  337. public class MediaStatusBridge {
  338. - private MediaStatus mStatus;
  339. -
  340. - public MediaStatusBridge(MediaStatus status) {
  341. - mStatus = status;
  342. - }
  343. /**
  344. * Gets the play state of the stream. Return values are defined as such:
  345. @@ -34,7 +25,7 @@ public class MediaStatusBridge {
  346. */
  347. @CalledByNative
  348. public int playerState() {
  349. - return mStatus.getPlayerState();
  350. + return 0;
  351. }
  352. /**
  353. @@ -48,7 +39,7 @@ public class MediaStatusBridge {
  354. */
  355. @CalledByNative
  356. public int idleReason() {
  357. - return mStatus.getIdleReason();
  358. + return 0;
  359. }
  360. /**
  361. @@ -57,13 +48,7 @@ public class MediaStatusBridge {
  362. */
  363. @CalledByNative
  364. public String title() {
  365. - MediaInfo info = mStatus.getMediaInfo();
  366. - if (info == null) return "";
  367. -
  368. - MediaMetadata metadata = info.getMetadata();
  369. - if (metadata == null) return "";
  370. -
  371. - return metadata.getString(MediaMetadata.KEY_TITLE);
  372. + return "";
  373. }
  374. /**
  375. @@ -71,7 +56,7 @@ public class MediaStatusBridge {
  376. */
  377. @CalledByNative
  378. public boolean canPlayPause() {
  379. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_PAUSE);
  380. + return false;
  381. }
  382. /**
  383. @@ -79,7 +64,7 @@ public class MediaStatusBridge {
  384. */
  385. @CalledByNative
  386. public boolean canMute() {
  387. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_TOGGLE_MUTE);
  388. + return false;
  389. }
  390. /**
  391. @@ -87,7 +72,7 @@ public class MediaStatusBridge {
  392. */
  393. @CalledByNative
  394. public boolean canSetVolume() {
  395. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SET_VOLUME);
  396. + return false;
  397. }
  398. /**
  399. @@ -95,7 +80,7 @@ public class MediaStatusBridge {
  400. */
  401. @CalledByNative
  402. public boolean canSeek() {
  403. - return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SEEK);
  404. + return false;
  405. }
  406. /**
  407. @@ -103,7 +88,7 @@ public class MediaStatusBridge {
  408. */
  409. @CalledByNative
  410. public boolean isMuted() {
  411. - return mStatus.isMute();
  412. + return false;
  413. }
  414. /**
  415. @@ -113,7 +98,7 @@ public class MediaStatusBridge {
  416. */
  417. @CalledByNative
  418. public double volume() {
  419. - return mStatus.getStreamVolume();
  420. + return 0.0;
  421. }
  422. /**
  423. @@ -122,10 +107,7 @@ public class MediaStatusBridge {
  424. */
  425. @CalledByNative
  426. public long duration() {
  427. - MediaInfo info = mStatus.getMediaInfo();
  428. - if (info == null) return 0;
  429. -
  430. - return info.getStreamDuration();
  431. + return 0;
  432. }
  433. /**
  434. @@ -133,6 +115,6 @@ public class MediaStatusBridge {
  435. */
  436. @CalledByNative
  437. public long currentTime() {
  438. - return mStatus.getStreamPosition();
  439. + return 0;
  440. }
  441. }
  442. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  443. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  444. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseNotificationController.java
  445. @@ -6,10 +6,6 @@ package org.chromium.components.media_router.caf;
  446. import android.content.Intent;
  447. -import com.google.android.gms.cast.CastDevice;
  448. -import com.google.android.gms.cast.MediaStatus;
  449. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  450. -
  451. import org.chromium.components.browser_ui.media.MediaNotificationInfo;
  452. import org.chromium.components.browser_ui.media.MediaNotificationListener;
  453. import org.chromium.components.browser_ui.media.MediaNotificationManager;
  454. @@ -61,20 +57,6 @@ public abstract class BaseNotificationController
  455. public void onStatusUpdated() {
  456. if (mNotificationBuilder == null) return;
  457. if (!mSessionController.isConnected()) return;
  458. -
  459. - MediaStatus mediaStatus = mSessionController.getRemoteMediaClient().getMediaStatus();
  460. - if (mediaStatus == null) return;
  461. -
  462. - int playerState = mediaStatus.getPlayerState();
  463. - if (playerState == MediaStatus.PLAYER_STATE_PAUSED
  464. - || playerState == MediaStatus.PLAYER_STATE_PLAYING) {
  465. - mNotificationBuilder.setPaused(playerState != MediaStatus.PLAYER_STATE_PLAYING);
  466. - mNotificationBuilder.setActions(
  467. - MediaNotificationInfo.ACTION_STOP | MediaNotificationInfo.ACTION_PLAY_PAUSE);
  468. - } else {
  469. - mNotificationBuilder.setActions(MediaNotificationInfo.ACTION_STOP);
  470. - }
  471. - MediaRouterClient.getInstance().showNotification(mNotificationBuilder.build());
  472. }
  473. /** Called when media metadata updated. */
  474. @@ -90,30 +72,6 @@ public abstract class BaseNotificationController
  475. mNotificationBuilder.setMetadata(notificationMetadata);
  476. if (!mSessionController.isConnected()) return;
  477. -
  478. - CastDevice castDevice = mSessionController.getSession().getCastDevice();
  479. - if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
  480. -
  481. - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
  482. -
  483. - com.google.android.gms.cast.MediaInfo info = remoteMediaClient.getMediaInfo();
  484. - if (info == null) return;
  485. -
  486. - com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
  487. - if (metadata == null) return;
  488. -
  489. - String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
  490. - if (title != null) notificationMetadata.setTitle(title);
  491. -
  492. - String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
  493. - if (artist == null) {
  494. - artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
  495. - }
  496. - if (artist != null) notificationMetadata.setArtist(artist);
  497. -
  498. - String album =
  499. - metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
  500. - if (album != null) notificationMetadata.setAlbum(album);
  501. }
  502. /////////////////////////////////////////////////////////////////////////////////////////////
  503. @@ -122,15 +80,11 @@ public abstract class BaseNotificationController
  504. @Override
  505. public void onPlay(int actionSource) {
  506. if (!mSessionController.isConnected()) return;
  507. -
  508. - mSessionController.getRemoteMediaClient().play();
  509. }
  510. @Override
  511. public void onPause(int actionSource) {
  512. if (!mSessionController.isConnected()) return;
  513. -
  514. - mSessionController.getRemoteMediaClient().pause();
  515. }
  516. @Override
  517. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  518. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  519. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/BaseSessionController.java
  520. @@ -6,12 +6,7 @@ package org.chromium.components.media_router.caf;
  521. import androidx.annotation.Nullable;
  522. -import com.google.android.gms.cast.CastDevice;
  523. -import com.google.android.gms.cast.framework.CastSession;
  524. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  525. -
  526. import org.chromium.base.Log;
  527. -import org.chromium.components.media_router.CastSessionUtil;
  528. import org.chromium.components.media_router.FlingingController;
  529. import org.chromium.components.media_router.MediaSink;
  530. import org.chromium.components.media_router.MediaSource;
  531. @@ -42,15 +37,12 @@ public abstract class BaseSessionController {
  532. void onMetadataUpdated();
  533. }
  534. - private CastSession mCastSession;
  535. private final CafBaseMediaRouteProvider mProvider;
  536. private CreateRouteRequestInfo mRouteCreationInfo;
  537. - private final RemoteMediaClient.Callback mRemoteMediaClientCallback;
  538. private final List<Callback> mCallbacks = new ArrayList<>();
  539. public BaseSessionController(CafBaseMediaRouteProvider provider) {
  540. mProvider = provider;
  541. - mRemoteMediaClientCallback = new RemoteMediaClientCallback();
  542. }
  543. public void addCallback(Callback callback) {
  544. @@ -63,9 +55,6 @@ public abstract class BaseSessionController {
  545. public void requestSessionLaunch() {
  546. mRouteCreationInfo = mProvider.getPendingCreateRouteRequestInfo();
  547. - CastUtils.getCastContext().setReceiverApplicationId(
  548. - mRouteCreationInfo.source.getApplicationId());
  549. -
  550. // When the user clicks a route on the MediaRouteChooserDialog, we intercept the click event
  551. // and do not select the route. Instead the route selection is postponed to here. This will
  552. // trigger CAF to launch the session.
  553. @@ -84,69 +73,22 @@ public abstract class BaseSessionController {
  554. return mRouteCreationInfo;
  555. }
  556. - public CastSession getSession() {
  557. - return mCastSession;
  558. - }
  559. -
  560. - public RemoteMediaClient getRemoteMediaClient() {
  561. - return isConnected() ? mCastSession.getRemoteMediaClient() : null;
  562. - }
  563. -
  564. public abstract BaseNotificationController getNotificationController();
  565. public void endSession() {
  566. - CastUtils.getCastContext().getSessionManager().endCurrentSession(/* stopCasting= */ true);
  567. - CastUtils.getCastContext().setReceiverApplicationId(null);
  568. }
  569. public List<String> getCapabilities() {
  570. List<String> capabilities = new ArrayList<>();
  571. - if (mCastSession == null || !mCastSession.isConnected()) return capabilities;
  572. - CastDevice device = mCastSession.getCastDevice();
  573. - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_IN)) {
  574. - capabilities.add("audio_in");
  575. - }
  576. - if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_OUT)) {
  577. - capabilities.add("audio_out");
  578. - }
  579. - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_IN)) {
  580. - capabilities.add("video_in");
  581. - }
  582. - if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_OUT)) {
  583. - capabilities.add("video_out");
  584. - }
  585. return capabilities;
  586. }
  587. public boolean isConnected() {
  588. - return mCastSession != null && mCastSession.isConnected();
  589. + return false;
  590. }
  591. private void updateRemoteMediaClient(String message) {
  592. if (!isConnected()) return;
  593. -
  594. - mCastSession.getRemoteMediaClient().onMessageReceived(
  595. - mCastSession.getCastDevice(), CastSessionUtil.MEDIA_NAMESPACE, message);
  596. - }
  597. -
  598. - /** Attaches the controller to the current {@link CastSession}. */
  599. - public void attachToCastSession(CastSession session) {
  600. - mCastSession = session;
  601. - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
  602. - if (uncheckedRemoteMediaClient != null) {
  603. - uncheckedRemoteMediaClient.registerCallback(mRemoteMediaClientCallback);
  604. - }
  605. - }
  606. -
  607. - /** Detaches the controller from any {@link CastSession}. */
  608. - public void detachFromCastSession() {
  609. - if (mCastSession == null) return;
  610. -
  611. - RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
  612. - if (uncheckedRemoteMediaClient != null) {
  613. - uncheckedRemoteMediaClient.unregisterCallback(mRemoteMediaClientCallback);
  614. - }
  615. - mCastSession = null;
  616. }
  617. /** Called when session started. */
  618. @@ -163,50 +105,12 @@ public abstract class BaseSessionController {
  619. return mProvider;
  620. }
  621. - /**
  622. - * All sub-classes need to register this method to listen to messages of the namespaces they are
  623. - * interested in.
  624. - */
  625. - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
  626. - Log.d(TAG,
  627. - "Received message from Cast device: namespace=\"" + namespace + "\" message=\""
  628. - + message + "\"");
  629. - if (CastSessionUtil.MEDIA_NAMESPACE.equals(namespace)) {
  630. - updateRemoteMediaClient(message);
  631. - }
  632. - }
  633. -
  634. - private class RemoteMediaClientCallback extends RemoteMediaClient.Callback {
  635. - @Override
  636. - public void onStatusUpdated() {
  637. - BaseSessionController.this.onStatusUpdated();
  638. - }
  639. -
  640. - @Override
  641. - public void onMetadataUpdated() {
  642. - BaseSessionController.this.onMetadataUpdated();
  643. - }
  644. - }
  645. -
  646. - protected void onStatusUpdated() {
  647. - notifyCallback((Callback callback) -> callback.onStatusUpdated());
  648. - }
  649. -
  650. - protected void onMetadataUpdated() {
  651. - notifyCallback((Callback callback) -> callback.onMetadataUpdated());
  652. - }
  653. -
  654. - @Nullable
  655. - public FlingingController getFlingingController() {
  656. - return null;
  657. - }
  658. -
  659. /**
  660. * Helper message to get the session ID of the attached session. For stubbing in tests as
  661. * {@link CastSession#getSessionId()} is final.
  662. */
  663. public String getSessionId() {
  664. - return isConnected() ? getSession().getSessionId() : null;
  665. + return null;
  666. }
  667. private void notifyCallback(NotifyCallbackAction action) {
  668. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  669. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  670. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafBaseMediaRouteProvider.java
  671. @@ -12,9 +12,6 @@ import androidx.mediarouter.media.MediaRouteSelector;
  672. import androidx.mediarouter.media.MediaRouter;
  673. import androidx.mediarouter.media.MediaRouter.RouteInfo;
  674. -import com.google.android.gms.cast.framework.CastSession;
  675. -import com.google.android.gms.cast.framework.SessionManagerListener;
  676. -
  677. import org.chromium.base.Log;
  678. import org.chromium.components.media_router.DiscoveryCallback;
  679. import org.chromium.components.media_router.DiscoveryDelegate;
  680. @@ -37,7 +34,7 @@ import java.util.Set;
  681. * A base provider containing common implementation for CAF-based {@link MediaRouteProvider}s.
  682. */
  683. public abstract class CafBaseMediaRouteProvider
  684. - implements MediaRouteProvider, DiscoveryDelegate, SessionManagerListener<CastSession> {
  685. + implements MediaRouteProvider, DiscoveryDelegate {
  686. private static final String TAG = "CafMR";
  687. protected static final List<MediaSink> NO_SINKS = Collections.emptyList();
  688. @@ -153,7 +150,6 @@ public abstract class CafBaseMediaRouteProvider
  689. // current session and clean up the routes (can't wait for session ending as the signal
  690. // might be delayed).
  691. sessionController().endSession();
  692. - handleSessionEnd();
  693. }
  694. if (mPendingCreateRouteRequestInfo != null) {
  695. cancelPendingRequest("Request replaced");
  696. @@ -182,9 +178,6 @@ public abstract class CafBaseMediaRouteProvider
  697. mManager.onRouteRequestError("The sink does not exist", nativeRequestId);
  698. }
  699. - CastUtils.getCastContext().getSessionManager().addSessionManagerListener(
  700. - this, CastSession.class);
  701. -
  702. mPendingCreateRouteRequestInfo = new CreateRouteRequestInfo(source, sink, presentationId,
  703. origin, tabId, isOffTheRecord, nativeRequestId, targetRouteInfo);
  704. @@ -211,100 +204,6 @@ public abstract class CafBaseMediaRouteProvider
  705. removeRoute(routeId, /* error= */ null);
  706. }
  707. - ///////////////////////////////////////////////////////
  708. - // SessionManagerListener implementation begin
  709. - ///////////////////////////////////////////////////////
  710. -
  711. - @Override
  712. - public final void onSessionStarting(CastSession session) {
  713. - // The session is not connected yet at this point so this is no-op.
  714. - }
  715. -
  716. - @Override
  717. - public void onSessionStartFailed(CastSession session, int error) {
  718. - removeAllRoutes("Launch error");
  719. - cancelPendingRequest("Launch error");
  720. - }
  721. -
  722. - @Override
  723. - public void onSessionStarted(CastSession session, String sessionId) {
  724. - Log.d(TAG, "onSessionStarted");
  725. -
  726. - if (session != CastUtils.getCastContext().getSessionManager().getCurrentCastSession()) {
  727. - // Sometimes the session start signal might come in for an earlier launch request, which
  728. - // should be ignored.
  729. - return;
  730. - }
  731. -
  732. - if (session == sessionController().getSession() || mPendingCreateRouteRequestInfo == null) {
  733. - // Early return for any possible case that the session start signal comes in twice for
  734. - // the same session.
  735. - return;
  736. - }
  737. - handleSessionStart(session, sessionId);
  738. - }
  739. -
  740. - @Override
  741. - public final void onSessionResumed(CastSession session, boolean wasSuspended) {
  742. - sessionController().attachToCastSession(session);
  743. - }
  744. -
  745. - @Override
  746. - public final void onSessionResuming(CastSession session, String sessionId) {}
  747. -
  748. - @Override
  749. - public final void onSessionResumeFailed(CastSession session, int error) {}
  750. -
  751. - @Override
  752. - public final void onSessionEnding(CastSession session) {
  753. - handleSessionEnd();
  754. - }
  755. -
  756. - @Override
  757. - public final void onSessionEnded(CastSession session, int error) {
  758. - Log.d(TAG, "Session ended with error code " + error);
  759. - handleSessionEnd();
  760. - }
  761. -
  762. - @Override
  763. - public final void onSessionSuspended(CastSession session, int reason) {
  764. - sessionController().detachFromCastSession();
  765. - }
  766. -
  767. - ///////////////////////////////////////////////////////
  768. - // SessionManagerListener implementation end
  769. - ///////////////////////////////////////////////////////
  770. -
  771. - protected void handleSessionStart(CastSession session, String sessionId) {
  772. - sessionController().attachToCastSession(session);
  773. - sessionController().onSessionStarted();
  774. -
  775. - MediaSink sink = mPendingCreateRouteRequestInfo.sink;
  776. - MediaSource source = mPendingCreateRouteRequestInfo.source;
  777. - MediaRoute route = new MediaRoute(
  778. - sink.getId(), source.getSourceId(), mPendingCreateRouteRequestInfo.presentationId);
  779. - addRoute(route, mPendingCreateRouteRequestInfo.origin, mPendingCreateRouteRequestInfo.tabId,
  780. - mPendingCreateRouteRequestInfo.nativeRequestId, /* wasLaunched= */ true);
  781. -
  782. - mPendingCreateRouteRequestInfo = null;
  783. - }
  784. -
  785. - private void handleSessionEnd() {
  786. - if (mPendingCreateRouteRequestInfo != null) {
  787. - // The Cast SDK notifies about session ending when a route is unselected, even when
  788. - // there's no current session. Because CastSessionController unselects the route to set
  789. - // the receiver app ID, this needs to be guarded by a pending request null check to make
  790. - // sure the listener is not unregistered during a session relaunch.
  791. - return;
  792. - }
  793. - sessionController().onSessionEnded();
  794. - sessionController().detachFromCastSession();
  795. - getAndroidMediaRouter().selectRoute(getAndroidMediaRouter().getDefaultRoute());
  796. - terminateAllRoutes();
  797. - CastUtils.getCastContext().getSessionManager().removeSessionManagerListener(
  798. - this, CastSession.class);
  799. - }
  800. -
  801. private void cancelPendingRequest(String error) {
  802. if (mPendingCreateRouteRequestInfo == null) return;
  803. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  804. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  805. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMediaRouteProvider.java
  806. @@ -11,8 +11,6 @@ import androidx.annotation.Nullable;
  807. import androidx.annotation.VisibleForTesting;
  808. import androidx.mediarouter.media.MediaRouter;
  809. -import com.google.android.gms.cast.framework.CastSession;
  810. -
  811. import org.chromium.base.Log;
  812. import org.chromium.components.media_router.BrowserMediaRouter;
  813. import org.chromium.components.media_router.ClientRecord;
  814. @@ -147,20 +145,6 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
  815. return mMessageHandler;
  816. }
  817. - @Override
  818. - protected void handleSessionStart(CastSession session, String sessionId) {
  819. - super.handleSessionStart(session, sessionId);
  820. -
  821. - for (ClientRecord clientRecord : mClientIdToRecords.values()) {
  822. - // Should be exactly one instance of MediaRoute/ClientRecord at this moment.
  823. - mMessageHandler.sendReceiverActionToClient(clientRecord.routeId,
  824. - sessionController().getSink(), clientRecord.clientId, "cast");
  825. - }
  826. -
  827. - mMessageHandler.onSessionStarted();
  828. - sessionController().getSession().getRemoteMediaClient().requestStatus();
  829. - }
  830. -
  831. @Override
  832. protected void addRoute(
  833. MediaRoute route, String origin, int tabId, int nativeRequestId, boolean wasLaunched) {
  834. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  835. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  836. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CafMessageHandler.java
  837. @@ -13,10 +13,6 @@ import android.util.SparseArray;
  838. import androidx.annotation.VisibleForTesting;
  839. import androidx.collection.ArrayMap;
  840. -import com.google.android.gms.cast.ApplicationMetadata;
  841. -import com.google.android.gms.common.api.PendingResult;
  842. -import com.google.android.gms.common.api.Status;
  843. -
  844. import org.json.JSONArray;
  845. import org.json.JSONException;
  846. import org.json.JSONObject;
  847. @@ -345,49 +341,7 @@ public class CafMessageHandler {
  848. final int sequenceNumber) throws JSONException {
  849. if (volumeMessage == null) return false;
  850. if (!mSessionController.isConnected()) return false;
  851. - boolean shouldWaitForVolumeChange = false;
  852. - try {
  853. - if (!volumeMessage.isNull("muted")) {
  854. - boolean newMuted = volumeMessage.getBoolean("muted");
  855. - if (mSessionController.getSession().isMute() != newMuted) {
  856. - mSessionController.getSession().setMute(newMuted);
  857. - shouldWaitForVolumeChange = true;
  858. - }
  859. - }
  860. - if (!volumeMessage.isNull("level")) {
  861. - double newLevel = volumeMessage.getDouble("level");
  862. - double currentLevel = mSessionController.getSession().getVolume();
  863. - if (!Double.isNaN(currentLevel)
  864. - && Math.abs(currentLevel - newLevel)
  865. - > CastSessionUtil.MIN_VOLUME_LEVEL_DELTA) {
  866. - mSessionController.getSession().setVolume(newLevel);
  867. - shouldWaitForVolumeChange = true;
  868. - }
  869. - }
  870. - } catch (IOException | IllegalStateException e) {
  871. - Log.e(TAG, "Failed to send volume command: " + e);
  872. - return false;
  873. - }
  874. -
  875. - // For each successful volume message we need to respond with an empty "v2_message" so the
  876. - // Cast Web SDK can call the success callback of the page. If we expect the volume to change
  877. - // as the result of the command, we're relying on {@link Cast.CastListener#onVolumeChanged}
  878. - // to get called by the Android Cast SDK when the receiver status is updated. We keep the
  879. - // sequence number until then. If the volume doesn't change as the result of the command, we
  880. - // won't get notified by the Android SDK
  881. - if (shouldWaitForVolumeChange) {
  882. - mVolumeRequests.add(new RequestRecord(clientId, sequenceNumber));
  883. - } else {
  884. - // It's usually bad to have request and response on the same call stack so post the
  885. - // response to the Android message loop.
  886. - mHandler.post(new Runnable() {
  887. - @Override
  888. - public void run() {
  889. - onVolumeChanged(clientId, sequenceNumber);
  890. - }
  891. - });
  892. - }
  893. - return true;
  894. + return false;
  895. }
  896. @VisibleForTesting
  897. @@ -675,19 +629,11 @@ public class CafMessageHandler {
  898. try {
  899. // "volume" is a part of "receiver" initialized below.
  900. JSONObject jsonVolume = new JSONObject();
  901. - jsonVolume.put("level", mSessionController.getSession().getVolume());
  902. - jsonVolume.put("muted", mSessionController.getSession().isMute());
  903. // "receiver" is a part of "message" initialized below.
  904. JSONObject jsonReceiver = new JSONObject();
  905. - jsonReceiver.put(
  906. - "label", mSessionController.getSession().getCastDevice().getDeviceId());
  907. - jsonReceiver.put("friendlyName",
  908. - mSessionController.getSession().getCastDevice().getFriendlyName());
  909. jsonReceiver.put("capabilities", toJSONArray(mSessionController.getCapabilities()));
  910. jsonReceiver.put("volume", jsonVolume);
  911. - jsonReceiver.put(
  912. - "isActiveInput", mSessionController.getSession().getActiveInputState());
  913. jsonReceiver.put("displayStatus", null);
  914. jsonReceiver.put("receiverType", "cast");
  915. @@ -700,23 +646,14 @@ public class CafMessageHandler {
  916. JSONObject jsonMessage = new JSONObject();
  917. jsonMessage.put("sessionId", mSessionController.getSessionId());
  918. - jsonMessage.put("statusText", mSessionController.getSession().getApplicationStatus());
  919. jsonMessage.put("receiver", jsonReceiver);
  920. jsonMessage.put("namespaces", jsonNamespaces);
  921. jsonMessage.put("media", toJSONArray(new ArrayList<>()));
  922. jsonMessage.put("status", "connected");
  923. jsonMessage.put("transportId", "web-4");
  924. - ApplicationMetadata applicationMetadata =
  925. - mSessionController.getSession().getApplicationMetadata();
  926. - if (applicationMetadata != null) {
  927. - jsonMessage.put("appId", applicationMetadata.getApplicationId());
  928. - } else {
  929. - jsonMessage.put("appId",
  930. - mSessionController.getRouteCreationInfo().source.getApplicationId());
  931. - }
  932. - jsonMessage.put("displayName",
  933. - mSessionController.getSession().getCastDevice().getFriendlyName());
  934. + jsonMessage.put("appId",
  935. + mSessionController.getRouteCreationInfo().source.getApplicationId());
  936. return jsonMessage.toString();
  937. } catch (JSONException e) {
  938. @@ -797,32 +734,6 @@ public class CafMessageHandler {
  939. boolean sendStringCastMessage(
  940. String message, String namespace, String clientId, int sequenceNumber) {
  941. if (!mSessionController.isConnected()) return false;
  942. -
  943. - PendingResult<Status> pendingResult =
  944. - mSessionController.getSession().sendMessage(namespace, message);
  945. - if (!TextUtils.equals(namespace, CastSessionUtil.MEDIA_NAMESPACE)) {
  946. - // Media commands wait for the media status update as a result.
  947. - pendingResult.setResultCallback(
  948. - (Status result) -> onSendAppMessageResult(result, clientId, sequenceNumber));
  949. - }
  950. - return true;
  951. - }
  952. -
  953. - /**
  954. - * Notifies a client that an app message has been sent.
  955. - * @param clientId The client id the message is sent from.
  956. - * @param sequenceNumber The sequence number of the message.
  957. - */
  958. - void onSendAppMessageResult(Status result, String clientId, int sequenceNumber) {
  959. - if (!result.isSuccess()) {
  960. - // TODO(avayvod): should actually report back to the page.
  961. - // See https://crbug.com/550445.
  962. - Log.e(TAG, "Failed to send the message: " + result);
  963. - return;
  964. - }
  965. -
  966. - // App messages wait for the empty message with the sequence
  967. - // number.
  968. - sendEnclosedMessageToClient(clientId, "app_message", null, sequenceNumber);
  969. + return false;
  970. }
  971. }
  972. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  973. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  974. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastMediaSource.java
  975. @@ -9,8 +9,6 @@ import android.net.Uri;
  976. import androidx.annotation.Nullable;
  977. import androidx.mediarouter.media.MediaRouteSelector;
  978. -import com.google.android.gms.cast.CastMediaControlIntent;
  979. -
  980. import org.chromium.components.media_router.MediaSource;
  981. import java.util.Arrays;
  982. @@ -106,13 +104,7 @@ public class CastMediaSource implements MediaSource {
  983. */
  984. @Override
  985. public MediaRouteSelector buildRouteSelector() {
  986. - try {
  987. - return new MediaRouteSelector.Builder()
  988. - .addControlCategory(CastMediaControlIntent.categoryForCast(mApplicationId))
  989. - .build();
  990. - } catch (IllegalArgumentException e) {
  991. - return null;
  992. - }
  993. + return null;
  994. }
  995. /**
  996. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  997. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  998. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java
  999. @@ -6,28 +6,8 @@ package org.chromium.components.media_router.caf;
  1000. import android.content.Context;
  1001. -import com.google.android.gms.cast.LaunchOptions;
  1002. -import com.google.android.gms.cast.framework.CastOptions;
  1003. -import com.google.android.gms.cast.framework.OptionsProvider;
  1004. -import com.google.android.gms.cast.framework.SessionProvider;
  1005. -
  1006. import java.util.List;
  1007. /** {@link OptionsProvider} implementation for Chrome MR. */
  1008. -public class CastOptionsProvider implements OptionsProvider {
  1009. - @Override
  1010. - public CastOptions getCastOptions(Context context) {
  1011. - return new CastOptions.Builder()
  1012. - .setCastMediaOptions(null)
  1013. - .setEnableReconnectionService(false)
  1014. - .setLaunchOptions(new LaunchOptions.Builder().setRelaunchIfRunning(true).build())
  1015. - .setResumeSavedSession(false)
  1016. - .setStopReceiverApplicationWhenEndingSession(true)
  1017. - .build();
  1018. - }
  1019. -
  1020. - @Override
  1021. - public List<SessionProvider> getAdditionalSessionProviders(Context context) {
  1022. - return null;
  1023. - }
  1024. +public class CastOptionsProvider {
  1025. }
  1026. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  1027. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  1028. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastSessionController.java
  1029. @@ -7,11 +7,6 @@ package org.chromium.components.media_router.caf;
  1030. import androidx.annotation.NonNull;
  1031. import androidx.annotation.VisibleForTesting;
  1032. -import com.google.android.gms.cast.ApplicationMetadata;
  1033. -import com.google.android.gms.cast.Cast;
  1034. -import com.google.android.gms.cast.CastDevice;
  1035. -import com.google.android.gms.cast.framework.CastSession;
  1036. -
  1037. import org.chromium.base.Log;
  1038. import java.util.ArrayList;
  1039. @@ -24,12 +19,10 @@ public class CastSessionController extends BaseSessionController {
  1040. private static final String TAG = "CafSessionCtrl";
  1041. private List<String> mNamespaces = new ArrayList<String>();
  1042. - private CastListener mCastListener;
  1043. private CafNotificationController mNotificationController;
  1044. public CastSessionController(CafBaseMediaRouteProvider provider) {
  1045. super(provider);
  1046. - mCastListener = new CastListener();
  1047. mNotificationController = new CafNotificationController(this);
  1048. }
  1049. @@ -37,30 +30,6 @@ public class CastSessionController extends BaseSessionController {
  1050. return mNamespaces;
  1051. }
  1052. - /**
  1053. - * Init nested fields for testing. The reason is that nested classes are bound to the original
  1054. - * instance instead of the spyed instance.
  1055. - */
  1056. - void initNestedFieldsForTesting() {
  1057. - mCastListener = new CastListener();
  1058. - }
  1059. -
  1060. - @Override
  1061. - public void attachToCastSession(CastSession session) {
  1062. - super.attachToCastSession(session);
  1063. - getSession().addCastListener(mCastListener);
  1064. - updateNamespaces();
  1065. - }
  1066. -
  1067. - @Override
  1068. - public void detachFromCastSession() {
  1069. - if (getSession() == null) return;
  1070. -
  1071. - mNamespaces.clear();
  1072. - getSession().removeCastListener(mCastListener);
  1073. - super.detachFromCastSession();
  1074. - }
  1075. -
  1076. @Override
  1077. public void onSessionEnded() {
  1078. getMessageHandler().onSessionEnded();
  1079. @@ -72,24 +41,6 @@ public class CastSessionController extends BaseSessionController {
  1080. return mNotificationController;
  1081. }
  1082. - private class CastListener extends Cast.Listener {
  1083. - @Override
  1084. - public void onApplicationStatusChanged() {
  1085. - CastSessionController.this.onApplicationStatusChanged();
  1086. - }
  1087. -
  1088. - @Override
  1089. - public void onApplicationMetadataChanged(ApplicationMetadata metadata) {
  1090. - CastSessionController.this.onApplicationStatusChanged();
  1091. - }
  1092. -
  1093. - @Override
  1094. - public void onVolumeChanged() {
  1095. - CastSessionController.this.onApplicationStatusChanged();
  1096. - getMessageHandler().onVolumeChanged();
  1097. - }
  1098. - }
  1099. -
  1100. private void onApplicationStatusChanged() {
  1101. updateNamespaces();
  1102. @@ -100,53 +51,18 @@ public class CastSessionController extends BaseSessionController {
  1103. @VisibleForTesting
  1104. void updateNamespaces() {
  1105. if (!isConnected()) return;
  1106. -
  1107. - if (getSession().getApplicationMetadata() == null
  1108. - || getSession().getApplicationMetadata().getSupportedNamespaces() == null) {
  1109. - return;
  1110. - }
  1111. -
  1112. - Set<String> namespacesToAdd =
  1113. - new HashSet<>(getSession().getApplicationMetadata().getSupportedNamespaces());
  1114. - Set<String> namespacesToRemove = new HashSet<String>(mNamespaces);
  1115. -
  1116. - namespacesToRemove.removeAll(namespacesToAdd);
  1117. - namespacesToAdd.removeAll(mNamespaces);
  1118. -
  1119. - for (String namespace : namespacesToRemove) unregisterNamespace(namespace);
  1120. - for (String namespace : namespacesToAdd) registerNamespace(namespace);
  1121. }
  1122. private void registerNamespace(String namespace) {
  1123. assert !mNamespaces.contains(namespace);
  1124. if (!isConnected()) return;
  1125. -
  1126. - try {
  1127. - getSession().setMessageReceivedCallbacks(namespace, this::onMessageReceived);
  1128. - mNamespaces.add(namespace);
  1129. - } catch (Exception e) {
  1130. - Log.e(TAG, "Failed to register namespace listener for %s", namespace, e);
  1131. - }
  1132. }
  1133. private void unregisterNamespace(String namespace) {
  1134. assert mNamespaces.contains(namespace);
  1135. if (!isConnected()) return;
  1136. -
  1137. - try {
  1138. - getSession().removeMessageReceivedCallbacks(namespace);
  1139. - mNamespaces.remove(namespace);
  1140. - } catch (Exception e) {
  1141. - Log.e(TAG, "Failed to remove the namespace listener for %s", namespace, e);
  1142. - }
  1143. - }
  1144. -
  1145. - @Override
  1146. - protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
  1147. - super.onMessageReceived(castDevice, namespace, message);
  1148. - getMessageHandler().onMessageReceived(namespace, message);
  1149. }
  1150. @NonNull
  1151. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  1152. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  1153. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/CastUtils.java
  1154. @@ -8,28 +8,10 @@ import android.app.Application;
  1155. import android.content.Context;
  1156. import android.content.ContextWrapper;
  1157. -import com.google.android.gms.cast.framework.CastContext;
  1158. -
  1159. import org.chromium.base.ContextUtils;
  1160. /** Utility methods for Cast. */
  1161. public class CastUtils {
  1162. - /** Helper method to return the {@link CastContext} instance. */
  1163. - public static CastContext getCastContext() {
  1164. - Context context = ContextUtils.getApplicationContext();
  1165. - // The GMS Cast framework assumes the passed {@link Context} returns an instance of {@link
  1166. - // Application} from {@link getApplicationContext()}, so we make sure to remove any
  1167. - // wrappers.
  1168. - while (!(context.getApplicationContext() instanceof Application)) {
  1169. - if (context instanceof ContextWrapper) {
  1170. - context = ((ContextWrapper) context).getBaseContext();
  1171. - } else {
  1172. - return null;
  1173. - }
  1174. - }
  1175. - return CastContext.getSharedInstance(context);
  1176. - }
  1177. -
  1178. /**
  1179. * Compares two origins. Empty origin strings correspond to unique origins in
  1180. * url::Origin.
  1181. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  1182. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  1183. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafExpandedControllerActivity.java
  1184. @@ -45,53 +45,36 @@ public class CafExpandedControllerActivity
  1185. @Override
  1186. public void play() {
  1187. if (!mSessionController.isConnected()) return;
  1188. -
  1189. - mSessionController.getSession().getRemoteMediaClient().play();
  1190. }
  1191. @Override
  1192. public void pause() {
  1193. if (!mSessionController.isConnected()) return;
  1194. -
  1195. - mSessionController.getSession().getRemoteMediaClient().pause();
  1196. }
  1197. @Override
  1198. public long getDuration() {
  1199. - if (!mSessionController.isConnected()) return 0;
  1200. - return mSessionController.getFlingingController().getDuration();
  1201. + return 0;
  1202. }
  1203. @Override
  1204. public long getPosition() {
  1205. - if (!mSessionController.isConnected()) return 0;
  1206. - return mSessionController.getFlingingController().getApproximateCurrentTime();
  1207. + return 0;
  1208. }
  1209. @Override
  1210. public void seekTo(long pos) {
  1211. - if (!mSessionController.isConnected()) return;
  1212. -
  1213. - mSessionController.getSession().getRemoteMediaClient().seek(pos);
  1214. }
  1215. @Override
  1216. public boolean isPlaying() {
  1217. - if (!mSessionController.isConnected()) return false;
  1218. -
  1219. - return mSessionController.getSession().getRemoteMediaClient().isPlaying();
  1220. + return false;
  1221. }
  1222. @Override
  1223. public long getActionFlags() {
  1224. long flags =
  1225. PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD;
  1226. - if (mSessionController.isConnected()
  1227. - && mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
  1228. - flags |= PlaybackStateCompat.ACTION_PAUSE;
  1229. - } else {
  1230. - flags |= PlaybackStateCompat.ACTION_PLAY;
  1231. - }
  1232. return flags;
  1233. }
  1234. };
  1235. @@ -180,20 +163,10 @@ public class CafExpandedControllerActivity
  1236. private void updateUi() {
  1237. if (!mSessionController.isConnected()) return;
  1238. - String deviceName = mSessionController.getSession().getCastDevice().getFriendlyName();
  1239. - String titleText = "";
  1240. - if (deviceName != null) {
  1241. - titleText = getResources().getString(R.string.cast_casting_video, deviceName);
  1242. - }
  1243. - mTitleView.setText(titleText);
  1244. -
  1245. mMediaController.refresh();
  1246. mMediaController.updateProgress();
  1247. cancelProgressUpdateTask();
  1248. - if (mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
  1249. - scheduleProgressUpdateTask();
  1250. - }
  1251. }
  1252. private void scheduleProgressUpdateTask() {
  1253. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  1254. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  1255. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/CafRemotingMediaRouteProvider.java
  1256. @@ -65,6 +65,6 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider {
  1257. if (!mRoutes.containsKey(routeId)) return null;
  1258. - return sessionController().getFlingingController();
  1259. + return null;
  1260. }
  1261. }
  1262. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  1263. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  1264. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/FlingingControllerAdapter.java
  1265. @@ -4,11 +4,6 @@
  1266. package org.chromium.components.media_router.caf.remoting;
  1267. -import com.google.android.gms.cast.MediaInfo;
  1268. -import com.google.android.gms.cast.MediaStatus;
  1269. -import com.google.android.gms.cast.framework.media.RemoteMediaClient;
  1270. -import com.google.android.gms.common.api.Result;
  1271. -
  1272. import org.chromium.base.Log;
  1273. import org.chromium.components.media_router.FlingingController;
  1274. import org.chromium.components.media_router.MediaController;
  1275. @@ -69,14 +64,6 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
  1276. /** Starts loading the media URL, from the given position. */
  1277. public void load(long position) {
  1278. if (!mSessionController.isConnected()) return;
  1279. -
  1280. - mLoaded = true;
  1281. -
  1282. - MediaInfo mediaInfo = new MediaInfo.Builder(mMediaUrl)
  1283. - .setContentType("*/*")
  1284. - .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
  1285. - .build();
  1286. - mSessionController.getRemoteMediaClient().load(mediaInfo, /* autoplay= */ true, position);
  1287. }
  1288. ////////////////////////////////////////////
  1289. @@ -91,89 +78,28 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
  1290. load(/* position= */ 0);
  1291. return;
  1292. }
  1293. -
  1294. - mSessionController.getRemoteMediaClient().play().setResultCallback(
  1295. - this::onMediaCommandResult);
  1296. }
  1297. @Override
  1298. public void pause() {
  1299. if (!mSessionController.isConnected()) return;
  1300. - mSessionController.getRemoteMediaClient().pause().setResultCallback(
  1301. - this::onMediaCommandResult);
  1302. }
  1303. @Override
  1304. public void setMute(boolean mute) {
  1305. if (!mSessionController.isConnected()) return;
  1306. - mSessionController.getRemoteMediaClient().setStreamMute(mute).setResultCallback(
  1307. - this::onMediaCommandResult);
  1308. }
  1309. @Override
  1310. public void setVolume(double volume) {
  1311. if (!mSessionController.isConnected()) return;
  1312. - mSessionController.getRemoteMediaClient().setStreamVolume(volume).setResultCallback(
  1313. - this::onMediaCommandResult);
  1314. }
  1315. @Override
  1316. public void seek(long position) {
  1317. - if (!mSessionController.isConnected()) return;
  1318. -
  1319. - if (!mLoaded) {
  1320. - load(position);
  1321. - return;
  1322. - }
  1323. -
  1324. - mSessionController.getRemoteMediaClient().seek(position).setResultCallback(
  1325. - this::onMediaCommandResult);
  1326. - mStreamPositionExtrapolator.onSeek(position);
  1327. }
  1328. ////////////////////////////////////////////
  1329. // MediaController implementation end
  1330. ////////////////////////////////////////////
  1331. -
  1332. - public void onStatusUpdated() {
  1333. - if (mMediaStatusObserver == null) return;
  1334. -
  1335. - RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
  1336. -
  1337. - MediaStatus mediaStatus = remoteMediaClient.getMediaStatus();
  1338. - if (mediaStatus != null) {
  1339. - mHasEverReceivedValidMediaSession = true;
  1340. - if (mediaStatus.getPlayerState() == MediaStatus.PLAYER_STATE_IDLE
  1341. - && mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_FINISHED) {
  1342. - mLoaded = false;
  1343. - mStreamPositionExtrapolator.onFinish();
  1344. - } else {
  1345. - mStreamPositionExtrapolator.update(remoteMediaClient.getStreamDuration(),
  1346. - remoteMediaClient.getApproximateStreamPosition(),
  1347. - remoteMediaClient.isPlaying(), mediaStatus.getPlaybackRate());
  1348. - }
  1349. -
  1350. - mMediaStatusObserver.onMediaStatusUpdate(new MediaStatusBridge(mediaStatus));
  1351. -
  1352. - } else if (mHasEverReceivedValidMediaSession) {
  1353. - // We can receive a null |mediaStatus| while we are in the process of loading the video.
  1354. - // We should wait until we receive one valid media status before considering the video
  1355. - // unloaded. Otherwise, the first call to seek or play will reload the video.
  1356. - // See b/144325733.
  1357. - mLoaded = false;
  1358. - mStreamPositionExtrapolator.clear();
  1359. - }
  1360. - }
  1361. -
  1362. - private void onMediaCommandResult(Result result) {
  1363. - // When multiple API calls are made in quick succession, "Results have already been set"
  1364. - // IllegalStateExceptions might be thrown from GMS code. We prefer to catch the exception
  1365. - // and noop it, than to crash. This might lead to some API calls never getting their
  1366. - // onResult() called, so we should not rely on onResult() being called for every API call.
  1367. - // See https://crbug.com/853923.
  1368. - if (!result.getStatus().isSuccess()) {
  1369. - Log.e(TAG, "Error when sending command. Status code: %d",
  1370. - result.getStatus().getStatusCode());
  1371. - }
  1372. - }
  1373. }
  1374. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  1375. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  1376. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingMediaSource.java
  1377. @@ -13,8 +13,6 @@ import android.util.Base64;
  1378. import androidx.annotation.Nullable;
  1379. import androidx.mediarouter.media.MediaRouteSelector;
  1380. -import com.google.android.gms.cast.CastMediaControlIntent;
  1381. -
  1382. import org.chromium.base.ContextUtils;
  1383. import org.chromium.base.Log;
  1384. import org.chromium.components.media_router.MediaSource;
  1385. @@ -84,9 +82,7 @@ public class RemotingMediaSource implements MediaSource {
  1386. */
  1387. @Override
  1388. public MediaRouteSelector buildRouteSelector() {
  1389. - return new MediaRouteSelector.Builder()
  1390. - .addControlCategory(CastMediaControlIntent.categoryForCast(getApplicationId()))
  1391. - .build();
  1392. + return null;
  1393. }
  1394. /**
  1395. @@ -113,7 +109,7 @@ public class RemotingMediaSource implements MediaSource {
  1396. sApplicationId = (customAppId != null && !customAppId.isEmpty())
  1397. ? customAppId
  1398. - : CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID;
  1399. + : "CC1AD845"; /*DEFAULT_MEDIA_RECEIVER_APPLICATION_ID*/
  1400. }
  1401. return sApplicationId;
  1402. diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  1403. --- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  1404. +++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/caf/remoting/RemotingSessionController.java
  1405. @@ -4,8 +4,6 @@
  1406. package org.chromium.components.media_router.caf.remoting;
  1407. -import com.google.android.gms.cast.framework.CastSession;
  1408. -
  1409. import org.chromium.base.Log;
  1410. import org.chromium.components.media_router.CastSessionUtil;
  1411. import org.chromium.components.media_router.caf.BaseNotificationController;
  1412. @@ -33,19 +31,6 @@ public class RemotingSessionController extends BaseSessionController {
  1413. sInstance = new WeakReference<>(this);
  1414. }
  1415. - @Override
  1416. - public void attachToCastSession(CastSession session) {
  1417. - super.attachToCastSession(session);
  1418. -
  1419. - try {
  1420. - getSession().setMessageReceivedCallbacks(
  1421. - CastSessionUtil.MEDIA_NAMESPACE, this::onMessageReceived);
  1422. - } catch (Exception e) {
  1423. - Log.e(TAG, "Failed to register namespace listener for %s",
  1424. - CastSessionUtil.MEDIA_NAMESPACE, e);
  1425. - }
  1426. - }
  1427. -
  1428. @Override
  1429. public void onSessionStarted() {
  1430. super.onSessionStarted();
  1431. @@ -53,17 +38,6 @@ public class RemotingSessionController extends BaseSessionController {
  1432. mFlingingControllerAdapter = new FlingingControllerAdapter(this, source.getMediaUrl());
  1433. }
  1434. - @Override
  1435. - protected void onStatusUpdated() {
  1436. - mFlingingControllerAdapter.onStatusUpdated();
  1437. - super.onStatusUpdated();
  1438. - }
  1439. -
  1440. - @Override
  1441. - public FlingingControllerAdapter getFlingingController() {
  1442. - return mFlingingControllerAdapter;
  1443. - }
  1444. -
  1445. @Override
  1446. public BaseNotificationController getNotificationController() {
  1447. return mNotificationController;
  1448. diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/components/media_router/test/android/cast_emulator/BUILD.gn
  1449. --- a/components/media_router/test/android/cast_emulator/BUILD.gn
  1450. +++ b/components/media_router/test/android/cast_emulator/BUILD.gn
  1451. @@ -20,7 +20,6 @@ android_library("cast_emulator_java") {
  1452. "src/org/chromium/components/media_router/cast_emulator/router/DummyRoutePublisher.java",
  1453. ]
  1454. deps = [
  1455. - "$google_play_services_package:google_play_services_cast_java",
  1456. "//base:base_java",
  1457. "//third_party/android_deps:android_support_v7_appcompat_java",
  1458. "//third_party/android_deps:androidx_mediarouter_mediarouter_java",
  1459. diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
  1460. --- a/third_party/android_deps/BUILD.gn
  1461. +++ b/third_party/android_deps/BUILD.gn
  1462. @@ -1171,45 +1171,6 @@ android_aar_prebuilt("google_play_services_basement_java") {
  1463. "//build/android/bytecode:fragment_activity_replacer"
  1464. }
  1465. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  1466. -android_aar_prebuilt("google_play_services_cast_java") {
  1467. - aar_path = "libs/com_google_android_gms_play_services_cast/play-services-cast-17.0.0.aar"
  1468. - info_path = "libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info"
  1469. - deps = [
  1470. - ":androidx_core_core_java",
  1471. - ":androidx_mediarouter_mediarouter_java",
  1472. - ":google_play_services_base_java",
  1473. - ":google_play_services_basement_java",
  1474. - ":google_play_services_flags_java",
  1475. - ":google_play_services_tasks_java",
  1476. - ]
  1477. -
  1478. - # Removing drawables from GMS .aars as they are unused bloat.
  1479. - strip_drawables = true
  1480. -}
  1481. -
  1482. -# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  1483. -android_aar_prebuilt("google_play_services_cast_framework_java") {
  1484. - aar_path = "libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework-17.0.0.aar"
  1485. - info_path = "libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info"
  1486. - deps = [
  1487. - ":androidx_appcompat_appcompat_java",
  1488. - ":androidx_collection_collection_java",
  1489. - ":androidx_core_core_java",
  1490. - ":androidx_fragment_fragment_java",
  1491. - ":androidx_media_media_java",
  1492. - ":androidx_mediarouter_mediarouter_java",
  1493. - ":androidx_recyclerview_recyclerview_java",
  1494. - ":google_play_services_base_java",
  1495. - ":google_play_services_basement_java",
  1496. - ":google_play_services_cast_java",
  1497. - ]
  1498. -
  1499. - # Removing all resources from cast framework as they are unused bloat.
  1500. - # Can only safely remove them when R8 will strip the path that accesses them.
  1501. - strip_resources = !is_java_debug
  1502. -}
  1503. -
  1504. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
  1505. android_aar_prebuilt("google_play_services_gcm_java") {
  1506. aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
  1507. --
  1508. 2.17.1