24 #ifndef NET_INSTAWEB_REWRITER_PUBLIC_EXPERIMENT_UTIL_H_
25 #define NET_INSTAWEB_REWRITER_PUBLIC_EXPERIMENT_UTIL_H_
31 namespace net_instaweb {
34 class ResponseHeaders;
37 namespace experiment {
39 enum ExperimentState {
48 kForceNoExperiment = -2,
51 kExperimentNotSet = -1,
59 const char kExperimentCookie[] =
"PageSpeedExperiment";
60 const char kExperimentCookiePrefix[] =
"PageSpeedExperiment=";
64 bool GetExperimentCookieState(
const RequestHeaders& headers,
int* value);
68 void RemoveExperimentCookie(RequestHeaders *headers);
73 void SetExperimentCookie(ResponseHeaders* headers,
int state,
74 const StringPiece& url, int64 expiration_time_ms);
77 int DetermineExperimentState(
const RewriteOptions* options);
80 bool AnyActiveExperiments(
const RewriteOptions* options);
84 GoogleString ExperimentStateToCookieString(
int state);
87 int CookieStringToState(
const StringPiece& cookie_str);