Home | History | Annotate | Download | only in gcapi
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/installer/gcapi/gcapi_omaha_experiment.h"
      6 
      7 #include "base/strings/string16.h"
      8 #include "base/strings/stringprintf.h"
      9 #include "base/time/time.h"
     10 #include "chrome/installer/gcapi/gcapi.h"
     11 #include "chrome/installer/util/google_update_experiment_util.h"
     12 #include "chrome/installer/util/google_update_settings.h"
     13 
     14 using base::Time;
     15 using base::TimeDelta;
     16 
     17 namespace {
     18 
     19 // Returns the number of weeks since 2/3/2003.
     20 int GetCurrentRlzWeek() {
     21   Time::Exploded february_third_2003_exploded = {2003, 2, 1, 3, 0, 0, 0, 0};
     22   Time f = Time::FromUTCExploded(february_third_2003_exploded);
     23   TimeDelta delta = Time::Now() - f;
     24   return delta.InDays() / 7;
     25 }
     26 
     27 }  // namespace
     28 
     29 bool SetReactivationExperimentLabels(const wchar_t* brand_code,
     30                                      int shell_mode) {
     31   if (!brand_code) {
     32     return false;
     33   }
     34 
     35   int week_number = GetCurrentRlzWeek();
     36   if (week_number < 0 || week_number > 999)
     37     week_number = 999;
     38 
     39   string16 experiment_labels;
     40   base::SStringPrintf(&experiment_labels,
     41                       L"reacbrand=%ls_%d|%ls",
     42                       brand_code,
     43                       week_number,
     44                       installer::BuildExperimentDateString().c_str());
     45 
     46   return GoogleUpdateSettings::SetExperimentLabels(
     47       shell_mode == GCAPI_INVOKED_UAC_ELEVATION,
     48       experiment_labels);
     49 }
     50