1// Copyright 2014 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 CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
6#define CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
7
8#include <string>
9
10namespace base {
11class FilePath;
12}
13
14namespace net {
15class NetworkDelegate;
16class URLRequest;
17class URLRequestJob;
18}
19
20namespace extensions {
21class Extension;
22class InfoMap;
23
24// Utilities related to URLRequest jobs for extension resources. See
25// chrome/browser/extensions/extension_protocols_unittest.cc for related tests.
26namespace chrome_url_request_util {
27
28// Sets allowed=true to allow a chrome-extension:// resource request coming from
29// renderer A to access a resource in an extension running in renderer B.
30// Returns false when it couldn't determine if the resource is allowed or not
31bool AllowCrossRendererResourceLoad(net::URLRequest* request,
32                                    bool is_incognito,
33                                    const Extension* extension,
34                                    InfoMap* extension_info_map,
35                                    bool* allowed);
36
37// Creates a URLRequestJob for loading component extension resources out of
38// a Chrome resource bundle. Returns NULL if the requested resource is not a
39// component extension resource.
40net::URLRequestJob* MaybeCreateURLRequestResourceBundleJob(
41    net::URLRequest* request,
42    net::NetworkDelegate* network_delegate,
43    const base::FilePath& directory_path,
44    const std::string& content_security_policy,
45    bool send_cors_header);
46
47}  // namespace chrome_url_request_util
48}  // namespace extensions
49
50#endif  // CHROME_BROWSER_EXTENSIONS_CHROME_URL_REQUEST_UTIL_H_
51