Chromium Code Reviews| 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 |