OLD | NEW |
---|---|
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 #include "chrome/browser/android/metrics/launch_metrics.h" | 5 #include "chrome/browser/android/metrics/launch_metrics.h" |
6 | 6 |
7 #include "base/android/jni_string.h" | 7 #include "base/android/jni_string.h" |
8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
9 #include "base/metrics/user_metrics.h" | 9 #include "base/metrics/user_metrics.h" |
10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
(...skipping 22 matching lines...) Expand all Loading... | |
33 bool RegisterLaunchMetrics(JNIEnv* env) { | 33 bool RegisterLaunchMetrics(JNIEnv* env) { |
34 return RegisterNativesImpl(env); | 34 return RegisterNativesImpl(env); |
35 } | 35 } |
36 | 36 |
37 static void RecordLaunch(JNIEnv* env, | 37 static void RecordLaunch(JNIEnv* env, |
38 const JavaParamRef<jclass>& caller, | 38 const JavaParamRef<jclass>& caller, |
39 jboolean standalone, | 39 jboolean standalone, |
40 const JavaParamRef<jstring>& jurl, | 40 const JavaParamRef<jstring>& jurl, |
41 int source, | 41 int source, |
42 const JavaParamRef<jobject>& jweb_contents) { | 42 const JavaParamRef<jobject>& jweb_contents) { |
43 // Interpolate the legacy ADD_TO_HOMESCREEN source into standalone/shortcut. | |
44 // Unfortunately, we cannot concretely determine whether a standalone add to | |
45 // homescreen source means a full PWA (with service worker) or a site that has | |
46 // a manifest with display: standalone. | |
47 int histogram_source = source; | |
48 if (histogram_source == ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_DEPRECATED) { | |
49 if (standalone) | |
50 histogram_source = ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE; | |
51 else | |
52 histogram_source = ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_SHORTCUT; | |
53 } | |
54 | |
43 GURL url(base::android::ConvertJavaStringToUTF8(env, jurl)); | 55 GURL url(base::android::ConvertJavaStringToUTF8(env, jurl)); |
44 | |
45 content::WebContents* web_contents = | 56 content::WebContents* web_contents = |
46 content::WebContents::FromJavaWebContents(jweb_contents); | 57 content::WebContents::FromJavaWebContents(jweb_contents); |
47 if (web_contents && source == ShortcutInfo::SOURCE_APP_BANNER) { | 58 |
59 if (web_contents && | |
60 (histogram_source == ShortcutInfo::SOURCE_APP_BANNER || | |
61 histogram_source == ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA)) { | |
48 // What a user has installed on the Home screen can become disconnected from | 62 // What a user has installed on the Home screen can become disconnected from |
49 // what Chrome believes is on the Home screen if the user clears their data. | 63 // what Chrome believes is on the Home screen if the user clears their data. |
50 // Use the launch as a signal that the shortcut still exists. | 64 // Use the launch as a signal that the shortcut still exists. |
51 AppBannerSettingsHelper::RecordBannerEvent( | 65 AppBannerSettingsHelper::RecordBannerEvent( |
52 web_contents, url, url.spec(), | 66 web_contents, url, url.spec(), |
53 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, | 67 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, |
54 base::Time::Now()); | 68 base::Time::Now()); |
55 | 69 |
56 // Tell the Site Engagement Service about this launch as sites recently | 70 // Tell the Site Engagement Service about this launch as sites recently |
57 // launched from a shortcut receive a boost to their engagement. | 71 // launched from a shortcut receive a boost to their engagement. |
58 SiteEngagementService* service = SiteEngagementService::Get( | 72 SiteEngagementService* service = SiteEngagementService::Get( |
59 Profile::FromBrowserContext(web_contents->GetBrowserContext())); | 73 Profile::FromBrowserContext(web_contents->GetBrowserContext())); |
60 service->SetLastShortcutLaunchTime(url); | 74 service->SetLastShortcutLaunchTime(url); |
61 } | 75 } |
62 | 76 |
63 std::string rappor_metric_source; | 77 std::string rappor_metric_source; |
64 if (source == ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN) | 78 switch (histogram_source) { |
65 rappor_metric_source = "Launch.HomeScreenSource.AddToHomeScreen"; | 79 case ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_DEPRECATED: |
66 else if (source == ShortcutInfo::SOURCE_APP_BANNER) | 80 case ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_PWA: |
67 rappor_metric_source = "Launch.HomeScreenSource.AppBanner"; | 81 case ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_STANDALONE: |
68 else if (source == ShortcutInfo::SOURCE_BOOKMARK_NAVIGATOR_WIDGET) | 82 case ShortcutInfo::SOURCE_ADD_TO_HOMESCREEN_SHORTCUT: |
69 rappor_metric_source = "Launch.HomeScreenSource.BookmarkNavigatorWidget"; | 83 rappor_metric_source = "Launch.HomeScreenSource.AddToHomeScreen"; |
70 else if (source == ShortcutInfo::SOURCE_BOOKMARK_SHORTCUT_WIDGET) | 84 break; |
71 rappor_metric_source = "Launch.HomeScreenSource.BookmarkShortcutWidget"; | 85 case ShortcutInfo::SOURCE_APP_BANNER: |
72 else | 86 rappor_metric_source = "Launch.HomeScreenSource.AppBanner"; |
73 rappor_metric_source = "Launch.HomeScreenSource.Unknown"; | 87 break; |
88 case ShortcutInfo::SOURCE_BOOKMARK_NAVIGATOR_WIDGET: | |
89 rappor_metric_source = "Launch.HomeScreenSource.BookmarkNavigatorWidget"; | |
90 break; | |
91 case ShortcutInfo::SOURCE_BOOKMARK_SHORTCUT_WIDGET: | |
92 rappor_metric_source = "Launch.HomeScreenSource.BookmarkShortcutWidget"; | |
93 break; | |
94 case ShortcutInfo::SOURCE_NOTIFICATION: | |
95 rappor_metric_source = "Launch.HomeScreenSource.Notification"; | |
96 break; | |
97 case ShortcutInfo::SOURCE_UNKNOWN: | |
98 case ShortcutInfo::SOURCE_COUNT: | |
gone
2017/02/14 19:44:51
Should SOURCE_COUNT just fall into default:?
dominickn
2017/02/14 23:02:14
I didn't want to have a default case to ensure tha
| |
99 rappor_metric_source = "Launch.HomeScreenSource.Unknown"; | |
100 break; | |
101 } | |
74 | 102 |
75 UMA_HISTOGRAM_ENUMERATION("Launch.HomeScreenSource", source, | 103 UMA_HISTOGRAM_ENUMERATION("Launch.HomeScreenSource", histogram_source, |
76 ShortcutInfo::SOURCE_COUNT); | 104 ShortcutInfo::SOURCE_COUNT); |
77 | 105 |
78 rappor::SampleDomainAndRegistryFromGURL(g_browser_process->rappor_service(), | 106 rappor::SampleDomainAndRegistryFromGURL(g_browser_process->rappor_service(), |
79 rappor_metric_source, url); | 107 rappor_metric_source, url); |
80 | 108 |
81 int action = standalone ? HOME_SCREEN_LAUNCH_STANDALONE | 109 int action = standalone ? HOME_SCREEN_LAUNCH_STANDALONE |
82 : HOME_SCREEN_LAUNCH_SHORTCUT; | 110 : HOME_SCREEN_LAUNCH_SHORTCUT; |
83 std::string rappor_metric_action = standalone ? "Launch.HomeScreen.Standalone" | 111 std::string rappor_metric_action = standalone ? "Launch.HomeScreen.Standalone" |
84 : "Launch.HomeScreen.Shortcut"; | 112 : "Launch.HomeScreen.Shortcut"; |
85 | 113 |
(...skipping 11 matching lines...) Expand all Loading... | |
97 jboolean homepage_is_ntp, | 125 jboolean homepage_is_ntp, |
98 const JavaParamRef<jstring>& jhomepage_url) { | 126 const JavaParamRef<jstring>& jhomepage_url) { |
99 GURL homepage_url(base::android::ConvertJavaStringToUTF8(env, jhomepage_url)); | 127 GURL homepage_url(base::android::ConvertJavaStringToUTF8(env, jhomepage_url)); |
100 PrefMetricsService::RecordHomePageLaunchMetrics( | 128 PrefMetricsService::RecordHomePageLaunchMetrics( |
101 show_home_button, | 129 show_home_button, |
102 homepage_is_ntp, | 130 homepage_is_ntp, |
103 homepage_url); | 131 homepage_url); |
104 } | 132 } |
105 | 133 |
106 }; // namespace metrics | 134 }; // namespace metrics |
OLD | NEW |