summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authorpaulmiller <paulmiller@chromium.org>2016-01-12 09:11:28 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-12 17:13:02 +0000
commitae2d4a588c7d8e3c4376d570f2eb1b4d4d0cf538 (patch)
tree632e7ddf8f8a12ef8771d634132671ac7460739b /android_webview
parentb38b7f72dab00b34e432687f1aa7e4979e568b73 (diff)
downloadchromium_src-ae2d4a588c7d8e3c4376d570f2eb1b4d4d0cf538.zip
chromium_src-ae2d4a588c7d8e3c4376d570f2eb1b4d4d0cf538.tar.gz
chromium_src-ae2d4a588c7d8e3c4376d570f2eb1b4d4d0cf538.tar.bz2
WebView Metrics opt out API
BUG=546823 Review URL: https://codereview.chromium.org/1562303004 Cr-Commit-Position: refs/heads/master@{#368903}
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java32
1 files changed, 32 insertions, 0 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java b/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java
index 7775fb2..09173a3 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwMetricsServiceClient.java
@@ -5,8 +5,11 @@
package org.chromium.android_webview;
import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
import android.webkit.ValueCallback;
+import org.chromium.base.Log;
import org.chromium.base.annotations.JNINamespace;
/**
@@ -16,7 +19,36 @@ import org.chromium.base.annotations.JNINamespace;
*/
@JNINamespace("android_webview")
public class AwMetricsServiceClient {
+ private static final String TAG = "AwMetricsServiceCli-";
+
+ // Individual apps can use this meta-data tag in their manifest to opt out of metrics
+ // reporting. See https://developer.android.com/reference/android/webkit/WebView.html
+ private static final String OPT_OUT_META_DATA_STR = "android.webkit.WebView.MetricsOptOut";
+
+ private static boolean isAppOptedOut(Context applicationContext) {
+ try {
+ ApplicationInfo info = applicationContext.getPackageManager().getApplicationInfo(
+ applicationContext.getPackageName(), PackageManager.GET_META_DATA);
+ if (info.metaData == null) {
+ // null means no such tag was found.
+ return false;
+ }
+ // getBoolean returns false if the key is not found, which is what we want.
+ return info.metaData.getBoolean(OPT_OUT_META_DATA_STR);
+ } catch (PackageManager.NameNotFoundException e) {
+ // This should never happen.
+ Log.e(TAG, "App could not find itself by package name!");
+ // The conservative thing is to assume the app HAS opted out.
+ return true;
+ }
+ }
+
public AwMetricsServiceClient(Context applicationContext) {
+ if (isAppOptedOut(applicationContext)) {
+ return;
+ }
+
+ // Check if the user has consented.
PlatformServiceBridge.getInstance(applicationContext)
.setMetricsSettingListener(new ValueCallback<Boolean>() {
public void onReceiveValue(Boolean enabled) {