| Index: chrome_frame/crash_metrics.cc
|
| ===================================================================
|
| --- chrome_frame/crash_metrics.cc (revision 49520)
|
| +++ chrome_frame/crash_metrics.cc (working copy)
|
| @@ -1,92 +0,0 @@
|
| -// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "chrome_frame/crash_metrics.h"
|
| -
|
| -#include "base/histogram.h"
|
| -#include "base/registry.h"
|
| -#include "chrome_frame/utils.h"
|
| -
|
| -static const wchar_t kChromeFrameMetricsKey[] =
|
| - L"Software\\Google\\ChromeFrameMetrics";
|
| -
|
| -base::LazyInstance<CrashMetricsReporter>
|
| - g_crash_metrics_instance_(base::LINKER_INITIALIZED);
|
| -
|
| -wchar_t* CrashMetricsReporter::g_metric_names[LAST_METRIC] = {
|
| - L"navigationcount",
|
| - L"crashcount",
|
| - L"chrome_frame_navigationcount",
|
| - L"sessionid",
|
| -};
|
| -
|
| -CrashMetricsReporter* CrashMetricsReporter::GetInstance() {
|
| - return &g_crash_metrics_instance_.Get();
|
| -}
|
| -
|
| -bool CrashMetricsReporter::SetMetric(Metric metric, int value) {
|
| - DCHECK(metric >= NAVIGATION_COUNT && metric <= LAST_METRIC);
|
| -
|
| - RegKey metric_key;
|
| - if (metric_key.Create(HKEY_CURRENT_USER, kChromeFrameMetricsKey,
|
| - KEY_SET_VALUE)) {
|
| - if (metric_key.WriteValue(g_metric_names[metric], value)) {
|
| - return true;
|
| - } else {
|
| - DLOG(ERROR) << "Failed to read ChromeFrame metric:"
|
| - << g_metric_names[metric];
|
| - }
|
| - } else {
|
| - DLOG(ERROR) << "Failed to create ChromeFrame metrics key";
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -int CrashMetricsReporter::GetMetric(Metric metric) {
|
| - DCHECK(metric >= NAVIGATION_COUNT && metric <= LAST_METRIC);
|
| -
|
| - int ret = 0;
|
| - RegKey metric_key;
|
| - if (metric_key.Open(HKEY_CURRENT_USER, kChromeFrameMetricsKey,
|
| - KEY_QUERY_VALUE)) {
|
| - int value = 0;
|
| - if (metric_key.ReadValueDW(g_metric_names[metric],
|
| - reinterpret_cast<DWORD*>(&value))) {
|
| - ret = value;
|
| - }
|
| - }
|
| - return ret;
|
| -}
|
| -
|
| -int CrashMetricsReporter::IncrementMetric(Metric metric) {
|
| - DCHECK(metric >= NAVIGATION_COUNT && metric <= LAST_METRIC);
|
| - int metric_value = GetMetric(metric);
|
| - metric_value++;
|
| - SetMetric(metric, metric_value);
|
| - return metric_value;
|
| -}
|
| -
|
| -void CrashMetricsReporter::RecordCrashMetrics() {
|
| - int navigation_count = GetMetric(NAVIGATION_COUNT);
|
| - if (navigation_count > 0) {
|
| - THREAD_SAFE_UMA_HISTOGRAM_COUNTS("ChromeFrame.HostNavigationCount",
|
| - navigation_count);
|
| - SetMetric(NAVIGATION_COUNT, 0);
|
| - }
|
| -
|
| - int chrome_frame_navigation_count = GetMetric(CHROME_FRAME_NAVIGATION_COUNT);
|
| - if (chrome_frame_navigation_count > 0) {
|
| - THREAD_SAFE_UMA_HISTOGRAM_COUNTS("ChromeFrame.CFNavigationCount",
|
| - chrome_frame_navigation_count);
|
| - SetMetric(CHROME_FRAME_NAVIGATION_COUNT, 0);
|
| - }
|
| -
|
| - int crash_count = GetMetric(CRASH_COUNT);
|
| - if (crash_count > 0) {
|
| - THREAD_SAFE_UMA_HISTOGRAM_COUNTS("ChromeFrame.HostCrashCount",
|
| - crash_count);
|
| - SetMetric(CRASH_COUNT, 0);
|
| - }
|
| -}
|
| -
|
|
|