1 // Copyright 2016 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 HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_OPTIONS_H_ 6 #define HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_OPTIONS_H_ 7 8 #include <string> 9 10 #include "base/callback.h" 11 #include "base/files/file_path.h" 12 #include "base/optional.h" 13 #include "base/time/time.h" 14 #include "headless/public/headless_browser.h" 15 #include "headless/public/headless_browser_context.h" 16 17 namespace headless { 18 19 // Represents options which can be customized for a given BrowserContext. 20 // Provides a fallback to default browser-side options when an option 21 // is not set for a particular BrowserContext. 22 class HeadlessBrowserContextOptions { 23 public: 24 HeadlessBrowserContextOptions(HeadlessBrowserContextOptions&& options); 25 ~HeadlessBrowserContextOptions(); 26 27 HeadlessBrowserContextOptions& operator=( 28 HeadlessBrowserContextOptions&& options); 29 30 const std::string& product_name_and_version() const; 31 const std::string& accept_language() const; 32 const std::string& user_agent() const; 33 34 // See HeadlessBrowser::Options::proxy_config. 35 const net::ProxyConfig* proxy_config() const; 36 37 const gfx::Size& window_size() const; 38 39 // See HeadlessBrowser::Options::user_data_dir. 40 const base::FilePath& user_data_dir() const; 41 42 // See HeadlessBrowser::Options::incognito_mode. 43 bool incognito_mode() const; 44 45 // See HeadlessBrowser::Options::block_new_web_contents. 46 bool block_new_web_contents() const; 47 48 // See HeadlessBrowser::Options::font_render_hinting. 49 gfx::FontRenderParams::Hinting font_render_hinting() const; 50 51 // Callback that is invoked to override WebPreferences for RenderViews 52 // created within this HeadlessBrowserContext. 53 base::RepeatingCallback<void(WebPreferences*)> 54 override_web_preferences_callback() const; 55 56 private: 57 friend class HeadlessBrowserContext::Builder; 58 59 explicit HeadlessBrowserContextOptions(HeadlessBrowser::Options*); 60 61 HeadlessBrowser::Options* browser_options_; 62 63 base::Optional<std::string> product_name_and_version_; 64 base::Optional<std::string> accept_language_; 65 base::Optional<std::string> user_agent_; 66 std::unique_ptr<net::ProxyConfig> proxy_config_; 67 base::Optional<std::string> host_resolver_rules_; 68 base::Optional<gfx::Size> window_size_; 69 base::Optional<base::FilePath> user_data_dir_; 70 base::Optional<bool> incognito_mode_; 71 base::Optional<bool> block_new_web_contents_; 72 base::Optional<base::RepeatingCallback<void(WebPreferences*)>> 73 override_web_preferences_callback_; 74 75 base::Optional<gfx::FontRenderParams::Hinting> font_render_hinting_; 76 77 DISALLOW_COPY_AND_ASSIGN(HeadlessBrowserContextOptions); 78 }; 79 80 } // namespace headless 81 82 #endif // HEADLESS_LIB_BROWSER_HEADLESS_BROWSER_CONTEXT_OPTIONS_H_ 83