Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.android_webview; | |
| 6 | |
| 7 import android.content.Context; | |
| 8 import android.webkit.ValueCallback; | |
| 9 | |
| 10 import org.chromium.base.Log; | |
| 11 import org.chromium.base.annotations.JNINamespace; | |
| 12 | |
| 13 import java.lang.reflect.InvocationTargetException; | |
| 14 | |
| 15 /** | |
| 16 * Java twin of the homonymous C++ class. The Java side is only responsible for | |
| 17 * switching metrics on and off. Since the setting is a platform feature, it | |
| 18 * must be obtained through PlatformServiceBridge. | |
| 19 */ | |
| 20 @JNINamespace("android_webview") | |
| 21 public class AwMetricsServiceClient { | |
| 22 private static final String TAG = "AwMetricsServiceCli-"; | |
|
sgurun-gerrit only
2015/12/11 00:06:45
"AwMetricsServiceClient"
paulmiller
2015/12/18 00:15:49
I'd prefer that too, but there's a length limit.
| |
| 23 private static final String GMAIL = "com.google.android.gm"; | |
|
sgurun-gerrit only
2015/12/11 00:06:46
let's move this logic to the bridge
paulmiller
2015/12/18 00:15:49
Are you sure? The Gmail detection is specific to M
| |
| 24 private static final String PLATFORM_SERVICE_BRIDGE = | |
| 25 "com.android.webview.chromium.PlatformServiceBridgeGoogle"; | |
| 26 | |
| 27 private PlatformServiceBridge mPlatformServiceBridge; | |
| 28 | |
| 29 public AwMetricsServiceClient(Context applicationContext) { | |
| 30 mPlatformServiceBridge = getPlatformServiceBridge(applicationContext); | |
| 31 | |
| 32 mPlatformServiceBridge.setMetricsSettingListener(new ValueCallback<Boole an>() { | |
| 33 public void onReceiveValue(Boolean enabled) { | |
| 34 nativeSetMetricsEnabled(enabled.booleanValue()); | |
| 35 } | |
| 36 }); | |
| 37 } | |
| 38 | |
| 39 private static PlatformServiceBridge getPlatformServiceBridge(Context applic ationContext) { | |
| 40 // If this is gmail, try to get the Google service bridge. | |
| 41 if (GMAIL.equals(applicationContext.getPackageName())) { | |
|
sgurun-gerrit only
2015/12/11 00:06:46
same, move this to the bridge.
| |
| 42 try { | |
| 43 Class<?> cls = Class.forName(PLATFORM_SERVICE_BRIDGE); | |
| 44 return (PlatformServiceBridge) cls.getDeclaredConstructor(Contex t.class) | |
| 45 .newInstance(applicationContext); | |
| 46 } catch (InvocationTargetException e) { | |
| 47 Log.e(TAG, "Failed to get " + PLATFORM_SERVICE_BRIDGE + " (invoc ation):", | |
|
sgurun-gerrit only
2015/12/11 00:06:46
not an error. This is actually a reasonable state
paulmiller
2015/12/18 00:15:50
I think that'll actually be a ClassNotFoundExcepti
| |
| 48 e.getCause()); | |
| 49 } catch (Exception e) { | |
|
sgurun-gerrit only
2015/12/11 00:06:45
I don't think you can put a blanket exception here
paulmiller
2015/12/18 00:15:49
fixed
| |
| 50 Log.e(TAG, "Failed to get " + PLATFORM_SERVICE_BRIDGE + ":", e); | |
|
sgurun-gerrit only
2015/12/11 00:06:46
rather than repeating the Log.e, use a boolean to
paulmiller
2015/12/18 00:15:49
But I want to log InvocationTargetException differ
| |
| 51 } | |
| 52 } | |
| 53 | |
| 54 // If this is not gmail or getting the preferred service | |
| 55 // bridge failed, get the generic service bridge. | |
|
sgurun-gerrit only
2015/12/11 00:06:46
remove the gmail comment.
paulmiller
2015/12/18 00:15:49
fixed
| |
| 56 return new PlatformServiceBridge(); | |
| 57 } | |
| 58 | |
| 59 public static native void nativeSetMetricsEnabled(boolean enabled); | |
| 60 } | |
| OLD | NEW |