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