|  | // Copyright 2014 The Chromium Authors | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef EXTENSIONS_BROWSER_EXTENSION_PROTOCOLS_H_ | 
|  | #define EXTENSIONS_BROWSER_EXTENSION_PROTOCOLS_H_ | 
|  |  | 
|  | #include "base/functional/callback.h" | 
|  | #include "services/network/public/mojom/url_loader_factory.mojom.h" | 
|  |  | 
|  | namespace base { | 
|  | class FilePath; | 
|  | } | 
|  |  | 
|  | namespace content { | 
|  | class BrowserContext; | 
|  | } | 
|  |  | 
|  | namespace net { | 
|  | class HttpResponseHeaders; | 
|  | } | 
|  |  | 
|  | namespace extensions { | 
|  |  | 
|  | using ExtensionProtocolTestHandler = | 
|  | base::RepeatingCallback<void(base::FilePath* directory_path, | 
|  | base::FilePath* relative_path)>; | 
|  |  | 
|  | // Allows tests to set a special handler for chrome-extension:// urls. Note | 
|  | // that this goes through all the normal security checks; it's essentially a | 
|  | // way to map extra resources to be included in extensions. | 
|  | void SetExtensionProtocolTestHandler(ExtensionProtocolTestHandler* handler); | 
|  |  | 
|  | // Creates a new network::mojom::URLLoaderFactory implementation suitable for | 
|  | // handling navigation requests to extension URLs. | 
|  | mojo::PendingRemote<network::mojom::URLLoaderFactory> | 
|  | CreateExtensionNavigationURLLoaderFactory( | 
|  | content::BrowserContext* browser_context, | 
|  | bool is_web_view_request); | 
|  |  | 
|  | // Creates a new network::mojom::URLLoaderFactory implementation suitable for | 
|  | // handling dedicated/shared worker main script requests initiated by the | 
|  | // browser process to extension URLs. | 
|  | mojo::PendingRemote<network::mojom::URLLoaderFactory> | 
|  | CreateExtensionWorkerMainResourceURLLoaderFactory( | 
|  | content::BrowserContext* browser_context); | 
|  |  | 
|  | // Creates a new network::mojom::URLLoaderFactory implementation suitable for | 
|  | // handling service worker main/imported script requests initiated by the | 
|  | // browser process to extension URLs when PlzServiceWorker is enabled or during | 
|  | // service worker update check. | 
|  | mojo::PendingRemote<network::mojom::URLLoaderFactory> | 
|  | CreateExtensionServiceWorkerScriptURLLoaderFactory( | 
|  | content::BrowserContext* browser_context); | 
|  |  | 
|  | // Creates a network::mojom::URLLoaderFactory implementation suitable for | 
|  | // handling subresource requests for extension URLs for the frame identified by | 
|  | // `render_process_id` and `render_frame_id`. | 
|  | // This function can also be used to make a factory for other non-subresource | 
|  | // requests to extension URLs, such as for the service worker script when | 
|  | // starting a service worker. In that case, render_frame_id will be | 
|  | // IPC::mojom::kRoutingIdNone. | 
|  | mojo::PendingRemote<network::mojom::URLLoaderFactory> | 
|  | CreateExtensionURLLoaderFactory(int render_process_id, int render_frame_id); | 
|  |  | 
|  | void EnsureExtensionURLLoaderFactoryShutdownNotifierFactoryBuilt(); | 
|  |  | 
|  | }  // namespace extensions | 
|  |  | 
|  | #endif  // EXTENSIONS_BROWSER_EXTENSION_PROTOCOLS_H_ |