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 #include "headless/lib/browser/headless_browser_context_options.h"
6
7 #include <string>
8 #include <utility>
9
10 namespace headless {
11
12 namespace {
13
14 template <class T>
ReturnOverriddenValue(const base::Optional<T> & value,const T & default_value)15 const T& ReturnOverriddenValue(const base::Optional<T>& value,
16 const T& default_value) {
17 return value ? *value : default_value;
18 }
19
20 } // namespace
21
22 HeadlessBrowserContextOptions::HeadlessBrowserContextOptions(
23 HeadlessBrowserContextOptions&& options) = default;
24
25 HeadlessBrowserContextOptions::~HeadlessBrowserContextOptions() = default;
26
27 HeadlessBrowserContextOptions& HeadlessBrowserContextOptions::operator=(
28 HeadlessBrowserContextOptions&& options) = default;
29
HeadlessBrowserContextOptions(HeadlessBrowser::Options * options)30 HeadlessBrowserContextOptions::HeadlessBrowserContextOptions(
31 HeadlessBrowser::Options* options)
32 : browser_options_(options) {}
33
product_name_and_version() const34 const std::string& HeadlessBrowserContextOptions::product_name_and_version()
35 const {
36 return ReturnOverriddenValue(product_name_and_version_,
37 browser_options_->product_name_and_version);
38 }
39
accept_language() const40 const std::string& HeadlessBrowserContextOptions::accept_language() const {
41 return ReturnOverriddenValue(accept_language_,
42 browser_options_->accept_language);
43 }
44
user_agent() const45 const std::string& HeadlessBrowserContextOptions::user_agent() const {
46 return ReturnOverriddenValue(user_agent_, browser_options_->user_agent);
47 }
48
proxy_config() const49 const net::ProxyConfig* HeadlessBrowserContextOptions::proxy_config() const {
50 if (proxy_config_)
51 return proxy_config_.get();
52 return browser_options_->proxy_config.get();
53 }
54
window_size() const55 const gfx::Size& HeadlessBrowserContextOptions::window_size() const {
56 return ReturnOverriddenValue(window_size_, browser_options_->window_size);
57 }
58
user_data_dir() const59 const base::FilePath& HeadlessBrowserContextOptions::user_data_dir() const {
60 return ReturnOverriddenValue(user_data_dir_, browser_options_->user_data_dir);
61 }
62
incognito_mode() const63 bool HeadlessBrowserContextOptions::incognito_mode() const {
64 return ReturnOverriddenValue(incognito_mode_,
65 browser_options_->incognito_mode);
66 }
67
block_new_web_contents() const68 bool HeadlessBrowserContextOptions::block_new_web_contents() const {
69 return ReturnOverriddenValue(block_new_web_contents_,
70 browser_options_->block_new_web_contents);
71 }
72
73 base::RepeatingCallback<void(blink::web_pref::WebPreferences*)>
override_web_preferences_callback() const74 HeadlessBrowserContextOptions::override_web_preferences_callback() const {
75 return ReturnOverriddenValue(
76 override_web_preferences_callback_,
77 browser_options_->override_web_preferences_callback);
78 }
79
80 gfx::FontRenderParams::Hinting
font_render_hinting() const81 HeadlessBrowserContextOptions::font_render_hinting() const {
82 return ReturnOverriddenValue(font_render_hinting_,
83 browser_options_->font_render_hinting);
84 }
85
86 } // namespace headless
87