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