Commit 6d149915 authored by manzagop's avatar manzagop Committed by Commit bot

Record MetricsService's execution phase to the stability file

Also:
- upstream some "ifdef(OS_WIN)" by moving stability_debugging_win.{h,cc} to stability_debugging.{h,cc}.
- enclose components/browser_watcher/BUILD.gn targets in "if (is_win) {}" as the dependency from components/metrics started causing win only targets to be built on other platforms.

BUG=620813

Review-Url: https://codereview.chromium.org/2531123002
Cr-Commit-Position: refs/heads/master@{#439536}
parent 3eb8769e
......@@ -23,6 +23,7 @@
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "components/browser_watcher/features.h"
#include "components/browser_watcher/stability_debugging.h"
#include "components/variations/variations_associated_data.h"
#include "content/public/common/content_switches.h"
#include "media/media_features.h"
......@@ -30,7 +31,6 @@
#if defined(OS_WIN)
#include "chrome/install_static/install_util.h"
#include "components/browser_watcher/stability_data_names.h"
#include "components/browser_watcher/stability_debugging_win.h"
#endif
namespace chrome {
......
......@@ -44,6 +44,7 @@
#include "chrome/common/features.h"
#include "chrome/common/pref_names.h"
#include "chrome/installer/util/util_constants.h"
#include "components/browser_watcher/stability_debugging.h"
#include "components/metrics/call_stack_profile_metrics_provider.h"
#include "components/metrics/drive_metrics_provider.h"
#include "components/metrics/file_metrics_provider.h"
......@@ -105,7 +106,6 @@
#include "chrome/common/metrics_constants_util_win.h"
#include "chrome/install_static/install_util.h"
#include "chrome/installer/util/browser_distribution.h"
#include "components/browser_watcher/stability_debugging_win.h"
#include "components/browser_watcher/watcher_metrics_provider_win.h"
#endif
......
......@@ -4,79 +4,81 @@
import("//third_party/protobuf/proto_library.gni")
proto_library("stability_report_proto") {
sources = [
"stability_report.proto",
]
}
if (is_win) {
proto_library("stability_report_proto") {
sources = [
"stability_report.proto",
]
}
static_library("browser_watcher") {
# This is a separate lib to minimize the dependencies for its
# hosting binary "chrome_watcher.dll".
sources = [
"endsession_watcher_window_win.cc",
"endsession_watcher_window_win.h",
"exit_code_watcher_win.cc",
"exit_code_watcher_win.h",
"window_hang_monitor_win.cc",
"window_hang_monitor_win.h",
]
deps = [
"//base",
]
}
static_library("browser_watcher") {
# This is a separate lib to minimize the dependencies for its
# hosting binary "chrome_watcher.dll".
sources = [
"endsession_watcher_window_win.cc",
"endsession_watcher_window_win.h",
"exit_code_watcher_win.cc",
"exit_code_watcher_win.h",
"window_hang_monitor_win.cc",
"window_hang_monitor_win.h",
]
deps = [
"//base",
]
}
static_library("browser_watcher_client") {
sources = [
"watcher_client_win.cc",
"watcher_client_win.h",
"watcher_metrics_provider_win.cc",
"watcher_metrics_provider_win.h",
]
deps = [
":postmortem_report_collector",
":stability",
"//base",
"//components/metrics",
"//third_party/crashpad/crashpad/client",
]
}
static_library("browser_watcher_client") {
sources = [
"watcher_client_win.cc",
"watcher_client_win.h",
"watcher_metrics_provider_win.cc",
"watcher_metrics_provider_win.h",
]
deps = [
":postmortem_report_collector",
":stability",
"//base",
"//components/metrics",
"//third_party/crashpad/crashpad/client",
]
}
static_library("postmortem_minidump_writer") {
# TODO(manzagop): remove this lib once Crashpad writes the minidumps.
sources = [
"postmortem_minidump_writer.h",
"postmortem_minidump_writer_win.cc",
]
deps = [
":stability_report_proto",
"//base",
"//third_party/crashpad/crashpad/client",
"//third_party/crashpad/crashpad/minidump",
"//third_party/crashpad/crashpad/util",
]
}
static_library("postmortem_minidump_writer") {
# TODO(manzagop): remove this lib once Crashpad writes the minidumps.
sources = [
"postmortem_minidump_writer.h",
"postmortem_minidump_writer_win.cc",
]
deps = [
":stability_report_proto",
"//base",
"//third_party/crashpad/crashpad/client",
"//third_party/crashpad/crashpad/minidump",
"//third_party/crashpad/crashpad/util",
]
}
static_library("postmortem_report_collector") {
sources = [
"postmortem_report_collector.cc",
"postmortem_report_collector.h",
]
deps = [
":postmortem_minidump_writer",
":stability_report_proto",
"//base",
"//third_party/crashpad/crashpad/client",
"//third_party/crashpad/crashpad/util",
]
static_library("postmortem_report_collector") {
sources = [
"postmortem_report_collector.cc",
"postmortem_report_collector.h",
]
deps = [
":postmortem_minidump_writer",
":stability_report_proto",
"//base",
"//third_party/crashpad/crashpad/client",
"//third_party/crashpad/crashpad/util",
]
}
}
static_library("stability") {
sources = [
"features.cc",
"features.h",
"stability_debugging_win.cc",
"stability_debugging_win.h",
"stability_debugging.cc",
"stability_debugging.h",
]
deps = [
"//base",
......@@ -90,44 +92,46 @@ static_library("stability_data") {
]
}
source_set("unit_tests") {
testonly = true
sources = [
"endsession_watcher_window_win_unittest.cc",
"exit_code_watcher_win_unittest.cc",
"postmortem_minidump_writer_win_unittest.cc",
"postmortem_report_collector_unittest.cc",
"watcher_client_win_unittest.cc",
"watcher_metrics_provider_win_unittest.cc",
"window_hang_monitor_win_unittest.cc",
]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":browser_watcher",
":browser_watcher_client",
":postmortem_minidump_writer",
":postmortem_report_collector",
":stability_report_proto",
"//base",
"//base/test:test_support",
"//testing/gmock",
"//testing/gtest",
"//third_party/crashpad/crashpad/client",
if (is_win) {
source_set("unit_tests") {
testonly = true
sources = [
"endsession_watcher_window_win_unittest.cc",
"exit_code_watcher_win_unittest.cc",
"postmortem_minidump_writer_win_unittest.cc",
"postmortem_report_collector_unittest.cc",
"watcher_client_win_unittest.cc",
"watcher_metrics_provider_win_unittest.cc",
"window_hang_monitor_win_unittest.cc",
]
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
deps = [
":browser_watcher",
":browser_watcher_client",
":postmortem_minidump_writer",
":postmortem_report_collector",
":stability_report_proto",
"//base",
"//base/test:test_support",
"//testing/gmock",
"//testing/gtest",
"//third_party/crashpad/crashpad/client",
# TODO(manzagop): remove this lib once Crashpad writes the minidumps.
"//third_party/crashpad/crashpad/compat",
"//third_party/crashpad/crashpad/minidump",
"//third_party/crashpad/crashpad/snapshot",
"//third_party/crashpad/crashpad/util",
]
}
# TODO(manzagop): remove this lib once Crashpad writes the minidumps.
"//third_party/crashpad/crashpad/compat",
"//third_party/crashpad/crashpad/minidump",
"//third_party/crashpad/crashpad/snapshot",
"//third_party/crashpad/crashpad/util",
]
}
executable("dump_postmortem") {
sources = [
"dump_postmortem_minidump_main_win.cc",
]
deps = [
":stability_report_proto",
"//base",
]
executable("dump_postmortem") {
sources = [
"dump_postmortem_minidump_main_win.cc",
]
deps = [
":stability_report_proto",
"//base",
]
}
}
......@@ -7,6 +7,7 @@
namespace browser_watcher {
const char kStabilityChannel[] = "channel";
const char kStabilityExecutionPhase[] = "stability-execution-phase";
const char kStabilityPlatform[] = "platform";
const char kStabilityProduct[] = "product";
const char kStabilitySpecialBuild[] = "special-build";
......
......@@ -9,6 +9,7 @@ namespace browser_watcher {
// Alphabetical list of stability data names.
extern const char kStabilityChannel[];
extern const char kStabilityExecutionPhase[];
extern const char kStabilityPlatform[];
extern const char kStabilityProduct[];
extern const char kStabilitySpecialBuild[];
......
......@@ -2,10 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/browser_watcher/stability_debugging_win.h"
#include "components/browser_watcher/stability_debugging.h"
#include <string>
#include "base/debug/activity_tracker.h"
#include "base/feature_list.h"
#include "base/files/file.h"
#include "base/metrics/persistent_memory_allocator.h"
......@@ -19,6 +20,7 @@ namespace browser_watcher {
namespace {
#if defined(OS_WIN)
bool GetCreationTime(const base::Process& process, base::Time* time) {
DCHECK(time);
......@@ -33,9 +35,12 @@ bool GetCreationTime(const base::Process& process, base::Time* time) {
*time = base::Time::FromFileTime(creation_time);
return true;
}
#endif // defined(OS_WIN)
} // namespace
#if defined(OS_WIN)
base::FilePath GetStabilityDir(const base::FilePath& user_data_dir) {
return user_data_dir.AppendASCII("Stability");
}
......@@ -84,5 +89,15 @@ void MarkStabilityFileForDeletion(const base::FilePath& user_data_dir) {
base::File::FLAG_READ |
base::File::FLAG_DELETE_ON_CLOSE);
}
#endif // defined(OS_WIN)
void SetStabilityDataInt(base::StringPiece name, int64_t value) {
base::debug::GlobalActivityTracker* global_tracker =
base::debug::GlobalActivityTracker::Get();
if (!global_tracker)
return; // Activity tracking isn't enabled.
global_tracker->user_data().SetInt(name, value);
}
} // namespace browser_watcher
......@@ -2,15 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_WIN_H_
#define COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_WIN_H_
#ifndef COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_H_
#define COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_H_
#include <stdint.h>
#include "base/files/file_path.h"
#include "base/gtest_prod_util.h"
#include "base/process/process.h"
#include "base/strings/string_piece.h"
namespace browser_watcher {
#if defined(OS_WIN)
// Returns the the stability debugging directory.
base::FilePath GetStabilityDir(const base::FilePath& user_data_dir);
......@@ -26,6 +31,11 @@ base::FilePath::StringType GetStabilityFilePattern();
// Marks the stability file for deletion.
void MarkStabilityFileForDeletion(const base::FilePath& user_data_dir);
#endif // defined(OS_WIN)
// Adds or updates the global stability user data.
void SetStabilityDataInt(base::StringPiece name, int64_t value);
} // namespace browser_watcher
#endif // COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_WIN_H_
#endif // COMPONENTS_BROWSER_WATCHER_STABILITY_DEBUGGING_H_
......@@ -24,7 +24,7 @@
#include "base/win/registry.h"
#include "components/browser_watcher/features.h"
#include "components/browser_watcher/postmortem_report_collector.h"
#include "components/browser_watcher/stability_debugging_win.h"
#include "components/browser_watcher/stability_debugging.h"
#include "third_party/crashpad/crashpad/client/crash_report_database.h"
namespace browser_watcher {
......
......@@ -85,6 +85,8 @@ static_library("metrics") {
":call_stack_profile_params",
"//base",
"//base:base_static",
"//components/browser_watcher:stability",
"//components/browser_watcher:stability_data",
"//components/prefs",
"//components/variations",
"//third_party/zlib:compression_utils",
......
......@@ -2,6 +2,7 @@
# dependencies to a minimal set.
include_rules = [
"-components",
"+components/browser_watcher",
"+components/compression",
"+components/metrics",
"+components/prefs",
......
......@@ -149,6 +149,8 @@
#include "base/time/time.h"
#include "base/tracked_objects.h"
#include "build/build_config.h"
#include "components/browser_watcher/stability_data_names.h"
#include "components/browser_watcher/stability_debugging.h"
#include "components/metrics/data_use_tracker.h"
#include "components/metrics/metrics_log.h"
#include "components/metrics/metrics_log_manager.h"
......@@ -499,6 +501,8 @@ void MetricsService::SetExecutionPhase(ExecutionPhase execution_phase,
PrefService* local_state) {
execution_phase_ = execution_phase;
local_state->SetInteger(prefs::kStabilityExecutionPhase, execution_phase_);
browser_watcher::SetStabilityDataInt(
browser_watcher::kStabilityExecutionPhase, execution_phase_);
}
void MetricsService::RecordBreakpadRegistration(bool success) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment