// Copyright 2014 The Chromium Authors. All rights reserved. // 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 #include #include "base/callback.h" #include "base/memory/ref_counted.h" #include "services/metrics/public/cpp/ukm_source_id.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; // 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 CreateExtensionNavigationURLLoaderFactory( content::BrowserContext* browser_context, ukm::SourceIdObj ukm_source_id, 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 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 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 // MSG_ROUTING_NONE. mojo::PendingRemote CreateExtensionURLLoaderFactory(int render_process_id, int render_frame_id); void EnsureExtensionURLLoaderFactoryShutdownNotifierFactoryBuilt(); } // namespace extensions #endif // EXTENSIONS_BROWSER_EXTENSION_PROTOCOLS_H_