Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(534)

Side by Side Diff: headless/lib/browser/headless_browser_context.cc

Issue 1674263002: headless: Initial headless embedder API implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove provisional client API for now. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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.h"
6
7 #include "base/path_service.h"
8 #include "content/public/browser/browser_thread.h"
9 #include "content/public/browser/resource_context.h"
10 #include "content/public/browser/storage_partition.h"
11 #include "headless/lib/browser/headless_url_request_context_getter.h"
12 #include "net/url_request/url_request_context.h"
13
14 namespace headless {
15
16 HeadlessBrowserContext::HeadlessBrowserContext(
17 const HeadlessBrowser::Options& options)
18 : resource_context_(new HeadlessResourceContext), options_(options) {
19 InitWhileIOAllowed();
20 }
21
22 HeadlessBrowserContext::~HeadlessBrowserContext() {
23 if (resource_context_) {
24 content::BrowserThread::DeleteSoon(content::BrowserThread::IO, FROM_HERE,
25 resource_context_.release());
26 }
27 }
28
29 HeadlessBrowserContext::HeadlessResourceContext::HeadlessResourceContext()
30 : getter_(nullptr) {}
31
32 HeadlessBrowserContext::HeadlessResourceContext::~HeadlessResourceContext() {}
33
34 net::HostResolver*
35 HeadlessBrowserContext::HeadlessResourceContext::GetHostResolver() {
36 CHECK(getter_);
37 return getter_->GetURLRequestContext()->host_resolver();
38 }
39
40 net::URLRequestContext*
41 HeadlessBrowserContext::HeadlessResourceContext::GetRequestContext() {
42 CHECK(getter_);
43 return getter_->GetURLRequestContext();
44 }
45
46 void HeadlessBrowserContext::InitWhileIOAllowed() {
47 // TODO(skyostil): Allow the embedder to override this.
48 PathService::Get(base::DIR_EXE, &path_);
49 }
50
51 scoped_ptr<content::ZoomLevelDelegate>
52 HeadlessBrowserContext::CreateZoomLevelDelegate(
53 const base::FilePath& partition_path) {
54 return scoped_ptr<content::ZoomLevelDelegate>();
55 }
56
57 base::FilePath HeadlessBrowserContext::GetPath() const {
58 return path_;
59 }
60
61 bool HeadlessBrowserContext::IsOffTheRecord() const {
62 return false;
63 }
64
65 net::URLRequestContextGetter* HeadlessBrowserContext::GetRequestContext() {
66 return GetDefaultStoragePartition(this)->GetURLRequestContext();
67 }
68
69 net::URLRequestContextGetter*
70 HeadlessBrowserContext::GetRequestContextForRenderProcess(
71 int renderer_child_id) {
72 return GetRequestContext();
73 }
74
75 net::URLRequestContextGetter* HeadlessBrowserContext::GetMediaRequestContext() {
76 return GetRequestContext();
77 }
78
79 net::URLRequestContextGetter*
80 HeadlessBrowserContext::GetMediaRequestContextForRenderProcess(
81 int renderer_child_id) {
82 return GetRequestContext();
83 }
84
85 net::URLRequestContextGetter*
86 HeadlessBrowserContext::GetMediaRequestContextForStoragePartition(
87 const base::FilePath& partition_path,
88 bool in_memory) {
89 return GetRequestContext();
90 }
91
92 content::ResourceContext* HeadlessBrowserContext::GetResourceContext() {
93 return resource_context_.get();
94 }
95
96 content::DownloadManagerDelegate*
97 HeadlessBrowserContext::GetDownloadManagerDelegate() {
98 return nullptr;
99 }
100
101 content::BrowserPluginGuestManager* HeadlessBrowserContext::GetGuestManager() {
102 // TODO(altimin): Should be non-null? (is null in content/shell).
103 return nullptr;
104 }
105
106 storage::SpecialStoragePolicy*
107 HeadlessBrowserContext::GetSpecialStoragePolicy() {
108 return nullptr;
109 }
110
111 content::PushMessagingService*
112 HeadlessBrowserContext::GetPushMessagingService() {
113 return nullptr;
114 }
115
116 content::SSLHostStateDelegate*
117 HeadlessBrowserContext::GetSSLHostStateDelegate() {
118 return nullptr;
119 }
120
121 content::PermissionManager* HeadlessBrowserContext::GetPermissionManager() {
122 return nullptr;
123 }
124
125 content::BackgroundSyncController*
126 HeadlessBrowserContext::GetBackgroundSyncController() {
127 return nullptr;
128 }
129
130 net::URLRequestContextGetter* HeadlessBrowserContext::CreateRequestContext(
131 content::ProtocolHandlerMap* protocol_handlers,
132 content::URLRequestInterceptorScopedVector request_interceptors) {
133 DCHECK(!url_request_getter_.get());
134 if (options().url_request_context_getter) {
135 url_request_getter_ = options().url_request_context_getter;
136 } else {
137 url_request_getter_ = CreateURLRequestContextGetter(
138 protocol_handlers, std::move(request_interceptors));
139 }
140 resource_context_->set_url_request_context_getter(url_request_getter_.get());
141 return url_request_getter_.get();
142 }
143
144 HeadlessURLRequestContextGetter*
145 HeadlessBrowserContext::CreateURLRequestContextGetter(
146 content::ProtocolHandlerMap* protocol_handlers,
147 content::URLRequestInterceptorScopedVector request_interceptors) {
148 return new HeadlessURLRequestContextGetter(
149 true /* ignore_certificate_errors */, GetPath(),
150 content::BrowserThread::UnsafeGetMessageLoopForThread(
151 content::BrowserThread::IO),
152 content::BrowserThread::UnsafeGetMessageLoopForThread(
153 content::BrowserThread::FILE),
154 protocol_handlers, std::move(request_interceptors), nullptr /* net_log */,
155 options());
156 }
157
158 } // namespace headless
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698