1a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// found in the LICENSE file.
4a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
7a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
8a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch#include <string>
9a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
10a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace base {
11a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass FilePath;
12a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
13a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
14a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace net {
15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass NetworkDelegate;
16a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass URLRequest;
17a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass URLRequestJob;
18a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}
19a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
20a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnamespace extensions {
21a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass Extension;
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochclass InfoMap;
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Utilities related to URLRequest jobs for extension resources. See
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// chrome/browser/extensions/extension_protocols_unittest.cc for related tests.
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace chrome_url_request_util {
27a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Sets allowed=true to allow a chrome-extension:// resource request coming from
29a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// renderer A to access a resource in an extension running in renderer B.
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Returns false when it couldn't determine if the resource is allowed or not
31a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochbool AllowCrossRendererResourceLoad(net::URLRequest* request,
32a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                    bool is_incognito,
33a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch                                    const Extension* extension,
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    InfoMap* extension_info_map,
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                                    bool* allowed);
36a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
37a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// Creates a URLRequestJob for loading component extension resources out of
38a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// a Chrome resource bundle. Returns NULL if the requested resource is not a
39a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch// component extension resource.
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochnet::URLRequestJob* MaybeCreateURLRequestResourceBundleJob(
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    net::URLRequest* request,
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    net::NetworkDelegate* network_delegate,
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    const base::FilePath& directory_path,
44a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    const std::string& content_security_policy,
45a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch    bool send_cors_header);
46a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace chrome_url_request_util
48a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch}  // namespace extensions
49a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
51