Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/externalauth/ExternalAuthUtils.java

Issue 1583233004: Measure time spent during StrictMode violations. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix per review. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.externalauth; 5 package org.chromium.chrome.browser.externalauth;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.app.Dialog; 8 import android.app.Dialog;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.DialogInterface.OnCancelListener; 10 import android.content.DialogInterface.OnCancelListener;
11 import android.content.pm.ApplicationInfo; 11 import android.content.pm.ApplicationInfo;
12 import android.content.pm.PackageManager; 12 import android.content.pm.PackageManager;
13 import android.content.pm.PackageManager.NameNotFoundException; 13 import android.content.pm.PackageManager.NameNotFoundException;
14 import android.os.Binder; 14 import android.os.Binder;
15 import android.os.StrictMode; 15 import android.os.StrictMode;
16 import android.os.SystemClock;
16 import android.text.TextUtils; 17 import android.text.TextUtils;
17 18
18 import com.google.android.gms.common.ConnectionResult; 19 import com.google.android.gms.common.ConnectionResult;
19 import com.google.android.gms.common.GoogleApiAvailability; 20 import com.google.android.gms.common.GoogleApiAvailability;
20 21
21 import org.chromium.base.ApplicationStatus; 22 import org.chromium.base.ApplicationStatus;
22 import org.chromium.base.Log; 23 import org.chromium.base.Log;
23 import org.chromium.base.ThreadUtils; 24 import org.chromium.base.ThreadUtils;
24 import org.chromium.base.VisibleForTesting; 25 import org.chromium.base.VisibleForTesting;
25 import org.chromium.base.metrics.RecordHistogram; 26 import org.chromium.base.metrics.RecordHistogram;
26 import org.chromium.chrome.browser.ChromeApplication; 27 import org.chromium.chrome.browser.ChromeApplication;
27 28
29 import java.util.concurrent.TimeUnit;
28 import java.util.concurrent.atomic.AtomicReference; 30 import java.util.concurrent.atomic.AtomicReference;
29 31
30 /** 32 /**
31 * Utility class for external authentication tools. 33 * Utility class for external authentication tools.
32 * 34 *
33 * This class is safe to use on any thread. 35 * This class is safe to use on any thread.
34 */ 36 */
35 public class ExternalAuthUtils { 37 public class ExternalAuthUtils {
36 public static final int FLAG_SHOULD_BE_GOOGLE_SIGNED = 1 << 0; 38 public static final int FLAG_SHOULD_BE_GOOGLE_SIGNED = 1 << 0;
37 public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1; 39 public static final int FLAG_SHOULD_BE_SYSTEM = 1 << 1;
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 * and returns the code produced by the attempt. Subclasses can override to force the behavior 238 * and returns the code produced by the attempt. Subclasses can override to force the behavior
237 * one way or another, or to change the way that the check is performed. 239 * one way or another, or to change the way that the check is performed.
238 * @param context The current context. 240 * @param context The current context.
239 * @return The code produced by calling the external code 241 * @return The code produced by calling the external code
240 */ 242 */
241 protected int checkGooglePlayServicesAvailable(final Context context) { 243 protected int checkGooglePlayServicesAvailable(final Context context) {
242 // Temporarily allowing disk access. TODO: Fix. See http://crbug.com/577 190 244 // Temporarily allowing disk access. TODO: Fix. See http://crbug.com/577 190
243 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); 245 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
244 StrictMode.allowThreadDiskWrites(); 246 StrictMode.allowThreadDiskWrites();
245 try { 247 try {
246 return GoogleApiAvailability.getInstance().isGooglePlayServicesAvail able(context); 248 long time = SystemClock.elapsedRealtime();
249 int isAvailable =
250 GoogleApiAvailability.getInstance().isGooglePlayServicesAvai lable(context);
Yaron 2016/01/21 22:03:22 this one also can happen without native
Peter Wen 2016/01/21 22:13:54 Done.
251 RecordHistogram.recordTimesHistogram("Android.StrictMode.CheckGoogle PlayServicesTime",
252 SystemClock.elapsedRealtime() - time, TimeUnit.MILLISECONDS) ;
253 return isAvailable;
247 } finally { 254 } finally {
248 StrictMode.setThreadPolicy(oldPolicy); 255 StrictMode.setThreadPolicy(oldPolicy);
249 } 256 }
250 } 257 }
251 258
252 /** 259 /**
253 * Invokes whatever external code is necessary to check if the specified res ult code from 260 * Invokes whatever external code is necessary to check if the specified res ult code from
254 * {@link #checkGooglePlayServicesAvailable(Context)} represents success. 261 * {@link #checkGooglePlayServicesAvailable(Context)} represents success.
255 * @param resultCode The code to check 262 * @param resultCode The code to check
256 * @return true If the result code represents success. 263 * @return true If the result code represents success.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 */ 310 */
304 public void showErrorDialog(final int errorCode, final Activity activity, fi nal int requestCode, 311 public void showErrorDialog(final int errorCode, final Activity activity, fi nal int requestCode,
305 final OnCancelListener onCancelListener) { 312 final OnCancelListener onCancelListener) {
306 final Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog ( 313 final Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog (
307 activity, errorCode, requestCode, onCancelListener); 314 activity, errorCode, requestCode, onCancelListener);
308 if (dialog != null) { // This can happen if errorCode is ConnectionResul t.SERVICE_INVALID 315 if (dialog != null) { // This can happen if errorCode is ConnectionResul t.SERVICE_INVALID
309 dialog.show(); 316 dialog.show();
310 } 317 }
311 } 318 }
312 } 319 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698