15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_PRERENDER_PRERENDER_CONFIG_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_PRERENDER_PRERENDER_CONFIG_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace prerender {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct Config {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  Config();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ~Config();
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Maximum memory use for a prerendered page until it is killed.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t max_bytes;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Number of simultaneous prerender pages from link elements allowed. Enforced
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // by PrerenderLinkManager.
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size_t max_link_concurrency;
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // Number of simultaneous prerender pages from link elements allowed per
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // launching page. Enforced by PrerenderLinkManager.
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  size_t max_link_concurrency_per_launcher;
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Is rate limiting enabled?
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool rate_limit_enabled;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // The maximum time that a prerender can wait for launch in the
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // PrerenderLinkManager.
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  base::TimeDelta max_wait_to_launch;
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The default time to live of a newly created prerender. May be shortened to
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // abandon_time_to_live, below.
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TimeDelta time_to_live;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // After a prerender has been abandoned by the user navigating away from the
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // source page or otherwise mooting the launcher, how long until the prerender
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // should be removed. This exists because a prerendered page is often
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // navigated to through a chain of redirects; removing the prerender when the
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // link element is removed because of navigation would destroy prerenders just
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // before they were going to be used.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::TimeDelta abandon_time_to_live;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // The default tab bounds used as the prerenderer tab size when the active tab
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // cannot be accessed.
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  gfx::Rect default_tab_bounds;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // User agent being used as an override for the WebContents.
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string user_agent_override;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Is the user agent being overridden for this NavigationEntry?
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_overriding_user_agent;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace prerender
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_PRERENDER_PRERENDER_CONFIG_H_
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64