Commit 9eb0cfba authored by Henrique Nakashima's avatar Henrique Nakashima Committed by Commit Bot

Refactor PlayServicesVersionInfo out of ChromeVersionInfo

ChromeVersionInfo is now responsible only for showing the
Chrome version, while PlayServicesVersionInfo for Play Services.

Bug: 1131982
Change-Id: Ie6bc77f10a47c0d5379c3eb244f9b025f52e0d75
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2428628
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#811331}
parent 76e64e4c
...@@ -2975,11 +2975,11 @@ generate_jni("chrome_jni_headers") { ...@@ -2975,11 +2975,11 @@ generate_jni("chrome_jni_headers") {
"java/src/org/chromium/chrome/browser/ApplicationLifetime.java", "java/src/org/chromium/chrome/browser/ApplicationLifetime.java",
"java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java",
"java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java", "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java",
"java/src/org/chromium/chrome/browser/ChromeVersionInfo.java",
"java/src/org/chromium/chrome/browser/DevToolsServer.java", "java/src/org/chromium/chrome/browser/DevToolsServer.java",
"java/src/org/chromium/chrome/browser/IntentHandler.java", "java/src/org/chromium/chrome/browser/IntentHandler.java",
"java/src/org/chromium/chrome/browser/IntentHelper.java", "java/src/org/chromium/chrome/browser/IntentHelper.java",
"java/src/org/chromium/chrome/browser/NearOomMonitor.java", "java/src/org/chromium/chrome/browser/NearOomMonitor.java",
"java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java",
"java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java", "java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java",
"java/src/org/chromium/chrome/browser/ServiceTabLauncher.java", "java/src/org/chromium/chrome/browser/ServiceTabLauncher.java",
"java/src/org/chromium/chrome/browser/ShortcutHelper.java", "java/src/org/chromium/chrome/browser/ShortcutHelper.java",
......
...@@ -43,6 +43,7 @@ chrome_java_sources = [ ...@@ -43,6 +43,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/LauncherShortcutActivity.java", "java/src/org/chromium/chrome/browser/LauncherShortcutActivity.java",
"java/src/org/chromium/chrome/browser/NavigationPopup.java", "java/src/org/chromium/chrome/browser/NavigationPopup.java",
"java/src/org/chromium/chrome/browser/NearOomMonitor.java", "java/src/org/chromium/chrome/browser/NearOomMonitor.java",
"java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java",
"java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java", "java/src/org/chromium/chrome/browser/PowerBroadcastReceiver.java",
"java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java", "java/src/org/chromium/chrome/browser/SearchGeolocationDisclosureTabHelper.java",
"java/src/org/chromium/chrome/browser/ServiceTabLauncher.java", "java/src/org/chromium/chrome/browser/ServiceTabLauncher.java",
......
...@@ -4,18 +4,8 @@ ...@@ -4,18 +4,8 @@
package org.chromium.chrome.browser; 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.chrome.browser.externalauth.ExternalAuthUtils;
import org.chromium.components.version_info.Channel; import org.chromium.components.version_info.Channel;
import java.util.Locale;
/** /**
* A utility class for querying information about the current Chrome build. * A utility class for querying information about the current Chrome build.
* Intentionally doesn't depend on native so that the data can be accessed before * Intentionally doesn't depend on native so that the data can be accessed before
...@@ -84,47 +74,4 @@ public class ChromeVersionInfo { ...@@ -84,47 +74,4 @@ public class ChromeVersionInfo {
public static int getBuildVersion() { public static int getBuildVersion() {
return ChromeVersionConstants.PRODUCT_BUILD_VERSION; return ChromeVersionConstants.PRODUCT_BUILD_VERSION;
} }
/**
* Returns info about the Google Play services setup for Chrome and the device.
*
* Contains the version number of the SDK Chrome was built with and the one for the installed
* Play Services app. It also contains whether First Party APIs are available.
*/
@CalledByNative
public static String getGmsInfo() {
Context context = ContextUtils.getApplicationContext();
final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
final long installedGmsVersion = getPlayServicesApkVersionNumber(context);
final String accessType;
ExternalAuthUtils externalAuthUtils = AppHooks.get().getExternalAuthUtils();
if (externalAuthUtils.canUseFirstPartyGooglePlayServices()) {
accessType = "1p";
} else if (externalAuthUtils.canUseGooglePlayServices()) {
accessType = "3p";
} else {
accessType = "none";
}
return String.format(Locale.US,
"SDK=%s; Installed=%s; Access=%s", sdkVersion, installedGmsVersion, accessType);
}
/**
*
* @param context A Context with which to retrieve the PackageManager.
* @return The version code for the Google Play Services installed on the device or 0 if the
* package is not found.
*/
public static int getPlayServicesApkVersionNumber(Context context) {
try {
return context.getPackageManager()
.getPackageInfo(GoogleApiAvailability.GOOGLE_PLAY_SERVICES_PACKAGE, 0)
.versionCode;
} catch (PackageManager.NameNotFoundException e) {
return 0;
}
}
} }
// Copyright 2020 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.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.chrome.browser.externalauth.ExternalAuthUtils;
import java.util.Locale;
/**
* A utility class for querying information about Play Services Version.
*/
public class PlayServicesVersionInfo {
/**
* Returns info about the Google Play services setup for Chrome and the device.
*
* Contains the version number of the SDK Chrome was built with and the one for the installed
* Play Services app. It also contains whether First Party APIs are available.
*/
@CalledByNative
public static String getGmsInfo() {
Context context = ContextUtils.getApplicationContext();
final long sdkVersion = GoogleApiAvailability.GOOGLE_PLAY_SERVICES_VERSION_CODE;
final long installedGmsVersion = getApkVersionNumber(context);
final String accessType;
ExternalAuthUtils externalAuthUtils = AppHooks.get().getExternalAuthUtils();
if (externalAuthUtils.canUseFirstPartyGooglePlayServices()) {
accessType = "1p";
} else if (externalAuthUtils.canUseGooglePlayServices()) {
accessType = "3p";
} else {
accessType = "none";
}
return String.format(Locale.US, "SDK=%s; Installed=%s; Access=%s", sdkVersion,
installedGmsVersion, accessType);
}
/**
*
* @param context A Context with which to retrieve the PackageManager.
* @return The version code for the Google Play Services installed on the device or 0 if the
* 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;
}
}
}
...@@ -56,12 +56,12 @@ import org.chromium.chrome.browser.ActivityTabProvider; ...@@ -56,12 +56,12 @@ import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.AppHooks; import org.chromium.chrome.browser.AppHooks;
import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeActivitySessionTracker;
import org.chromium.chrome.browser.ChromeApplication; import org.chromium.chrome.browser.ChromeApplication;
import org.chromium.chrome.browser.ChromeVersionInfo;
import org.chromium.chrome.browser.ChromeWindow; import org.chromium.chrome.browser.ChromeWindow;
import org.chromium.chrome.browser.DeferredStartupHandler; import org.chromium.chrome.browser.DeferredStartupHandler;
import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.IntentHandler;
import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate; import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.IntentHandler.TabOpenType;
import org.chromium.chrome.browser.PlayServicesVersionInfo;
import org.chromium.chrome.browser.TabbedModeTabDelegateFactory; import org.chromium.chrome.browser.TabbedModeTabDelegateFactory;
import org.chromium.chrome.browser.WarmupManager; import org.chromium.chrome.browser.WarmupManager;
import org.chromium.chrome.browser.accessibility.FontSizePrefs; import org.chromium.chrome.browser.accessibility.FontSizePrefs;
...@@ -1081,7 +1081,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> ...@@ -1081,7 +1081,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
} }
recordDisplayDimensions(); recordDisplayDimensions();
int playServicesVersion = ChromeVersionInfo.getPlayServicesApkVersionNumber(this); int playServicesVersion = PlayServicesVersionInfo.getApkVersionNumber(this);
RecordHistogram.recordBooleanHistogram( RecordHistogram.recordBooleanHistogram(
"Android.PlayServices.Installed", playServicesVersion > 0); "Android.PlayServices.Installed", playServicesVersion > 0);
RecordHistogram.recordSparseHistogram( RecordHistogram.recordSparseHistogram(
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
#include "base/android/jni_android.h" #include "base/android/jni_android.h"
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "base/system/sys_info.h" #include "base/system/sys_info.h"
#include "chrome/android/chrome_jni_headers/ChromeVersionInfo_jni.h" #include "chrome/android/chrome_jni_headers/PlayServicesVersionInfo_jni.h"
#include "content/public/common/user_agent.h" #include "content/public/common/user_agent.h"
std::string AndroidAboutAppInfo::GetGmsInfo() { std::string AndroidAboutAppInfo::GetGmsInfo() {
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
const base::android::ScopedJavaLocalRef<jstring> info = const base::android::ScopedJavaLocalRef<jstring> info =
Java_ChromeVersionInfo_getGmsInfo(env); Java_PlayServicesVersionInfo_getGmsInfo(env);
return base::android::ConvertJavaStringToUTF8(env, info); return base::android::ConvertJavaStringToUTF8(env, info);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment