OLD | NEW |
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.metrics; | 5 package org.chromium.chrome.browser.metrics; |
6 | 6 |
7 import android.content.ComponentCallbacks; | 7 import android.content.ComponentCallbacks; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.content.res.Configuration; | 9 import android.content.res.Configuration; |
10 import android.text.TextUtils; | 10 import android.text.TextUtils; |
11 | 11 |
12 import org.chromium.base.ContextUtils; | 12 import org.chromium.base.ContextUtils; |
13 import org.chromium.chrome.browser.preferences.PrefServiceBridge; | 13 import org.chromium.chrome.browser.preferences.PrefServiceBridge; |
14 import org.chromium.chrome.browser.preferences.privacy.CrashReportingPermissionM
anager; | 14 import org.chromium.chrome.browser.preferences.privacy.CrashReportingPermissionM
anager; |
15 import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager
; | 15 import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager
; |
16 import org.chromium.chrome.browser.tab.Tab; | 16 import org.chromium.chrome.browser.tab.Tab; |
17 import org.chromium.chrome.browser.tabmodel.TabModel; | 17 import org.chromium.chrome.browser.tabmodel.TabModel; |
18 import org.chromium.chrome.browser.tabmodel.TabModelSelector; | 18 import org.chromium.chrome.browser.tabmodel.TabModelSelector; |
19 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; | 19 import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; |
20 import org.chromium.components.variations.VariationsAssociatedData; | 20 import org.chromium.components.variations.VariationsAssociatedData; |
| 21 import org.chromium.content_public.browser.WebContents; |
21 import org.chromium.net.NetworkChangeNotifier; | 22 import org.chromium.net.NetworkChangeNotifier; |
22 | 23 |
23 /** | 24 /** |
24 * Mainly sets up session stats for chrome. A session is defined as the duration
when the | 25 * Mainly sets up session stats for chrome. A session is defined as the duration
when the |
25 * application is in the foreground. Also used to communicate information betwe
en Chrome | 26 * application is in the foreground. Also used to communicate information betwe
en Chrome |
26 * and the framework's MetricService. | 27 * and the framework's MetricService. |
27 */ | 28 */ |
28 public class UmaSessionStats implements NetworkChangeNotifier.ConnectionTypeObse
rver { | 29 public class UmaSessionStats implements NetworkChangeNotifier.ConnectionTypeObse
rver { |
29 public static final String LAST_USED_TIME_PREF = "umasessionstats.lastusedti
me"; | 30 public static final String LAST_USED_TIME_PREF = "umasessionstats.lastusedti
me"; |
30 | 31 |
(...skipping 14 matching lines...) Expand all Loading... |
45 private final CrashReportingPermissionManager mReportingPermissionManager; | 46 private final CrashReportingPermissionManager mReportingPermissionManager; |
46 | 47 |
47 public UmaSessionStats(Context context) { | 48 public UmaSessionStats(Context context) { |
48 mContext = context; | 49 mContext = context; |
49 mIsMultiWindowCapable = context.getPackageManager().hasSystemFeature( | 50 mIsMultiWindowCapable = context.getPackageManager().hasSystemFeature( |
50 SAMSUNG_MULTWINDOW_PACKAGE); | 51 SAMSUNG_MULTWINDOW_PACKAGE); |
51 mReportingPermissionManager = PrivacyPreferencesManager.getInstance(); | 52 mReportingPermissionManager = PrivacyPreferencesManager.getInstance(); |
52 } | 53 } |
53 | 54 |
54 private void recordPageLoadStats(Tab tab) { | 55 private void recordPageLoadStats(Tab tab) { |
55 boolean isDesktopUserAgent = tab.getNavigationHandler() != null | 56 WebContents webContents = tab.getWebContents(); |
56 && tab.getNavigationHandler().getUseDesktopUserAgent(); | 57 boolean isDesktopUserAgent = webContents != null |
| 58 && webContents.getNavigationController().getUseDesktopUserAgent(
); |
57 nativeRecordPageLoaded(isDesktopUserAgent); | 59 nativeRecordPageLoaded(isDesktopUserAgent); |
58 if (mKeyboardConnected) { | 60 if (mKeyboardConnected) { |
59 nativeRecordPageLoadedWithKeyboard(); | 61 nativeRecordPageLoadedWithKeyboard(); |
60 } | 62 } |
61 | 63 |
62 // If the session has ended (i.e. chrome is in the background), escape e
arly. Ideally we | 64 // If the session has ended (i.e. chrome is in the background), escape e
arly. Ideally we |
63 // could track this number as part of either the previous or next sessio
n but this isn't | 65 // could track this number as part of either the previous or next sessio
n but this isn't |
64 // possible since the TabSelector is needed to figure out the current nu
mber of open tabs. | 66 // possible since the TabSelector is needed to figure out the current nu
mber of open tabs. |
65 if (mTabModelSelector == null) return; | 67 if (mTabModelSelector == null) return; |
66 | 68 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 private static native void nativeRegisterExternalExperiment( | 219 private static native void nativeRegisterExternalExperiment( |
218 String studyName, int[] experimentIds); | 220 String studyName, int[] experimentIds); |
219 private static native void nativeRegisterSyntheticFieldTrial( | 221 private static native void nativeRegisterSyntheticFieldTrial( |
220 String trialName, String groupName); | 222 String trialName, String groupName); |
221 private static native void nativeRecordMultiWindowSession(int areaPercent, i
nt instanceCount); | 223 private static native void nativeRecordMultiWindowSession(int areaPercent, i
nt instanceCount); |
222 private static native void nativeRecordTabCountPerLoad(int numTabsOpen); | 224 private static native void nativeRecordTabCountPerLoad(int numTabsOpen); |
223 private static native void nativeRecordPageLoaded(boolean isDesktopUserAgent
); | 225 private static native void nativeRecordPageLoaded(boolean isDesktopUserAgent
); |
224 private static native void nativeRecordPageLoadedWithKeyboard(); | 226 private static native void nativeRecordPageLoadedWithKeyboard(); |
225 | 227 |
226 } | 228 } |
OLD | NEW |