|
@@ -37,7 +37,6 @@ Parts of this patch were developed by csagan5, uazo and others.
|
|
.../inline/InlineUpdateControllerFactory.java | 16 -
|
|
.../inline/InlineUpdateControllerFactory.java | 16 -
|
|
.../inline/PlayInlineUpdateController.java | 226 +-----------
|
|
.../inline/PlayInlineUpdateController.java | 226 +-----------
|
|
.../settings/PasswordSettings.java | 14 -
|
|
.../settings/PasswordSettings.java | 14 -
|
|
- .../services/gcm/GCMBackgroundTask.java | 1 -
|
|
|
|
.../browser/webauth/AuthenticatorImpl.java | 29 +-
|
|
.../browser/webauth/AuthenticatorImpl.java | 29 +-
|
|
.../modules/chrome_feature_modules.gni | 3 -
|
|
.../modules/chrome_feature_modules.gni | 3 -
|
|
.../browser/signin/services/android/BUILD.gn | 1 -
|
|
.../browser/signin/services/android/BUILD.gn | 1 -
|
|
@@ -53,7 +52,6 @@ Parts of this patch were developed by csagan5, uazo and others.
|
|
components/gcm_driver/android/BUILD.gn | 1 -
|
|
components/gcm_driver/android/BUILD.gn | 1 -
|
|
.../gcm_driver/instance_id/android/BUILD.gn | 3 -
|
|
.../gcm_driver/instance_id/android/BUILD.gn | 3 -
|
|
.../instance_id/InstanceIDBridge.java | 49 +--
|
|
.../instance_id/InstanceIDBridge.java | 49 +--
|
|
- .../instance_id/InstanceIDWithSubtype.java | 26 +-
|
|
|
|
.../media_router/browser/android/BUILD.gn | 9 -
|
|
.../media_router/browser/android/BUILD.gn | 9 -
|
|
.../media_router/BrowserMediaRouter.java | 18 +-
|
|
.../media_router/BrowserMediaRouter.java | 18 +-
|
|
.../media_router/CastSessionUtil.java | 35 --
|
|
.../media_router/CastSessionUtil.java | 35 --
|
|
@@ -86,17 +84,12 @@ Parts of this patch were developed by csagan5, uazo and others.
|
|
remoting/android/client_java_tmpl.gni | 3 -
|
|
remoting/android/client_java_tmpl.gni | 3 -
|
|
services/BUILD.gn | 9 -
|
|
services/BUILD.gn | 9 -
|
|
services/device/geolocation/BUILD.gn | 3 -
|
|
services/device/geolocation/BUILD.gn | 3 -
|
|
- .../geolocation/LocationProviderGmsCore.java | 102 +-----
|
|
|
|
services/shape_detection/BUILD.gn | 4 -
|
|
services/shape_detection/BUILD.gn | 4 -
|
|
- .../shape_detection/BarcodeDetectionImpl.java | 114 +-----
|
|
|
|
- .../BarcodeDetectionProviderImpl.java | 31 +-
|
|
|
|
- .../FaceDetectionImplGmsCore.java | 30 +-
|
|
|
|
- .../shape_detection/TextDetectionImpl.java | 24 +-
|
|
|
|
third_party/android_deps/BUILD.gn | 344 +-----------------
|
|
third_party/android_deps/BUILD.gn | 344 +-----------------
|
|
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
|
|
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
|
|
third_party/android_sdk/BUILD.gn | 3 -
|
|
third_party/android_sdk/BUILD.gn | 3 -
|
|
third_party/google_android_play_core/BUILD.gn | 5 -
|
|
third_party/google_android_play_core/BUILD.gn | 5 -
|
|
- 77 files changed, 85 insertions(+), 2686 deletions(-)
|
|
|
|
|
|
+ 70 files changed, 66 insertions(+), 2377 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/BackgroundTaskGcmTaskService.java
|
|
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
|
|
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
|
|
|
|
|
|
@@ -257,7 +250,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
|
|
"java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
|
|
-@@ -1218,10 +1217,6 @@ chrome_java_sources = [
|
|
|
|
|
|
+@@ -1211,10 +1210,6 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.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/send_tab_to_self/SendTabToSelfShareActivity.java",
|
|
"java/src/org/chromium/chrome/browser/services/AccountsChangedReceiver.java",
|
|
"java/src/org/chromium/chrome/browser/services/AccountsChangedReceiver.java",
|
|
@@ -268,7 +261,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
|
|
"java/src/org/chromium/chrome/browser/settings/MainSettings.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/SettingsActivity.java",
|
|
"java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java",
|
|
"java/src/org/chromium/chrome/browser/settings/SettingsLauncherImpl.java",
|
|
-@@ -1509,9 +1504,6 @@ chrome_java_sources = [
|
|
|
|
|
|
+@@ -1472,9 +1467,6 @@ chrome_java_sources = [
|
|
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewBinder.java",
|
|
"java/src/org/chromium/chrome/browser/webapps/addtohomescreen/AddToHomescreenViewBinder.java",
|
|
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
|
|
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorFactory.java",
|
|
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
|
|
"java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java",
|
|
@@ -430,7 +423,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.ContextUtils;
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.base.annotations.CalledByNative;
|
|
import org.chromium.chrome.browser.banners.AppDetailsDelegate;
|
|
import org.chromium.chrome.browser.banners.AppDetailsDelegate;
|
|
-@@ -294,16 +291,7 @@ public abstract class AppHooks {
|
|
|
|
|
|
+@@ -293,16 +290,7 @@ public abstract class AppHooks {
|
|
* same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
|
|
* same as {@link GoogleApiAvailability#isGooglePlayServicesAvailable()}.
|
|
*/
|
|
*/
|
|
public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
|
|
public int isGoogleApiAvailableWithMinApkVersion(int minApkVersion) {
|
|
@@ -1412,17 +1405,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
|
|
}
|
|
}
|
|
|
|
|
|
private Context getStyledContext() {
|
|
private Context getStyledContext() {
|
|
-diff --git a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
|
|
|
---- a/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
|
|
|
-+++ b/chrome/android/java/src/org/chromium/chrome/browser/services/gcm/GCMBackgroundTask.java
|
|
|
|
-@@ -42,7 +42,6 @@ public class GCMBackgroundTask implements BackgroundTask {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-- ChromeGcmListenerServiceImpl.dispatchMessageToDriver(message);
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
--- a/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
+++ b/chrome/android/java/src/org/chromium/chrome/browser/webauth/AuthenticatorImpl.java
|
|
@@ -2282,85 +2264,6 @@ diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/com
|
|
return doBackgroundWork();
|
|
return doBackgroundWork();
|
|
}
|
|
}
|
|
@Override
|
|
@Override
|
|
-diff --git a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
|
|
|
|
---- a/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
|
|
|
|
-+++ b/components/gcm_driver/instance_id/android/java/src/org/chromium/components/gcm_driver/instance_id/InstanceIDWithSubtype.java
|
|
|
|
-@@ -10,8 +10,6 @@ import android.text.TextUtils;
|
|
|
|
-
|
|
|
|
- import androidx.annotation.VisibleForTesting;
|
|
|
|
-
|
|
|
|
--import com.google.android.gms.iid.InstanceID;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.ContextUtils;
|
|
|
|
-
|
|
|
|
- import java.io.IOException;
|
|
|
|
-@@ -26,8 +24,6 @@ public class InstanceIDWithSubtype {
|
|
|
|
- // Must match the private InstanceID.OPTION_SUBTYPE, which is guaranteed to not change.
|
|
|
|
- private static final String OPTION_SUBTYPE = "subtype";
|
|
|
|
-
|
|
|
|
-- private final InstanceID mInstanceID;
|
|
|
|
--
|
|
|
|
- /**
|
|
|
|
- * Cached instances. May be accessed from multiple threads; synchronize on sSubtypeInstancesLock
|
|
|
|
- */
|
|
|
|
-@@ -39,10 +35,6 @@ public class InstanceIDWithSubtype {
|
|
|
|
- @VisibleForTesting
|
|
|
|
- protected static FakeFactory sFakeFactoryForTesting;
|
|
|
|
-
|
|
|
|
-- protected InstanceIDWithSubtype(InstanceID instanceID) {
|
|
|
|
-- mInstanceID = instanceID;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
- /**
|
|
|
|
- * Returns an instance of this class. Unlike {@link InstanceID#getInstance(Context)}, it is not
|
|
|
|
- * a singleton, but instead a different instance will be returned for each {@code subtype}.
|
|
|
|
-@@ -58,11 +50,6 @@ public class InstanceIDWithSubtype {
|
|
|
|
- if (sFakeFactoryForTesting != null) {
|
|
|
|
- existing = sFakeFactoryForTesting.create(subtype);
|
|
|
|
- } else {
|
|
|
|
-- Bundle options = new Bundle();
|
|
|
|
-- options.putCharSequence(OPTION_SUBTYPE, subtype);
|
|
|
|
-- InstanceID instanceID =
|
|
|
|
-- InstanceID.getInstance(ContextUtils.getApplicationContext(), options);
|
|
|
|
-- existing = new InstanceIDWithSubtype(instanceID);
|
|
|
|
- }
|
|
|
|
- sSubtypeInstances.put(subtype, existing);
|
|
|
|
- }
|
|
|
|
-@@ -71,30 +58,25 @@ public class InstanceIDWithSubtype {
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public String getSubtype() {
|
|
|
|
-- return mInstanceID.getSubtype();
|
|
|
|
-+ return "";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public String getId() {
|
|
|
|
-- return mInstanceID.getId();
|
|
|
|
-+ return "";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public long getCreationTime() {
|
|
|
|
-- return mInstanceID.getCreationTime();
|
|
|
|
-+ return 0;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void deleteInstanceID() throws IOException {
|
|
|
|
-- synchronized (sSubtypeInstancesLock) {
|
|
|
|
-- sSubtypeInstances.remove(mInstanceID.getSubtype());
|
|
|
|
-- mInstanceID.deleteInstanceID();
|
|
|
|
-- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void deleteToken(String authorizedEntity, String scope) throws IOException {
|
|
|
|
-- mInstanceID.deleteToken(authorizedEntity, scope);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public String getToken(String authorizedEntity, String scope) throws IOException {
|
|
|
|
-- return mInstanceID.getToken(authorizedEntity, scope);
|
|
|
|
-+ return "";
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- /** Fake subclasses can set {@link #sFakeFactoryForTesting} to an implementation of this. */
|
|
|
|
diff --git a/components/media_router/browser/android/BUILD.gn b/components/media_router/browser/android/BUILD.gn
|
|
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
|
|
--- a/components/media_router/browser/android/BUILD.gn
|
|
+++ b/components/media_router/browser/android/BUILD.gn
|
|
+++ b/components/media_router/browser/android/BUILD.gn
|
|
@@ -4017,155 +3920,6 @@ diff --git a/services/device/geolocation/BUILD.gn b/services/device/geolocation/
|
|
"//base:base_java",
|
|
"//base:base_java",
|
|
"//base:jni_java",
|
|
"//base:jni_java",
|
|
"//components/location/android:location_java",
|
|
"//components/location/android:location_java",
|
|
-diff --git a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
|
|
|
|
---- a/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
|
|
|
|
-+++ b/services/device/geolocation/android/java/src/org/chromium/device/geolocation/LocationProviderGmsCore.java
|
|
|
|
-@@ -8,132 +8,40 @@ import android.content.Context;
|
|
|
|
- import android.location.Location;
|
|
|
|
- import android.os.Bundle;
|
|
|
|
-
|
|
|
|
--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 com.google.android.gms.location.FusedLocationProviderApi;
|
|
|
|
--import com.google.android.gms.location.LocationListener;
|
|
|
|
--import com.google.android.gms.location.LocationRequest;
|
|
|
|
--import com.google.android.gms.location.LocationServices;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.Log;
|
|
|
|
- import org.chromium.base.ThreadUtils;
|
|
|
|
- import org.chromium.components.location.LocationUtils;
|
|
|
|
--import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
|
|
-
|
|
|
|
- /**
|
|
|
|
- * This is a LocationProvider using Google Play Services.
|
|
|
|
- *
|
|
|
|
- * https://developers.google.com/android/reference/com/google/android/gms/location/package-summary
|
|
|
|
- */
|
|
|
|
--public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectionFailedListener,
|
|
|
|
-- LocationListener, LocationProvider {
|
|
|
|
-+public class LocationProviderGmsCore implements LocationProvider {
|
|
|
|
- private static final String TAG = "LocationProvider";
|
|
|
|
-
|
|
|
|
- // Values for the LocationRequest's setInterval for normal and high accuracy, respectively.
|
|
|
|
- private static final long UPDATE_INTERVAL_MS = 1000;
|
|
|
|
- private static final long UPDATE_INTERVAL_FAST_MS = 500;
|
|
|
|
-
|
|
|
|
-- private final GoogleApiClient mGoogleApiClient;
|
|
|
|
-- private FusedLocationProviderApi mLocationProviderApi = LocationServices.FusedLocationApi;
|
|
|
|
--
|
|
|
|
-- private boolean mEnablehighAccuracy;
|
|
|
|
-- private LocationRequest mLocationRequest;
|
|
|
|
--
|
|
|
|
- public static boolean isGooglePlayServicesAvailable(Context context) {
|
|
|
|
-- return ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(context);
|
|
|
|
-+ return false;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- LocationProviderGmsCore(Context context) {
|
|
|
|
- Log.i(TAG, "Google Play Services");
|
|
|
|
-- mGoogleApiClient = new GoogleApiClient.Builder(context)
|
|
|
|
-- .addApi(LocationServices.API)
|
|
|
|
-- .addConnectionCallbacks(this)
|
|
|
|
-- .addOnConnectionFailedListener(this)
|
|
|
|
-- .build();
|
|
|
|
-- assert mGoogleApiClient != null;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- LocationProviderGmsCore(GoogleApiClient client, FusedLocationProviderApi locationApi) {
|
|
|
|
-- mGoogleApiClient = client;
|
|
|
|
-- mLocationProviderApi = locationApi;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- // ConnectionCallbacks implementation
|
|
|
|
-- @Override
|
|
|
|
-- public void onConnected(Bundle connectionHint) {
|
|
|
|
-- ThreadUtils.assertOnUiThread();
|
|
|
|
--
|
|
|
|
-- mLocationRequest = LocationRequest.create();
|
|
|
|
-- if (mEnablehighAccuracy) {
|
|
|
|
-- // With enableHighAccuracy, request a faster update interval and configure the provider
|
|
|
|
-- // for high accuracy mode.
|
|
|
|
-- mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
|
|
|
|
-- .setInterval(UPDATE_INTERVAL_FAST_MS);
|
|
|
|
-- } else {
|
|
|
|
-- // Use balanced mode by default. In this mode, the API will prefer the network provider
|
|
|
|
-- // but may use sensor data (for instance, GPS) if high accuracy is requested by another
|
|
|
|
-- // app.
|
|
|
|
-- //
|
|
|
|
-- // If location is configured for sensors-only then elevate the priority to ensure GPS
|
|
|
|
-- // and other sensors are used.
|
|
|
|
-- if (LocationUtils.getInstance().isSystemLocationSettingSensorsOnly()) {
|
|
|
|
-- mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
|
|
|
|
-- } else {
|
|
|
|
-- mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
|
|
|
|
-- }
|
|
|
|
-- mLocationRequest.setInterval(UPDATE_INTERVAL_MS);
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- final Location location = mLocationProviderApi.getLastLocation(mGoogleApiClient);
|
|
|
|
-- if (location != null) {
|
|
|
|
-- LocationProviderAdapter.onNewLocationAvailable(location);
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- try {
|
|
|
|
-- // Request updates on UI Thread replicating LocationProviderAndroid's behaviour.
|
|
|
|
-- mLocationProviderApi.requestLocationUpdates(
|
|
|
|
-- mGoogleApiClient, mLocationRequest, this, ThreadUtils.getUiThreadLooper());
|
|
|
|
-- } catch (IllegalStateException | SecurityException e) {
|
|
|
|
-- // IllegalStateException is thrown "If this method is executed in a thread that has not
|
|
|
|
-- // called Looper.prepare()". SecurityException is thrown if there is no permission, see
|
|
|
|
-- // https://crbug.com/731271.
|
|
|
|
-- Log.e(TAG, " mLocationProviderApi.requestLocationUpdates() " + e);
|
|
|
|
-- LocationProviderAdapter.newErrorAvailable(
|
|
|
|
-- "Failed to request location updates: " + e.toString());
|
|
|
|
-- assert false;
|
|
|
|
-- }
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- @Override
|
|
|
|
-- public void onConnectionSuspended(int cause) {}
|
|
|
|
--
|
|
|
|
-- // OnConnectionFailedListener implementation
|
|
|
|
-- @Override
|
|
|
|
-- public void onConnectionFailed(ConnectionResult result) {
|
|
|
|
-- LocationProviderAdapter.newErrorAvailable(
|
|
|
|
-- "Failed to connect to Google Play Services: " + result.toString());
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // LocationProvider implementation
|
|
|
|
- @Override
|
|
|
|
- public void start(boolean enableHighAccuracy) {
|
|
|
|
- ThreadUtils.assertOnUiThread();
|
|
|
|
-- if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect();
|
|
|
|
--
|
|
|
|
- mEnablehighAccuracy = enableHighAccuracy;
|
|
|
|
-- mGoogleApiClient.connect(); // Should return via onConnected().
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void stop() {
|
|
|
|
- ThreadUtils.assertOnUiThread();
|
|
|
|
-- if (!mGoogleApiClient.isConnected()) return;
|
|
|
|
--
|
|
|
|
-- mLocationProviderApi.removeLocationUpdates(mGoogleApiClient, this);
|
|
|
|
--
|
|
|
|
-- mGoogleApiClient.disconnect();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -142,10 +50,4 @@ public class LocationProviderGmsCore implements ConnectionCallbacks, OnConnectio
|
|
|
|
- if (mGoogleApiClient == null) return false;
|
|
|
|
- return mGoogleApiClient.isConnecting() || mGoogleApiClient.isConnected();
|
|
|
|
- }
|
|
|
|
--
|
|
|
|
-- // LocationListener implementation
|
|
|
|
-- @Override
|
|
|
|
-- public void onLocationChanged(Location location) {
|
|
|
|
-- LocationProviderAdapter.onNewLocationAvailable(location);
|
|
|
|
-- }
|
|
|
|
- }
|
|
|
|
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
|
|
diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.gn
|
|
--- a/services/shape_detection/BUILD.gn
|
|
--- a/services/shape_detection/BUILD.gn
|
|
+++ b/services/shape_detection/BUILD.gn
|
|
+++ b/services/shape_detection/BUILD.gn
|
|
@@ -4180,351 +3934,6 @@ diff --git a/services/shape_detection/BUILD.gn b/services/shape_detection/BUILD.
|
|
"//base:base_java",
|
|
"//base:base_java",
|
|
"//mojo/public/java:base_java",
|
|
"//mojo/public/java:base_java",
|
|
"//mojo/public/java:bindings_java",
|
|
"//mojo/public/java:bindings_java",
|
|
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
|
|
|
|
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
|
|
|
|
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionImpl.java
|
|
|
|
-@@ -8,10 +8,6 @@ import android.graphics.Point;
|
|
|
|
- import android.graphics.Rect;
|
|
|
|
- import android.util.SparseArray;
|
|
|
|
-
|
|
|
|
--import com.google.android.gms.vision.Frame;
|
|
|
|
--import com.google.android.gms.vision.barcode.Barcode;
|
|
|
|
--import com.google.android.gms.vision.barcode.BarcodeDetector;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.ContextUtils;
|
|
|
|
- import org.chromium.base.Log;
|
|
|
|
- import org.chromium.gfx.mojom.PointF;
|
|
|
|
-@@ -28,50 +24,7 @@ import org.chromium.shape_detection.mojom.BarcodeFormat;
|
|
|
|
- public class BarcodeDetectionImpl implements BarcodeDetection {
|
|
|
|
- private static final String TAG = "BarcodeDetectionImpl";
|
|
|
|
-
|
|
|
|
-- private BarcodeDetector mBarcodeDetector;
|
|
|
|
--
|
|
|
|
- public BarcodeDetectionImpl(BarcodeDetectorOptions options) {
|
|
|
|
-- int formats = Barcode.ALL_FORMATS;
|
|
|
|
-- if (options.formats != null && options.formats.length > 0) {
|
|
|
|
-- formats = 0;
|
|
|
|
-- // Keep this list in sync with the constants defined in
|
|
|
|
-- // com.google.android.gms.vision.barcode.Barcode and the list of
|
|
|
|
-- // supported formats in BarcodeDetectionProviderImpl.
|
|
|
|
-- for (int i = 0; i < options.formats.length; ++i) {
|
|
|
|
-- if (options.formats[i] == BarcodeFormat.AZTEC) {
|
|
|
|
-- formats |= Barcode.AZTEC;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.CODE_128) {
|
|
|
|
-- formats |= Barcode.CODE_128;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.CODE_39) {
|
|
|
|
-- formats |= Barcode.CODE_39;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.CODE_93) {
|
|
|
|
-- formats |= Barcode.CODE_93;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.CODABAR) {
|
|
|
|
-- formats |= Barcode.CODABAR;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.DATA_MATRIX) {
|
|
|
|
-- formats |= Barcode.DATA_MATRIX;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.EAN_13) {
|
|
|
|
-- formats |= Barcode.EAN_13;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.EAN_8) {
|
|
|
|
-- formats |= Barcode.EAN_8;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.ITF) {
|
|
|
|
-- formats |= Barcode.ITF;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.PDF417) {
|
|
|
|
-- formats |= Barcode.PDF417;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.QR_CODE) {
|
|
|
|
-- formats |= Barcode.QR_CODE;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.UPC_A) {
|
|
|
|
-- formats |= Barcode.UPC_A;
|
|
|
|
-- } else if (options.formats[i] == BarcodeFormat.UPC_E) {
|
|
|
|
-- formats |= Barcode.UPC_E;
|
|
|
|
-- } else {
|
|
|
|
-- Log.e(TAG, "Unsupported barcode format hint: " + options.formats[i]);
|
|
|
|
-- }
|
|
|
|
-- }
|
|
|
|
-- }
|
|
|
|
-- mBarcodeDetector = new BarcodeDetector.Builder(ContextUtils.getApplicationContext())
|
|
|
|
-- .setBarcodeFormats(formats)
|
|
|
|
-- .build();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -80,47 +33,12 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
|
|
|
|
- // on the device; this happens "fast", but it might have not completed,
|
|
|
|
- // bail in this case. Also, the API was disabled between and v.9.0 and
|
|
|
|
- // v.9.2, see https://developers.google.com/android/guides/releases.
|
|
|
|
-- if (!mBarcodeDetector.isOperational()) {
|
|
|
|
-- Log.e(TAG, "BarcodeDetector is not operational");
|
|
|
|
-- callback.call(new BarcodeDetectionResult[0]);
|
|
|
|
-- return;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- Frame frame = BitmapUtils.convertToFrame(bitmapData);
|
|
|
|
-- if (frame == null) {
|
|
|
|
-- Log.e(TAG, "Error converting Mojom Bitmap to Frame");
|
|
|
|
-- callback.call(new BarcodeDetectionResult[0]);
|
|
|
|
-- return;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- final SparseArray<Barcode> barcodes = mBarcodeDetector.detect(frame);
|
|
|
|
--
|
|
|
|
-- BarcodeDetectionResult[] barcodeArray = new BarcodeDetectionResult[barcodes.size()];
|
|
|
|
-- for (int i = 0; i < barcodes.size(); i++) {
|
|
|
|
-- barcodeArray[i] = new BarcodeDetectionResult();
|
|
|
|
-- final Barcode barcode = barcodes.valueAt(i);
|
|
|
|
-- barcodeArray[i].rawValue = barcode.rawValue;
|
|
|
|
-- final Rect rect = barcode.getBoundingBox();
|
|
|
|
-- barcodeArray[i].boundingBox = new RectF();
|
|
|
|
-- barcodeArray[i].boundingBox.x = rect.left;
|
|
|
|
-- barcodeArray[i].boundingBox.y = rect.top;
|
|
|
|
-- barcodeArray[i].boundingBox.width = rect.width();
|
|
|
|
-- barcodeArray[i].boundingBox.height = rect.height();
|
|
|
|
-- final Point[] corners = barcode.cornerPoints;
|
|
|
|
-- barcodeArray[i].cornerPoints = new PointF[corners.length];
|
|
|
|
-- for (int j = 0; j < corners.length; j++) {
|
|
|
|
-- barcodeArray[i].cornerPoints[j] = new PointF();
|
|
|
|
-- barcodeArray[i].cornerPoints[j].x = corners[j].x;
|
|
|
|
-- barcodeArray[i].cornerPoints[j].y = corners[j].y;
|
|
|
|
-- }
|
|
|
|
-- barcodeArray[i].format = toBarcodeFormat(barcode.format);
|
|
|
|
-- }
|
|
|
|
-- callback.call(barcodeArray);
|
|
|
|
-+ Log.e(TAG, "BarcodeDetector is not operational");
|
|
|
|
-+ callback.call(new BarcodeDetectionResult[0]);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void close() {
|
|
|
|
-- mBarcodeDetector.release();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -129,34 +47,6 @@ public class BarcodeDetectionImpl implements BarcodeDetection {
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- private int toBarcodeFormat(int format) {
|
|
|
|
-- switch (format) {
|
|
|
|
-- case Barcode.CODE_128:
|
|
|
|
-- return BarcodeFormat.CODE_128;
|
|
|
|
-- case Barcode.CODE_39:
|
|
|
|
-- return BarcodeFormat.CODE_39;
|
|
|
|
-- case Barcode.CODE_93:
|
|
|
|
-- return BarcodeFormat.CODE_93;
|
|
|
|
-- case Barcode.CODABAR:
|
|
|
|
-- return BarcodeFormat.CODABAR;
|
|
|
|
-- case Barcode.DATA_MATRIX:
|
|
|
|
-- return BarcodeFormat.DATA_MATRIX;
|
|
|
|
-- case Barcode.EAN_13:
|
|
|
|
-- return BarcodeFormat.EAN_13;
|
|
|
|
-- case Barcode.EAN_8:
|
|
|
|
-- return BarcodeFormat.EAN_8;
|
|
|
|
-- case Barcode.ITF:
|
|
|
|
-- return BarcodeFormat.ITF;
|
|
|
|
-- case Barcode.QR_CODE:
|
|
|
|
-- return BarcodeFormat.QR_CODE;
|
|
|
|
-- case Barcode.UPC_A:
|
|
|
|
-- return BarcodeFormat.UPC_A;
|
|
|
|
-- case Barcode.UPC_E:
|
|
|
|
-- return BarcodeFormat.UPC_E;
|
|
|
|
-- case Barcode.PDF417:
|
|
|
|
-- return BarcodeFormat.PDF417;
|
|
|
|
-- case Barcode.AZTEC:
|
|
|
|
-- return BarcodeFormat.AZTEC;
|
|
|
|
-- }
|
|
|
|
- return BarcodeFormat.UNKNOWN;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
|
|
|
|
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
|
|
|
|
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/BarcodeDetectionProviderImpl.java
|
|
|
|
-@@ -8,8 +8,6 @@ import android.content.Context;
|
|
|
|
- import android.content.pm.PackageInfo;
|
|
|
|
- import android.content.pm.PackageManager.NameNotFoundException;
|
|
|
|
-
|
|
|
|
--import com.google.android.gms.common.GoogleApiAvailability;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.ContextUtils;
|
|
|
|
- import org.chromium.base.Log;
|
|
|
|
- import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
|
|
-@@ -36,15 +34,6 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void enumerateSupportedFormats(EnumerateSupportedFormatsResponse callback) {
|
|
|
|
-- // Keep this list in sync with the constants defined in
|
|
|
|
-- // com.google.android.gms.vision.barcode.Barcode and the format hints
|
|
|
|
-- // supported by BarcodeDetectionImpl.
|
|
|
|
-- int[] supportedFormats = {BarcodeFormat.AZTEC, BarcodeFormat.CODE_128,
|
|
|
|
-- BarcodeFormat.CODE_39, BarcodeFormat.CODE_93, BarcodeFormat.CODABAR,
|
|
|
|
-- BarcodeFormat.DATA_MATRIX, BarcodeFormat.EAN_13, BarcodeFormat.EAN_8,
|
|
|
|
-- BarcodeFormat.ITF, BarcodeFormat.PDF417, BarcodeFormat.QR_CODE, BarcodeFormat.UPC_A,
|
|
|
|
-- BarcodeFormat.UPC_E};
|
|
|
|
-- callback.call(supportedFormats);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -54,23 +43,7 @@ public class BarcodeDetectionProviderImpl implements BarcodeDetectionProvider {
|
|
|
|
- public void onConnectionError(MojoException e) {}
|
|
|
|
-
|
|
|
|
- public static BarcodeDetectionProvider create() {
|
|
|
|
-- Context ctx = ContextUtils.getApplicationContext();
|
|
|
|
-- if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(ctx)) {
|
|
|
|
-- Log.w(TAG, "Google Play Services not available");
|
|
|
|
-- return null;
|
|
|
|
-- }
|
|
|
|
-- try {
|
|
|
|
-- PackageInfo playServicesPackage = ctx.getPackageManager().getPackageInfo(
|
|
|
|
-- GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0);
|
|
|
|
-- if (playServicesPackage.versionCode < 19742000) {
|
|
|
|
-- // https://crbug.com/1020746
|
|
|
|
-- Log.w(TAG, "Detection disabled (%s < 19.7.42)", playServicesPackage.versionName);
|
|
|
|
-- return null;
|
|
|
|
-- }
|
|
|
|
-- } catch (NameNotFoundException e) {
|
|
|
|
-- Log.w(TAG, "Google Play Services not available");
|
|
|
|
-- return null;
|
|
|
|
-- }
|
|
|
|
-- return new BarcodeDetectionProviderImpl();
|
|
|
|
-+ Log.w(TAG, "Google Play Services not available");
|
|
|
|
-+ return null;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
|
|
|
|
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
|
|
|
|
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/FaceDetectionImplGmsCore.java
|
|
|
|
-@@ -7,11 +7,6 @@ package org.chromium.shape_detection;
|
|
|
|
- import android.graphics.PointF;
|
|
|
|
- import android.util.SparseArray;
|
|
|
|
-
|
|
|
|
--import com.google.android.gms.vision.Frame;
|
|
|
|
--import com.google.android.gms.vision.face.Face;
|
|
|
|
--import com.google.android.gms.vision.face.FaceDetector;
|
|
|
|
--import com.google.android.gms.vision.face.Landmark;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.ContextUtils;
|
|
|
|
- import org.chromium.base.Log;
|
|
|
|
- import org.chromium.gfx.mojom.RectF;
|
|
|
|
-@@ -36,26 +31,10 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
|
|
|
|
- private static final int MAX_EULER_Z = 15;
|
|
|
|
- private final int mMaxFaces;
|
|
|
|
- private final boolean mFastMode;
|
|
|
|
-- private final FaceDetector mFaceDetector;
|
|
|
|
-
|
|
|
|
-- FaceDetectionImplGmsCore(FaceDetectorOptions options) {
|
|
|
|
-- FaceDetector.Builder builder =
|
|
|
|
-- new FaceDetector.Builder(ContextUtils.getApplicationContext());
|
|
|
|
-+ FaceDetectionImplGmsCore(FaceDetectorOptions options) { FaceDetector.Builder builder = new FaceDetector.Builder(ContextUtils.getApplicationContext());
|
|
|
|
- mMaxFaces = Math.min(options.maxDetectedFaces, MAX_FACES);
|
|
|
|
- mFastMode = options.fastMode;
|
|
|
|
--
|
|
|
|
-- try {
|
|
|
|
-- builder.setMode(mFastMode ? FaceDetector.FAST_MODE : FaceDetector.ACCURATE_MODE);
|
|
|
|
-- builder.setLandmarkType(FaceDetector.ALL_LANDMARKS);
|
|
|
|
-- if (mMaxFaces == 1) {
|
|
|
|
-- builder.setProminentFaceOnly(true);
|
|
|
|
-- }
|
|
|
|
-- } catch (IllegalArgumentException e) {
|
|
|
|
-- Log.e(TAG, "Unexpected exception " + e);
|
|
|
|
-- assert false;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- mFaceDetector = builder.build();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -63,7 +42,7 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
|
|
|
|
- // The vision library will be downloaded the first time the API is used
|
|
|
|
- // on the device; this happens "fast", but it might have not completed,
|
|
|
|
- // bail in this case.
|
|
|
|
-- if (!mFaceDetector.isOperational()) {
|
|
|
|
-+/* if (!mFaceDetector.isOperational()) {
|
|
|
|
- Log.e(TAG, "FaceDetector is not operational");
|
|
|
|
-
|
|
|
|
- // Fallback to Android's FaceDetectionImpl.
|
|
|
|
-@@ -131,12 +110,13 @@ public class FaceDetectionImplGmsCore implements FaceDetection {
|
|
|
|
- faceArray[i].landmarks = mojoLandmarks.toArray(
|
|
|
|
- new org.chromium.shape_detection.mojom.Landmark[mojoLandmarks.size()]);
|
|
|
|
- }
|
|
|
|
-- callback.call(faceArray);
|
|
|
|
-+ callback.call(faceArray); */
|
|
|
|
-+ Log.e(TAG, "FaceDetector is not operational");
|
|
|
|
-+ callback.call(new FaceDetectionResult[0]);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void close() {
|
|
|
|
-- mFaceDetector.release();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-diff --git a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
|
|
|
|
---- a/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
|
|
|
|
-+++ b/services/shape_detection/android/java/src/org/chromium/shape_detection/TextDetectionImpl.java
|
|
|
|
-@@ -8,15 +8,10 @@ import android.graphics.Point;
|
|
|
|
- import android.graphics.Rect;
|
|
|
|
- import android.util.SparseArray;
|
|
|
|
-
|
|
|
|
--import com.google.android.gms.vision.Frame;
|
|
|
|
--import com.google.android.gms.vision.text.TextBlock;
|
|
|
|
--import com.google.android.gms.vision.text.TextRecognizer;
|
|
|
|
--
|
|
|
|
- import org.chromium.base.ContextUtils;
|
|
|
|
- import org.chromium.base.Log;
|
|
|
|
- import org.chromium.gfx.mojom.PointF;
|
|
|
|
- import org.chromium.gfx.mojom.RectF;
|
|
|
|
--import org.chromium.gms.ChromiumPlayServicesAvailability;
|
|
|
|
- import org.chromium.mojo.system.MojoException;
|
|
|
|
- import org.chromium.shape_detection.mojom.TextDetection;
|
|
|
|
- import org.chromium.shape_detection.mojom.TextDetectionResult;
|
|
|
|
-@@ -27,10 +22,7 @@ import org.chromium.shape_detection.mojom.TextDetectionResult;
|
|
|
|
- public class TextDetectionImpl implements TextDetection {
|
|
|
|
- private static final String TAG = "TextDetectionImpl";
|
|
|
|
-
|
|
|
|
-- private TextRecognizer mTextRecognizer;
|
|
|
|
--
|
|
|
|
- public TextDetectionImpl() {
|
|
|
|
-- mTextRecognizer = new TextRecognizer.Builder(ContextUtils.getApplicationContext()).build();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -39,13 +31,10 @@ public class TextDetectionImpl implements TextDetection {
|
|
|
|
- // on the device; this happens "fast", but it might have not completed,
|
|
|
|
- // bail in this case. Also, the API was disabled between and v.9.0 and
|
|
|
|
- // v.9.2, see https://developers.google.com/android/guides/releases.
|
|
|
|
-- if (!mTextRecognizer.isOperational()) {
|
|
|
|
- Log.e(TAG, "TextDetector is not operational");
|
|
|
|
- callback.call(new TextDetectionResult[0]);
|
|
|
|
- return;
|
|
|
|
-- }
|
|
|
|
--
|
|
|
|
-- Frame frame = BitmapUtils.convertToFrame(bitmapData);
|
|
|
|
-+/* Frame frame = BitmapUtils.convertToFrame(bitmapData);
|
|
|
|
- if (frame == null) {
|
|
|
|
- Log.e(TAG, "Error converting Mojom Bitmap to Frame");
|
|
|
|
- callback.call(new TextDetectionResult[0]);
|
|
|
|
-@@ -73,12 +62,11 @@ public class TextDetectionImpl implements TextDetection {
|
|
|
|
- detectedTextArray[i].cornerPoints[j].y = corners[j].y;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-- callback.call(detectedTextArray);
|
|
|
|
-+ callback.call(detectedTextArray); */
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public void close() {
|
|
|
|
-- mTextRecognizer.release();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
-@@ -87,11 +75,7 @@ public class TextDetectionImpl implements TextDetection {
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public static TextDetection create() {
|
|
|
|
-- if (!ChromiumPlayServicesAvailability.isGooglePlayServicesAvailable(
|
|
|
|
-- ContextUtils.getApplicationContext())) {
|
|
|
|
-- Log.e(TAG, "Google Play Services not available");
|
|
|
|
-- return null;
|
|
|
|
-- }
|
|
|
|
-- return new TextDetectionImpl();
|
|
|
|
-+ Log.e(TAG, "Google Play Services not available");
|
|
|
|
-+ return null;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
|
|
diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.gn
|
|
--- a/third_party/android_deps/BUILD.gn
|
|
--- a/third_party/android_deps/BUILD.gn
|
|
+++ b/third_party/android_deps/BUILD.gn
|
|
+++ b/third_party/android_deps/BUILD.gn
|