Commit 64b8652c authored by gab@chromium.org's avatar gab@chromium.org

Keep all references to kInstallDate inside components/metrics/

Follow-up to https://codereview.chromium.org/370813003/ as per request.

BUG=391338
TEST=kInstallDate is still set on startup when it wasn't previously set (and no backup is present in registry)

Review URL: https://codereview.chromium.org/396753005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283467 0039d316-1c4b-4281-b951-d872f2087c98
parent 7c032145
...@@ -31,9 +31,8 @@ ChromeBrowserFieldTrials::ChromeBrowserFieldTrials( ...@@ -31,9 +31,8 @@ ChromeBrowserFieldTrials::ChromeBrowserFieldTrials(
ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() { ChromeBrowserFieldTrials::~ChromeBrowserFieldTrials() {
} }
void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) { void ChromeBrowserFieldTrials::SetupFieldTrials(const base::Time& install_time,
const base::Time install_time = base::Time::FromTimeT( PrefService* local_state) {
local_state->GetInt64(metrics::prefs::kInstallDate));
DCHECK(!install_time.is_null()); DCHECK(!install_time.is_null());
// Field trials that are shared by all platforms. // Field trials that are shared by all platforms.
...@@ -41,11 +40,10 @@ void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) { ...@@ -41,11 +40,10 @@ void ChromeBrowserFieldTrials::SetupFieldTrials(PrefService* local_state) {
InstantiateDynamicTrials(); InstantiateDynamicTrials();
#if defined(OS_ANDROID) || defined(OS_IOS) #if defined(OS_ANDROID) || defined(OS_IOS)
chrome::SetupMobileFieldTrials( chrome::SetupMobileFieldTrials(parsed_command_line_);
parsed_command_line_, install_time, local_state);
#else #else
chrome::SetupDesktopFieldTrials( chrome::SetupDesktopFieldTrials(
parsed_command_line_, install_time, local_state); parsed_command_line_, local_state);
#endif #endif
} }
......
...@@ -10,14 +10,19 @@ ...@@ -10,14 +10,19 @@
class PrefService; class PrefService;
namespace base {
class Time;
}
class ChromeBrowserFieldTrials { class ChromeBrowserFieldTrials {
public: public:
explicit ChromeBrowserFieldTrials(const base::CommandLine& command_line); explicit ChromeBrowserFieldTrials(const base::CommandLine& command_line);
~ChromeBrowserFieldTrials(); ~ChromeBrowserFieldTrials();
// Called by the browser main sequence to set up Field Trials for this client. // Called by the browser main sequence to set up Field Trials for this client.
// |local_state| is used to extract properties like install time. // |local_state| is used to set browser-wide properties.
void SetupFieldTrials(PrefService* local_state); void SetupFieldTrials(const base::Time& install_time,
PrefService* local_state);
private: private:
// Instantiates dynamic trials by querying their state, to ensure they get // Instantiates dynamic trials by querying their state, to ensure they get
......
...@@ -118,7 +118,6 @@ void SetupPreReadFieldTrial() { ...@@ -118,7 +118,6 @@ void SetupPreReadFieldTrial() {
} // namespace } // namespace
void SetupDesktopFieldTrials(const CommandLine& parsed_command_line, void SetupDesktopFieldTrials(const CommandLine& parsed_command_line,
const base::Time& install_time,
PrefService* local_state) { PrefService* local_state) {
prerender::ConfigurePrerender(parsed_command_line); prerender::ConfigurePrerender(parsed_command_line);
AutoLaunchChromeFieldTrial(); AutoLaunchChromeFieldTrial();
......
...@@ -22,7 +22,6 @@ namespace chrome { ...@@ -22,7 +22,6 @@ namespace chrome {
// platforms. // platforms.
// |local_state| is needed by some other methods called from within this one. // |local_state| is needed by some other methods called from within this one.
void SetupDesktopFieldTrials(const base::CommandLine& parsed_command_line, void SetupDesktopFieldTrials(const base::CommandLine& parsed_command_line,
const base::Time& install_time,
PrefService* local_state); PrefService* local_state);
} // namespace chrome } // namespace chrome
......
...@@ -72,9 +72,7 @@ void DataCompressionProxyFieldTrials() { ...@@ -72,9 +72,7 @@ void DataCompressionProxyFieldTrials() {
} // namespace } // namespace
void SetupMobileFieldTrials(const CommandLine& parsed_command_line, void SetupMobileFieldTrials(const CommandLine& parsed_command_line) {
const base::Time& install_time,
PrefService* local_state) {
DataCompressionProxyFieldTrials(); DataCompressionProxyFieldTrials();
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
prerender::ConfigurePrerender(parsed_command_line); prerender::ConfigurePrerender(parsed_command_line);
......
...@@ -20,9 +20,7 @@ namespace chrome { ...@@ -20,9 +20,7 @@ namespace chrome {
// Add an invocation of your field trial init function to this method, or to // Add an invocation of your field trial init function to this method, or to
// SetupFieldTrials in chrome_browser_field_trials.cc if it is for all // SetupFieldTrials in chrome_browser_field_trials.cc if it is for all
// platforms. // platforms.
void SetupMobileFieldTrials(const base::CommandLine& parsed_command_line, void SetupMobileFieldTrials(const base::CommandLine& parsed_command_line);
const base::Time& install_time,
PrefService* local_state);
} // namespace chrome } // namespace chrome
......
...@@ -104,7 +104,6 @@ ...@@ -104,7 +104,6 @@
#include "chrome/installer/util/google_update_settings.h" #include "chrome/installer/util/google_update_settings.h"
#include "components/google/core/browser/google_util.h" #include "components/google/core/browser/google_util.h"
#include "components/language_usage_metrics/language_usage_metrics.h" #include "components/language_usage_metrics/language_usage_metrics.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/metrics/metrics_service.h" #include "components/metrics/metrics_service.h"
#include "components/nacl/browser/nacl_browser.h" #include "components/nacl/browser/nacl_browser.h"
#include "components/nacl/browser/nacl_process_host.h" #include "components/nacl/browser/nacl_process_host.h"
...@@ -601,8 +600,9 @@ void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() { ...@@ -601,8 +600,9 @@ void ChromeBrowserMainParts::SetupMetricsAndFieldTrials() {
if (variations_service) if (variations_service)
variations_service->CreateTrialsFromSeed(); variations_service->CreateTrialsFromSeed();
// This must be called after the local state is initialized. // This must be called after |local_state_| is initialized.
browser_field_trials_.SetupFieldTrials(local_state_); browser_field_trials_.SetupFieldTrials(
base::Time::FromTimeT(metrics->GetInstallDate()), local_state_);
// Initialize FieldTrialSynchronizer system. This is a singleton and is used // Initialize FieldTrialSynchronizer system. This is a singleton and is used
// for posting tasks via base::Bind. Its deleted when it goes out of scope. // for posting tasks via base::Bind. Its deleted when it goes out of scope.
...@@ -937,15 +937,6 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { ...@@ -937,15 +937,6 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() {
// Initialize tracking synchronizer system. // Initialize tracking synchronizer system.
tracking_synchronizer_ = new chrome_browser_metrics::TrackingSynchronizer(); tracking_synchronizer_ = new chrome_browser_metrics::TrackingSynchronizer();
// Now that all preferences have been registered, set the install date
// for the uninstall metrics if this is our first run. This only actually
// gets used if the user has metrics reporting enabled at uninstall time.
int64 install_date = local_state_->GetInt64(metrics::prefs::kInstallDate);
if (install_date == 0) {
local_state_->SetInt64(metrics::prefs::kInstallDate,
base::Time::Now().ToTimeT());
}
#if defined(OS_MACOSX) #if defined(OS_MACOSX)
// Get the Keychain API to register for distributed notifications on the main // Get the Keychain API to register for distributed notifications on the main
// thread, which has a proper CFRunloop, instead of later on the I/O thread, // thread, which has a proper CFRunloop, instead of later on the I/O thread,
......
...@@ -179,6 +179,7 @@ ...@@ -179,6 +179,7 @@
#include "base/threading/platform_thread.h" #include "base/threading/platform_thread.h"
#include "base/threading/thread.h" #include "base/threading/thread.h"
#include "base/threading/thread_restrictions.h" #include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "base/tracked_objects.h" #include "base/tracked_objects.h"
#include "base/values.h" #include "base/values.h"
#include "components/metrics/metrics_log.h" #include "components/metrics/metrics_log.h"
...@@ -331,6 +332,13 @@ MetricsService::MetricsService(metrics::MetricsStateManager* state_manager, ...@@ -331,6 +332,13 @@ MetricsService::MetricsService(metrics::MetricsStateManager* state_manager,
DCHECK(state_manager_); DCHECK(state_manager_);
DCHECK(client_); DCHECK(client_);
DCHECK(local_state_); DCHECK(local_state_);
// Set the install date if this is our first run.
int64 install_date = local_state_->GetInt64(metrics::prefs::kInstallDate);
if (install_date == 0) {
local_state_->SetInt64(metrics::prefs::kInstallDate,
base::Time::Now().ToTimeT());
}
} }
MetricsService::~MetricsService() { MetricsService::~MetricsService() {
......
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