// Copyright 2013 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.
//
// This files declares a class that contains methods and data to conduct
// for user expeirments.
#ifndef CHROME_INSTALLER_UTIL_USER_EXPERIMENT_H_
#define CHROME_INSTALLER_UTIL_USER_EXPERIMENT_H_
#include "base/strings/string16.h"
#include "chrome/installer/util/util_constants.h"
namespace base {
class CommandLine;
class FilePath;
}
namespace installer {
class Product;
// Flags to control what to show in the UserExperiment dialog.
enum ToastUiFlags {
kToastUiUninstall = 1 << 0, // Uninstall radio button.
kToastUiDontBugMeAsButton = 1 << 1, // This is a button, not a radio button.
kToastUiWhyLink = 1 << 2, // Has the 'why I am seeing this' link.
kToastUiMakeDefault = 1 << 3, // Has the 'make it default' checkbox.
};
// A struct for communicating what a UserExperiment contains. In these
// experiments we show toasts to the user if they are inactive for a certain
// amount of time.
struct ExperimentDetails {
base::string16 prefix; // The experiment code prefix for this experiment,
// also known as the 'TV' part in 'TV80'.
int flavor; // The flavor index for this experiment.
int heading; // The heading resource ID to use for this experiment.
int flags; // See ToastUIFlags above.
int control_group; // Size of the control group (in percentages). Control
// group is the group that qualifies for the
// experiment but does not participate.
};
// Creates the experiment details for a given language-brand combo.
// If |flavor| is -1, then a flavor will be selected at random. |experiment|
// is the struct you want to write the experiment information to.
// Returns false if no experiment details could be gathered.
bool CreateExperimentDetails(int flavor, ExperimentDetails* experiment);
// After an install or upgrade the user might qualify to participate in an
// experiment. This function determines if the user qualifies and if so it
// sets the wheels in motion or in simple cases does the experiment itself.
void LaunchBrowserUserExperiment(const base::CommandLine& base_command,
InstallStatus status,
bool system_level);
// The user has qualified for the inactive user toast experiment and this
// function just performs it.
void InactiveUserToastExperiment(int flavor,
const base::string16& experiment_group,
const Product& product,
const base::FilePath& application_path);
} // namespace installer
#endif // CHROME_INSTALLER_UTIL_USER_EXPERIMENT_H_