4419 lines
203 KiB
Diff
4419 lines
203 KiB
Diff
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
|
Date: Mon, 5 Apr 2021 21:37:12 +0200
|
|
Subject: Remove binary blob integrations
|
|
|
|
Remove dependency on com.google.android.gms.auth
|
|
kill GCM
|
|
Remove dependency on com.google.android.gcm
|
|
Remove dependency on com.google.android.gms.gcm
|
|
It also disables Snippets, auto-update of offline pages and launching browser from background service.
|
|
The snippets are already disabled in native codes, this will disable it on Java level.
|
|
|
|
Remove dependency on com.google.android.play
|
|
Remove dependency on vision, clearcut and phenotype
|
|
Remove dependency on flags, places and stats
|
|
Remove dependency on fido, iid, instantapps, location
|
|
Remove dependency on com.google.android.gms.cast
|
|
Remove dependency on auth, signin, dynamic and tasks
|
|
Remove google_services_gcm
|
|
ungoogled-chromium: Disable GCM
|
|
Disable Google Cloud Messaging (GCM) client
|
|
Disable web authentication phone support
|
|
|
|
Parts of this patch were developed by csagan5, uazo and others.
|
|
---
|
|
...em_webview_bundle.AndroidManifest.expected | 5 -
|
|
chrome/android/BUILD.gn | 33 --
|
|
chrome/android/chrome_java_sources.gni | 5 -
|
|
.../features/cablev2_authenticator/BUILD.gn | 2 -
|
|
chrome/android/java/AndroidManifest.xml | 68 ---
|
|
.../java/res/xml/privacy_preferences.xml | 5 -
|
|
.../org/chromium/chrome/browser/AppHooks.java | 14 +-
|
|
.../browser/PlayServicesVersionInfo.java | 12 +-
|
|
.../ChromeBackgroundTaskFactory.java | 3 -
|
|
.../ExternalNavigationDelegateImpl.java | 8 +-
|
|
.../gcore/ChromeGoogleApiClientImpl.java | 25 +-
|
|
.../browser/gcore/GoogleApiClientHelper.java | 82 +--
|
|
.../instantapps/InstantAppsHandler.java | 57 +-
|
|
.../browser/omaha/UpdateStatusProvider.java | 10 +-
|
|
.../privacy/settings/PrivacySettings.java | 5 -
|
|
.../modules/chrome_feature_modules.gni | 3 -
|
|
chrome/browser/BUILD.gn | 2 -
|
|
.../chromium/chrome/browser/gsa/GSAState.java | 4 +-
|
|
chrome/browser/language/android/BUILD.gn | 2 -
|
|
.../language/AppLanguagePromoDialog.java | 23 -
|
|
.../AppLanguagePreferenceDelegate.java | 8 -
|
|
.../language/settings/LanguageSettings.java | 6 -
|
|
.../prefetch/prefetch_service_factory.cc | 16 -
|
|
.../browser/password_manager/android/BUILD.gn | 2 -
|
|
...PasswordStoreAndroidBackendBridgeImpl.java | 21 -
|
|
...swordSyncControllerDelegateBridgeImpl.java | 7 -
|
|
.../push_messaging_service_factory.cc | 8 +-
|
|
chrome/browser/ui/BUILD.gn | 3 -
|
|
.../webui/chrome_web_ui_controller_factory.cc | 3 -
|
|
chrome/test/android/BUILD.gn | 2 -
|
|
components/background_task_scheduler/BUILD.gn | 5 -
|
|
.../internal/BUILD.gn | 10 -
|
|
.../BackgroundTaskGcmTaskService.java | 160 ------
|
|
...ackgroundTaskSchedulerFactoryInternal.java | 6 +-
|
|
...kgroundTaskSchedulerGcmNetworkManager.java | 257 ---------
|
|
.../component_updater/UpdateScheduler.java | 1 -
|
|
components/externalauth/android/BUILD.gn | 3 -
|
|
.../externalauth/ExternalAuthUtils.java | 18 +-
|
|
.../UserRecoverableErrorHandler.java | 7 -
|
|
.../gcm_driver/GoogleCloudMessagingV2.java | 2 +
|
|
components/gcm_driver/gcm_client_impl.cc | 4 +
|
|
.../gcm_driver/instance_id/android/BUILD.gn | 3 -
|
|
.../instance_id/InstanceIDBridge.java | 47 +-
|
|
.../media_router/browser/android/BUILD.gn | 9 -
|
|
.../media_router/BrowserMediaRouter.java | 18 +-
|
|
.../media_router/CastSessionUtil.java | 35 --
|
|
.../components/media_router/MediaSink.java | 44 +-
|
|
.../media_router/MediaStatusBridge.java | 40 +-
|
|
.../caf/BaseNotificationController.java | 52 --
|
|
.../caf/BaseSessionController.java | 100 +---
|
|
.../caf/CafBaseMediaRouteProvider.java | 114 +---
|
|
.../caf/CafMediaRouteProvider.java | 16 -
|
|
.../media_router/caf/CafMessageHandler.java | 97 +---
|
|
.../media_router/caf/CastMediaSource.java | 10 +-
|
|
.../media_router/caf/CastOptionsProvider.java | 22 +-
|
|
.../caf/CastSessionController.java | 84 ---
|
|
.../media_router/caf/CastUtils.java | 8 -
|
|
.../CafExpandedControllerActivity.java | 41 +-
|
|
.../CafRemotingMediaRouteProvider.java | 5 +-
|
|
.../remoting/FlingingControllerAdapter.java | 74 ---
|
|
.../caf/remoting/RemotingMediaSource.java | 8 +-
|
|
.../remoting/RemotingSessionController.java | 26 -
|
|
.../test/android/cast_emulator/BUILD.gn | 1 -
|
|
components/module_installer/android/BUILD.gn | 2 -
|
|
components/signin/public/android/BUILD.gn | 4 -
|
|
components/webauthn/android/BUILD.gn | 10 -
|
|
.../webauthn/AuthenticatorImpl.java | 30 -
|
|
.../push_messaging/push_messaging_manager.cc | 2 +-
|
|
content/public/android/BUILD.gn | 4 -
|
|
content/public/common/content_features.cc | 4 +-
|
|
content/test/BUILD.gn | 4 -
|
|
device/BUILD.gn | 3 -
|
|
device/fido/features.cc | 4 +-
|
|
remoting/android/client_java_tmpl.gni | 3 -
|
|
services/BUILD.gn | 9 -
|
|
services/device/geolocation/BUILD.gn | 3 -
|
|
services/shape_detection/BUILD.gn | 4 -
|
|
third_party/android_deps/BUILD.gn | 540 +-----------------
|
|
.../preconditions/javatests/BUILD.gn | 1 -
|
|
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
|
|
80 files changed, 68 insertions(+), 2340 deletions(-)
|
|
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
|
|
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
|
|
|
|
diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
|
|
--- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
|
|
+++ b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
|
|
@@ -19,10 +19,6 @@
|
|
android:label="Android System WebView"
|
|
android:multiArch="true"
|
|
android:use32bitAbi="true">
|
|
- <activity # DIFF-ANCHOR: ea1a94af
|
|
- android:name="com.google.android.gms.common.api.GoogleApiActivity"
|
|
- android:exported="false"
|
|
- android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
|
</activity> # DIFF-ANCHOR: ea1a94af
|
|
<activity # DIFF-ANCHOR: a4438884
|
|
android:name="org.chromium.android_webview.devui.MainActivity"
|
|
@@ -66,7 +62,6 @@
|
|
android:visibleToInstantApps="true">
|
|
</activity-alias> # DIFF-ANCHOR: b7cc06e9
|
|
<meta-data android:name="$PACKAGE.WebViewLibrary" android:value="libwebviewchromium.so"/>
|
|
- <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version"/>
|
|
<meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" android:value="0"/>
|
|
<meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" android:value="40"/>
|
|
<provider # DIFF-ANCHOR: a5e78e63
|
|
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
|
|
--- a/chrome/android/BUILD.gn
|
|
+++ b/chrome/android/BUILD.gn
|
|
@@ -326,14 +326,6 @@ android_library("chrome_java") {
|
|
":chrome_public_apk_template_resources",
|
|
":update_proto_java",
|
|
":usage_stats_proto_java",
|
|
- "$google_play_services_package:google_play_services_auth_base_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
- "$google_play_services_package:google_play_services_iid_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//cc:cc_java",
|
|
"//chrome/android/features/keyboard_accessory:public_java",
|
|
@@ -606,7 +598,6 @@ android_library("chrome_java") {
|
|
"//skia/public/mojom:mojom_java",
|
|
"//third_party/android_deps:android_support_v7_appcompat_java",
|
|
"//third_party/android_deps:chromium_play_services_availability_java",
|
|
- "//third_party/android_deps:com_google_android_play_core_java",
|
|
"//third_party/android_deps:com_google_code_findbugs_jsr305_java",
|
|
"//third_party/android_deps:com_google_guava_listenablefuture_java",
|
|
"//third_party/android_deps:dagger_java",
|
|
@@ -937,10 +928,6 @@ junit_binary("chrome_junit_tests") {
|
|
":chrome_jni_headers",
|
|
":chrome_public_android_manifest",
|
|
":delegate_public_impl_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
@@ -1317,13 +1304,6 @@ android_library("chrome_test_java") {
|
|
":chrome_test_util_java",
|
|
":chrome_test_util_jni",
|
|
":delegate_public_impl_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
- "$google_play_services_package:google_play_services_iid_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base/test:test_support_java",
|
|
@@ -2405,7 +2385,6 @@ android_library("browser_java_test_support") {
|
|
]
|
|
deps = [
|
|
":chrome_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:jni_java",
|
|
@@ -2555,9 +2534,7 @@ android_library("base_monochrome_module_java") {
|
|
android_library("base_module_java") {
|
|
sources = [
|
|
"../browser/attribution_reporting/android/java/src/org/chromium/chrome/browser/attribution_reporting/AttributionReportingProvider.java",
|
|
- "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java",
|
|
"java/src/org/chromium/chrome/app/TrichromeZygotePreload.java",
|
|
- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
|
|
"java/src/org/chromium/chrome/browser/DeferredStartupHandler.java",
|
|
"java/src/org/chromium/chrome/browser/base/DexFixer.java",
|
|
@@ -2568,8 +2545,6 @@ android_library("base_module_java") {
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
|
|
- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmListenerService.java",
|
|
- "java/src/org/chromium/chrome/browser/base/SplitCompatGcmTaskService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java",
|
|
"java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java",
|
|
@@ -2594,16 +2569,10 @@ android_library("base_module_java") {
|
|
"java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
|
|
"java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java",
|
|
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerService.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundService.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/InvalidationGcmUpstreamSender.java",
|
|
"java/src/org/chromium/chrome/browser/tracing/TracingNotificationService.java",
|
|
]
|
|
deps = [
|
|
":chrome_base_module_resources",
|
|
- "$google_play_services_package:google_firebase_firebase_iid_java",
|
|
- "$google_play_services_package:google_firebase_firebase_messaging_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
"//base:base_java",
|
|
"//chrome/browser/download/android:file_provider_java",
|
|
"//chrome/browser/flags:java",
|
|
@@ -2616,7 +2585,6 @@ android_library("base_module_java") {
|
|
"//components/media_router/browser/android:cast_options_provider_java",
|
|
"//components/minidump_uploader:minidump_uploader_java",
|
|
"//components/module_installer/android:module_installer_java",
|
|
- "//third_party/android_deps:com_google_android_play_core_java",
|
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
|
"//third_party/androidx:androidx_collection_collection_java",
|
|
"//third_party/androidx:androidx_fragment_fragment_java",
|
|
@@ -2638,7 +2606,6 @@ android_library("base_module_java") {
|
|
# Deps to pull services into base module.
|
|
# TODO(crbug.com/1126301): Consider moving these to the chrome module to
|
|
# reduce base dex size.
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
"//components/background_task_scheduler:background_task_scheduler_java",
|
|
"//components/payments/content/android:service_java",
|
|
"//third_party/androidx:androidx_browser_browser_java",
|
|
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
|
|
--- a/chrome/android/chrome_java_sources.gni
|
|
+++ b/chrome/android/chrome_java_sources.gni
|
|
@@ -17,7 +17,6 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java",
|
|
- "java/src/org/chromium/chrome/browser/ChromeBackgroundServiceImpl.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
|
|
@@ -936,10 +935,6 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/searchwidget/SearchType.java",
|
|
"java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java",
|
|
"java/src/org/chromium/chrome/browser/send_tab_to_self/SendTabToSelfShareActivity.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/ChromeGcmListenerServiceImpl.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundServiceImpl.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java",
|
|
- "java/src/org/chromium/chrome/browser/services/gcm/GcmUma.java",
|
|
"java/src/org/chromium/chrome/browser/settings/MainSettings.java",
|
|
"java/src/org/chromium/chrome/browser/settings/SettingsActivity.java",
|
|
"java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java",
|
|
diff --git a/chrome/android/features/cablev2_authenticator/BUILD.gn b/chrome/android/features/cablev2_authenticator/BUILD.gn
|
|
--- a/chrome/android/features/cablev2_authenticator/BUILD.gn
|
|
+++ b/chrome/android/features/cablev2_authenticator/BUILD.gn
|
|
@@ -16,8 +16,6 @@ android_library("java") {
|
|
deps = [
|
|
":java_resources",
|
|
":logging_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//chrome/browser/webauthn/android:java_resources",
|
|
"//components/webauthn/android:java",
|
|
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
|
--- a/chrome/android/java/AndroidManifest.xml
|
|
+++ b/chrome/android/java/AndroidManifest.xml
|
|
@@ -102,21 +102,16 @@ by a child template that "extends" this file.
|
|
<permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
|
|
<permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
|
|
<permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
|
|
- <!-- Only chrome can receive the messages and registration result -->
|
|
- <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
|
|
- android:protectionLevel="signature" />
|
|
<permission android:name="{{ manifest_package }}.permission.DEBUG"
|
|
android:label="Debug web pages"
|
|
android:protectionLevel="signature" />
|
|
<permission android:name="{{ manifest_package }}.permission.TRANSLATE"
|
|
android:protectionLevel="signature" />
|
|
|
|
- <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
|
|
<uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
|
|
<uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
|
|
|
|
<uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
|
|
- <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
|
|
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
|
|
|
|
{% block extra_uses_permissions %}
|
|
@@ -747,16 +742,6 @@ by a child template that "extends" this file.
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
- <activity android:name="org.chromium.components.media_router.caf.remoting.CafExpandedControllerActivity"
|
|
- android:theme="@style/Theme.Chromium.Activity"
|
|
- android:label="Chrome.CafExpandedControllerActivity"
|
|
- android:hardwareAccelerated="true"
|
|
- android:launchMode="singleTask"
|
|
- android:noHistory="true"
|
|
- android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
|
|
- android:excludeFromRecents="true">
|
|
- </activity>
|
|
-
|
|
<!-- This activity is used to restart the main Chrome process. Should never be exported. -->
|
|
<activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
|
|
android:launchMode="singleInstance"
|
|
@@ -820,15 +805,6 @@ by a child template that "extends" this file.
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
- <!-- Activity for dispatching intents to Instant Apps. -->
|
|
- <activity
|
|
- android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity"
|
|
- android:exported="false"
|
|
- android:theme="@style/Theme.BrowserUI.NoDisplay"
|
|
- android:noHistory="true"
|
|
- android:excludeFromRecents="true">
|
|
- </activity>
|
|
-
|
|
<activity
|
|
android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity"
|
|
android:exported="false"
|
|
@@ -1002,26 +978,6 @@ by a child template that "extends" this file.
|
|
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"
|
|
android:hardwareAccelerated="false" />
|
|
|
|
- <!-- GcmTaskService for registration for Invalidations. Not actually implemented anymore. -->
|
|
- <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService"
|
|
- android:exported="true"
|
|
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
|
|
- <intent-filter>
|
|
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
|
|
- </intent-filter>
|
|
- </service>
|
|
- <!-- GcmListenerService for messages from GCM. -->
|
|
- <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"
|
|
- android:exported="false" >
|
|
- <intent-filter>
|
|
- <action android:name="com.google.firebase.MESSAGING_EVENT" />
|
|
- </intent-filter>
|
|
- </service>
|
|
- <service android:name="org.chromium.chrome.browser.services.gcm.GCMBackgroundService"
|
|
- android:exported="false"/>
|
|
- <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
|
|
- android:exported="false"/>
|
|
-
|
|
<!-- Android Notification service listener -->
|
|
<service android:name="org.chromium.chrome.browser.notifications.NotificationService"
|
|
android:exported="false"/>
|
|
@@ -1053,28 +1009,10 @@ by a child template that "extends" this file.
|
|
android:exported="false"
|
|
android:permission="android.permission.BIND_JOB_SERVICE"/>
|
|
|
|
- <!-- Background Task Scheduler GCM task service -->
|
|
- <service android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskGcmTaskService"
|
|
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
|
- android:exported="true">
|
|
- <intent-filter>
|
|
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
|
- </intent-filter>
|
|
- </service>
|
|
-
|
|
<!-- Background Task Scheduler alarm receiver -->
|
|
<receiver android:name="org.chromium.components.background_task_scheduler.internal.BackgroundTaskBroadcastReceiver"
|
|
android:exported="false" />
|
|
|
|
- <!-- GcmTaskService implementation to wake Chrome on scheduled events -->
|
|
- <service android:name="org.chromium.chrome.browser.ChromeBackgroundService"
|
|
- android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE"
|
|
- android:exported="true">
|
|
- <intent-filter>
|
|
- <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" />
|
|
- </intent-filter>
|
|
- </service>
|
|
-
|
|
<service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
|
|
android:exported="true"
|
|
tools:ignore="ExportedService" />
|
|
@@ -1293,12 +1231,6 @@ by a child template that "extends" this file.
|
|
<meta-data android:name="com.google.ar.core" android:value="optional" />
|
|
{% endif %}
|
|
|
|
- <!-- Cast support -->
|
|
- <meta-data
|
|
- android:name=
|
|
- "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
|
|
- android:value="org.chromium.components.media_router.caf.CastOptionsProvider"/>
|
|
-
|
|
<!-- These providers are declared in the base module to give the chrome
|
|
split preloader more time to work. -->
|
|
<provider android:name="org.chromium.chrome.browser.util.ChromeFileProvider"
|
|
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
|
|
--- a/chrome/android/java/res/xml/privacy_preferences.xml
|
|
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
|
|
@@ -80,9 +80,4 @@
|
|
android:summary="@string/autocomplete_searches_and_urls_summary"
|
|
android:persistent="false"/>
|
|
</PreferenceCategory>
|
|
- <Preference
|
|
- android:key="phone_as_a_security_key"
|
|
- android:title="@string/cablev2_paask_title"
|
|
- android:summary="@string/cablev2_paask_body"
|
|
- android:fragment="org.chromium.chrome.browser.webauthn.PrivacySettingsFragment"/>
|
|
</PreferenceScreen>
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java
|
|
@@ -10,9 +10,6 @@ import android.content.pm.PackageManager;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.VisibleForTesting;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.chrome.browser.customtabs.CustomTabsConnection;
|
|
@@ -266,16 +263,7 @@ public abstract class AppHooks {
|
|
* same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
|
|
*/
|
|
public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
|
|
- try {
|
|
- PackageInfo gmsPackageInfo =
|
|
- ContextUtils.getApplicationContext().getPackageManager().getPackageInfo(
|
|
- GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, /* flags= */ 0);
|
|
- int apkVersion = gmsPackageInfo.versionCode;
|
|
- if (apkVersion >= minApkVersion) return ConnectionResult.SUCCESS;
|
|
- } catch (PackageManager.NameNotFoundException e) {
|
|
- return ConnectionResult.SERVICE_MISSING;
|
|
- }
|
|
- return ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED;
|
|
+ return 1; /* SERVICE_MISSING*/
|
|
}
|
|
|
|
/**
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java
|
|
@@ -7,8 +7,6 @@ package org.chromium.chrome.browser;
|
|
import android.content.Context;
|
|
import android.content.pm.PackageManager;
|
|
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.components.externalauth.ExternalAuthUtils;
|
|
@@ -29,7 +27,7 @@ public class PlayServicesVersionInfo {
|
|
public static String getGmsInfo() {
|
|
Context context = ContextUtils.getApplicationContext();
|
|
|
|
- final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
|
|
+ final long sdkVersion = 12600000;
|
|
final long installedGmsVersion = getApkVersionNumber(context);
|
|
|
|
final String accessType;
|
|
@@ -53,12 +51,6 @@ public class PlayServicesVersionInfo {
|
|
* package is not found.
|
|
*/
|
|
public static int getApkVersionNumber(Context context) {
|
|
- try {
|
|
- return context.getPackageManager()
|
|
- .getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
|
|
- .versionCode;
|
|
- } catch (PackageManager.NameNotFoundException e) {
|
|
- return 0;
|
|
- }
|
|
+ return 0;
|
|
}
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/background_task_scheduler/ChromeBackgroundTaskFactory.java
|
|
@@ -16,7 +16,6 @@ import org.chromium.chrome.browser.notifications.scheduler.NotificationScheduler
|
|
import org.chromium.chrome.browser.offlinepages.OfflineBackgroundTask;
|
|
import org.chromium.chrome.browser.offlinepages.prefetch.PrefetchBackgroundTask;
|
|
import org.chromium.chrome.browser.omaha.OmahaService;
|
|
-import org.chromium.chrome.browser.services.gcm.GCMBackgroundTask;
|
|
import org.chromium.chrome.browser.webapps.WebApkUpdateTask;
|
|
import org.chromium.components.background_task_scheduler.BackgroundTask;
|
|
import org.chromium.components.background_task_scheduler.BackgroundTaskFactory;
|
|
@@ -57,8 +56,6 @@ public class ChromeBackgroundTaskFactory implements BackgroundTaskFactory {
|
|
switch (taskId) {
|
|
case TaskIds.OMAHA_JOB_ID:
|
|
return new OmahaService();
|
|
- case TaskIds.GCM_BACKGROUND_TASK_JOB_ID:
|
|
- return new GCMBackgroundTask();
|
|
case TaskIds.OFFLINE_PAGES_BACKGROUND_JOB_ID:
|
|
return new OfflineBackgroundTask();
|
|
case TaskIds.OFFLINE_PAGES_PREFETCH_JOB_ID:
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationDelegateImpl.java
|
|
@@ -194,12 +194,8 @@ public class ExternalNavigationDelegateImpl implements ExternalNavigationDelegat
|
|
|
|
@Override
|
|
public void maybeAdjustInstantAppExtras(Intent intent, boolean isIntentToInstantApp) {
|
|
- if (isIntentToInstantApp) {
|
|
- intent.putExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER, true);
|
|
- } else {
|
|
- // Make sure this extra is not sent unless we've done the verification.
|
|
- intent.removeExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER);
|
|
- }
|
|
+ // Always remove this extra
|
|
+ intent.removeExtra(InstantAppsHandler.IS_GOOGLE_SEARCH_REFERRER);
|
|
}
|
|
|
|
@Override
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/ChromeGoogleApiClientImpl.java
|
|
@@ -6,9 +6,6 @@ package org.chromium.chrome.browser.gcore;
|
|
|
|
import android.content.Context;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.api.GoogleApiClient;
|
|
-
|
|
import org.chromium.base.Log;
|
|
import org.chromium.base.TraceEvent;
|
|
import org.chromium.components.externalauth.ExternalAuthUtils;
|
|
@@ -22,7 +19,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
|
|
private static final String TAG = "Icing";
|
|
|
|
private final Context mApplicationContext;
|
|
- private final GoogleApiClient mClient;
|
|
private final ExternalAuthUtils mExternalAuthUtils;
|
|
|
|
/**
|
|
@@ -32,10 +28,9 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
|
|
* @param requireFirstPartyBuild true if the given client can only be used in a first-party
|
|
* build.
|
|
*/
|
|
- public ChromeGoogleApiClientImpl(Context context, GoogleApiClient client,
|
|
+ public ChromeGoogleApiClientImpl(Context context,
|
|
boolean requireFirstPartyBuild) {
|
|
mApplicationContext = context.getApplicationContext();
|
|
- mClient = client;
|
|
mExternalAuthUtils = ExternalAuthUtils.getInstance();
|
|
if (requireFirstPartyBuild && !mExternalAuthUtils.isChromeGoogleSigned()) {
|
|
throw new IllegalStateException("GoogleApiClient requires first-party build");
|
|
@@ -44,7 +39,6 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
|
|
|
|
@Override
|
|
public void disconnect() {
|
|
- mClient.disconnect();
|
|
}
|
|
|
|
@Override
|
|
@@ -60,24 +54,11 @@ public class ChromeGoogleApiClientImpl implements ChromeGoogleApiClient {
|
|
@Override
|
|
public boolean connectWithTimeout(long timeout) {
|
|
TraceEvent.begin("ChromeGoogleApiClientImpl:connectWithTimeout");
|
|
- try {
|
|
- ConnectionResult result = mClient.blockingConnect(timeout, TimeUnit.MILLISECONDS);
|
|
- if (!result.isSuccess()) {
|
|
- Log.e(TAG, "Connection to GmsCore unsuccessful. Error %d", result.getErrorCode());
|
|
- } else {
|
|
- Log.d(TAG, "Connection to GmsCore successful.");
|
|
- }
|
|
- return result.isSuccess();
|
|
- } finally {
|
|
- TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
|
|
- }
|
|
+ TraceEvent.end("ChromeGoogleApiClientImpl:connectWithTimeout");
|
|
+ return false;
|
|
}
|
|
|
|
public Context getApplicationContext() {
|
|
return mApplicationContext;
|
|
}
|
|
-
|
|
- public GoogleApiClient getApiClient() {
|
|
- return mClient;
|
|
- }
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/gcore/GoogleApiClientHelper.java
|
|
@@ -7,11 +7,6 @@ package org.chromium.chrome.browser.gcore;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.api.GoogleApiClient;
|
|
-import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks;
|
|
-import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;
|
|
-
|
|
import org.chromium.base.ApplicationStatus;
|
|
import org.chromium.base.ApplicationStatus.ApplicationStateListener;
|
|
import org.chromium.base.Log;
|
|
@@ -67,29 +62,15 @@ import org.chromium.base.ThreadUtils;
|
|
* }
|
|
* </pre>
|
|
*/
|
|
-public class GoogleApiClientHelper
|
|
- implements OnConnectionFailedListener, ConnectionCallbacks {
|
|
+public class GoogleApiClientHelper {
|
|
private static final String TAG = "GCore";
|
|
|
|
private int mResolutionAttempts;
|
|
private boolean mWasConnectedBefore;
|
|
private final Handler mHandler = new Handler(ThreadUtils.getUiThreadLooper());
|
|
- private final GoogleApiClient mClient;
|
|
private long mDisconnectionDelayMs;
|
|
private Runnable mPendingDisconnect;
|
|
|
|
- /**
|
|
- * Creates a helper and enrolls it in the various connection management features.
|
|
- * See the class documentation for {@link GoogleApiClientHelper} for more information.
|
|
- *
|
|
- * @param client The client to wrap.
|
|
- */
|
|
- public GoogleApiClientHelper(GoogleApiClient client) {
|
|
- mClient = client;
|
|
- enableConnectionRetrying(true);
|
|
- enableLifecycleManagement(true);
|
|
- }
|
|
-
|
|
/**
|
|
* Opts in or out of lifecycle management. The client's connection will be closed and reopened
|
|
* when Chrome goes in and out of background.
|
|
@@ -116,13 +97,6 @@ public class GoogleApiClientHelper
|
|
* Enabling or disabling it while it is already enabled or disabled has no effect.
|
|
*/
|
|
public void enableConnectionRetrying(boolean enabled) {
|
|
- if (enabled) {
|
|
- mClient.registerConnectionCallbacks(this);
|
|
- mClient.registerConnectionFailedListener(this);
|
|
- } else {
|
|
- mClient.unregisterConnectionCallbacks(this);
|
|
- mClient.unregisterConnectionFailedListener(this);
|
|
- }
|
|
}
|
|
|
|
/**
|
|
@@ -155,21 +129,11 @@ public class GoogleApiClientHelper
|
|
// Cancel and reschedule the disconnection if we are in the background. We do it early to
|
|
// avoid race conditions between a disconnect on the UI thread and the connect below.
|
|
if (!ApplicationStatus.hasVisibleActivities()) scheduleDisconnection();
|
|
-
|
|
- // The client might be disconnected if we were idle in the background for too long.
|
|
- if (!mClient.isConnected() && !mClient.isConnecting()) {
|
|
- Log.d(TAG, "Reconnecting the client.");
|
|
- mClient.connect();
|
|
- }
|
|
}
|
|
|
|
void restoreConnectedState() {
|
|
// If we go back to the foreground before a delayed disconnect happens, cancel it.
|
|
cancelPendingDisconnection();
|
|
-
|
|
- if (mWasConnectedBefore) {
|
|
- mClient.connect();
|
|
- }
|
|
}
|
|
|
|
/**
|
|
@@ -192,12 +156,6 @@ public class GoogleApiClientHelper
|
|
}
|
|
|
|
private void disconnect() {
|
|
- if (mClient.isConnected() || mClient.isConnecting()) {
|
|
- mWasConnectedBefore = true;
|
|
- }
|
|
-
|
|
- // We always call disconnect to abort possibly pending connection requests.
|
|
- mClient.disconnect();
|
|
}
|
|
|
|
private void cancelPendingDisconnection() {
|
|
@@ -207,43 +165,7 @@ public class GoogleApiClientHelper
|
|
mPendingDisconnect = null;
|
|
}
|
|
|
|
- @Override
|
|
- public void onConnectionFailed(ConnectionResult result) {
|
|
- if (!isErrorRecoverableByRetrying(result.getErrorCode())) {
|
|
- Log.d(TAG, "Not retrying managed client connection. Unrecoverable error: %d",
|
|
- result.getErrorCode());
|
|
- return;
|
|
- }
|
|
-
|
|
- if (mResolutionAttempts < ConnectedTask.RETRY_NUMBER_LIMIT) {
|
|
- Log.d(TAG, "Retrying managed client connection. attempt %d/%d - errorCode: %d",
|
|
- mResolutionAttempts, ConnectedTask.RETRY_NUMBER_LIMIT, result.getErrorCode());
|
|
- mResolutionAttempts += 1;
|
|
-
|
|
- mHandler.postDelayed(new Runnable() {
|
|
- @Override
|
|
- public void run() {
|
|
- mClient.connect();
|
|
- }
|
|
- }, ConnectedTask.CONNECTION_RETRY_TIME_MS);
|
|
- }
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onConnected(Bundle connectionHint) {
|
|
- mResolutionAttempts = 0;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onConnectionSuspended(int cause) {
|
|
- // GoogleApiClient handles retrying on suspension itself. Logging in case it didn't succeed
|
|
- // for some reason.
|
|
- Log.w(TAG, "Managed client connection suspended. Cause: %d", cause);
|
|
- }
|
|
-
|
|
private static boolean isErrorRecoverableByRetrying(int errorCode) {
|
|
- return errorCode == ConnectionResult.INTERNAL_ERROR
|
|
- || errorCode == ConnectionResult.NETWORK_ERROR
|
|
- || errorCode == ConnectionResult.SERVICE_UPDATING;
|
|
+ return false;
|
|
}
|
|
}
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/instantapps/InstantAppsHandler.java
|
|
@@ -41,31 +41,10 @@ public class InstantAppsHandler {
|
|
// TODO(mariakhomenko): Use system once we roll to O SDK.
|
|
private static final int FLAG_DO_NOT_LAUNCH = 0x00000200;
|
|
|
|
- // TODO(mariakhomenko): Depend directly on the constants once we roll to v8 libraries.
|
|
- private static final String DO_NOT_LAUNCH_EXTRA =
|
|
- "com.google.android.gms.instantapps.DO_NOT_LAUNCH_INSTANT_APP";
|
|
-
|
|
- protected static final String IS_REFERRER_TRUSTED_EXTRA =
|
|
- "com.google.android.gms.instantapps.IS_REFERRER_TRUSTED";
|
|
-
|
|
- protected static final String IS_USER_CONFIRMED_LAUNCH_EXTRA =
|
|
- "com.google.android.gms.instantapps.IS_USER_CONFIRMED_LAUNCH";
|
|
-
|
|
- protected static final String TRUSTED_REFERRER_PKG_EXTRA =
|
|
- "com.google.android.gms.instantapps.TRUSTED_REFERRER_PKG";
|
|
-
|
|
+ // this is kept to always remove it from intents
|
|
public static final String IS_GOOGLE_SEARCH_REFERRER =
|
|
"com.google.android.gms.instantapps.IS_GOOGLE_SEARCH_REFERRER";
|
|
|
|
- private static final String BROWSER_LAUNCH_REASON =
|
|
- "com.google.android.gms.instantapps.BROWSER_LAUNCH_REASON";
|
|
-
|
|
- private static final String SUPERVISOR_PKG = "com.google.android.instantapps.supervisor";
|
|
-
|
|
- private static final String[] SUPERVISOR_START_ACTIONS = {
|
|
- "com.google.android.instantapps.START", "com.google.android.instantapps.nmr1.INSTALL",
|
|
- "com.google.android.instantapps.nmr1.VIEW"};
|
|
-
|
|
// Only two possible call sources for fallback intents, set boundary at n+1.
|
|
private static final int SOURCE_BOUNDARY = 3;
|
|
|
|
@@ -85,14 +64,6 @@ public class InstantAppsHandler {
|
|
* @return Whether the given intent is going to open an Instant App.
|
|
*/
|
|
public static boolean isIntentToInstantApp(Intent intent) {
|
|
- if (SUPERVISOR_PKG.equals(intent.getPackage())) return true;
|
|
-
|
|
- String intentAction = intent.getAction();
|
|
- for (String action : SUPERVISOR_START_ACTIONS) {
|
|
- if (action.equals(intentAction)) {
|
|
- return true;
|
|
- }
|
|
- }
|
|
return false;
|
|
}
|
|
|
|
@@ -127,20 +98,6 @@ public class InstantAppsHandler {
|
|
* @param intent The current intent.
|
|
*/
|
|
private void maybeRecordFallbackStats(Intent intent) {
|
|
- Long startTime = IntentUtils.safeGetLongExtra(intent, INSTANT_APP_START_TIME_EXTRA, 0);
|
|
- if (startTime > 0) {
|
|
- RecordHistogram.recordTimesHistogram("Android.InstantApps.FallbackDuration",
|
|
- SystemClock.elapsedRealtime() - startTime);
|
|
- intent.removeExtra(INSTANT_APP_START_TIME_EXTRA);
|
|
- }
|
|
- int callSource = IntentUtils.safeGetIntExtra(intent, BROWSER_LAUNCH_REASON, 0);
|
|
- if (callSource > 0 && callSource < SOURCE_BOUNDARY) {
|
|
- RecordHistogram.recordEnumeratedHistogram(
|
|
- "Android.InstantApps.CallSource", callSource, SOURCE_BOUNDARY);
|
|
- intent.removeExtra(BROWSER_LAUNCH_REASON);
|
|
- } else if (callSource >= SOURCE_BOUNDARY) {
|
|
- Log.e(TAG, "Unexpected call source constant for Instant Apps: " + callSource);
|
|
- }
|
|
}
|
|
|
|
/**
|
|
@@ -175,14 +132,6 @@ public class InstantAppsHandler {
|
|
return false;
|
|
}
|
|
|
|
- if (IntentUtils.safeGetBooleanExtra(intent, DO_NOT_LAUNCH_EXTRA, false)
|
|
- || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
|
- && (intent.getFlags() & FLAG_DO_NOT_LAUNCH) != 0)) {
|
|
- maybeRecordFallbackStats(intent);
|
|
- Log.i(TAG, "Not handling with Instant Apps (DO_NOT_LAUNCH_EXTRA)");
|
|
- return false;
|
|
- }
|
|
-
|
|
if (IntentUtils.safeGetBooleanExtra(
|
|
intent, IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, false)
|
|
|| IntentUtils.safeHasExtra(intent, WebappConstants.EXTRA_SOURCE)
|
|
@@ -207,7 +156,6 @@ public class InstantAppsHandler {
|
|
}
|
|
|
|
Intent callbackIntent = new Intent(intent);
|
|
- callbackIntent.putExtra(DO_NOT_LAUNCH_EXTRA, true);
|
|
callbackIntent.putExtra(INSTANT_APP_START_TIME_EXTRA, startTime);
|
|
|
|
return tryLaunchingInstantApp(context, intent, isCustomTabsIntent, callbackIntent);
|
|
@@ -309,12 +257,9 @@ public class InstantAppsHandler {
|
|
Intent iaIntent = data.getIntent();
|
|
if (data.getReferrer() != null) {
|
|
iaIntent.putExtra(Intent.EXTRA_REFERRER, data.getReferrer());
|
|
- iaIntent.putExtra(IS_REFERRER_TRUSTED_EXTRA, true);
|
|
}
|
|
|
|
Context appContext = ContextUtils.getApplicationContext();
|
|
- iaIntent.putExtra(TRUSTED_REFERRER_PKG_EXTRA, appContext.getPackageName());
|
|
- iaIntent.putExtra(IS_USER_CONFIRMED_LAUNCH_EXTRA, true);
|
|
|
|
try {
|
|
appContext.startActivity(iaIntent);
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
|
|
@@ -17,8 +17,6 @@ import androidx.annotation.IntDef;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
|
|
-import com.google.android.gms.common.GooglePlayServicesUtil;
|
|
-
|
|
import org.chromium.base.BuildInfo;
|
|
import org.chromium.base.Callback;
|
|
import org.chromium.base.ContextUtils;
|
|
@@ -328,13 +326,7 @@ public class UpdateStatusProvider {
|
|
}
|
|
|
|
private boolean isGooglePlayStoreAvailable(Context context) {
|
|
- try {
|
|
- context.getPackageManager().getPackageInfo(
|
|
- GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
|
|
- } catch (PackageManager.NameNotFoundException e) {
|
|
- return false;
|
|
- }
|
|
- return true;
|
|
+ return false;
|
|
}
|
|
|
|
private long getSize(StatFs statFs) {
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java
|
|
@@ -69,7 +69,6 @@ public class PrivacySettings
|
|
private static final String PREF_PROXY_OPTIONS = "proxy";
|
|
private static final String PREF_PRIVACY_REVIEW = "privacy_review";
|
|
private static final String PREF_INCOGNITO_LOCK = "incognito_lock";
|
|
- private static final String PREF_PHONE_AS_A_SECURITY_KEY = "phone_as_a_security_key";
|
|
|
|
private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
|
|
|
|
@@ -174,10 +173,6 @@ public class PrivacySettings
|
|
return true;
|
|
});
|
|
|
|
- Preference phoneAsASecurityKey = findPreference(PREF_PHONE_AS_A_SECURITY_KEY);
|
|
- phoneAsASecurityKey.setVisible(
|
|
- ChromeFeatureList.isEnabled(ChromeFeatureList.WEB_AUTH_PHONE_SUPPORT));
|
|
-
|
|
updatePreferences();
|
|
}
|
|
|
|
diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/modules/chrome_feature_modules.gni
|
|
--- a/chrome/android/modules/chrome_feature_modules.gni
|
|
+++ b/chrome/android/modules/chrome_feature_modules.gni
|
|
@@ -8,8 +8,6 @@ import(
|
|
import("//chrome/android/features/dev_ui/dev_ui_module.gni")
|
|
import("//chrome/android/features/tab_ui/tab_ui_module.gni")
|
|
import("//chrome/android/modules/buildflags.gni")
|
|
-import(
|
|
- "//chrome/android/modules/cablev2_authenticator/cablev2_authenticator_module.gni")
|
|
import("//chrome/android/modules/extra_icu/extra_icu_module.gni")
|
|
import("//chrome/android/modules/stack_unwinder/stack_unwinder_module.gni")
|
|
import("//chrome/android/modules/test_dummy/test_dummy_module.gni")
|
|
@@ -66,7 +64,6 @@ if (!disable_autofill_assistant_dfm) {
|
|
if (!disable_tab_ui_dfm) {
|
|
monochrome_module_descs += [ tab_ui_module_desc ]
|
|
}
|
|
-monochrome_module_descs += [ cablev2_authenticator_module_desc ]
|
|
|
|
# Modules shipped in Trichrome (Android Q+).
|
|
trichrome_module_descs = monochrome_module_descs
|
|
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
|
--- a/chrome/browser/BUILD.gn
|
|
+++ b/chrome/browser/BUILD.gn
|
|
@@ -6781,8 +6781,6 @@ static_library("browser") {
|
|
"offline_pages/offliner_helper.h",
|
|
"offline_pages/offliner_user_data.cc",
|
|
"offline_pages/offliner_user_data.h",
|
|
- "offline_pages/prefetch/gcm_token.cc",
|
|
- "offline_pages/prefetch/gcm_token.h",
|
|
"offline_pages/prefetch/offline_metrics_collector_impl.cc",
|
|
"offline_pages/prefetch/offline_metrics_collector_impl.h",
|
|
"offline_pages/prefetch/offline_prefetch_download_client.cc",
|
|
diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
|
|
--- a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
|
|
+++ b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java
|
|
@@ -82,7 +82,7 @@ public class GSAState {
|
|
/**
|
|
* Caches the result of a computation on whether GSA is available.
|
|
*/
|
|
- private Boolean mGsaAvailable;
|
|
+ private Boolean mGsaAvailable = false;
|
|
|
|
/**
|
|
* The Google account email address being used by GSA according to the latest update we have
|
|
@@ -106,7 +106,7 @@ public class GSAState {
|
|
* @return Whether the given package name is the package name for Google Search App.
|
|
*/
|
|
public static boolean isGsaPackageName(String packageName) {
|
|
- return SEARCH_INTENT_PACKAGE.equals(packageName);
|
|
+ return false;
|
|
}
|
|
|
|
/* Private constructor, since this is a singleton */
|
|
diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/android/BUILD.gn
|
|
--- a/chrome/browser/language/android/BUILD.gn
|
|
+++ b/chrome/browser/language/android/BUILD.gn
|
|
@@ -9,13 +9,11 @@ android_library("base_module_java") {
|
|
sources = [
|
|
"java/src/org/chromium/chrome/browser/language/AppLocaleUtils.java",
|
|
"java/src/org/chromium/chrome/browser/language/GlobalAppLocaleController.java",
|
|
- "java/src/org/chromium/chrome/browser/language/LanguageSplitInstaller.java",
|
|
]
|
|
deps = [
|
|
"//base:base_java",
|
|
"//chrome/browser/preferences:java",
|
|
"//components/language/android:java",
|
|
- "//third_party/android_deps:com_google_android_play_core_java",
|
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
|
"//ui/android:ui_no_recycler_view_java",
|
|
]
|
|
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
|
|
--- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
|
|
+++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
|
|
@@ -457,12 +457,6 @@ public class AppLanguagePromoDialog {
|
|
|
|
mLoadingModal.set(ModalDialogProperties.CUSTOM_VIEW, customView);
|
|
|
|
- // Only show the modal if the selected language is not installed.
|
|
- if (!LanguageSplitInstaller.getInstance().isLanguageSplitInstalled(
|
|
- selectedLanguage.getCode())) {
|
|
- mModalDialogManager.showDialog(mLoadingModal, ModalDialogManager.ModalDialogType.APP);
|
|
- }
|
|
-
|
|
boolean isSelectedCurrentUI = AppLocaleUtils.isAppLanguagePref(selectedLanguage.getCode());
|
|
if (!isSelectedCurrentUI) {
|
|
// Only record isTopLanguage if the app language has changed.
|
|
@@ -470,23 +464,6 @@ public class AppLanguagePromoDialog {
|
|
}
|
|
AndroidLanguageMetricsBridge.reportAppLanguagePromptLanguage(
|
|
selectedLanguage.isSystemDefault() ? "" : selectedLanguage.getCode());
|
|
-
|
|
- // Create call back for after language split install completes.
|
|
- AppLocaleUtils.setAppLanguagePref(selectedLanguage.getCode(), (success) -> {
|
|
- if (success) {
|
|
- if (!isSelectedCurrentUI) {
|
|
- // Only restart if the new language is different than the current UI.
|
|
- mRestartAction.restart();
|
|
- }
|
|
- } else {
|
|
- // The loading language modal will always already be shown if a download fails.
|
|
- CharSequence failedText = mActivity.getResources().getString(
|
|
- R.string.languages_split_failed, selectedLanguage.getDisplayName());
|
|
- messageView.setText(failedText);
|
|
- mLoadingModal.set(ModalDialogProperties.POSITIVE_BUTTON_TEXT,
|
|
- mActivity.getText(R.string.ok).toString());
|
|
- }
|
|
- });
|
|
}
|
|
|
|
/**
|
|
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/AppLanguagePreferenceDelegate.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/AppLanguagePreferenceDelegate.java
|
|
--- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/AppLanguagePreferenceDelegate.java
|
|
+++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/AppLanguagePreferenceDelegate.java
|
|
@@ -87,14 +87,6 @@ public class AppLanguagePreferenceDelegate {
|
|
|
|
// Disable preference so a second downloaded cannot be started while one is in progress.
|
|
mPreference.setEnabled(false);
|
|
-
|
|
- AppLocaleUtils.setAppLanguagePref(code, (success) -> {
|
|
- if (success) {
|
|
- languageSplitDownloadComplete();
|
|
- } else {
|
|
- languageSplitDownloadFailed();
|
|
- }
|
|
- });
|
|
}
|
|
|
|
/**
|
|
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java
|
|
--- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java
|
|
+++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java
|
|
@@ -19,7 +19,6 @@ import org.chromium.base.Log;
|
|
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
|
import org.chromium.chrome.browser.language.AppLocaleUtils;
|
|
import org.chromium.chrome.browser.language.GlobalAppLocaleController;
|
|
-import org.chromium.chrome.browser.language.LanguageSplitInstaller;
|
|
import org.chromium.chrome.browser.language.R;
|
|
import org.chromium.chrome.browser.preferences.Pref;
|
|
import org.chromium.chrome.browser.preferences.PrefChangeRegistrar;
|
|
@@ -101,11 +100,6 @@ public class LanguageSettings extends PreferenceFragmentCompat
|
|
* translate target language, and detailed translate preferences.
|
|
*/
|
|
private void createDetailedPreferences(Bundle savedInstanceState, String rootKey) {
|
|
- // Log currently installed language splits.
|
|
- String installedLanguages =
|
|
- TextUtils.join(",", LanguageSplitInstaller.getInstance().getInstalledLanguages());
|
|
- Log.i(TAG, TextUtils.concat("Installed Languages: ", installedLanguages).toString());
|
|
-
|
|
SettingsUtils.addPreferencesFromResource(this, R.xml.languages_detailed_preferences);
|
|
|
|
setupAppLanguageSection();
|
|
diff --git a/chrome/browser/offline_pages/prefetch/prefetch_service_factory.cc b/chrome/browser/offline_pages/prefetch/prefetch_service_factory.cc
|
|
--- a/chrome/browser/offline_pages/prefetch/prefetch_service_factory.cc
|
|
+++ b/chrome/browser/offline_pages/prefetch/prefetch_service_factory.cc
|
|
@@ -18,7 +18,6 @@
|
|
#include "chrome/browser/image_fetcher/image_fetcher_service_factory.h"
|
|
#include "chrome/browser/net/system_network_context_manager.h"
|
|
#include "chrome/browser/offline_pages/offline_page_model_factory.h"
|
|
-#include "chrome/browser/offline_pages/prefetch/gcm_token.h"
|
|
#include "chrome/browser/offline_pages/prefetch/offline_metrics_collector_impl.h"
|
|
#include "chrome/browser/offline_pages/prefetch/prefetch_background_task_handler_impl.h"
|
|
#include "chrome/browser/profiles/profile.h"
|
|
@@ -68,21 +67,6 @@ void SwitchToFullBrowserImageFetcher(PrefetchServiceImpl* prefetch_service,
|
|
}
|
|
|
|
void OnProfileCreated(PrefetchServiceImpl* prefetch_service, Profile* profile) {
|
|
- if (IsPrefetchingOfflinePagesEnabled()) {
|
|
- // Trigger an update of the cached GCM token. This needs to be post tasked
|
|
- // because otherwise leads to circular dependency between
|
|
- // PrefetchServiceFactory and GCMProfileServiceFactory. See
|
|
- // https://crbug.com/944952
|
|
- // Update is not a priority so make sure it happens after the critical
|
|
- // startup path.
|
|
- content::GetUIThreadTaskRunner({base::TaskPriority::BEST_EFFORT})
|
|
- ->PostTask(FROM_HERE,
|
|
- base::BindOnce(
|
|
- &GetGCMToken, profile, kPrefetchingOfflinePagesAppId,
|
|
- base::BindOnce(&PrefetchServiceImpl::GCMTokenReceived,
|
|
- prefetch_service->GetWeakPtr())));
|
|
- }
|
|
-
|
|
SwitchToFullBrowserImageFetcher(prefetch_service, profile->GetProfileKey());
|
|
}
|
|
|
|
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
|
|
--- a/chrome/browser/password_manager/android/BUILD.gn
|
|
+++ b/chrome/browser/password_manager/android/BUILD.gn
|
|
@@ -63,7 +63,6 @@ android_library("java") {
|
|
":android_backend_java_enums",
|
|
":java_resources",
|
|
":settings_interface_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//chrome/browser/device_reauth/android:java",
|
|
"//chrome/browser/flags:java",
|
|
@@ -143,7 +142,6 @@ junit_binary("password_manager_junit_tests") {
|
|
":backend_interface_public_impl_java",
|
|
":java",
|
|
":settings_interface_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java
|
|
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java
|
|
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java
|
|
@@ -9,8 +9,6 @@ import static org.chromium.chrome.browser.password_manager.PasswordManagerHelper
|
|
import android.accounts.Account;
|
|
import android.app.PendingIntent;
|
|
|
|
-import com.google.android.gms.common.api.ApiException;
|
|
-import com.google.android.gms.common.api.ResolvableApiException;
|
|
import com.google.common.base.Optional;
|
|
|
|
import org.chromium.base.Log;
|
|
@@ -123,25 +121,6 @@ class PasswordStoreAndroidBackendBridgeImpl {
|
|
error = ((PasswordStoreAndroidBackend.BackendException) exception).errorCode;
|
|
}
|
|
|
|
- if (exception instanceof ApiException) {
|
|
- error = AndroidBackendErrorType.EXTERNAL_ERROR;
|
|
- api_error_code = ((ApiException) exception).getStatusCode();
|
|
-
|
|
- if (usesUnifiedPasswordManagerUI() && exception instanceof ResolvableApiException
|
|
- && api_error_code != ChromeSyncStatusCode.AUTH_ERROR_RESOLVABLE) {
|
|
- // Backend error is user-recoverable, launch pending intent to allow the user to
|
|
- // resolve it. Resolution for the authentication errors is not launched as
|
|
- // user is requested to reauthenticate by Google services and Sync in Chrome.
|
|
- ResolvableApiException resolvableApiException = (ResolvableApiException) exception;
|
|
- PendingIntent pendingIntent = resolvableApiException.getResolution();
|
|
- try {
|
|
- pendingIntent.send();
|
|
- } catch (PendingIntent.CanceledException e) {
|
|
- Log.e(TAG, "Can not launch error resolution intent", e);
|
|
- }
|
|
- }
|
|
- }
|
|
-
|
|
PasswordStoreAndroidBackendBridgeImplJni.get().onError(
|
|
mNativeBackendBridge, jobId, error, api_error_code);
|
|
}
|
|
diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java
|
|
--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java
|
|
+++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java
|
|
@@ -4,8 +4,6 @@
|
|
|
|
package org.chromium.chrome.browser.password_manager;
|
|
|
|
-import com.google.android.gms.common.api.ApiException;
|
|
-
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.base.annotations.NativeMethods;
|
|
import org.chromium.chrome.browser.sync.SyncService;
|
|
@@ -76,11 +74,6 @@ class PasswordSyncControllerDelegateBridgeImpl {
|
|
error = ((PasswordStoreAndroidBackend.BackendException) exception).errorCode;
|
|
}
|
|
|
|
- if (exception instanceof ApiException) {
|
|
- error = AndroidBackendErrorType.EXTERNAL_ERROR;
|
|
- apiErrorCode = ((ApiException) exception).getStatusCode();
|
|
- }
|
|
-
|
|
PasswordSyncControllerDelegateBridgeImplJni.get().onCredentialManagerError(
|
|
mNativeDelegateBridgeImpl, error, apiErrorCode);
|
|
}
|
|
diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/chrome/browser/push_messaging/push_messaging_service_factory.cc
|
|
--- a/chrome/browser/push_messaging/push_messaging_service_factory.cc
|
|
+++ b/chrome/browser/push_messaging/push_messaging_service_factory.cc
|
|
@@ -28,13 +28,7 @@
|
|
// static
|
|
PushMessagingServiceImpl* PushMessagingServiceFactory::GetForProfile(
|
|
content::BrowserContext* context) {
|
|
- // The Push API is not currently supported in incognito mode.
|
|
- // See https://crbug.com/401439.
|
|
- if (context->IsOffTheRecord())
|
|
- return nullptr;
|
|
-
|
|
- return static_cast<PushMessagingServiceImpl*>(
|
|
- GetInstance()->GetServiceForBrowserContext(context, true));
|
|
+ return nullptr;
|
|
}
|
|
|
|
// static
|
|
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
|
|
--- a/chrome/browser/ui/BUILD.gn
|
|
+++ b/chrome/browser/ui/BUILD.gn
|
|
@@ -248,8 +248,6 @@ static_library("ui") {
|
|
"webui/flags/flags_ui.h",
|
|
"webui/flags/flags_ui_handler.cc",
|
|
"webui/flags/flags_ui_handler.h",
|
|
- "webui/gcm_internals_ui.cc",
|
|
- "webui/gcm_internals_ui.h",
|
|
"webui/internals/internals_ui.cc",
|
|
"webui/internals/internals_ui.h",
|
|
"webui/interstitials/interstitial_ui.cc",
|
|
@@ -479,7 +477,6 @@ static_library("ui") {
|
|
"//components/feedback/content",
|
|
"//components/find_in_page",
|
|
"//components/flags_ui",
|
|
- "//components/gcm_driver",
|
|
"//components/google/core/common",
|
|
"//components/heap_profiling/multi_process",
|
|
"//components/history/content/browser",
|
|
diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
|
--- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
|
+++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
|
|
@@ -40,7 +40,6 @@
|
|
#include "chrome/browser/ui/webui/download_internals/download_internals_ui.h"
|
|
#include "chrome/browser/ui/webui/engagement/site_engagement_ui.h"
|
|
#include "chrome/browser/ui/webui/flags/flags_ui.h"
|
|
-#include "chrome/browser/ui/webui/gcm_internals_ui.h"
|
|
#include "chrome/browser/ui/webui/internals/internals_ui.h"
|
|
#include "chrome/browser/ui/webui/interstitials/interstitial_ui.h"
|
|
#include "chrome/browser/ui/webui/invalidations/invalidations_ui.h"
|
|
@@ -746,8 +745,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui,
|
|
return &NewWebUI<FlagsDeprecatedUI>;
|
|
if (url.host_piece() == chrome::kChromeUIFlagsHost)
|
|
return &NewWebUI<FlagsUI>;
|
|
- if (url.host_piece() == chrome::kChromeUIGCMInternalsHost)
|
|
- return &NewWebUI<GCMInternalsUI>;
|
|
if (url.host_piece() == chrome::kChromeUIInternalsHost)
|
|
return &NewWebUI<InternalsUI>;
|
|
if (url.host_piece() == chrome::kChromeUIInterstitialHost)
|
|
diff --git a/chrome/test/android/BUILD.gn b/chrome/test/android/BUILD.gn
|
|
--- a/chrome/test/android/BUILD.gn
|
|
+++ b/chrome/test/android/BUILD.gn
|
|
@@ -305,8 +305,6 @@ android_library("chrome_java_test_support") {
|
|
]
|
|
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//chrome/android:base_module_java",
|
|
diff --git a/components/background_task_scheduler/BUILD.gn b/components/background_task_scheduler/BUILD.gn
|
|
--- a/components/background_task_scheduler/BUILD.gn
|
|
+++ b/components/background_task_scheduler/BUILD.gn
|
|
@@ -121,11 +121,6 @@ if (is_android) {
|
|
|
|
deps = [
|
|
":background_task_scheduler_task_ids_java",
|
|
- "$google_play_services_package:google_play_services_auth_base_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"internal:internal_java",
|
|
"internal:proto_java",
|
|
"//base:base_java",
|
|
diff --git a/components/background_task_scheduler/internal/BUILD.gn b/components/background_task_scheduler/internal/BUILD.gn
|
|
--- a/components/background_task_scheduler/internal/BUILD.gn
|
|
+++ b/components/background_task_scheduler/internal/BUILD.gn
|
|
@@ -11,12 +11,10 @@ if (is_android) {
|
|
android_library("internal_java") {
|
|
sources = [
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskBroadcastReceiver.java",
|
|
- "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskJobService.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerAlarmManager.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerDelegate.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java",
|
|
- "android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerImpl.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerJobService.java",
|
|
"android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerPrefs.java",
|
|
@@ -27,10 +25,6 @@ if (is_android) {
|
|
|
|
deps = [
|
|
":proto_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
|
|
"//components/background_task_scheduler:public_java",
|
|
@@ -98,10 +92,6 @@ if (is_android) {
|
|
|
|
deps = [
|
|
":internal_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_gcm_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//components/background_task_scheduler:background_task_scheduler_task_ids_java",
|
|
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
|
|
deleted file mode 100644
|
|
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
|
|
+++ /dev/null
|
|
@@ -1,160 +0,0 @@
|
|
-// Copyright 2017 The Chromium Authors. All rights reserved.
|
|
-// Use of this source code is governed by a BSD-style license that can be
|
|
-// found in the LICENSE file.
|
|
-
|
|
-package org.chromium.components.background_task_scheduler.internal;
|
|
-
|
|
-import android.os.Build;
|
|
-
|
|
-import androidx.annotation.VisibleForTesting;
|
|
-
|
|
-import com.google.android.gms.gcm.GcmNetworkManager;
|
|
-import com.google.android.gms.gcm.GcmTaskService;
|
|
-import com.google.android.gms.gcm.TaskParams;
|
|
-
|
|
-import org.chromium.base.ContextUtils;
|
|
-import org.chromium.base.Log;
|
|
-import org.chromium.base.ThreadUtils;
|
|
-import org.chromium.components.background_task_scheduler.BackgroundTask;
|
|
-import org.chromium.components.background_task_scheduler.TaskParameters;
|
|
-
|
|
-import java.util.concurrent.CountDownLatch;
|
|
-import java.util.concurrent.TimeUnit;
|
|
-import java.util.concurrent.atomic.AtomicBoolean;
|
|
-
|
|
-/** Delegates calls out to various tasks that need to run in the background. */
|
|
-public class BackgroundTaskGcmTaskService extends GcmTaskService {
|
|
- private static final String TAG = "BkgrdTaskGcmTS";
|
|
-
|
|
- private BackgroundTaskSchedulerGcmNetworkManager.Clock mClock = System::currentTimeMillis;
|
|
-
|
|
- @VisibleForTesting
|
|
- void setClockForTesting(BackgroundTaskSchedulerGcmNetworkManager.Clock clock) {
|
|
- mClock = clock;
|
|
- }
|
|
-
|
|
- /** Class that waits for the processing to be done. */
|
|
- private static class Waiter {
|
|
- // Wakelock is only held for 3 minutes by default for GcmTaskService.
|
|
- private static final long MAX_TIMEOUT_SECONDS = 179;
|
|
- private final CountDownLatch mLatch;
|
|
- private long mWaiterTimeoutSeconds;
|
|
- private boolean mIsRescheduleNeeded;
|
|
- private boolean mHasTaskTimedOut;
|
|
-
|
|
- public Waiter(long waiterTimeoutSeconds) {
|
|
- mLatch = new CountDownLatch(1);
|
|
- mWaiterTimeoutSeconds = Math.min(waiterTimeoutSeconds, MAX_TIMEOUT_SECONDS);
|
|
- }
|
|
-
|
|
- /** Start waiting for the processing to finish. */
|
|
- public void startWaiting() {
|
|
- try {
|
|
- mHasTaskTimedOut = !mLatch.await(mWaiterTimeoutSeconds, TimeUnit.SECONDS);
|
|
- } catch (InterruptedException e) {
|
|
- Log.d(TAG, "Waiter interrupted while waiting.");
|
|
- }
|
|
- }
|
|
-
|
|
- /** Called to finish waiting. */
|
|
- public void onWaitDone(boolean needsRescheduling) {
|
|
- mIsRescheduleNeeded = needsRescheduling;
|
|
- mLatch.countDown();
|
|
- }
|
|
-
|
|
- /** @return Whether last task timed out. */
|
|
- public boolean hasTaskTimedOut() {
|
|
- return mHasTaskTimedOut;
|
|
- }
|
|
-
|
|
- /** @return Whether task needs to be rescheduled. */
|
|
- public boolean isRescheduleNeeded() {
|
|
- return mIsRescheduleNeeded;
|
|
- }
|
|
- }
|
|
-
|
|
- private static class TaskFinishedCallbackGcmTaskService
|
|
- implements BackgroundTask.TaskFinishedCallback {
|
|
- private final Waiter mWaiter;
|
|
-
|
|
- public TaskFinishedCallbackGcmTaskService(Waiter waiter) {
|
|
- mWaiter = waiter;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void taskFinished(final boolean needsReschedule) {
|
|
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
|
- @Override
|
|
- public void run() {
|
|
- mWaiter.onWaitDone(needsReschedule);
|
|
- }
|
|
- });
|
|
- }
|
|
- }
|
|
-
|
|
- @Override
|
|
- public int onRunTask(TaskParams params) {
|
|
- final TaskParameters taskParams =
|
|
- BackgroundTaskSchedulerGcmNetworkManager.getTaskParametersFromTaskParams(params);
|
|
-
|
|
- final BackgroundTask backgroundTask =
|
|
- BackgroundTaskSchedulerFactoryInternal.getBackgroundTaskFromTaskId(
|
|
- taskParams.getTaskId());
|
|
- if (backgroundTask == null) {
|
|
- Log.w(TAG, "Failed to start task. Could not instantiate BackgroundTask class.");
|
|
- // Cancel task if the BackgroundTask class is not found anymore. We assume this means
|
|
- // that the task has been deprecated.
|
|
- BackgroundTaskSchedulerFactoryInternal.getScheduler().cancel(
|
|
- ContextUtils.getApplicationContext(), taskParams.getTaskId());
|
|
- return GcmNetworkManager.RESULT_FAILURE;
|
|
- }
|
|
-
|
|
- if (BackgroundTaskSchedulerGcmNetworkManager.didTaskExpire(
|
|
- params, mClock.currentTimeMillis())) {
|
|
- BackgroundTaskSchedulerUma.getInstance().reportTaskExpired(taskParams.getTaskId());
|
|
- return GcmNetworkManager.RESULT_FAILURE;
|
|
- }
|
|
-
|
|
- final Waiter waiter = new Waiter(Waiter.MAX_TIMEOUT_SECONDS);
|
|
-
|
|
- final AtomicBoolean taskNeedsBackgroundProcessing = new AtomicBoolean();
|
|
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
|
- @Override
|
|
- public void run() {
|
|
- BackgroundTaskSchedulerUma.getInstance().reportTaskStarted(taskParams.getTaskId());
|
|
- taskNeedsBackgroundProcessing.set(
|
|
- backgroundTask.onStartTask(ContextUtils.getApplicationContext(), taskParams,
|
|
- new TaskFinishedCallbackGcmTaskService(waiter)));
|
|
- }
|
|
- });
|
|
-
|
|
- if (!taskNeedsBackgroundProcessing.get()) return GcmNetworkManager.RESULT_SUCCESS;
|
|
-
|
|
- waiter.startWaiting();
|
|
-
|
|
- if (waiter.isRescheduleNeeded()) return GcmNetworkManager.RESULT_RESCHEDULE;
|
|
- if (!waiter.hasTaskTimedOut()) return GcmNetworkManager.RESULT_SUCCESS;
|
|
-
|
|
- final AtomicBoolean taskNeedsRescheduling = new AtomicBoolean();
|
|
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
|
- @Override
|
|
- public void run() {
|
|
- BackgroundTaskSchedulerUma.getInstance().reportTaskStopped(taskParams.getTaskId());
|
|
- taskNeedsRescheduling.set(backgroundTask.onStopTask(
|
|
- ContextUtils.getApplicationContext(), taskParams));
|
|
- }
|
|
- });
|
|
-
|
|
- if (taskNeedsRescheduling.get()) return GcmNetworkManager.RESULT_RESCHEDULE;
|
|
-
|
|
- return GcmNetworkManager.RESULT_SUCCESS;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onInitializeTasks() {
|
|
- // Ignore the event on OSs supporting JobScheduler.
|
|
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) return;
|
|
- BackgroundTaskSchedulerFactoryInternal.getScheduler().reschedule(
|
|
- ContextUtils.getApplicationContext());
|
|
- }
|
|
-}
|
|
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
|
|
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
|
|
+++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerFactoryInternal.java
|
|
@@ -21,11 +21,7 @@ public final class BackgroundTaskSchedulerFactoryInternal {
|
|
private static BackgroundTaskFactory sBackgroundTaskFactory;
|
|
|
|
static BackgroundTaskSchedulerDelegate getSchedulerDelegateForSdk(int sdkInt) {
|
|
- if (sdkInt >= Build.VERSION_CODES.M) {
|
|
- return new BackgroundTaskSchedulerJobService();
|
|
- } else {
|
|
- return new BackgroundTaskSchedulerGcmNetworkManager();
|
|
- }
|
|
+ return new BackgroundTaskSchedulerJobService();
|
|
}
|
|
|
|
/**
|
|
diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
|
|
deleted file mode 100644
|
|
--- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
|
|
+++ /dev/null
|
|
@@ -1,257 +0,0 @@
|
|
-// Copyright 2017 The Chromium Authors. All rights reserved.
|
|
-// Use of this source code is governed by a BSD-style license that can be
|
|
-// found in the LICENSE file.
|
|
-
|
|
-package org.chromium.components.background_task_scheduler.internal;
|
|
-
|
|
-import android.content.Context;
|
|
-import android.os.Bundle;
|
|
-
|
|
-import androidx.annotation.NonNull;
|
|
-import androidx.annotation.VisibleForTesting;
|
|
-
|
|
-import com.google.android.gms.gcm.GcmNetworkManager;
|
|
-import com.google.android.gms.gcm.OneoffTask;
|
|
-import com.google.android.gms.gcm.PeriodicTask;
|
|
-import com.google.android.gms.gcm.Task;
|
|
-import com.google.android.gms.gcm.TaskParams;
|
|
-
|
|
-import org.chromium.base.Log;
|
|
-import org.chromium.base.ThreadUtils;
|
|
-import org.chromium.components.background_task_scheduler.TaskInfo;
|
|
-import org.chromium.components.background_task_scheduler.TaskParameters;
|
|
-import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
-
|
|
-import java.util.concurrent.TimeUnit;
|
|
-
|
|
-/**
|
|
- * An implementation of {@link BackgroundTaskSchedulerDelegate} that uses the Play Services
|
|
- * {@link GcmNetworkManager} to schedule jobs.
|
|
- */
|
|
-class BackgroundTaskSchedulerGcmNetworkManager implements BackgroundTaskSchedulerDelegate {
|
|
- private static final String TAG = "BkgrdTaskSchedGcmNM";
|
|
-
|
|
- /** Delta time for expiration checks, after the end time. */
|
|
- static final long DEADLINE_DELTA_MS = 1000;
|
|
-
|
|
- /** Clock to use so we can mock time in tests. */
|
|
- public interface Clock { long currentTimeMillis(); }
|
|
-
|
|
- private static Clock sClock = System::currentTimeMillis;
|
|
-
|
|
- @VisibleForTesting
|
|
- static void setClockForTesting(Clock clock) {
|
|
- sClock = clock;
|
|
- }
|
|
-
|
|
- /**
|
|
- * Checks if a task expired, based on the current time of the service.
|
|
- *
|
|
- * @param taskParams parameters sent to the service, which contain the scheduling information
|
|
- * regarding expiration.
|
|
- * @param currentTimeMs the current time of the service.
|
|
- * @return true if the task expired and false otherwise.
|
|
- */
|
|
- static boolean didTaskExpire(TaskParams taskParams, long currentTimeMs) {
|
|
- Bundle extras = taskParams.getExtras();
|
|
- if (extras == null || !extras.containsKey(BACKGROUND_TASK_SCHEDULE_TIME_KEY)) {
|
|
- return false;
|
|
- }
|
|
-
|
|
- long scheduleTimeMs = extras.getLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY);
|
|
- if (extras.containsKey(BACKGROUND_TASK_END_TIME_KEY)) {
|
|
- long endTimeMs =
|
|
- extras.getLong(BackgroundTaskSchedulerDelegate.BACKGROUND_TASK_END_TIME_KEY);
|
|
- return TaskInfo.OneOffInfo.getExpirationStatus(
|
|
- scheduleTimeMs, endTimeMs, currentTimeMs);
|
|
- } else {
|
|
- long intervalTimeMs = extras.getLong(BACKGROUND_TASK_INTERVAL_TIME_KEY);
|
|
-
|
|
- // If flex is never set, it is given a default value of 10% of the period time, as
|
|
- // per the GcmNetworkManager behaviour. This default value is set in
|
|
- // https://developers.google.com/android/reference/com/google/android/gms/gcm/PeriodicTask.
|
|
- double defaultFlexAsFractionOfInterval = 0.1f;
|
|
-
|
|
- long flexTimeMs = extras.getLong(BACKGROUND_TASK_FLEX_TIME_KEY,
|
|
- /*defaultValue=*/(long) (defaultFlexAsFractionOfInterval * intervalTimeMs));
|
|
-
|
|
- return TaskInfo.PeriodicInfo.getExpirationStatus(
|
|
- scheduleTimeMs, intervalTimeMs, flexTimeMs, currentTimeMs);
|
|
- }
|
|
- }
|
|
-
|
|
- /**
|
|
- * Retrieves the {@link TaskParameters} from the {@link TaskParams}, which are passed as
|
|
- * one of the keys. Only values valid for {@link android.os.BaseBundle} are supported, and other
|
|
- * values are stripped at the time when the task is scheduled.
|
|
- *
|
|
- * @param taskParams the {@link TaskParams} to extract the {@link TaskParameters} from.
|
|
- * @return the {@link TaskParameters} for the current job.
|
|
- */
|
|
- static TaskParameters getTaskParametersFromTaskParams(@NonNull TaskParams taskParams) {
|
|
- int taskId;
|
|
- try {
|
|
- taskId = Integer.parseInt(taskParams.getTag());
|
|
- } catch (NumberFormatException e) {
|
|
- Log.e(TAG, "Cound not parse task ID from task tag: " + taskParams.getTag());
|
|
- return null;
|
|
- }
|
|
-
|
|
- TaskParameters.Builder builder = TaskParameters.create(taskId);
|
|
-
|
|
- Bundle extras = taskParams.getExtras();
|
|
- Bundle taskExtras = extras.getBundle(BACKGROUND_TASK_EXTRAS_KEY);
|
|
- builder.addExtras(taskExtras);
|
|
-
|
|
- return builder.build();
|
|
- }
|
|
-
|
|
- @VisibleForTesting
|
|
- static Task createTaskFromTaskInfo(@NonNull TaskInfo taskInfo) {
|
|
- Bundle taskExtras = new Bundle();
|
|
- taskExtras.putBundle(BACKGROUND_TASK_EXTRAS_KEY, taskInfo.getExtras());
|
|
-
|
|
- TaskBuilderVisitor taskBuilderVisitor = new TaskBuilderVisitor(taskExtras);
|
|
- taskInfo.getTimingInfo().accept(taskBuilderVisitor);
|
|
- Task.Builder builder = taskBuilderVisitor.getBuilder();
|
|
-
|
|
- builder.setPersisted(taskInfo.isPersisted())
|
|
- .setRequiredNetwork(getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
|
|
- taskInfo.getRequiredNetworkType()))
|
|
- .setRequiresCharging(taskInfo.requiresCharging())
|
|
- .setService(BackgroundTaskGcmTaskService.class)
|
|
- .setTag(taskIdToTaskTag(taskInfo.getTaskId()))
|
|
- .setUpdateCurrent(taskInfo.shouldUpdateCurrent());
|
|
-
|
|
- return builder.build();
|
|
- }
|
|
-
|
|
- private static class TaskBuilderVisitor implements TaskInfo.TimingInfoVisitor {
|
|
- private Task.Builder mBuilder;
|
|
- private final Bundle mTaskExtras;
|
|
-
|
|
- TaskBuilderVisitor(Bundle taskExtras) {
|
|
- mTaskExtras = taskExtras;
|
|
- }
|
|
-
|
|
- // Only valid after a TimingInfo object was visited.
|
|
- Task.Builder getBuilder() {
|
|
- return mBuilder;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void visit(TaskInfo.OneOffInfo oneOffInfo) {
|
|
- if (oneOffInfo.expiresAfterWindowEndTime()) {
|
|
- mTaskExtras.putLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY, sClock.currentTimeMillis());
|
|
- mTaskExtras.putLong(BACKGROUND_TASK_END_TIME_KEY, oneOffInfo.getWindowEndTimeMs());
|
|
- }
|
|
-
|
|
- OneoffTask.Builder builder = new OneoffTask.Builder();
|
|
- long windowStartSeconds = oneOffInfo.hasWindowStartTimeConstraint()
|
|
- ? TimeUnit.MILLISECONDS.toSeconds(oneOffInfo.getWindowStartTimeMs())
|
|
- : 0;
|
|
- long windowEndTimeMs = oneOffInfo.getWindowEndTimeMs();
|
|
- if (oneOffInfo.expiresAfterWindowEndTime()) {
|
|
- windowEndTimeMs += DEADLINE_DELTA_MS;
|
|
- }
|
|
- builder.setExecutionWindow(
|
|
- windowStartSeconds, TimeUnit.MILLISECONDS.toSeconds(windowEndTimeMs));
|
|
- builder.setExtras(mTaskExtras);
|
|
- mBuilder = builder;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void visit(TaskInfo.PeriodicInfo periodicInfo) {
|
|
- if (periodicInfo.expiresAfterWindowEndTime()) {
|
|
- mTaskExtras.putLong(BACKGROUND_TASK_SCHEDULE_TIME_KEY, sClock.currentTimeMillis());
|
|
- mTaskExtras.putLong(
|
|
- BACKGROUND_TASK_INTERVAL_TIME_KEY, periodicInfo.getIntervalMs());
|
|
- if (periodicInfo.hasFlex()) {
|
|
- mTaskExtras.putLong(BACKGROUND_TASK_FLEX_TIME_KEY, periodicInfo.getFlexMs());
|
|
- }
|
|
- }
|
|
-
|
|
- PeriodicTask.Builder builder = new PeriodicTask.Builder();
|
|
- builder.setPeriod(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getIntervalMs()));
|
|
- if (periodicInfo.hasFlex()) {
|
|
- builder.setFlex(TimeUnit.MILLISECONDS.toSeconds(periodicInfo.getFlexMs()));
|
|
- }
|
|
- builder.setExtras(mTaskExtras);
|
|
- mBuilder = builder;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void visit(TaskInfo.ExactInfo exactInfo) {
|
|
- throw new RuntimeException("Exact tasks should not be scheduled with "
|
|
- + "GcmNetworkManager.");
|
|
- }
|
|
- }
|
|
-
|
|
- private static int getGcmNetworkManagerNetworkTypeFromTypeFromTaskNetworkType(
|
|
- @TaskInfo.NetworkType int networkType) {
|
|
- switch (networkType) {
|
|
- // This is correct: GcmNM ANY means no network is guaranteed.
|
|
- case TaskInfo.NetworkType.NONE:
|
|
- return Task.NETWORK_STATE_ANY;
|
|
- case TaskInfo.NetworkType.ANY:
|
|
- return Task.NETWORK_STATE_CONNECTED;
|
|
- case TaskInfo.NetworkType.UNMETERED:
|
|
- return Task.NETWORK_STATE_UNMETERED;
|
|
- default:
|
|
- assert false;
|
|
- }
|
|
- return Task.NETWORK_STATE_ANY;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public boolean schedule(Context context, @NonNull TaskInfo taskInfo) {
|
|
- ThreadUtils.assertOnUiThread();
|
|
-
|
|
- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
|
- if (gcmNetworkManager == null) {
|
|
- Log.e(TAG, "GcmNetworkManager is not available.");
|
|
- return false;
|
|
- }
|
|
-
|
|
- try {
|
|
- Task task = createTaskFromTaskInfo(taskInfo);
|
|
- gcmNetworkManager.schedule(task);
|
|
- } catch (IllegalArgumentException e) {
|
|
- String gcmErrorMessage = e.getMessage() == null ? "null." : e.getMessage();
|
|
- Log.e(TAG,
|
|
- "GcmNetworkManager failed to schedule task, gcm message: " + gcmErrorMessage);
|
|
- return false;
|
|
- }
|
|
-
|
|
- return true;
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void cancel(Context context, int taskId) {
|
|
- ThreadUtils.assertOnUiThread();
|
|
-
|
|
- GcmNetworkManager gcmNetworkManager = getGcmNetworkManager(context);
|
|
- if (gcmNetworkManager == null) {
|
|
- Log.e(TAG, "GcmNetworkManager is not available.");
|
|
- return;
|
|
- }
|
|
-
|
|
- try {
|
|
- gcmNetworkManager.cancelTask(
|
|
- taskIdToTaskTag(taskId), BackgroundTaskGcmTaskService.class);
|
|
- } catch (IllegalArgumentException e) {
|
|
- Log.e(TAG, "GcmNetworkManager failed to cancel task.");
|
|
- }
|
|
- }
|
|
-
|
|
- private GcmNetworkManager getGcmNetworkManager(Context context) {
|
|
- if (ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context)) {
|
|
- return GcmNetworkManager.getInstance(context);
|
|
- }
|
|
- return null;
|
|
- }
|
|
-
|
|
- private static String taskIdToTaskTag(int taskId) {
|
|
- return Integer.toString(taskId);
|
|
- }
|
|
-}
|
|
diff --git a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
|
|
--- a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
|
|
+++ b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java
|
|
@@ -14,7 +14,6 @@ import org.chromium.components.background_task_scheduler.BackgroundTask.TaskFini
|
|
import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory;
|
|
import org.chromium.components.background_task_scheduler.TaskIds;
|
|
import org.chromium.components.background_task_scheduler.TaskInfo;
|
|
-import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
|
|
/** Java-side implementation of the component update scheduler using the BackgroundTaskScheduler. */
|
|
@JNINamespace("component_updater")
|
|
diff --git a/components/externalauth/android/BUILD.gn b/components/externalauth/android/BUILD.gn
|
|
--- a/components/externalauth/android/BUILD.gn
|
|
+++ b/components/externalauth/android/BUILD.gn
|
|
@@ -27,8 +27,6 @@ android_library("google_delegate_public_impl_java") {
|
|
android_library("java") {
|
|
deps = [
|
|
":google_delegate_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//components/embedder_support/android:util_java",
|
|
"//content/public/android:content_java",
|
|
@@ -49,7 +47,6 @@ android_library("junit") {
|
|
|
|
deps = [
|
|
":java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
|
|
--- a/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
|
|
+++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/ExternalAuthUtils.java
|
|
@@ -15,16 +15,12 @@ import android.text.TextUtils;
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.annotation.WorkerThread;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.Log;
|
|
import org.chromium.base.StrictModeContext;
|
|
import org.chromium.base.task.PostTask;
|
|
import org.chromium.components.embedder_support.util.Origin;
|
|
import org.chromium.content_public.browser.UiThreadTaskTraits;
|
|
-import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
|
|
/**
|
|
* Utility class for external authentication tools.
|
|
@@ -170,9 +166,7 @@ public class ExternalAuthUtils {
|
|
* when it is updating.
|
|
*/
|
|
public boolean isGooglePlayServicesMissing(final Context context) {
|
|
- final int resultCode = checkGooglePlayServicesAvailable(context);
|
|
- return (resultCode == ConnectionResult.SERVICE_MISSING
|
|
- || resultCode == ConnectionResult.SERVICE_INVALID);
|
|
+ return true;
|
|
}
|
|
|
|
/**
|
|
@@ -189,7 +183,6 @@ public class ExternalAuthUtils {
|
|
public boolean canUseGooglePlayServices(final UserRecoverableErrorHandler errorHandler) {
|
|
Context context = ContextUtils.getApplicationContext();
|
|
final int resultCode = checkGooglePlayServicesAvailable(context);
|
|
- if (resultCode == ConnectionResult.SUCCESS) return true;
|
|
// resultCode is some kind of error.
|
|
Log.v(TAG, "Unable to use Google Play Services: %s", describeError(resultCode));
|
|
if (isUserRecoverableError(resultCode)) {
|
|
@@ -260,10 +253,7 @@ public class ExternalAuthUtils {
|
|
* @return The code produced by calling the external code
|
|
*/
|
|
protected int checkGooglePlayServicesAvailable(final Context context) {
|
|
- // TODO(crbug.com/577190): Temporarily allowing disk access until more permanent fix is in.
|
|
- try (StrictModeContext ignored = StrictModeContext.allowDiskWrites()) {
|
|
- return ChromiumPlayServicesAvailability.getGooglePlayServicesConnectionResult(context);
|
|
- }
|
|
+ return 1; /*SERVICE_MISSING*/
|
|
}
|
|
|
|
/**
|
|
@@ -274,7 +264,7 @@ public class ExternalAuthUtils {
|
|
* @return true If the code represents a user-recoverable error
|
|
*/
|
|
protected boolean isUserRecoverableError(final int errorCode) {
|
|
- return GoogleApiAvailability.getInstance().isUserResolvableError(errorCode);
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -284,7 +274,7 @@ public class ExternalAuthUtils {
|
|
* @return a textual description of the error code
|
|
*/
|
|
protected String describeError(final int errorCode) {
|
|
- return GoogleApiAvailability.getInstance().getErrorString(errorCode);
|
|
+ return "";
|
|
}
|
|
|
|
/**
|
|
diff --git a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
|
|
--- a/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
|
|
+++ b/components/externalauth/android/java/src/org/chromium/components/externalauth/UserRecoverableErrorHandler.java
|
|
@@ -9,8 +9,6 @@ import android.app.Dialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
import org.chromium.base.ThreadUtils;
|
|
import org.chromium.base.metrics.RecordUserAction;
|
|
|
|
@@ -89,7 +87,6 @@ public abstract class UserRecoverableErrorHandler {
|
|
if (!sNotificationShown.getAndSet(true)) {
|
|
return;
|
|
}
|
|
- GoogleApiAvailability.getInstance().showErrorNotification(context, errorCode);
|
|
}
|
|
}
|
|
|
|
@@ -182,11 +179,7 @@ public abstract class UserRecoverableErrorHandler {
|
|
cancelDialog();
|
|
}
|
|
if (mDialog == null) {
|
|
- mDialog = GoogleApiAvailability.getInstance().getErrorDialog(
|
|
- mActivity, errorCode, NO_RESPONSE_REQUIRED);
|
|
mErrorCode = errorCode;
|
|
-
|
|
- DialogUserActionRecorder.createAndAttachToDialog(mDialog);
|
|
}
|
|
// This can happen if |errorCode| is ConnectionResult.SERVICE_INVALID.
|
|
if (mDialog != null && !mDialog.isShowing()) {
|
|
diff --git a/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java b/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java
|
|
--- a/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java
|
|
+++ b/components/gcm_driver/android/java/src/org/chromium/components/gcm_driver/GoogleCloudMessagingV2.java
|
|
@@ -129,6 +129,8 @@ public class GoogleCloudMessagingV2 implements GoogleCloudMessagingSubscriber {
|
|
}
|
|
|
|
private Intent registerRpc(Bundle data) throws IOException {
|
|
+ if ((true))
|
|
+ throw new IOException("Google Play Services missing");
|
|
if (Looper.getMainLooper() == Looper.myLooper()) {
|
|
throw new IOException(ERROR_MAIN_THREAD);
|
|
}
|
|
diff --git a/components/gcm_driver/gcm_client_impl.cc b/components/gcm_driver/gcm_client_impl.cc
|
|
--- a/components/gcm_driver/gcm_client_impl.cc
|
|
+++ b/components/gcm_driver/gcm_client_impl.cc
|
|
@@ -465,6 +465,7 @@ void GCMClientImpl::StartGCM() {
|
|
|
|
void GCMClientImpl::InitializeMCSClient() {
|
|
DCHECK(network_connection_tracker_);
|
|
+ return;
|
|
std::vector<GURL> endpoints;
|
|
endpoints.push_back(gservices_settings_.GetMCSMainEndpoint());
|
|
GURL fallback_endpoint = gservices_settings_.GetMCSFallbackEndpoint();
|
|
@@ -659,6 +660,7 @@ void GCMClientImpl::AddHeartbeatInterval(const std::string& scope,
|
|
int interval_ms) {
|
|
DCHECK(io_task_runner_->RunsTasksInCurrentSequence());
|
|
DCHECK(mcs_client_);
|
|
+ return;
|
|
mcs_client_->AddHeartbeatInterval(scope, interval_ms);
|
|
}
|
|
|
|
@@ -670,6 +672,7 @@ void GCMClientImpl::RemoveHeartbeatInterval(const std::string& scope) {
|
|
|
|
void GCMClientImpl::StartCheckin() {
|
|
DCHECK(io_task_runner_->RunsTasksInCurrentSequence());
|
|
+ return;
|
|
|
|
// Make sure no checkin is in progress.
|
|
if (checkin_request_)
|
|
@@ -747,6 +750,7 @@ void GCMClientImpl::SetGServicesSettingsCallback(bool success) {
|
|
|
|
void GCMClientImpl::SchedulePeriodicCheckin() {
|
|
DCHECK(io_task_runner_->RunsTasksInCurrentSequence());
|
|
+ return;
|
|
|
|
// Make sure no checkin is in progress.
|
|
if (checkin_request_.get() || !device_checkin_info_.accounts_set)
|
|
diff --git a/components/gcm_driver/instance_id/android/BUILD.gn b/components/gcm_driver/instance_id/android/BUILD.gn
|
|
--- a/components/gcm_driver/instance_id/android/BUILD.gn
|
|
+++ b/components/gcm_driver/instance_id/android/BUILD.gn
|
|
@@ -15,7 +15,6 @@ generate_jni("test_support_jni_headers") {
|
|
|
|
android_library("instance_id_driver_java") {
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_iid_java",
|
|
"//base:base_java",
|
|
"//components/gcm_driver/android:gcm_driver_java",
|
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
|
@@ -27,14 +26,12 @@ android_library("instance_id_driver_java") {
|
|
|
|
sources = [
|
|
"java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java",
|
|
- "java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java",
|
|
]
|
|
}
|
|
|
|
android_library("instance_id_driver_test_support_java") {
|
|
deps = [
|
|
":instance_id_driver_java",
|
|
- "$google_play_services_package:google_play_services_iid_java",
|
|
"//base:base_java",
|
|
]
|
|
|
|
diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
|
--- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
|
+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDBridge.java
|
|
@@ -27,7 +27,6 @@ public class InstanceIDBridge {
|
|
* Underlying InstanceIDWithSubtype. May be shared by multiple InstanceIDBridges. Must be
|
|
* initialized on a background thread.
|
|
*/
|
|
- private InstanceIDWithSubtype mInstanceID;
|
|
|
|
private static boolean sBlockOnAsyncTasksForTesting;
|
|
|
|
@@ -72,7 +71,7 @@ public class InstanceIDBridge {
|
|
new BridgeAsyncTask<String>() {
|
|
@Override
|
|
protected String doBackgroundWork() {
|
|
- return mInstanceID.getId();
|
|
+ return "";
|
|
}
|
|
@Override
|
|
protected void sendResultToNative(String id) {
|
|
@@ -88,7 +87,7 @@ public class InstanceIDBridge {
|
|
new BridgeAsyncTask<Long>() {
|
|
@Override
|
|
protected Long doBackgroundWork() {
|
|
- return mInstanceID.getCreationTime();
|
|
+ return 0L;
|
|
}
|
|
@Override
|
|
protected void sendResultToNative(Long creationTime) {
|
|
@@ -110,21 +109,7 @@ public class InstanceIDBridge {
|
|
new BridgeAsyncTask<String>() {
|
|
@Override
|
|
protected String doBackgroundWork() {
|
|
- try {
|
|
- // TODO(crbug.com/1247170): Migrate stored LazySubscriptionsManager data to
|
|
- // SubscriptionFlagManager.
|
|
- LazySubscriptionsManager.storeLazinessInformation(
|
|
- LazySubscriptionsManager.buildSubscriptionUniqueId(
|
|
- mSubtype, authorizedEntity),
|
|
- (flags & InstanceIDFlags.IS_LAZY) == InstanceIDFlags.IS_LAZY);
|
|
- SubscriptionFlagManager.setFlags(
|
|
- SubscriptionFlagManager.buildSubscriptionUniqueId(
|
|
- mSubtype, authorizedEntity),
|
|
- flags);
|
|
- return mInstanceID.getToken(authorizedEntity, scope);
|
|
- } catch (IOException ex) {
|
|
return "";
|
|
- }
|
|
}
|
|
@Override
|
|
protected void sendResultToNative(String token) {
|
|
@@ -141,21 +126,7 @@ public class InstanceIDBridge {
|
|
new BridgeAsyncTask<Boolean>() {
|
|
@Override
|
|
protected Boolean doBackgroundWork() {
|
|
- try {
|
|
- mInstanceID.deleteToken(authorizedEntity, scope);
|
|
- String subscriptionId = LazySubscriptionsManager.buildSubscriptionUniqueId(
|
|
- mSubtype, authorizedEntity);
|
|
- if (LazySubscriptionsManager.isSubscriptionLazy(subscriptionId)) {
|
|
- LazySubscriptionsManager.deletePersistedMessagesForSubscriptionId(
|
|
- subscriptionId);
|
|
- }
|
|
- SubscriptionFlagManager.clearFlags(
|
|
- SubscriptionFlagManager.buildSubscriptionUniqueId(
|
|
- mSubtype, authorizedEntity));
|
|
- return true;
|
|
- } catch (IOException ex) {
|
|
- return false;
|
|
- }
|
|
+ return false;
|
|
}
|
|
@Override
|
|
protected void sendResultToNative(Boolean success) {
|
|
@@ -171,12 +142,7 @@ public class InstanceIDBridge {
|
|
new BridgeAsyncTask<Boolean>() {
|
|
@Override
|
|
protected Boolean doBackgroundWork() {
|
|
- try {
|
|
- mInstanceID.deleteInstanceID();
|
|
- return true;
|
|
- } catch (IOException ex) {
|
|
- return false;
|
|
- }
|
|
+ return true;
|
|
}
|
|
@Override
|
|
protected void sendResultToNative(Boolean success) {
|
|
@@ -206,11 +172,6 @@ public class InstanceIDBridge {
|
|
@Override
|
|
@SuppressWarnings("NoSynchronizedThisCheck") // Only used/accessible by native.
|
|
protected Result doInBackground() {
|
|
- synchronized (InstanceIDBridge.this) {
|
|
- if (mInstanceID == null) {
|
|
- mInstanceID = InstanceIDWithSubtype.getInstance(mSubtype);
|
|
- }
|
|
- }
|
|
return doBackgroundWork();
|
|
}
|
|
@Override
|
|
diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn
|
|
--- a/components/media_router/browser/android/BUILD.gn
|
|
+++ b/components/media_router/browser/android/BUILD.gn
|
|
@@ -11,10 +11,6 @@ android_library("java") {
|
|
resources_package = "org.chromium.components.media_router"
|
|
deps = [
|
|
":java_resources",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
"//base:base_java",
|
|
"//components/browser_ui/media/android:java",
|
|
"//content/public/android:content_java",
|
|
@@ -75,8 +71,6 @@ android_library("java") {
|
|
android_library("cast_options_provider_java") {
|
|
sources = [ "java/src/org/chromium/components/media_router/caf/CastOptionsProvider.java" ]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
]
|
|
}
|
|
|
|
@@ -142,9 +136,6 @@ java_library("junit") {
|
|
deps = [
|
|
":java",
|
|
":test_support_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_cast_framework_java",
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
diff --git a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
|
|
--- a/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
|
|
+++ b/components/media_router/browser/android/java/src/org/chromium/components/media_router/BrowserMediaRouter.java
|
|
@@ -10,9 +10,6 @@ import androidx.annotation.Nullable;
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.mediarouter.media.MediaRouter;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.Log;
|
|
import org.chromium.base.StrictModeContext;
|
|
@@ -42,20 +39,7 @@ public class BrowserMediaRouter implements MediaRouteManager {
|
|
new MediaRouteProvider.Factory() {
|
|
@Override
|
|
public void addProviders(MediaRouteManager manager) {
|
|
- int googleApiAvailabilityResult =
|
|
- GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
|
- ContextUtils.getApplicationContext(),
|
|
- MIN_GOOGLE_PLAY_SERVICES_APK_VERSION);
|
|
- if (googleApiAvailabilityResult != ConnectionResult.SUCCESS) {
|
|
- GoogleApiAvailability.getInstance().showErrorNotification(
|
|
- ContextUtils.getApplicationContext(), googleApiAvailabilityResult);
|
|
- return;
|
|
- }
|
|
- MediaRouteProvider cafProvider = CafMediaRouteProvider.create(manager);
|
|
- manager.addMediaRouteProvider(cafProvider);
|
|
- MediaRouteProvider remotingProvider =
|
|
- CafRemotingMediaRouteProvider.create(manager);
|
|
- manager.addMediaRouteProvider(remotingProvider);
|
|
+ return;
|
|
}
|
|
};
|
|
|
|
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
|
|
--- 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
|
|
@@ -4,9 +4,6 @@
|
|
|
|
package org.chromium.components.media_router;
|
|
|
|
-import com.google.android.gms.cast.CastDevice;
|
|
-import com.google.android.gms.cast.RemoteMediaPlayer;
|
|
-
|
|
import org.chromium.components.browser_ui.media.MediaNotificationInfo;
|
|
import org.chromium.services.media_session.MediaMetadata;
|
|
|
|
@@ -18,36 +15,4 @@ public class CastSessionUtil {
|
|
|
|
// The value is borrowed from the Android Cast SDK code to match their behavior.
|
|
public static final double MIN_VOLUME_LEVEL_DELTA = 1e-7;
|
|
-
|
|
- /**
|
|
- * Builds a MediaMetadata from the given CastDevice and MediaPlayer, and sets it on the builder
|
|
- */
|
|
- public static void setNotificationMetadata(MediaNotificationInfo.Builder builder,
|
|
- CastDevice castDevice, RemoteMediaPlayer mediaPlayer) {
|
|
- MediaMetadata notificationMetadata = new MediaMetadata("", "", "");
|
|
- builder.setMetadata(notificationMetadata);
|
|
-
|
|
- if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
|
|
-
|
|
- if (mediaPlayer == null) return;
|
|
-
|
|
- com.google.android.gms.cast.MediaInfo info = mediaPlayer.getMediaInfo();
|
|
- if (info == null) return;
|
|
-
|
|
- com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
|
|
- if (metadata == null) return;
|
|
-
|
|
- String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
|
|
- if (title != null) notificationMetadata.setTitle(title);
|
|
-
|
|
- String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
|
|
- if (artist == null) {
|
|
- artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
|
|
- }
|
|
- if (artist != null) notificationMetadata.setArtist(artist);
|
|
-
|
|
- String album =
|
|
- metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
|
|
- if (album != null) notificationMetadata.setAlbum(album);
|
|
- }
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -8,41 +8,24 @@ import androidx.annotation.Nullable;
|
|
import androidx.mediarouter.media.MediaRouter;
|
|
import androidx.mediarouter.media.MediaRouter.RouteInfo;
|
|
|
|
-import com.google.android.gms.cast.CastDevice;
|
|
-
|
|
/**
|
|
* A common descriptor of a device that can present some URI.
|
|
*/
|
|
public class MediaSink {
|
|
private static final String CAST_SINK_URN_PREFIX = "urn:x-org.chromium:media:sink:cast-";
|
|
- private final String mId;
|
|
- private final String mName;
|
|
- private final CastDevice mDevice;
|
|
-
|
|
- /**
|
|
- * Constructor.
|
|
- * @param id A unique identifier of the sink.
|
|
- * @param name A user friendly name of the sink.
|
|
- * @param device {@link CastDevice} corresponding to this sink.
|
|
- */
|
|
- public MediaSink(String id, String name, CastDevice device) {
|
|
- mId = id;
|
|
- mName = name;
|
|
- mDevice = device;
|
|
- }
|
|
|
|
/**
|
|
* @return The unique identifier of the sink.
|
|
*/
|
|
public String getId() {
|
|
- return mId;
|
|
+ return "";
|
|
}
|
|
|
|
/**
|
|
* @return The user friendly name of the sink.
|
|
*/
|
|
public String getName() {
|
|
- return mName;
|
|
+ return "";
|
|
}
|
|
|
|
/**
|
|
@@ -52,17 +35,8 @@ public class MediaSink {
|
|
return CAST_SINK_URN_PREFIX + getId();
|
|
}
|
|
|
|
- public CastDevice getDevice() {
|
|
- return mDevice;
|
|
- }
|
|
-
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
- if (o == this) return true;
|
|
- if (o instanceof MediaSink) {
|
|
- MediaSink other = (MediaSink) o;
|
|
- return mId.equals(other.getId()) && mName.equals(other.getName());
|
|
- }
|
|
return false;
|
|
}
|
|
|
|
@@ -70,23 +44,15 @@ public class MediaSink {
|
|
public int hashCode() {
|
|
final int prime = 31;
|
|
int result = 1;
|
|
- result = prime * result + ((mId == null) ? 0 : mId.hashCode());
|
|
- result = prime * result + ((mName == null) ? 0 : mName.hashCode());
|
|
return result;
|
|
}
|
|
|
|
- @Override
|
|
- public String toString() {
|
|
- return String.format("MediaSink: %s, %s", getId(), getName());
|
|
- }
|
|
-
|
|
/**
|
|
* @param route The route information provided by Android.
|
|
* @return A new MediaSink instance corresponding to the specified {@link RouteInfo}.
|
|
*/
|
|
public static MediaSink fromRoute(MediaRouter.RouteInfo route) {
|
|
- return new MediaSink(
|
|
- route.getId(), route.getName(), CastDevice.getFromBundle(route.getExtras()));
|
|
+ return null;
|
|
}
|
|
|
|
/**
|
|
@@ -97,10 +63,6 @@ public class MediaSink {
|
|
*/
|
|
@Nullable
|
|
public static MediaSink fromSinkId(String sinkId, MediaRouter router) {
|
|
- for (MediaRouter.RouteInfo route : router.getRoutes()) {
|
|
- MediaSink sink = MediaSink.fromRoute(route);
|
|
- if (sink.getId().equals(sinkId)) return sink;
|
|
- }
|
|
return null;
|
|
}
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -4,10 +4,6 @@
|
|
|
|
package org.chromium.components.media_router;
|
|
|
|
-import com.google.android.gms.cast.MediaInfo;
|
|
-import com.google.android.gms.cast.MediaMetadata;
|
|
-import com.google.android.gms.cast.MediaStatus;
|
|
-
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.base.annotations.JNINamespace;
|
|
|
|
@@ -17,11 +13,6 @@ import org.chromium.base.annotations.JNINamespace;
|
|
*/
|
|
@JNINamespace("media_router")
|
|
public class MediaStatusBridge {
|
|
- private MediaStatus mStatus;
|
|
-
|
|
- public MediaStatusBridge(MediaStatus status) {
|
|
- mStatus = status;
|
|
- }
|
|
|
|
/**
|
|
* Gets the play state of the stream. Return values are defined as such:
|
|
@@ -34,7 +25,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public int playerState() {
|
|
- return mStatus.getPlayerState();
|
|
+ return 0;
|
|
}
|
|
|
|
/**
|
|
@@ -48,7 +39,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public int idleReason() {
|
|
- return mStatus.getIdleReason();
|
|
+ return 0;
|
|
}
|
|
|
|
/**
|
|
@@ -57,13 +48,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public String title() {
|
|
- MediaInfo info = mStatus.getMediaInfo();
|
|
- if (info == null) return "";
|
|
-
|
|
- MediaMetadata metadata = info.getMetadata();
|
|
- if (metadata == null) return "";
|
|
-
|
|
- return metadata.getString(MediaMetadata.KEY_TITLE);
|
|
+ return "";
|
|
}
|
|
|
|
/**
|
|
@@ -71,7 +56,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public boolean canPlayPause() {
|
|
- return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_PAUSE);
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -79,7 +64,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public boolean canMute() {
|
|
- return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_TOGGLE_MUTE);
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -87,7 +72,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public boolean canSetVolume() {
|
|
- return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SET_VOLUME);
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -95,7 +80,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public boolean canSeek() {
|
|
- return mStatus.isMediaCommandSupported(MediaStatus.COMMAND_SEEK);
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -103,7 +88,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public boolean isMuted() {
|
|
- return mStatus.isMute();
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -113,7 +98,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public double volume() {
|
|
- return mStatus.getStreamVolume();
|
|
+ return 0.0;
|
|
}
|
|
|
|
/**
|
|
@@ -122,10 +107,7 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public long duration() {
|
|
- MediaInfo info = mStatus.getMediaInfo();
|
|
- if (info == null) return 0;
|
|
-
|
|
- return info.getStreamDuration();
|
|
+ return 0;
|
|
}
|
|
|
|
/**
|
|
@@ -133,6 +115,6 @@ public class MediaStatusBridge {
|
|
*/
|
|
@CalledByNative
|
|
public long currentTime() {
|
|
- return mStatus.getStreamPosition();
|
|
+ return 0;
|
|
}
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -6,10 +6,6 @@ package org.chromium.components.media_router.caf;
|
|
|
|
import android.content.Intent;
|
|
|
|
-import com.google.android.gms.cast.CastDevice;
|
|
-import com.google.android.gms.cast.MediaStatus;
|
|
-import com.google.android.gms.cast.framework.media.RemoteMediaClient;
|
|
-
|
|
import org.chromium.components.browser_ui.media.MediaNotificationInfo;
|
|
import org.chromium.components.browser_ui.media.MediaNotificationListener;
|
|
import org.chromium.components.browser_ui.media.MediaNotificationManager;
|
|
@@ -62,20 +58,6 @@ public abstract class BaseNotificationController
|
|
public void onStatusUpdated() {
|
|
if (mNotificationBuilder == null) return;
|
|
if (!mSessionController.isConnected()) return;
|
|
-
|
|
- MediaStatus mediaStatus = mSessionController.getRemoteMediaClient().getMediaStatus();
|
|
- if (mediaStatus == null) return;
|
|
-
|
|
- int playerState = mediaStatus.getPlayerState();
|
|
- if (playerState == MediaStatus.PLAYER_STATE_PAUSED
|
|
- || playerState == MediaStatus.PLAYER_STATE_PLAYING) {
|
|
- mNotificationBuilder.setPaused(playerState != MediaStatus.PLAYER_STATE_PLAYING);
|
|
- mNotificationBuilder.setActions(
|
|
- MediaNotificationInfo.ACTION_STOP | MediaNotificationInfo.ACTION_PLAY_PAUSE);
|
|
- } else {
|
|
- mNotificationBuilder.setActions(MediaNotificationInfo.ACTION_STOP);
|
|
- }
|
|
- MediaRouterClient.getInstance().showNotification(mNotificationBuilder.build());
|
|
}
|
|
|
|
/** Called when media metadata updated. */
|
|
@@ -91,30 +73,6 @@ public abstract class BaseNotificationController
|
|
mNotificationBuilder.setMetadata(notificationMetadata);
|
|
|
|
if (!mSessionController.isConnected()) return;
|
|
-
|
|
- CastDevice castDevice = mSessionController.getSession().getCastDevice();
|
|
- if (castDevice != null) notificationMetadata.setTitle(castDevice.getFriendlyName());
|
|
-
|
|
- RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
|
|
-
|
|
- com.google.android.gms.cast.MediaInfo info = remoteMediaClient.getMediaInfo();
|
|
- if (info == null) return;
|
|
-
|
|
- com.google.android.gms.cast.MediaMetadata metadata = info.getMetadata();
|
|
- if (metadata == null) return;
|
|
-
|
|
- String title = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_TITLE);
|
|
- if (title != null) notificationMetadata.setTitle(title);
|
|
-
|
|
- String artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ARTIST);
|
|
- if (artist == null) {
|
|
- artist = metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_ARTIST);
|
|
- }
|
|
- if (artist != null) notificationMetadata.setArtist(artist);
|
|
-
|
|
- String album =
|
|
- metadata.getString(com.google.android.gms.cast.MediaMetadata.KEY_ALBUM_TITLE);
|
|
- if (album != null) notificationMetadata.setAlbum(album);
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
@@ -122,20 +80,10 @@ public abstract class BaseNotificationController
|
|
|
|
@Override
|
|
public void onPlay(int actionSource) {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mSessionController.getRemoteMediaClient().play();
|
|
- MediaRouteUmaRecorder.recordCastNotificationControlsAction(
|
|
- MediaRouteUmaRecorder.CastNotificationControls.RESUME);
|
|
}
|
|
|
|
@Override
|
|
public void onPause(int actionSource) {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mSessionController.getRemoteMediaClient().pause();
|
|
- MediaRouteUmaRecorder.recordCastNotificationControlsAction(
|
|
- MediaRouteUmaRecorder.CastNotificationControls.PAUSE);
|
|
}
|
|
|
|
@Override
|
|
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
|
|
--- 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
|
|
@@ -6,12 +6,7 @@ package org.chromium.components.media_router.caf;
|
|
|
|
import androidx.annotation.Nullable;
|
|
|
|
-import com.google.android.gms.cast.CastDevice;
|
|
-import com.google.android.gms.cast.framework.CastSession;
|
|
-import com.google.android.gms.cast.framework.media.RemoteMediaClient;
|
|
-
|
|
import org.chromium.base.Log;
|
|
-import org.chromium.components.media_router.CastSessionUtil;
|
|
import org.chromium.components.media_router.FlingingController;
|
|
import org.chromium.components.media_router.MediaSink;
|
|
import org.chromium.components.media_router.MediaSource;
|
|
@@ -42,15 +37,12 @@ public abstract class BaseSessionController {
|
|
void onMetadataUpdated();
|
|
}
|
|
|
|
- private CastSession mCastSession;
|
|
private final CafBaseMediaRouteProvider mProvider;
|
|
private CreateRouteRequestInfo mRouteCreationInfo;
|
|
- private final RemoteMediaClient.Callback mRemoteMediaClientCallback;
|
|
private final List<Callback> mCallbacks = new ArrayList<>();
|
|
|
|
public BaseSessionController(CafBaseMediaRouteProvider provider) {
|
|
mProvider = provider;
|
|
- mRemoteMediaClientCallback = new RemoteMediaClientCallback();
|
|
}
|
|
|
|
public void addCallback(Callback callback) {
|
|
@@ -63,9 +55,6 @@ public abstract class BaseSessionController {
|
|
|
|
public void requestSessionLaunch() {
|
|
mRouteCreationInfo = mProvider.getPendingCreateRouteRequestInfo();
|
|
- CastUtils.getCastContext().setReceiverApplicationId(
|
|
- mRouteCreationInfo.source.getApplicationId());
|
|
-
|
|
// When the user clicks a route on the MediaRouteChooserDialog, we intercept the click event
|
|
// and do not select the route. Instead the route selection is postponed to here. This will
|
|
// trigger CAF to launch the session.
|
|
@@ -84,69 +73,22 @@ public abstract class BaseSessionController {
|
|
return mRouteCreationInfo;
|
|
}
|
|
|
|
- public CastSession getSession() {
|
|
- return mCastSession;
|
|
- }
|
|
-
|
|
- public RemoteMediaClient getRemoteMediaClient() {
|
|
- return isConnected() ? mCastSession.getRemoteMediaClient() : null;
|
|
- }
|
|
-
|
|
public abstract BaseNotificationController getNotificationController();
|
|
|
|
public void endSession() {
|
|
- CastUtils.getCastContext().getSessionManager().endCurrentSession(/* stopCasting= */ true);
|
|
- CastUtils.getCastContext().setReceiverApplicationId(null);
|
|
}
|
|
|
|
public List<String> getCapabilities() {
|
|
List<String> capabilities = new ArrayList<>();
|
|
- if (mCastSession == null || !mCastSession.isConnected()) return capabilities;
|
|
- CastDevice device = mCastSession.getCastDevice();
|
|
- if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_IN)) {
|
|
- capabilities.add("audio_in");
|
|
- }
|
|
- if (device.hasCapability(CastDevice.CAPABILITY_AUDIO_OUT)) {
|
|
- capabilities.add("audio_out");
|
|
- }
|
|
- if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_IN)) {
|
|
- capabilities.add("video_in");
|
|
- }
|
|
- if (device.hasCapability(CastDevice.CAPABILITY_VIDEO_OUT)) {
|
|
- capabilities.add("video_out");
|
|
- }
|
|
return capabilities;
|
|
}
|
|
|
|
public boolean isConnected() {
|
|
- return mCastSession != null && mCastSession.isConnected();
|
|
+ return false;
|
|
}
|
|
|
|
private void updateRemoteMediaClient(String message) {
|
|
if (!isConnected()) return;
|
|
-
|
|
- mCastSession.getRemoteMediaClient().onMessageReceived(
|
|
- mCastSession.getCastDevice(), CastSessionUtil.MEDIA_NAMESPACE, message);
|
|
- }
|
|
-
|
|
- /** Attaches the controller to the current {@link CastSession}. */
|
|
- public void attachToCastSession(CastSession session) {
|
|
- mCastSession = session;
|
|
- RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
|
|
- if (uncheckedRemoteMediaClient != null) {
|
|
- uncheckedRemoteMediaClient.registerCallback(mRemoteMediaClientCallback);
|
|
- }
|
|
- }
|
|
-
|
|
- /** Detaches the controller from any {@link CastSession}. */
|
|
- public void detachFromCastSession() {
|
|
- if (mCastSession == null) return;
|
|
-
|
|
- RemoteMediaClient uncheckedRemoteMediaClient = mCastSession.getRemoteMediaClient();
|
|
- if (uncheckedRemoteMediaClient != null) {
|
|
- uncheckedRemoteMediaClient.unregisterCallback(mRemoteMediaClientCallback);
|
|
- }
|
|
- mCastSession = null;
|
|
}
|
|
|
|
/** Called when session started. */
|
|
@@ -163,50 +105,12 @@ public abstract class BaseSessionController {
|
|
return mProvider;
|
|
}
|
|
|
|
- /**
|
|
- * All sub-classes need to register this method to listen to messages of the namespaces they are
|
|
- * interested in.
|
|
- */
|
|
- protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
|
|
- Log.d(TAG,
|
|
- "Received message from Cast device: namespace=\"" + namespace + "\" message=\""
|
|
- + message + "\"");
|
|
- if (CastSessionUtil.MEDIA_NAMESPACE.equals(namespace)) {
|
|
- updateRemoteMediaClient(message);
|
|
- }
|
|
- }
|
|
-
|
|
- private class RemoteMediaClientCallback extends RemoteMediaClient.Callback {
|
|
- @Override
|
|
- public void onStatusUpdated() {
|
|
- BaseSessionController.this.onStatusUpdated();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onMetadataUpdated() {
|
|
- BaseSessionController.this.onMetadataUpdated();
|
|
- }
|
|
- }
|
|
-
|
|
- protected void onStatusUpdated() {
|
|
- notifyCallback((Callback callback) -> callback.onStatusUpdated());
|
|
- }
|
|
-
|
|
- protected void onMetadataUpdated() {
|
|
- notifyCallback((Callback callback) -> callback.onMetadataUpdated());
|
|
- }
|
|
-
|
|
- @Nullable
|
|
- public FlingingController getFlingingController() {
|
|
- return null;
|
|
- }
|
|
-
|
|
/**
|
|
* Helper message to get the session ID of the attached session. For stubbing in tests as
|
|
* {@link CastSession#getSessionId()} is final.
|
|
*/
|
|
public String getSessionId() {
|
|
- return isConnected() ? getSession().getSessionId() : null;
|
|
+ return null;
|
|
}
|
|
|
|
private void notifyCallback(NotifyCallbackAction action) {
|
|
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
|
|
--- 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
|
|
@@ -12,10 +12,6 @@ import androidx.mediarouter.media.MediaRouteSelector;
|
|
import androidx.mediarouter.media.MediaRouter;
|
|
import androidx.mediarouter.media.MediaRouter.RouteInfo;
|
|
|
|
-import com.google.android.gms.cast.framework.CastSession;
|
|
-import com.google.android.gms.cast.framework.SessionManagerListener;
|
|
-import com.google.android.gms.cast.framework.media.RemoteMediaClient;
|
|
-
|
|
import org.chromium.base.Log;
|
|
import org.chromium.components.media_router.DiscoveryCallback;
|
|
import org.chromium.components.media_router.DiscoveryDelegate;
|
|
@@ -39,7 +35,7 @@ import java.util.Set;
|
|
* A base provider containing common implementation for CAF-based {@link MediaRouteProvider}s.
|
|
*/
|
|
public abstract class CafBaseMediaRouteProvider
|
|
- implements MediaRouteProvider, DiscoveryDelegate, SessionManagerListener<CastSession> {
|
|
+ implements MediaRouteProvider, DiscoveryDelegate {
|
|
private static final String TAG = "CafMR";
|
|
|
|
protected static final List<MediaSink> NO_SINKS = Collections.emptyList();
|
|
@@ -155,7 +151,6 @@ public abstract class CafBaseMediaRouteProvider
|
|
// current session and clean up the routes (can't wait for session ending as the signal
|
|
// might be delayed).
|
|
sessionController().endSession();
|
|
- handleSessionEnd();
|
|
}
|
|
if (mPendingCreateRouteRequestInfo != null) {
|
|
cancelPendingRequest("Request replaced");
|
|
@@ -184,9 +179,6 @@ public abstract class CafBaseMediaRouteProvider
|
|
mManager.onCreateRouteRequestError("The sink does not exist", nativeRequestId);
|
|
}
|
|
|
|
- CastUtils.getCastContext().getSessionManager().addSessionManagerListener(
|
|
- this, CastSession.class);
|
|
-
|
|
mPendingCreateRouteRequestInfo = new CreateRouteRequestInfo(source, sink, presentationId,
|
|
origin, tabId, isOffTheRecord, nativeRequestId, targetRouteInfo);
|
|
|
|
@@ -213,110 +205,6 @@ public abstract class CafBaseMediaRouteProvider
|
|
removeRoute(routeId, /* error= */ null);
|
|
}
|
|
|
|
- ///////////////////////////////////////////////////////
|
|
- // SessionManagerListener implementation begin
|
|
- ///////////////////////////////////////////////////////
|
|
-
|
|
- @Override
|
|
- public final void onSessionStarting(CastSession session) {
|
|
- // The session is not connected yet at this point so this is no-op.
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onSessionStartFailed(CastSession session, int error) {
|
|
- removeAllRoutes("Launch error");
|
|
- cancelPendingRequest("Launch error");
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onSessionStarted(CastSession session, String sessionId) {
|
|
- Log.d(TAG, "onSessionStarted");
|
|
-
|
|
- if (session != CastUtils.getCastContext().getSessionManager().getCurrentCastSession()) {
|
|
- // Sometimes the session start signal might come in for an earlier launch request, which
|
|
- // should be ignored.
|
|
- return;
|
|
- }
|
|
-
|
|
- if (session == sessionController().getSession() || mPendingCreateRouteRequestInfo == null) {
|
|
- // Early return for any possible case that the session start signal comes in twice for
|
|
- // the same session.
|
|
- return;
|
|
- }
|
|
- handleSessionStart(session, sessionId);
|
|
- }
|
|
-
|
|
- @Override
|
|
- public final void onSessionResumed(CastSession session, boolean wasSuspended) {
|
|
- sessionController().attachToCastSession(session);
|
|
- }
|
|
-
|
|
- @Override
|
|
- public final void onSessionResuming(CastSession session, String sessionId) {}
|
|
-
|
|
- @Override
|
|
- public final void onSessionResumeFailed(CastSession session, int error) {}
|
|
-
|
|
- @Override
|
|
- public final void onSessionEnding(CastSession session) {
|
|
- RemoteMediaClient client = session.getRemoteMediaClient();
|
|
- if (client != null) {
|
|
- MediaRouteUmaRecorder.castEndedTimeRemaining(
|
|
- client.getApproximateStreamPosition(), client.getStreamDuration());
|
|
- }
|
|
- handleSessionEnd();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public final void onSessionEnded(CastSession session, int error) {
|
|
- Log.d(TAG, "Session ended with error code " + error);
|
|
- RemoteMediaClient client = session.getRemoteMediaClient();
|
|
- if (client != null) {
|
|
- MediaRouteUmaRecorder.castEndedTimeRemaining(
|
|
- client.getApproximateStreamPosition(), client.getStreamDuration());
|
|
- }
|
|
- handleSessionEnd();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public final void onSessionSuspended(CastSession session, int reason) {
|
|
- sessionController().detachFromCastSession();
|
|
- }
|
|
-
|
|
- ///////////////////////////////////////////////////////
|
|
- // SessionManagerListener implementation end
|
|
- ///////////////////////////////////////////////////////
|
|
-
|
|
- protected void handleSessionStart(CastSession session, String sessionId) {
|
|
- sessionController().attachToCastSession(session);
|
|
- sessionController().onSessionStarted();
|
|
-
|
|
- MediaSink sink = mPendingCreateRouteRequestInfo.sink;
|
|
- MediaSource source = mPendingCreateRouteRequestInfo.source;
|
|
- MediaRoute route = new MediaRoute(
|
|
- sink.getId(), source.getSourceId(), mPendingCreateRouteRequestInfo.presentationId);
|
|
- addRoute(route, mPendingCreateRouteRequestInfo.origin, mPendingCreateRouteRequestInfo.tabId,
|
|
- mPendingCreateRouteRequestInfo.nativeRequestId, /* wasLaunched= */ true);
|
|
-
|
|
- mPendingCreateRouteRequestInfo = null;
|
|
- }
|
|
-
|
|
- private void handleSessionEnd() {
|
|
- if (mPendingCreateRouteRequestInfo != null) {
|
|
- // The Cast SDK notifies about session ending when a route is unselected, even when
|
|
- // there's no current session. Because CastSessionController unselects the route to set
|
|
- // the receiver app ID, this needs to be guarded by a pending request null check to make
|
|
- // sure the listener is not unregistered during a session relaunch.
|
|
- return;
|
|
- }
|
|
- sessionController().onSessionEnded();
|
|
- sessionController().detachFromCastSession();
|
|
- getAndroidMediaRouter().selectRoute(getAndroidMediaRouter().getDefaultRoute());
|
|
- terminateAllRoutes();
|
|
- CastUtils.getCastContext().getSessionManager().removeSessionManagerListener(
|
|
- this, CastSession.class);
|
|
- }
|
|
-
|
|
private void cancelPendingRequest(String error) {
|
|
if (mPendingCreateRouteRequestInfo == null) return;
|
|
|
|
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
|
|
--- 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
|
|
@@ -11,8 +11,6 @@ import androidx.annotation.Nullable;
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.mediarouter.media.MediaRouter;
|
|
|
|
-import com.google.android.gms.cast.framework.CastSession;
|
|
-
|
|
import org.chromium.base.Log;
|
|
import org.chromium.components.media_router.BrowserMediaRouter;
|
|
import org.chromium.components.media_router.ClientRecord;
|
|
@@ -150,20 +148,6 @@ public class CafMediaRouteProvider extends CafBaseMediaRouteProvider {
|
|
return mMessageHandler;
|
|
}
|
|
|
|
- @Override
|
|
- protected void handleSessionStart(CastSession session, String sessionId) {
|
|
- super.handleSessionStart(session, sessionId);
|
|
-
|
|
- for (ClientRecord clientRecord : mClientIdToRecords.values()) {
|
|
- // Should be exactly one instance of MediaRoute/ClientRecord at this moment.
|
|
- mMessageHandler.sendReceiverActionToClient(clientRecord.routeId,
|
|
- sessionController().getSink(), clientRecord.clientId, "cast");
|
|
- }
|
|
-
|
|
- mMessageHandler.onSessionStarted();
|
|
- sessionController().getSession().getRemoteMediaClient().requestStatus();
|
|
- }
|
|
-
|
|
@Override
|
|
protected void addRoute(
|
|
MediaRoute route, String origin, int tabId, int nativeRequestId, boolean wasLaunched) {
|
|
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
|
|
--- 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
|
|
@@ -13,10 +13,6 @@ import android.util.SparseArray;
|
|
import androidx.annotation.VisibleForTesting;
|
|
import androidx.collection.ArrayMap;
|
|
|
|
-import com.google.android.gms.cast.ApplicationMetadata;
|
|
-import com.google.android.gms.common.api.PendingResult;
|
|
-import com.google.android.gms.common.api.Status;
|
|
-
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
@@ -345,49 +341,7 @@ public class CafMessageHandler {
|
|
final int sequenceNumber) throws JSONException {
|
|
if (volumeMessage == null) return false;
|
|
if (!mSessionController.isConnected()) return false;
|
|
- boolean shouldWaitForVolumeChange = false;
|
|
- try {
|
|
- if (!volumeMessage.isNull("muted")) {
|
|
- boolean newMuted = volumeMessage.getBoolean("muted");
|
|
- if (mSessionController.getSession().isMute() != newMuted) {
|
|
- mSessionController.getSession().setMute(newMuted);
|
|
- shouldWaitForVolumeChange = true;
|
|
- }
|
|
- }
|
|
- if (!volumeMessage.isNull("level")) {
|
|
- double newLevel = volumeMessage.getDouble("level");
|
|
- double currentLevel = mSessionController.getSession().getVolume();
|
|
- if (!Double.isNaN(currentLevel)
|
|
- && Math.abs(currentLevel - newLevel)
|
|
- > CastSessionUtil.MIN_VOLUME_LEVEL_DELTA) {
|
|
- mSessionController.getSession().setVolume(newLevel);
|
|
- shouldWaitForVolumeChange = true;
|
|
- }
|
|
- }
|
|
- } catch (IOException | IllegalStateException e) {
|
|
- Log.e(TAG, "Failed to send volume command: " + e);
|
|
- return false;
|
|
- }
|
|
-
|
|
- // For each successful volume message we need to respond with an empty "v2_message" so the
|
|
- // Cast Web SDK can call the success callback of the page. If we expect the volume to change
|
|
- // as the result of the command, we're relying on {@link Cast.CastListener#onVolumeChanged}
|
|
- // to get called by the Android Cast SDK when the receiver status is updated. We keep the
|
|
- // sequence number until then. If the volume doesn't change as the result of the command, we
|
|
- // won't get notified by the Android SDK
|
|
- if (shouldWaitForVolumeChange) {
|
|
- mVolumeRequests.add(new RequestRecord(clientId, sequenceNumber));
|
|
- } else {
|
|
- // It's usually bad to have request and response on the same call stack so post the
|
|
- // response to the Android message loop.
|
|
- mHandler.post(new Runnable() {
|
|
- @Override
|
|
- public void run() {
|
|
- onVolumeChanged(clientId, sequenceNumber);
|
|
- }
|
|
- });
|
|
- }
|
|
- return true;
|
|
+ return false;
|
|
}
|
|
|
|
@VisibleForTesting
|
|
@@ -675,19 +629,11 @@ public class CafMessageHandler {
|
|
try {
|
|
// "volume" is a part of "receiver" initialized below.
|
|
JSONObject jsonVolume = new JSONObject();
|
|
- jsonVolume.put("level", mSessionController.getSession().getVolume());
|
|
- jsonVolume.put("muted", mSessionController.getSession().isMute());
|
|
|
|
// "receiver" is a part of "message" initialized below.
|
|
JSONObject jsonReceiver = new JSONObject();
|
|
- jsonReceiver.put(
|
|
- "label", mSessionController.getSession().getCastDevice().getDeviceId());
|
|
- jsonReceiver.put("friendlyName",
|
|
- mSessionController.getSession().getCastDevice().getFriendlyName());
|
|
jsonReceiver.put("capabilities", toJSONArray(mSessionController.getCapabilities()));
|
|
jsonReceiver.put("volume", jsonVolume);
|
|
- jsonReceiver.put(
|
|
- "isActiveInput", mSessionController.getSession().getActiveInputState());
|
|
jsonReceiver.put("displayStatus", null);
|
|
jsonReceiver.put("receiverType", "cast");
|
|
|
|
@@ -700,23 +646,14 @@ public class CafMessageHandler {
|
|
|
|
JSONObject jsonMessage = new JSONObject();
|
|
jsonMessage.put("sessionId", mSessionController.getSessionId());
|
|
- jsonMessage.put("statusText", mSessionController.getSession().getApplicationStatus());
|
|
jsonMessage.put("receiver", jsonReceiver);
|
|
jsonMessage.put("namespaces", jsonNamespaces);
|
|
jsonMessage.put("media", toJSONArray(new ArrayList<>()));
|
|
jsonMessage.put("status", "connected");
|
|
jsonMessage.put("transportId", "web-4");
|
|
|
|
- ApplicationMetadata applicationMetadata =
|
|
- mSessionController.getSession().getApplicationMetadata();
|
|
- if (applicationMetadata != null) {
|
|
- jsonMessage.put("appId", applicationMetadata.getApplicationId());
|
|
- } else {
|
|
- jsonMessage.put("appId",
|
|
- mSessionController.getRouteCreationInfo().source.getApplicationId());
|
|
- }
|
|
- jsonMessage.put("displayName",
|
|
- mSessionController.getSession().getCastDevice().getFriendlyName());
|
|
+ jsonMessage.put("appId",
|
|
+ mSessionController.getRouteCreationInfo().source.getApplicationId());
|
|
|
|
return jsonMessage.toString();
|
|
} catch (JSONException e) {
|
|
@@ -797,32 +734,6 @@ public class CafMessageHandler {
|
|
boolean sendStringCastMessage(
|
|
String message, String namespace, String clientId, int sequenceNumber) {
|
|
if (!mSessionController.isConnected()) return false;
|
|
-
|
|
- PendingResult<Status> pendingResult =
|
|
- mSessionController.getSession().sendMessage(namespace, message);
|
|
- if (!TextUtils.equals(namespace, CastSessionUtil.MEDIA_NAMESPACE)) {
|
|
- // Media commands wait for the media status update as a result.
|
|
- pendingResult.setResultCallback(
|
|
- (Status result) -> onSendAppMessageResult(result, clientId, sequenceNumber));
|
|
- }
|
|
- return true;
|
|
- }
|
|
-
|
|
- /**
|
|
- * Notifies a client that an app message has been sent.
|
|
- * @param clientId The client id the message is sent from.
|
|
- * @param sequenceNumber The sequence number of the message.
|
|
- */
|
|
- void onSendAppMessageResult(Status result, String clientId, int sequenceNumber) {
|
|
- if (!result.isSuccess()) {
|
|
- // TODO(avayvod): should actually report back to the page.
|
|
- // See https://crbug.com/550445.
|
|
- Log.e(TAG, "Failed to send the message: " + result);
|
|
- return;
|
|
- }
|
|
-
|
|
- // App messages wait for the empty message with the sequence
|
|
- // number.
|
|
- sendEnclosedMessageToClient(clientId, "app_message", null, sequenceNumber);
|
|
+ return false;
|
|
}
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -9,8 +9,6 @@ import android.net.Uri;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.mediarouter.media.MediaRouteSelector;
|
|
|
|
-import com.google.android.gms.cast.CastMediaControlIntent;
|
|
-
|
|
import org.chromium.components.media_router.MediaSource;
|
|
|
|
import java.util.Arrays;
|
|
@@ -106,13 +104,7 @@ public class CastMediaSource implements MediaSource {
|
|
*/
|
|
@Override
|
|
public MediaRouteSelector buildRouteSelector() {
|
|
- try {
|
|
- return new MediaRouteSelector.Builder()
|
|
- .addControlCategory(CastMediaControlIntent.categoryForCast(mApplicationId))
|
|
- .build();
|
|
- } catch (IllegalArgumentException e) {
|
|
- return null;
|
|
- }
|
|
+ return null;
|
|
}
|
|
|
|
/**
|
|
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
|
|
--- 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
|
|
@@ -6,28 +6,8 @@ package org.chromium.components.media_router.caf;
|
|
|
|
import android.content.Context;
|
|
|
|
-import com.google.android.gms.cast.LaunchOptions;
|
|
-import com.google.android.gms.cast.framework.CastOptions;
|
|
-import com.google.android.gms.cast.framework.OptionsProvider;
|
|
-import com.google.android.gms.cast.framework.SessionProvider;
|
|
-
|
|
import java.util.List;
|
|
|
|
/** {@link OptionsProvider} implementation for Chrome MR. */
|
|
-public class CastOptionsProvider implements OptionsProvider {
|
|
- @Override
|
|
- public CastOptions getCastOptions(Context context) {
|
|
- return new CastOptions.Builder()
|
|
- .setCastMediaOptions(null)
|
|
- .setEnableReconnectionService(false)
|
|
- .setLaunchOptions(new LaunchOptions.Builder().setRelaunchIfRunning(true).build())
|
|
- .setResumeSavedSession(false)
|
|
- .setStopReceiverApplicationWhenEndingSession(true)
|
|
- .build();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public List<SessionProvider> getAdditionalSessionProviders(Context context) {
|
|
- return null;
|
|
- }
|
|
+public class CastOptionsProvider {
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -7,11 +7,6 @@ package org.chromium.components.media_router.caf;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.VisibleForTesting;
|
|
|
|
-import com.google.android.gms.cast.ApplicationMetadata;
|
|
-import com.google.android.gms.cast.Cast;
|
|
-import com.google.android.gms.cast.CastDevice;
|
|
-import com.google.android.gms.cast.framework.CastSession;
|
|
-
|
|
import org.chromium.base.Log;
|
|
|
|
import java.util.ArrayList;
|
|
@@ -24,12 +19,10 @@ public class CastSessionController extends BaseSessionController {
|
|
private static final String TAG = "CafSessionCtrl";
|
|
|
|
private List<String> mNamespaces = new ArrayList<String>();
|
|
- private CastListener mCastListener;
|
|
private CafNotificationController mNotificationController;
|
|
|
|
public CastSessionController(CafBaseMediaRouteProvider provider) {
|
|
super(provider);
|
|
- mCastListener = new CastListener();
|
|
mNotificationController = new CafNotificationController(this);
|
|
}
|
|
|
|
@@ -37,30 +30,6 @@ public class CastSessionController extends BaseSessionController {
|
|
return mNamespaces;
|
|
}
|
|
|
|
- /**
|
|
- * Init nested fields for testing. The reason is that nested classes are bound to the original
|
|
- * instance instead of the spyed instance.
|
|
- */
|
|
- void initNestedFieldsForTesting() {
|
|
- mCastListener = new CastListener();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void attachToCastSession(CastSession session) {
|
|
- super.attachToCastSession(session);
|
|
- getSession().addCastListener(mCastListener);
|
|
- updateNamespaces();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void detachFromCastSession() {
|
|
- if (getSession() == null) return;
|
|
-
|
|
- mNamespaces.clear();
|
|
- getSession().removeCastListener(mCastListener);
|
|
- super.detachFromCastSession();
|
|
- }
|
|
-
|
|
@Override
|
|
public void onSessionEnded() {
|
|
getMessageHandler().onSessionEnded();
|
|
@@ -72,24 +41,6 @@ public class CastSessionController extends BaseSessionController {
|
|
return mNotificationController;
|
|
}
|
|
|
|
- private class CastListener extends Cast.Listener {
|
|
- @Override
|
|
- public void onApplicationStatusChanged() {
|
|
- CastSessionController.this.onApplicationStatusChanged();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onApplicationMetadataChanged(ApplicationMetadata metadata) {
|
|
- CastSessionController.this.onApplicationStatusChanged();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public void onVolumeChanged() {
|
|
- CastSessionController.this.onApplicationStatusChanged();
|
|
- getMessageHandler().onVolumeChanged();
|
|
- }
|
|
- }
|
|
-
|
|
private void onApplicationStatusChanged() {
|
|
updateNamespaces();
|
|
|
|
@@ -100,53 +51,18 @@ public class CastSessionController extends BaseSessionController {
|
|
@VisibleForTesting
|
|
void updateNamespaces() {
|
|
if (!isConnected()) return;
|
|
-
|
|
- if (getSession().getApplicationMetadata() == null
|
|
- || getSession().getApplicationMetadata().getSupportedNamespaces() == null) {
|
|
- return;
|
|
- }
|
|
-
|
|
- Set<String> namespacesToAdd =
|
|
- new HashSet<>(getSession().getApplicationMetadata().getSupportedNamespaces());
|
|
- Set<String> namespacesToRemove = new HashSet<String>(mNamespaces);
|
|
-
|
|
- namespacesToRemove.removeAll(namespacesToAdd);
|
|
- namespacesToAdd.removeAll(mNamespaces);
|
|
-
|
|
- for (String namespace : namespacesToRemove) unregisterNamespace(namespace);
|
|
- for (String namespace : namespacesToAdd) registerNamespace(namespace);
|
|
}
|
|
|
|
private void registerNamespace(String namespace) {
|
|
assert !mNamespaces.contains(namespace);
|
|
|
|
if (!isConnected()) return;
|
|
-
|
|
- try {
|
|
- getSession().setMessageReceivedCallbacks(namespace, this::onMessageReceived);
|
|
- mNamespaces.add(namespace);
|
|
- } catch (Exception e) {
|
|
- Log.e(TAG, "Failed to register namespace listener for %s", namespace, e);
|
|
- }
|
|
}
|
|
|
|
private void unregisterNamespace(String namespace) {
|
|
assert mNamespaces.contains(namespace);
|
|
|
|
if (!isConnected()) return;
|
|
-
|
|
- try {
|
|
- getSession().removeMessageReceivedCallbacks(namespace);
|
|
- mNamespaces.remove(namespace);
|
|
- } catch (Exception e) {
|
|
- Log.e(TAG, "Failed to remove the namespace listener for %s", namespace, e);
|
|
- }
|
|
- }
|
|
-
|
|
- @Override
|
|
- protected void onMessageReceived(CastDevice castDevice, String namespace, String message) {
|
|
- super.onMessageReceived(castDevice, namespace, message);
|
|
- getMessageHandler().onMessageReceived(namespace, message);
|
|
}
|
|
|
|
@NonNull
|
|
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
|
|
--- 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
|
|
@@ -4,18 +4,10 @@
|
|
|
|
package org.chromium.components.media_router.caf;
|
|
|
|
-import com.google.android.gms.cast.framework.CastContext;
|
|
-
|
|
import org.chromium.components.media_router.MediaRouterClient;
|
|
|
|
/** Utility methods for Cast. */
|
|
public class CastUtils {
|
|
- /** Helper method to return the {@link CastContext} instance. */
|
|
- public static CastContext getCastContext() {
|
|
- return CastContext.getSharedInstance(
|
|
- MediaRouterClient.getInstance().getContextForRemoting());
|
|
- }
|
|
-
|
|
/**
|
|
* Compares two origins. Empty origin strings correspond to unique origins in
|
|
* url::Origin.
|
|
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
|
|
--- 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
|
|
@@ -45,60 +45,35 @@ public class CafExpandedControllerActivity
|
|
private MediaController.Delegate mControllerDelegate = new MediaController.Delegate() {
|
|
@Override
|
|
public void play() {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mSessionController.getSession().getRemoteMediaClient().play();
|
|
- MediaRouteUmaRecorder.recordFullscreenControlsAction(
|
|
- MediaRouteUmaRecorder.FullScreenControls.RESUME);
|
|
}
|
|
|
|
@Override
|
|
public void pause() {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mSessionController.getSession().getRemoteMediaClient().pause();
|
|
- MediaRouteUmaRecorder.recordFullscreenControlsAction(
|
|
- MediaRouteUmaRecorder.FullScreenControls.PAUSE);
|
|
}
|
|
|
|
@Override
|
|
public long getDuration() {
|
|
- if (!mSessionController.isConnected()) return 0;
|
|
- return mSessionController.getFlingingController().getDuration();
|
|
+ return 0;
|
|
}
|
|
|
|
@Override
|
|
public long getPosition() {
|
|
- if (!mSessionController.isConnected()) return 0;
|
|
- return mSessionController.getFlingingController().getApproximateCurrentTime();
|
|
+ return 0;
|
|
}
|
|
|
|
@Override
|
|
public void seekTo(long pos) {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mSessionController.getSession().getRemoteMediaClient().seek(pos);
|
|
- MediaRouteUmaRecorder.recordFullscreenControlsAction(
|
|
- MediaRouteUmaRecorder.FullScreenControls.SEEK);
|
|
}
|
|
|
|
@Override
|
|
public boolean isPlaying() {
|
|
- if (!mSessionController.isConnected()) return false;
|
|
-
|
|
- return mSessionController.getSession().getRemoteMediaClient().isPlaying();
|
|
+ return false;
|
|
}
|
|
|
|
@Override
|
|
public long getActionFlags() {
|
|
long flags =
|
|
PlaybackStateCompat.ACTION_REWIND | PlaybackStateCompat.ACTION_FAST_FORWARD;
|
|
- if (mSessionController.isConnected()
|
|
- && mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
|
|
- flags |= PlaybackStateCompat.ACTION_PAUSE;
|
|
- } else {
|
|
- flags |= PlaybackStateCompat.ACTION_PLAY;
|
|
- }
|
|
return flags;
|
|
}
|
|
};
|
|
@@ -187,20 +162,10 @@ public class CafExpandedControllerActivity
|
|
private void updateUi() {
|
|
if (!mSessionController.isConnected()) return;
|
|
|
|
- String deviceName = mSessionController.getSession().getCastDevice().getFriendlyName();
|
|
- String titleText = "";
|
|
- if (deviceName != null) {
|
|
- titleText = getResources().getString(R.string.cast_casting_video, deviceName);
|
|
- }
|
|
- mTitleView.setText(titleText);
|
|
-
|
|
mMediaController.refresh();
|
|
mMediaController.updateProgress();
|
|
|
|
cancelProgressUpdateTask();
|
|
- if (mSessionController.getSession().getRemoteMediaClient().isPlaying()) {
|
|
- scheduleProgressUpdateTask();
|
|
- }
|
|
}
|
|
|
|
private void scheduleProgressUpdateTask() {
|
|
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
|
|
--- 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
|
|
@@ -49,9 +49,6 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider {
|
|
@Override
|
|
public void detachRoute(String routeId) {
|
|
super.detachRoute(routeId);
|
|
- MediaRouteUmaRecorder.recordRemoteSessionTimeWithoutMediaElementPercentage(
|
|
- mSessionController.getFlingingController().getApproximateCurrentTime(),
|
|
- mSessionController.getFlingingController().getDuration());
|
|
}
|
|
|
|
@Override
|
|
@@ -74,6 +71,6 @@ public class CafRemotingMediaRouteProvider extends CafBaseMediaRouteProvider {
|
|
|
|
if (!mRoutes.containsKey(routeId)) return null;
|
|
|
|
- return sessionController().getFlingingController();
|
|
+ return null;
|
|
}
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -4,11 +4,6 @@
|
|
|
|
package org.chromium.components.media_router.caf.remoting;
|
|
|
|
-import com.google.android.gms.cast.MediaInfo;
|
|
-import com.google.android.gms.cast.MediaStatus;
|
|
-import com.google.android.gms.cast.framework.media.RemoteMediaClient;
|
|
-import com.google.android.gms.common.api.Result;
|
|
-
|
|
import org.chromium.base.Log;
|
|
import org.chromium.components.media_router.FlingingController;
|
|
import org.chromium.components.media_router.MediaController;
|
|
@@ -69,14 +64,6 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
|
|
/** Starts loading the media URL, from the given position. */
|
|
public void load(long position) {
|
|
if (!mSessionController.isConnected()) return;
|
|
-
|
|
- mLoaded = true;
|
|
-
|
|
- MediaInfo mediaInfo = new MediaInfo.Builder(mMediaUrl)
|
|
- .setContentType("*/*")
|
|
- .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
|
|
- .build();
|
|
- mSessionController.getRemoteMediaClient().load(mediaInfo, /* autoplay= */ true, position);
|
|
}
|
|
|
|
////////////////////////////////////////////
|
|
@@ -91,89 +78,28 @@ public class FlingingControllerAdapter implements FlingingController, MediaContr
|
|
load(/* position= */ 0);
|
|
return;
|
|
}
|
|
-
|
|
- mSessionController.getRemoteMediaClient().play().setResultCallback(
|
|
- this::onMediaCommandResult);
|
|
}
|
|
|
|
@Override
|
|
public void pause() {
|
|
if (!mSessionController.isConnected()) return;
|
|
- mSessionController.getRemoteMediaClient().pause().setResultCallback(
|
|
- this::onMediaCommandResult);
|
|
}
|
|
|
|
@Override
|
|
public void setMute(boolean mute) {
|
|
if (!mSessionController.isConnected()) return;
|
|
- mSessionController.getRemoteMediaClient().setStreamMute(mute).setResultCallback(
|
|
- this::onMediaCommandResult);
|
|
}
|
|
|
|
@Override
|
|
public void setVolume(double volume) {
|
|
if (!mSessionController.isConnected()) return;
|
|
- mSessionController.getRemoteMediaClient().setStreamVolume(volume).setResultCallback(
|
|
- this::onMediaCommandResult);
|
|
}
|
|
|
|
@Override
|
|
public void seek(long position) {
|
|
- if (!mSessionController.isConnected()) return;
|
|
-
|
|
- if (!mLoaded) {
|
|
- load(position);
|
|
- return;
|
|
- }
|
|
-
|
|
- mSessionController.getRemoteMediaClient().seek(position).setResultCallback(
|
|
- this::onMediaCommandResult);
|
|
- mStreamPositionExtrapolator.onSeek(position);
|
|
}
|
|
|
|
////////////////////////////////////////////
|
|
// MediaController implementation end
|
|
////////////////////////////////////////////
|
|
-
|
|
- public void onStatusUpdated() {
|
|
- if (mMediaStatusObserver == null) return;
|
|
-
|
|
- RemoteMediaClient remoteMediaClient = mSessionController.getRemoteMediaClient();
|
|
-
|
|
- MediaStatus mediaStatus = remoteMediaClient.getMediaStatus();
|
|
- if (mediaStatus != null) {
|
|
- mHasEverReceivedValidMediaSession = true;
|
|
- if (mediaStatus.getPlayerState() == MediaStatus.PLAYER_STATE_IDLE
|
|
- && mediaStatus.getIdleReason() == MediaStatus.IDLE_REASON_FINISHED) {
|
|
- mLoaded = false;
|
|
- mStreamPositionExtrapolator.onFinish();
|
|
- } else {
|
|
- mStreamPositionExtrapolator.update(remoteMediaClient.getStreamDuration(),
|
|
- remoteMediaClient.getApproximateStreamPosition(),
|
|
- remoteMediaClient.isPlaying(), mediaStatus.getPlaybackRate());
|
|
- }
|
|
-
|
|
- mMediaStatusObserver.onMediaStatusUpdate(new MediaStatusBridge(mediaStatus));
|
|
-
|
|
- } else if (mHasEverReceivedValidMediaSession) {
|
|
- // We can receive a null |mediaStatus| while we are in the process of loading the video.
|
|
- // We should wait until we receive one valid media status before considering the video
|
|
- // unloaded. Otherwise, the first call to seek or play will reload the video.
|
|
- // See b/144325733.
|
|
- mLoaded = false;
|
|
- mStreamPositionExtrapolator.clear();
|
|
- }
|
|
- }
|
|
-
|
|
- private void onMediaCommandResult(Result result) {
|
|
- // When multiple API calls are made in quick succession, "Results have already been set"
|
|
- // IllegalStateExceptions might be thrown from GMS code. We prefer to catch the exception
|
|
- // and noop it, than to crash. This might lead to some API calls never getting their
|
|
- // onResult() called, so we should not rely on onResult() being called for every API call.
|
|
- // See https://crbug.com/853923.
|
|
- if (!result.getStatus().isSuccess()) {
|
|
- Log.e(TAG, "Error when sending command. Status code: %d",
|
|
- result.getStatus().getStatusCode());
|
|
- }
|
|
- }
|
|
}
|
|
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
|
|
--- 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
|
|
@@ -13,8 +13,6 @@ import android.util.Base64;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.mediarouter.media.MediaRouteSelector;
|
|
|
|
-import com.google.android.gms.cast.CastMediaControlIntent;
|
|
-
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.Log;
|
|
import org.chromium.components.media_router.MediaSource;
|
|
@@ -84,9 +82,7 @@ public class RemotingMediaSource implements MediaSource {
|
|
*/
|
|
@Override
|
|
public MediaRouteSelector buildRouteSelector() {
|
|
- return new MediaRouteSelector.Builder()
|
|
- .addControlCategory(CastMediaControlIntent.categoryForCast(getApplicationId()))
|
|
- .build();
|
|
+ return null;
|
|
}
|
|
|
|
/**
|
|
@@ -113,7 +109,7 @@ public class RemotingMediaSource implements MediaSource {
|
|
|
|
sApplicationId = (customAppId != null && !customAppId.isEmpty())
|
|
? customAppId
|
|
- : CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID;
|
|
+ : "CC1AD845"; /*DEFAULT_MEDIA_RECEIVER_APPLICATION_ID*/
|
|
}
|
|
|
|
return sApplicationId;
|
|
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
|
|
--- 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
|
|
@@ -4,8 +4,6 @@
|
|
|
|
package org.chromium.components.media_router.caf.remoting;
|
|
|
|
-import com.google.android.gms.cast.framework.CastSession;
|
|
-
|
|
import org.chromium.base.Log;
|
|
import org.chromium.components.media_router.CastSessionUtil;
|
|
import org.chromium.components.media_router.caf.BaseNotificationController;
|
|
@@ -33,19 +31,6 @@ public class RemotingSessionController extends BaseSessionController {
|
|
sInstance = new WeakReference<>(this);
|
|
}
|
|
|
|
- @Override
|
|
- public void attachToCastSession(CastSession session) {
|
|
- super.attachToCastSession(session);
|
|
-
|
|
- try {
|
|
- getSession().setMessageReceivedCallbacks(
|
|
- CastSessionUtil.MEDIA_NAMESPACE, this::onMessageReceived);
|
|
- } catch (Exception e) {
|
|
- Log.e(TAG, "Failed to register namespace listener for %s",
|
|
- CastSessionUtil.MEDIA_NAMESPACE, e);
|
|
- }
|
|
- }
|
|
-
|
|
@Override
|
|
public void onSessionStarted() {
|
|
super.onSessionStarted();
|
|
@@ -53,17 +38,6 @@ public class RemotingSessionController extends BaseSessionController {
|
|
mFlingingControllerAdapter = new FlingingControllerAdapter(this, source.getMediaUrl());
|
|
}
|
|
|
|
- @Override
|
|
- protected void onStatusUpdated() {
|
|
- mFlingingControllerAdapter.onStatusUpdated();
|
|
- super.onStatusUpdated();
|
|
- }
|
|
-
|
|
- @Override
|
|
- public FlingingControllerAdapter getFlingingController() {
|
|
- return mFlingingControllerAdapter;
|
|
- }
|
|
-
|
|
@Override
|
|
public BaseNotificationController getNotificationController() {
|
|
return mNotificationController;
|
|
diff --git a/components/media_router/test/android/cast_emulator/BUILD.gn b/components/media_router/test/android/cast_emulator/BUILD.gn
|
|
--- a/components/media_router/test/android/cast_emulator/BUILD.gn
|
|
+++ b/components/media_router/test/android/cast_emulator/BUILD.gn
|
|
@@ -20,7 +20,6 @@ android_library("cast_emulator_java") {
|
|
"src/org/chromium/components/media_router/cast_emulator/router/DummyRoutePublisher.java",
|
|
]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_cast_java",
|
|
"//base:base_java",
|
|
"//third_party/android_deps:android_support_v7_appcompat_java",
|
|
"//third_party/androidx:androidx_mediarouter_mediarouter_java",
|
|
diff --git a/components/module_installer/android/BUILD.gn b/components/module_installer/android/BUILD.gn
|
|
--- a/components/module_installer/android/BUILD.gn
|
|
+++ b/components/module_installer/android/BUILD.gn
|
|
@@ -34,7 +34,6 @@ android_library("module_installer_java") {
|
|
deps = [
|
|
"//base:base_java",
|
|
"//components/crash/android:java",
|
|
- "//third_party/android_deps:com_google_android_play_core_java",
|
|
"//third_party/androidx:androidx_annotation_annotation_java",
|
|
]
|
|
|
|
@@ -58,7 +57,6 @@ junit_binary("module_installer_junit_tests") {
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
- "//third_party/android_deps:com_google_android_play_core_java",
|
|
"//third_party/hamcrest:hamcrest_java",
|
|
]
|
|
}
|
|
diff --git a/components/signin/public/android/BUILD.gn b/components/signin/public/android/BUILD.gn
|
|
--- a/components/signin/public/android/BUILD.gn
|
|
+++ b/components/signin/public/android/BUILD.gn
|
|
@@ -2,8 +2,6 @@ import("//build/config/android/rules.gni")
|
|
|
|
android_library("java") {
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_auth_base_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
"//base:base_java",
|
|
"//components/externalauth/android:java",
|
|
"//net/android:net_java",
|
|
@@ -27,7 +25,6 @@ android_library("java") {
|
|
"java/src/org/chromium/components/signin/AccountManagerFacade.java",
|
|
"java/src/org/chromium/components/signin/AccountManagerFacadeImpl.java",
|
|
"java/src/org/chromium/components/signin/AccountManagerFacadeProvider.java",
|
|
- "java/src/org/chromium/components/signin/AccountRenameChecker.java",
|
|
"java/src/org/chromium/components/signin/AccountRestrictionPatternReceiver.java",
|
|
"java/src/org/chromium/components/signin/AccountUtils.java",
|
|
"java/src/org/chromium/components/signin/AccountsChangeObserver.java",
|
|
@@ -161,7 +158,6 @@ java_library("junit") {
|
|
deps = [
|
|
":java",
|
|
":signin_java_test_support",
|
|
- "$google_play_services_package:google_play_services_auth_base_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/BUILD.gn
|
|
--- a/components/webauthn/android/BUILD.gn
|
|
+++ b/components/webauthn/android/BUILD.gn
|
|
@@ -6,7 +6,6 @@ import("//build/config/android/rules.gni")
|
|
|
|
generate_jni("jni_headers") {
|
|
sources = [
|
|
- "java/src/org/chromium/components/webauthn/Fido2Api.java",
|
|
"java/src/org/chromium/components/webauthn/InternalAuthenticator.java",
|
|
]
|
|
}
|
|
@@ -15,11 +14,6 @@ android_library("java") {
|
|
sources = [
|
|
"java/src/org/chromium/components/webauthn/AuthenticatorFactory.java",
|
|
"java/src/org/chromium/components/webauthn/AuthenticatorImpl.java",
|
|
- "java/src/org/chromium/components/webauthn/Fido2Api.java",
|
|
- "java/src/org/chromium/components/webauthn/Fido2ApiCall.java",
|
|
- "java/src/org/chromium/components/webauthn/Fido2ApiHandler.java",
|
|
- "java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java",
|
|
- "java/src/org/chromium/components/webauthn/FidoErrorResponseCallback.java",
|
|
"java/src/org/chromium/components/webauthn/GetAssertionResponseCallback.java",
|
|
"java/src/org/chromium/components/webauthn/InternalAuthenticator.java",
|
|
"java/src/org/chromium/components/webauthn/IsUvpaaResponseCallback.java",
|
|
@@ -29,9 +23,6 @@ android_library("java") {
|
|
]
|
|
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//base:jni_java",
|
|
"//components/externalauth/android:java",
|
|
@@ -65,7 +56,6 @@ android_library("test_support_java") {
|
|
|
|
source_set("android") {
|
|
sources = [
|
|
- "fido2api_native_android.cc",
|
|
"internal_authenticator_android.cc",
|
|
"internal_authenticator_android.h",
|
|
]
|
|
diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
|
|
--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
|
|
+++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java
|
|
@@ -116,18 +116,7 @@ public final class AuthenticatorImpl implements Authenticator {
|
|
|
|
mMakeCredentialCallback = callback;
|
|
mIsOperationPending = true;
|
|
- Context context = ContextUtils.getApplicationContext();
|
|
- if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
|
|
- < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
|
|
onError(AuthenticatorStatus.NOT_IMPLEMENTED);
|
|
- return;
|
|
- }
|
|
-
|
|
- Fido2ApiHandler.getInstance().makeCredential(options, mIntentSender, mRenderFrameHost,
|
|
- mOrigin, mSupportLevel,
|
|
- (status, response)
|
|
- -> onRegisterResponse(status, response),
|
|
- status -> onError(status));
|
|
}
|
|
|
|
@Override
|
|
@@ -140,17 +129,7 @@ public final class AuthenticatorImpl implements Authenticator {
|
|
|
|
mGetAssertionCallback = callback;
|
|
mIsOperationPending = true;
|
|
- Context context = ContextUtils.getApplicationContext();
|
|
-
|
|
- if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
|
|
- < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
|
|
onError(AuthenticatorStatus.NOT_IMPLEMENTED);
|
|
- return;
|
|
- }
|
|
-
|
|
- Fido2ApiHandler.getInstance().getAssertion(options, mIntentSender, mRenderFrameHost,
|
|
- mOrigin, mPayment, mSupportLevel,
|
|
- (status, response) -> onSignResponse(status, response), status -> onError(status));
|
|
}
|
|
|
|
@Override
|
|
@@ -170,16 +149,7 @@ public final class AuthenticatorImpl implements Authenticator {
|
|
return;
|
|
}
|
|
|
|
- if (PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME)
|
|
- < Fido2ApiHandler.GMSCORE_MIN_VERSION) {
|
|
decoratedCallback.call(false);
|
|
- return;
|
|
- }
|
|
-
|
|
- mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(decoratedCallback);
|
|
- Fido2ApiHandler.getInstance().isUserVerifyingPlatformAuthenticatorAvailable(mIntentSender,
|
|
- mRenderFrameHost, mSupportLevel,
|
|
- isUvpaa -> onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa));
|
|
}
|
|
|
|
@Override
|
|
diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc
|
|
--- a/content/browser/push_messaging/push_messaging_manager.cc
|
|
+++ b/content/browser/push_messaging/push_messaging_manager.cc
|
|
@@ -787,7 +787,7 @@ void PushMessagingManager::GetSubscriptionInfo(
|
|
}
|
|
|
|
PushMessagingService* PushMessagingManager::GetService() {
|
|
- return render_process_host_.GetBrowserContext()->GetPushMessagingService();
|
|
+ return nullptr;
|
|
}
|
|
|
|
} // namespace content
|
|
diff --git a/content/public/android/BUILD.gn b/content/public/android/BUILD.gn
|
|
--- a/content/public/android/BUILD.gn
|
|
+++ b/content/public/android/BUILD.gn
|
|
@@ -136,10 +136,6 @@ android_library("content_main_dex_java") {
|
|
android_library("content_full_java") {
|
|
deps = [
|
|
":content_main_dex_java",
|
|
- "$google_play_services_package:google_play_services_auth_api_phone_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//build:chromeos_buildflags",
|
|
"//components/download/public/common:public_java",
|
|
diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc
|
|
--- a/content/public/common/content_features.cc
|
|
+++ b/content/public/common/content_features.cc
|
|
@@ -1093,8 +1093,8 @@ const base::Feature kWebAssemblyTrapHandler {
|
|
// Controls whether CTAP2 devices can communicate via the WebAuthentication API
|
|
// using pairingless BLE protocol.
|
|
// https://w3c.github.io/webauthn
|
|
-const base::Feature kWebAuthCable{"WebAuthenticationCable",
|
|
- base::FEATURE_ENABLED_BY_DEFAULT};
|
|
+const base::Feature kWebAuthCable{"WebAuthenticationCable", // disabled in Bromite
|
|
+ base::FEATURE_DISABLED_BY_DEFAULT};
|
|
|
|
// Controls whether WebAuthn conditional UI requests are supported.
|
|
const base::Feature kWebAuthConditionalUI{"WebAuthenticationConditionalUI",
|
|
diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
|
|
--- a/content/test/BUILD.gn
|
|
+++ b/content/test/BUILD.gn
|
|
@@ -2960,10 +2960,6 @@ if (is_android) {
|
|
testonly = true
|
|
sources = content_java_sources_needing_jni
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_auth_api_phone_java",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_tasks_java",
|
|
"//base:base_java",
|
|
"//content/public/android:content_java",
|
|
"//ui/android:ui_full_java",
|
|
diff --git a/device/BUILD.gn b/device/BUILD.gn
|
|
--- a/device/BUILD.gn
|
|
+++ b/device/BUILD.gn
|
|
@@ -452,9 +452,6 @@ if (is_android) {
|
|
"gamepad/android/junit/src/org/chromium/device/gamepad/GamepadMappingsTest.java",
|
|
]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_location_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
diff --git a/device/fido/features.cc b/device/fido/features.cc
|
|
--- a/device/fido/features.cc
|
|
+++ b/device/fido/features.cc
|
|
@@ -22,8 +22,8 @@ const base::Feature kWebAuthUseNativeWinApi{"WebAuthenticationUseNativeWinApi",
|
|
extern const base::Feature kWebAuthCableSecondFactor{
|
|
"WebAuthenticationCableSecondFactor", base::FEATURE_ENABLED_BY_DEFAULT};
|
|
|
|
-extern const base::Feature kWebAuthPhoneSupport{
|
|
- "WebAuthenticationPhoneSupport", base::FEATURE_ENABLED_BY_DEFAULT};
|
|
+extern const base::Feature kWebAuthPhoneSupport{ // disabled by default in Bromite
|
|
+ "WebAuthenticationPhoneSupport", base::FEATURE_DISABLED_BY_DEFAULT}; // ^
|
|
|
|
extern const base::Feature kWebAuthCableDisco{
|
|
"WebAuthenticationCableDisco", base::FEATURE_DISABLED_BY_DEFAULT};
|
|
diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni
|
|
--- a/remoting/android/client_java_tmpl.gni
|
|
+++ b/remoting/android/client_java_tmpl.gni
|
|
@@ -104,9 +104,6 @@ template("remoting_android_client_java_tmpl") {
|
|
|
|
if (defined(invoker.play_services_package)) {
|
|
deps += [
|
|
- "${invoker.play_services_package}:google_play_services_auth_base_java",
|
|
- "${invoker.play_services_package}:google_play_services_base_java",
|
|
- "${invoker.play_services_package}:google_play_services_basement_java",
|
|
]
|
|
}
|
|
|
|
diff --git a/services/BUILD.gn b/services/BUILD.gn
|
|
--- a/services/BUILD.gn
|
|
+++ b/services/BUILD.gn
|
|
@@ -117,11 +117,6 @@ if (is_android) {
|
|
"shape_detection/android/junit/src/org/chromium/shape_detection/BitmapUtilsTest.java",
|
|
]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_location_java",
|
|
- "$google_play_services_package:google_play_services_vision_common_java",
|
|
- "$google_play_services_package:google_play_services_vision_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base:base_junit_test_support",
|
|
@@ -150,10 +145,6 @@ if (is_android) {
|
|
"shape_detection/android/javatests/src/org/chromium/shape_detection/TextDetectionImplTest.java",
|
|
]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_vision_common_java",
|
|
- "$google_play_services_package:google_play_services_vision_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//mojo/public/java:base_java",
|
|
diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/BUILD.gn
|
|
--- a/services/device/geolocation/BUILD.gn
|
|
+++ b/services/device/geolocation/BUILD.gn
|
|
@@ -163,9 +163,6 @@ if (is_android) {
|
|
|
|
deps = [
|
|
":geolocation_jni_headers",
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_location_java",
|
|
"//base:base_java",
|
|
"//components/location/android:location_java",
|
|
"//services/device/public/java:geolocation_java",
|
|
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
|
|
--- a/services/shape_detection/BUILD.gn
|
|
+++ b/services/shape_detection/BUILD.gn
|
|
@@ -115,10 +115,6 @@ if (is_android) {
|
|
]
|
|
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_base_java",
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
- "$google_play_services_package:google_play_services_vision_common_java",
|
|
- "$google_play_services_package:google_play_services_vision_java",
|
|
"//base:base_java",
|
|
"//mojo/public/java:base_java",
|
|
"//mojo/public/java:bindings_java",
|
|
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
|
|
--- a/third_party/android_deps/BUILD.gn
|
|
+++ b/third_party/android_deps/BUILD.gn
|
|
@@ -68,7 +68,6 @@ if (!limit_android_deps) {
|
|
":org_robolectric_shadowapi_java",
|
|
":org_robolectric_shadows_framework_java",
|
|
":org_robolectric_shadows_multidex_java",
|
|
- ":org_robolectric_shadows_playservices_java",
|
|
":org_robolectric_utils_java",
|
|
":org_robolectric_utils_reflector_java",
|
|
|
|
@@ -87,7 +86,7 @@ if (!limit_android_deps) {
|
|
|
|
android_library("chromium_play_services_availability_java") {
|
|
sources = [ "util/org/chromium/gms/ChromiumPlayServicesAvailability.java" ]
|
|
- deps = [ "$google_play_services_package:google_play_services_base_java" ]
|
|
+ deps = [ ]
|
|
}
|
|
|
|
android_library("chromium_play_services_availability_shadows_java") {
|
|
@@ -987,210 +986,6 @@ if (!limit_android_deps) {
|
|
resource_overlay = true
|
|
}
|
|
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_auth_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_auth/play-services-auth-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info"
|
|
- deps = [
|
|
- ":google_play_services_auth_api_phone_java",
|
|
- ":google_play_services_auth_base_java",
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_fragment_fragment_java",
|
|
- "//third_party/androidx:androidx_loader_loader_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_auth_api_phone_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-17.5.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_auth_base_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_auth_base/play-services-auth-base-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_base_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_base/play-services-base-17.5.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info"
|
|
- deps = [
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_fragment_fragment_java",
|
|
- ]
|
|
- bytecode_rewriter_target =
|
|
- "//build/android/bytecode:fragment_activity_replacer"
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_basement_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_basement/play-services-basement-17.5.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info"
|
|
- deps = [
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_fragment_fragment_java",
|
|
- ]
|
|
-
|
|
- jar_excluded_patterns = []
|
|
- if (!enable_java_asserts) {
|
|
- # Omit the file since we use our own copy.
|
|
- jar_excluded_patterns +=
|
|
- [ "com/google/android/gms/common/internal/Preconditions.class" ]
|
|
- deps += [ "//third_party/android_deps/local_modifications/preconditions:gms_stub_preconditions_java" ]
|
|
- }
|
|
-
|
|
- # https://crbug.com/989505
|
|
- jar_excluded_patterns += [ "META-INF/proguard/*" ]
|
|
- input_jars_paths = [ "$android_sdk/optional/org.apache.http.legacy.jar" ]
|
|
- bytecode_rewriter_target =
|
|
- "//build/android/bytecode:fragment_activity_replacer"
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_cast_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_cast/play-services-cast-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_flags_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_mediarouter_mediarouter_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_cast_framework_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_cast_java",
|
|
- "//third_party/androidx:androidx_appcompat_appcompat_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_fragment_fragment_java",
|
|
- "//third_party/androidx:androidx_media_media_java",
|
|
- "//third_party/androidx:androidx_mediarouter_mediarouter_java",
|
|
- "//third_party/androidx:androidx_recyclerview_recyclerview_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_fido_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_fido/play-services-fido-19.0.0-beta.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_gcm_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_iid_java",
|
|
- ":google_play_services_stats_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_iid_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_iid/play-services-iid-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_stats_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_instantapps_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_instantapps/play-services-instantapps-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_location_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_location/play-services-location-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_places_placereport_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_tasks_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_tasks/play-services-tasks-17.2.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info"
|
|
- deps = [ ":google_play_services_basement_java" ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_vision_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_vision/play-services-vision-18.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_vision_common_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_vision_common_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_vision_common/play-services-vision-common-18.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info"
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_clearcut_java",
|
|
- ":google_play_services_flags_java",
|
|
- ":google_play_services_phenotype_java",
|
|
- ]
|
|
- }
|
|
-
|
|
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
android_aar_prebuilt("com_google_android_material_material_java") {
|
|
aar_path =
|
|
@@ -1236,60 +1031,6 @@ if (!limit_android_deps) {
|
|
]
|
|
}
|
|
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("com_google_android_play_core_java") {
|
|
- aar_path = "libs/com_google_android_play_core/core-1.10.0.aar"
|
|
- info_path =
|
|
- "libs/com_google_android_play_core/com_google_android_play_core.info"
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_iid_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_iid/firebase-iid-21.0.1.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_iid/com_google_firebase_firebase_iid.info"
|
|
- deps = [
|
|
- ":google_firebase_firebase_common_java",
|
|
- ":google_firebase_firebase_components_java",
|
|
- ":google_firebase_firebase_iid_interop_java",
|
|
- ":google_firebase_firebase_installations_interop_java",
|
|
- ":google_firebase_firebase_installations_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_cloud_messaging_java",
|
|
- ":google_play_services_stats_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_messaging_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_messaging/firebase-messaging-21.0.1.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_messaging/com_google_firebase_firebase_messaging.info"
|
|
- deps = [
|
|
- ":google_android_datatransport_transport_api_java",
|
|
- ":google_firebase_firebase_common_java",
|
|
- ":google_firebase_firebase_components_java",
|
|
- ":google_firebase_firebase_encoders_java",
|
|
- ":google_firebase_firebase_encoders_json_java",
|
|
- ":google_firebase_firebase_iid_java",
|
|
- ":google_firebase_firebase_installations_interop_java",
|
|
- ":google_firebase_firebase_installations_java",
|
|
- ":google_firebase_firebase_measurement_connector_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_cloud_messaging_java",
|
|
- ":google_play_services_stats_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_collection_collection_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- ]
|
|
-
|
|
- # We removed the datatransport dependency to reduce binary size.
|
|
- # The library works without it as it's only used for logging.
|
|
- enable_bytecode_checks = false
|
|
- }
|
|
-
|
|
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
java_prebuilt("com_google_flatbuffers_flatbuffers_java_java") {
|
|
jar_path = "libs/com_google_flatbuffers_flatbuffers_java/flatbuffers-java-2.0.3.jar"
|
|
@@ -1461,19 +1202,6 @@ if (!limit_android_deps) {
|
|
deps += [ ":com_android_support_multidex_java" ]
|
|
}
|
|
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- java_prebuilt("org_robolectric_shadows_playservices_java") {
|
|
- jar_path = "libs/org_robolectric_shadows_playservices/shadows-playservices-4.7.3.jar"
|
|
- output_name = "org_robolectric_shadows_playservices"
|
|
- enable_bytecode_checks = false
|
|
- testonly = true
|
|
- deps = [
|
|
- ":com_google_guava_guava_java",
|
|
- ":org_robolectric_annotations_java",
|
|
- ]
|
|
- bypass_platform_checks = true
|
|
- }
|
|
-
|
|
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
java_prebuilt("org_robolectric_utils_java") {
|
|
jar_path = "libs/org_robolectric_utils/utils-4.7.3.jar"
|
|
@@ -1820,272 +1548,6 @@ if (!limit_android_deps) {
|
|
deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
|
|
}
|
|
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_clearcut_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_clearcut/play-services-clearcut-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_clearcut/com_google_android_gms_play_services_clearcut.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_phenotype_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_cloud_messaging_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_cloud_messaging/play-services-cloud-messaging-16.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_cloud_messaging/com_google_android_gms_play_services_cloud_messaging.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_flags_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_flags/play-services-flags-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_flags/com_google_android_gms_play_services_flags.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_phenotype_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_phenotype/play-services-phenotype-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_phenotype/com_google_android_gms_play_services_phenotype.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- "//third_party/androidx:androidx_core_core_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_places_placereport_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_places_placereport/play-services-places-placereport-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_places_placereport/com_google_android_gms_play_services_places_placereport.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [ ":google_play_services_basement_java" ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_play_services_stats_java") {
|
|
- aar_path = "libs/com_google_android_gms_play_services_stats/play-services-stats-17.0.0.aar"
|
|
- info_path = "libs/com_google_android_gms_play_services_stats/com_google_android_gms_play_services_stats.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_basement_java",
|
|
- "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- java_prebuilt("google_firebase_firebase_annotations_java") {
|
|
- jar_path = "libs/com_google_firebase_firebase_annotations/firebase-annotations-16.0.0.jar"
|
|
- output_name = "com_google_firebase_firebase_annotations"
|
|
- supports_android = true
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_common_java") {
|
|
- aar_path =
|
|
- "libs/com_google_firebase_firebase_common/firebase-common-19.5.0.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_common/com_google_firebase_firebase_common.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_firebase_firebase_components_java",
|
|
- ":google_play_services_basement_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
-
|
|
- # Ignore missing kotlin.KotlinVersion definition in
|
|
- # com.google.firebase.platforminfo.KotlinDetector.
|
|
- enable_bytecode_checks = false
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_components_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_components/firebase-components-16.1.0.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_components/com_google_firebase_firebase_components.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_firebase_firebase_annotations_java",
|
|
- "//third_party/androidx:androidx_annotation_annotation_java",
|
|
- ]
|
|
-
|
|
- # Can't find com.google.firebase.components.Component$ComponentType.
|
|
- enable_bytecode_checks = false
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- java_prebuilt("google_firebase_firebase_encoders_java") {
|
|
- jar_path = "libs/com_google_firebase_firebase_encoders/firebase-encoders-16.1.0.jar"
|
|
- output_name = "com_google_firebase_firebase_encoders"
|
|
- supports_android = true
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_encoders_json_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_encoders_json/firebase-encoders-json-17.1.0.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_encoders_json/com_google_firebase_firebase_encoders_json.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_firebase_firebase_encoders_java",
|
|
- "//third_party/androidx:androidx_annotation_annotation_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_iid_interop_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_iid_interop/firebase-iid-interop-17.0.0.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_iid_interop/com_google_firebase_firebase_iid_interop.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_play_services_base_java",
|
|
- ":google_play_services_basement_java",
|
|
- ]
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_installations_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_installations/firebase-installations-16.3.5.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_installations/com_google_firebase_firebase_installations.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_firebase_firebase_common_java",
|
|
- ":google_firebase_firebase_components_java",
|
|
- ":google_firebase_firebase_installations_interop_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
-
|
|
- # Can't find com.google.auto.value.AutoValue$Builder.
|
|
- enable_bytecode_checks = false
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_installations_interop_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_installations_interop/firebase-installations-interop-16.0.1.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_installations_interop/com_google_firebase_firebase_installations_interop.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [
|
|
- ":google_firebase_firebase_annotations_java",
|
|
- ":google_play_services_tasks_java",
|
|
- ]
|
|
-
|
|
- # Can't find com.google.auto.value.AutoValue$Builder.
|
|
- enable_bytecode_checks = false
|
|
- }
|
|
-
|
|
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
- android_aar_prebuilt("google_firebase_firebase_measurement_connector_java") {
|
|
- aar_path = "libs/com_google_firebase_firebase_measurement_connector/firebase-measurement-connector-18.0.0.aar"
|
|
- info_path = "libs/com_google_firebase_firebase_measurement_connector/com_google_firebase_firebase_measurement_connector.info"
|
|
-
|
|
- # To remove visibility constraint, add this dependency to
|
|
- # //third_party/android_deps/build.gradle.
|
|
- visibility = [
|
|
- ":*",
|
|
- "//third_party/androidx:*",
|
|
- ]
|
|
- deps = [ ":google_play_services_basement_java" ]
|
|
- }
|
|
-
|
|
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
|
|
java_prebuilt("com_squareup_javawriter_java") {
|
|
jar_path = "libs/com_squareup_javawriter/javawriter-2.1.1.jar"
|
|
diff --git a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn
|
|
--- a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn
|
|
+++ b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn
|
|
@@ -8,7 +8,6 @@ android_library("javatests") {
|
|
testonly = true
|
|
sources = [ "org/chromium/preconditions/PreconditionsTest.java" ]
|
|
deps = [
|
|
- "$google_play_services_package:google_play_services_basement_java",
|
|
"//base:base_java",
|
|
"//base:base_java_test_support",
|
|
"//base/test:test_support_java",
|
|
diff --git a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
--- a/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
+++ b/third_party/android_deps/util/org/chromium/gms/ChromiumPlayServicesAvailability.java
|
|
@@ -5,9 +5,6 @@ package org.chromium.gms;
|
|
|
|
import android.content.Context;
|
|
|
|
-import com.google.android.gms.common.ConnectionResult;
|
|
-import com.google.android.gms.common.GoogleApiAvailability;
|
|
-
|
|
// Refer to go/doubledown-play-services#new-apis for more detail.
|
|
public final class ChromiumPlayServicesAvailability {
|
|
/**
|
|
@@ -30,9 +27,7 @@ public final class ChromiumPlayServicesAvailability {
|
|
* PM/UX.
|
|
*/
|
|
public static boolean isGooglePlayServicesAvailable(final Context context) {
|
|
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
|
- context, GMS_VERSION_NUMBER)
|
|
- == ConnectionResult.SUCCESS;
|
|
+ return false;
|
|
}
|
|
|
|
/**
|
|
@@ -50,7 +45,6 @@ public final class ChromiumPlayServicesAvailability {
|
|
* PM/UX.
|
|
*/
|
|
public static int getGooglePlayServicesConnectionResult(final Context context) {
|
|
- return GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(
|
|
- context, GMS_VERSION_NUMBER);
|
|
+ return 16; // API_UNAVAILABLE
|
|
}
|
|
}
|
|
--
|
|
2.25.1
|