Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc

Issue 2615433002: Remove ChromeBrowserProvider::IsOffTheRecordSessionActive(). (Closed)
Patch Set: Address comment. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc
diff --git a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc b/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc
deleted file mode 100644
index e0b8216fd5cd91974dcc9dbd6115ee55c84918dc..0000000000000000000000000000000000000000
--- a/ios/chrome/browser/metrics/ios_chrome_metrics_service_client.cc
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright 2015 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 "ios/chrome/browser/metrics/ios_chrome_metrics_service_client.h"
-
-#include <stdint.h>
-
-#include <utility>
-#include <vector>
-
-#include "base/bind.h"
-#include "base/callback.h"
-#include "base/command_line.h"
-#include "base/files/file_path.h"
-#include "base/logging.h"
-#include "base/memory/ptr_util.h"
-#include "base/metrics/histogram.h"
-#include "base/process/process_metrics.h"
-#include "base/rand_util.h"
-#include "base/strings/string16.h"
-#include "base/threading/platform_thread.h"
-#include "components/crash/core/common/crash_keys.h"
-#include "components/metrics/call_stack_profile_metrics_provider.h"
-#include "components/metrics/drive_metrics_provider.h"
-#include "components/metrics/metrics_pref_names.h"
-#include "components/metrics/metrics_reporting_default_state.h"
-#include "components/metrics/metrics_service.h"
-#include "components/metrics/net/cellular_logic_helper.h"
-#include "components/metrics/net/net_metrics_log_uploader.h"
-#include "components/metrics/net/network_metrics_provider.h"
-#include "components/metrics/net/version_utils.h"
-#include "components/metrics/profiler/profiler_metrics_provider.h"
-#include "components/metrics/profiler/tracking_synchronizer.h"
-#include "components/metrics/stability_metrics_helper.h"
-#include "components/metrics/ui/screen_info_metrics_provider.h"
-#include "components/metrics/url_constants.h"
-#include "components/omnibox/browser/omnibox_metrics_provider.h"
-#include "components/prefs/pref_registry_simple.h"
-#include "components/prefs/pref_service.h"
-#include "components/signin/core/browser/signin_status_metrics_provider.h"
-#include "components/sync/device_info/device_count_metrics_provider.h"
-#include "components/translate/core/browser/translate_ranker_metrics_provider.h"
-#include "components/variations/variations_associated_data.h"
-#include "components/version_info/version_info.h"
-#include "ios/chrome/browser/application_context.h"
-#include "ios/chrome/browser/chrome_paths.h"
-#include "ios/chrome/browser/google/google_brand.h"
-#include "ios/chrome/browser/metrics/ios_chrome_stability_metrics_provider.h"
-#include "ios/chrome/browser/metrics/mobile_session_shutdown_metrics_provider.h"
-#include "ios/chrome/browser/signin/ios_chrome_signin_status_metrics_provider_delegate.h"
-#include "ios/chrome/browser/sync/ios_chrome_sync_client.h"
-#include "ios/chrome/browser/tab_parenting_global_observer.h"
-#include "ios/chrome/browser/ui/browser_otr_state.h"
-#include "ios/chrome/common/channel_info.h"
-#include "ios/web/public/web_thread.h"
-
-IOSChromeMetricsServiceClient::IOSChromeMetricsServiceClient(
- metrics::MetricsStateManager* state_manager)
- : metrics_state_manager_(state_manager),
- stability_metrics_provider_(nullptr),
- profiler_metrics_provider_(nullptr),
- drive_metrics_provider_(nullptr),
- start_time_(base::TimeTicks::Now()),
- has_uploaded_profiler_data_(false),
- weak_ptr_factory_(this) {
- DCHECK(thread_checker_.CalledOnValidThread());
- RegisterForNotifications();
-}
-
-IOSChromeMetricsServiceClient::~IOSChromeMetricsServiceClient() {
- DCHECK(thread_checker_.CalledOnValidThread());
-}
-
-// static
-std::unique_ptr<IOSChromeMetricsServiceClient>
-IOSChromeMetricsServiceClient::Create(
- metrics::MetricsStateManager* state_manager) {
- // Perform two-phase initialization so that |client->metrics_service_| only
- // receives pointers to fully constructed objects.
- std::unique_ptr<IOSChromeMetricsServiceClient> client(
- new IOSChromeMetricsServiceClient(state_manager));
- client->Initialize();
-
- return client;
-}
-
-// static
-void IOSChromeMetricsServiceClient::RegisterPrefs(
- PrefRegistrySimple* registry) {
- metrics::MetricsService::RegisterPrefs(registry);
- metrics::StabilityMetricsHelper::RegisterPrefs(registry);
- metrics::RegisterMetricsReportingStatePrefs(registry);
-}
-
-metrics::MetricsService* IOSChromeMetricsServiceClient::GetMetricsService() {
- return metrics_service_.get();
-}
-
-void IOSChromeMetricsServiceClient::SetMetricsClientId(
- const std::string& client_id) {
- crash_keys::SetMetricsClientIdFromGUID(client_id);
-}
-
-int32_t IOSChromeMetricsServiceClient::GetProduct() {
- return metrics::ChromeUserMetricsExtension::CHROME;
-}
-
-std::string IOSChromeMetricsServiceClient::GetApplicationLocale() {
- return GetApplicationContext()->GetApplicationLocale();
-}
-
-bool IOSChromeMetricsServiceClient::GetBrand(std::string* brand_code) {
- return ios::google_brand::GetBrand(brand_code);
-}
-
-metrics::SystemProfileProto::Channel
-IOSChromeMetricsServiceClient::GetChannel() {
- return metrics::AsProtobufChannel(::GetChannel());
-}
-
-std::string IOSChromeMetricsServiceClient::GetVersionString() {
- return metrics::GetVersionString();
-}
-
-void IOSChromeMetricsServiceClient::OnLogUploadComplete() {}
-
-void IOSChromeMetricsServiceClient::InitializeSystemProfileMetrics(
- const base::Closure& done_callback) {
- finished_init_task_callback_ = done_callback;
- drive_metrics_provider_->GetDriveMetrics(
- base::Bind(&IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics,
- weak_ptr_factory_.GetWeakPtr()));
-}
-
-void IOSChromeMetricsServiceClient::CollectFinalMetricsForLog(
- const base::Closure& done_callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- collect_final_metrics_done_callback_ = done_callback;
-
- if (ShouldIncludeProfilerDataInLog()) {
- // Fetch profiler data. This will call into
- // |FinishedReceivingProfilerData()| when the task completes.
- metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously(
- weak_ptr_factory_.GetWeakPtr());
- } else {
- CollectFinalHistograms();
- }
-}
-
-std::unique_ptr<metrics::MetricsLogUploader>
-IOSChromeMetricsServiceClient::CreateUploader(
- const base::Callback<void(int)>& on_upload_complete) {
- return std::unique_ptr<metrics::MetricsLogUploader>(
- new metrics::NetMetricsLogUploader(
- GetApplicationContext()->GetSystemURLRequestContext(),
- metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType,
- on_upload_complete));
-}
-
-base::TimeDelta IOSChromeMetricsServiceClient::GetStandardUploadInterval() {
- return metrics::GetUploadInterval();
-}
-
-base::string16 IOSChromeMetricsServiceClient::GetRegistryBackupKey() {
- return base::string16();
-}
-
-void IOSChromeMetricsServiceClient::OnRendererProcessCrash() {
- stability_metrics_provider_->LogRendererCrash();
-}
-
-void IOSChromeMetricsServiceClient::WebStateDidStartLoading(
- web::WebState* web_state) {
- metrics_service_->OnApplicationNotIdle();
-}
-
-void IOSChromeMetricsServiceClient::WebStateDidStopLoading(
- web::WebState* web_state) {
- metrics_service_->OnApplicationNotIdle();
-}
-
-void IOSChromeMetricsServiceClient::Initialize() {
- metrics_service_.reset(new metrics::MetricsService(
- metrics_state_manager_, this, GetApplicationContext()->GetLocalState()));
-
- // Register metrics providers.
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new metrics::NetworkMetricsProvider(
- web::WebThread::GetBlockingPool())));
-
- // Currently, we configure OmniboxMetricsProvider to not log events to UMA
- // if there is a single incognito session visible. In the future, it may
- // be worth revisiting this to still log events from non-incognito sessions.
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider(
- base::Bind(&::IsOffTheRecordSessionActive))));
-
- stability_metrics_provider_ = new IOSChromeStabilityMetricsProvider(
- GetApplicationContext()->GetLocalState());
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(stability_metrics_provider_));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new metrics::ScreenInfoMetricsProvider));
-
- drive_metrics_provider_ = new metrics::DriveMetricsProvider(
- web::WebThread::GetTaskRunnerForThread(web::WebThread::FILE),
- ios::FILE_LOCAL_STATE);
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_));
-
- profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider(
- base::Bind(&metrics::IsCellularLogicEnabled));
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new metrics::CallStackProfileMetricsProvider));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- SigninStatusMetricsProvider::CreateInstance(base::WrapUnique(
- new IOSChromeSigninStatusMetricsProviderDelegate))));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new MobileSessionShutdownMetricsProvider(metrics_service_.get())));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new syncer::DeviceCountMetricsProvider(
- base::Bind(&IOSChromeSyncClient::GetDeviceInfoTrackers))));
-
- metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new translate::TranslateRankerMetricsProvider()));
-}
-
-void IOSChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() {
- finished_init_task_callback_.Run();
-}
-
-bool IOSChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() {
- // Upload profiler data at most once per session.
- if (has_uploaded_profiler_data_)
- return false;
-
- // For each log, flip a fair coin. Thus, profiler data is sent with the first
- // log with probability 50%, with the second log with probability 25%, and so
- // on. As a result, uploaded data is biased toward earlier logs.
- // TODO(isherman): Explore other possible algorithms, and choose one that
- // might be more appropriate. For example, it might be reasonable to include
- // profiler data with some fixed probability, so that a given client might
- // upload profiler data more than once; but on average, clients won't upload
- // too much data.
- if (base::RandDouble() < 0.5)
- return false;
-
- has_uploaded_profiler_data_ = true;
- return true;
-}
-
-void IOSChromeMetricsServiceClient::ReceivedProfilerData(
- const metrics::ProfilerDataAttributes& attributes,
- const tracked_objects::ProcessDataPhaseSnapshot& process_data_phase,
- const metrics::ProfilerEvents& past_events) {
- profiler_metrics_provider_->RecordProfilerData(
- process_data_phase, attributes.process_id, attributes.process_type,
- attributes.profiling_phase, attributes.phase_start - start_time_,
- attributes.phase_finish - start_time_, past_events);
-}
-
-void IOSChromeMetricsServiceClient::FinishedReceivingProfilerData() {
- CollectFinalHistograms();
-}
-
-void IOSChromeMetricsServiceClient::CollectFinalHistograms() {
- DCHECK(thread_checker_.CalledOnValidThread());
-
- // TODO(ios): Try to extract the flow below into a utility function that is
- // shared between the iOS port's usage and
- // ChromeMetricsServiceClient::CollectFinalHistograms()'s usage of
- // MetricsMemoryDetails.
- std::unique_ptr<base::ProcessMetrics> process_metrics(
- base::ProcessMetrics::CreateProcessMetrics(
- base::GetCurrentProcessHandle()));
- UMA_HISTOGRAM_MEMORY_KB("Memory.Browser",
- process_metrics->GetWorkingSetSize() / 1024);
- collect_final_metrics_done_callback_.Run();
-}
-
-void IOSChromeMetricsServiceClient::RegisterForNotifications() {
- tab_parented_subscription_ =
- TabParentingGlobalObserver::GetInstance()->RegisterCallback(
- base::Bind(&IOSChromeMetricsServiceClient::OnTabParented,
- base::Unretained(this)));
- omnibox_url_opened_subscription_ =
- OmniboxEventGlobalTracker::GetInstance()->RegisterCallback(
- base::Bind(&IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox,
- base::Unretained(this)));
-}
-
-void IOSChromeMetricsServiceClient::OnTabParented(web::WebState* web_state) {
- metrics_service_->OnApplicationNotIdle();
-}
-
-void IOSChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) {
- metrics_service_->OnApplicationNotIdle();
-}
-
-metrics::EnableMetricsDefault
-IOSChromeMetricsServiceClient::GetMetricsReportingDefaultState() {
- return metrics::GetMetricsReportingDefaultState(
- GetApplicationContext()->GetLocalState());
-}
« no previous file with comments | « ios/chrome/browser/metrics/BUILD.gn ('k') | ios/chrome/browser/metrics/ios_chrome_metrics_service_client.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698