blob: e438b6e8e4bc631a8cb4aee6bfe6ae563692706c [file] [log] [blame]
// Copyright 2017 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.
#ifndef CHROME_BROWSER_CONFLICTS_THIRD_PARTY_METRICS_RECORDER_WIN_H_
#define CHROME_BROWSER_CONFLICTS_THIRD_PARTY_METRICS_RECORDER_WIN_H_
#include "base/macros.h"
#include "chrome/browser/conflicts/installed_programs_win.h"
#include "chrome/browser/conflicts/module_database_observer_win.h"
class ModuleDatabase;
struct ModuleInfoData;
struct ModuleInfoKey;
// Records metrics about third party modules loaded into Chrome.
class ThirdPartyMetricsRecorder : public ModuleDatabaseObserver {
public:
explicit ThirdPartyMetricsRecorder(ModuleDatabase* module_database);
~ThirdPartyMetricsRecorder() override;
// ModuleDatabaseObserver:
void OnNewModuleFound(const ModuleInfoKey& module_key,
const ModuleInfoData& module_data) override;
void OnModuleDatabaseIdle() override;
private:
void OnInstalledProgramsInitialized(ModuleDatabase* module_database);
InstalledPrograms installed_programs_;
// Flag used to avoid sending module counts multiple times.
bool metrics_emitted_ = false;
// Counters for different types of modules.
size_t module_count_ = 0;
size_t signed_module_count_ = 0;
size_t catalog_module_count_ = 0;
size_t microsoft_module_count_ = 0;
size_t loaded_third_party_module_count_ = 0;
size_t not_loaded_third_party_module_count_ = 0;
DISALLOW_COPY_AND_ASSIGN(ThirdPartyMetricsRecorder);
};
#endif // CHROME_BROWSER_CONFLICTS_THIRD_PARTY_METRICS_RECORDER_WIN_H_