Home | History | Annotate | Download | only in prerender
      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 #ifndef CHROME_BROWSER_PRERENDER_PRERENDER_FIELD_TRIAL_H_
      6 #define CHROME_BROWSER_PRERENDER_PRERENDER_FIELD_TRIAL_H_
      7 
      8 #include <string>
      9 
     10 class Profile;
     11 
     12 namespace base {
     13 class CommandLine;
     14 }
     15 
     16 namespace prerender {
     17 
     18 // Parse the --prerender= command line switch, which controls prerendering. If
     19 // the switch is unset or is set to "auto" then the user is assigned to a
     20 // field trial.
     21 void ConfigurePrerender(const base::CommandLine& command_line);
     22 
     23 // Returns true if the user has opted in or has been opted in to the
     24 // prerendering from Omnibox experiment.
     25 bool IsOmniboxEnabled(Profile* profile);
     26 
     27 // Returns true if session storage namespace merging is not disabled.
     28 bool ShouldMergeSessionStorageNamespaces();
     29 
     30 // Returns true iff the Prerender Local Predictor is enabled.
     31 bool IsLocalPredictorEnabled();
     32 
     33 // Indicates whether to disable the local predictor due to unencrypted sync
     34 // settings and configuration.
     35 bool ShouldDisableLocalPredictorBasedOnSyncAndConfiguration(Profile* profile);
     36 
     37 // Returns whether or not the local predictor is temporarily disabled, due
     38 // to network predictive action settings and current network.
     39 bool ShouldDisableLocalPredictorDueToPreferencesAndNetwork(Profile* profile);
     40 
     41 // Returns true iff the LoggedIn Predictor is enabled.
     42 bool IsLoggedInPredictorEnabled();
     43 
     44 // Returns true iff the side-effect free whitelist is enabled.
     45 bool IsSideEffectFreeWhitelistEnabled();
     46 
     47 // Returns true if the local predictor should actually launch prerenders.
     48 bool IsLocalPredictorPrerenderLaunchEnabled();
     49 
     50 // Returns true if the local predictor should prerender, but only as control
     51 // group. If the local predictor never launches prerenders, then this setting
     52 // is irrelevant.
     53 bool IsLocalPredictorPrerenderAlwaysControlEnabled();
     54 
     55 // Returns true if the local predictor should prefetch rather than prerender.
     56 bool IsLocalPredictorPrerenderPrefetchEnabled();
     57 
     58 // Returns true if we should query the prerender service for the profile
     59 // provided.
     60 bool ShouldQueryPrerenderService(Profile* profile);
     61 
     62 // Indicates whether we should query the prerender service for the current URL
     63 // and candidate URLs, respectively.
     64 bool ShouldQueryPrerenderServiceForCurrentURL();
     65 bool ShouldQueryPrerenderServiceForCandidateURLs();
     66 
     67 // Returns the URL prefix to be used for the prerender service. The only thing
     68 // that will be appended is the urlencoded query json.
     69 std::string GetPrerenderServiceURLPrefix();
     70 
     71 // Returns the prerender service behavior ID that should be passed to the
     72 // to the prerender service in requests.
     73 int GetPrerenderServiceBehaviorID();
     74 
     75 // Returns the fetch timeout to be used for the prerender service, in ms.
     76 int GetPrerenderServiceFetchTimeoutMs();
     77 
     78 // Returns the timeout for entries in the prefetch list, in seconds.
     79 int GetPrerenderPrefetchListTimeoutSeconds();
     80 
     81 // Returns the TTL to be used for the local predictor.
     82 int GetLocalPredictorTTLSeconds();
     83 
     84 // Returns the half-life time to use to decay local predictor prerender
     85 // priorities.
     86 int GetLocalPredictorPrerenderPriorityHalfLifeTimeSeconds();
     87 
     88 // Returns the maximum number of concurrent prerenders the local predictor
     89 // may maintain.
     90 int GetLocalPredictorMaxConcurrentPrerenders();
     91 
     92 // Returns the maximum number of concurrent prerenders the local predictor
     93 // may launch concurrently.
     94 int GetLocalPredictorMaxLaunchPrerenders();
     95 
     96 // The following functions return whether certain LocalPredictor checks should
     97 // be skipped, as indicated by the name.
     98 bool SkipLocalPredictorFragment();
     99 bool SkipLocalPredictorHTTPS();
    100 bool SkipLocalPredictorWhitelist();
    101 bool SkipLocalPredictorServiceWhitelist();
    102 bool SkipLocalPredictorLoggedIn();
    103 bool SkipLocalPredictorDefaultNoPrerender();
    104 bool SkipLocalPredictorLocalCandidates();
    105 bool SkipLocalPredictorServiceCandidates();
    106 
    107 // Indicates whether no prerender cookie stores should be used for prerendering.
    108 bool IsPrerenderCookieStoreEnabled();
    109 
    110 }  // namespace prerender
    111 
    112 #endif  // CHROME_BROWSER_PRERENDER_PRERENDER_FIELD_TRIAL_H_
    113