Index: chrome/browser/ui/metro_pin_tab_helper_win.cc |
diff --git a/chrome/browser/ui/metro_pin_tab_helper_win.cc b/chrome/browser/ui/metro_pin_tab_helper_win.cc |
index 6491efa71cfdd04e38b9a93b3559196e82b0f558..afbb4ac6a00006e8718e06703d8a9bb942686c5b 100644 |
--- a/chrome/browser/ui/metro_pin_tab_helper_win.cc |
+++ b/chrome/browser/ui/metro_pin_tab_helper_win.cc |
@@ -13,6 +13,7 @@ |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/ref_counted_memory.h" |
+#include "base/metrics/histogram.h" |
#include "base/path_service.h" |
#include "base/string_number_conversions.h" |
#include "base/utf_string_conversions.h" |
@@ -40,6 +41,9 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(MetroPinTabHelper) |
namespace { |
+// Histogram name for site-specific tile pinning metrics. |
+const char kMetroPinMetric[] = "Metro.SecondaryTilePin"; |
+ |
// Generate an ID for the tile based on |url_str|. The ID is simply a hash of |
// the URL. |
string16 GenerateTileId(const string16& url_str) { |
@@ -158,6 +162,14 @@ bool GetPathToBackupLogo(const FilePath& logo_dir, |
return file_util::CopyFile(default_logo_path, *logo_path); |
} |
+// UMA reporting callback for site-specific secondary tile creation. |
+void PinPageReportUmaCallback( |
+ base::win::MetroSecondaryTilePinUmaResult result) { |
+ UMA_HISTOGRAM_ENUMERATION(kMetroPinMetric, |
+ result, |
+ base::win::METRO_PIN_STATE_LIMIT); |
+} |
+ |
// The PinPageTaskRunner class performs the necessary FILE thread actions to |
// pin a page, such as generating or copying the tile image file. When it |
// has performed these actions it will send the tile creation request to the |
@@ -219,21 +231,27 @@ void PinPageTaskRunner::RunOnFileThread() { |
return; |
} |
+ UMA_HISTOGRAM_ENUMERATION(kMetroPinMetric, |
+ base::win::METRO_PIN_LOGO_READY, |
+ base::win::METRO_PIN_STATE_LIMIT); |
+ |
HMODULE metro_module = base::win::GetMetroModule(); |
if (!metro_module) |
return; |
- typedef void (*MetroPinToStartScreen)(const string16&, const string16&, |
- const string16&, const FilePath&); |
- MetroPinToStartScreen metro_pin_to_start_screen = |
- reinterpret_cast<MetroPinToStartScreen>( |
+ base::win::MetroPinToStartScreen metro_pin_to_start_screen = |
+ reinterpret_cast<base::win::MetroPinToStartScreen>( |
::GetProcAddress(metro_module, "MetroPinToStartScreen")); |
if (!metro_pin_to_start_screen) { |
NOTREACHED(); |
return; |
} |
- metro_pin_to_start_screen(tile_id, title_, url_, logo_path); |
+ metro_pin_to_start_screen(tile_id, |
+ title_, |
+ url_, |
+ logo_path, |
+ base::Bind(&PinPageReportUmaCallback)); |
} |
} // namespace |
@@ -378,10 +396,16 @@ bool MetroPinTabHelper::IsPinned() const { |
void MetroPinTabHelper::TogglePinnedToStartScreen() { |
if (IsPinned()) { |
+ UMA_HISTOGRAM_ENUMERATION(kMetroPinMetric, |
+ base::win::METRO_UNPIN_INITIATED, |
+ base::win::METRO_PIN_STATE_LIMIT); |
UnPinPageFromStartScreen(); |
return; |
} |
+ UMA_HISTOGRAM_ENUMERATION(kMetroPinMetric, |
+ base::win::METRO_PIN_INITIATED, |
+ base::win::METRO_PIN_STATE_LIMIT); |
GURL url = web_contents()->GetURL(); |
string16 url_str = UTF8ToUTF16(url.spec()); |
string16 title = web_contents()->GetTitle(); |
@@ -445,9 +469,8 @@ void MetroPinTabHelper::UnPinPageFromStartScreen() { |
if (!metro_module) |
return; |
- typedef void (*MetroUnPinFromStartScreen)(const string16&); |
- MetroUnPinFromStartScreen metro_un_pin_from_start_screen = |
- reinterpret_cast<MetroUnPinFromStartScreen>( |
+ base::win::MetroUnPinFromStartScreen metro_un_pin_from_start_screen = |
+ reinterpret_cast<base::win::MetroUnPinFromStartScreen>( |
::GetProcAddress(metro_module, "MetroUnPinFromStartScreen")); |
if (!metro_un_pin_from_start_screen) { |
NOTREACHED(); |
@@ -456,7 +479,8 @@ void MetroPinTabHelper::UnPinPageFromStartScreen() { |
GURL url = web_contents()->GetURL(); |
string16 tile_id = GenerateTileId(UTF8ToUTF16(url.spec())); |
- metro_un_pin_from_start_screen(tile_id); |
+ metro_un_pin_from_start_screen(tile_id, |
+ base::Bind(&PinPageReportUmaCallback)); |
} |
void MetroPinTabHelper::FaviconDownloaderFinished() { |