Index: chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java |
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java |
index 999689752532cfa22b2d76310893de515559930d..fedcdf997e9e76bc675bfc9a2f51ed0e7c09cd4e 100644 |
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java |
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java |
@@ -4,6 +4,7 @@ |
package org.chromium.chrome.browser.omaha; |
+import android.annotation.TargetApi; |
import android.content.ActivityNotFoundException; |
import android.content.Context; |
import android.content.Intent; |
@@ -15,6 +16,9 @@ import android.graphics.PorterDuff; |
import android.graphics.PorterDuffXfermode; |
import android.net.Uri; |
import android.os.AsyncTask; |
+import android.os.Build; |
+import android.os.Environment; |
+import android.os.StatFs; |
import android.text.TextUtils; |
import org.chromium.base.CommandLine; |
@@ -29,6 +33,8 @@ import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
import org.chromium.components.variations.VariationsAssociatedData; |
import org.chromium.ui.base.LocalizationUtils; |
+import java.io.File; |
+ |
/** |
* Contains logic for whether the update menu item should be shown, whether the update toolbar badge |
* should be shown, and UMA logging for the update menu item. |
@@ -112,6 +118,7 @@ public class UpdateMenuItemHelper { |
if (OmahaClient.isNewerVersionAvailable(activity)) { |
mUpdateUrl = OmahaClient.getMarketURL(activity); |
mUpdateAvailable = true; |
+ recordInternalStorageSize(); |
Yaron
2016/01/04 14:37:24
nit: you were already in an asynctask so it's not
Theresa
2016/01/04 21:02:29
Great point. I'll fix that in a follow up CL.
|
} else { |
mUpdateAvailable = false; |
} |
@@ -316,4 +323,36 @@ public class UpdateMenuItemHelper { |
} |
return value; |
} |
+ |
+ private void recordInternalStorageSize() { |
+ new AsyncTask<Void, Void, Void>() { |
+ @Override |
+ protected Void doInBackground(Void... params) { |
+ File path = Environment.getDataDirectory(); |
+ StatFs statFs = new StatFs(path.getAbsolutePath()); |
+ int size; |
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR2) { |
+ size = getSize(statFs); |
+ } else { |
+ size = getSizeUpdatedApi(statFs); |
+ } |
+ RecordHistogram.recordLinearCountHistogram( |
+ "GoogleUpdate.InfoBar.InternalStorageSizeAvailable", size, 1, 200, 100); |
+ return null; |
+ } |
+ }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
+ } |
+ |
+ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) |
+ private static int getSizeUpdatedApi(StatFs statFs) { |
+ return (int) statFs.getAvailableBytes() / (1024 * 1024); |
+ } |
+ |
+ @SuppressWarnings("deprecation") |
+ private static int getSize(StatFs statFs) { |
+ int blockSize = statFs.getBlockSize(); |
+ int availableBlocks = statFs.getAvailableBlocks(); |
+ int size = (blockSize * availableBlocks) / (1024 * 1024); |
+ return size; |
+ } |
} |