Chromium Code Reviews| Index: content/browser/appcache/appcache_url_loader_factory.h |
| diff --git a/content/browser/appcache/appcache_url_loader_factory.h b/content/browser/appcache/appcache_url_loader_factory.h |
| index 9c85d932bf16a3f7d5793e4266be8225902735ed..3966a6daf4ab3d9c36673cc840ff4629d6070a9d 100644 |
| --- a/content/browser/appcache/appcache_url_loader_factory.h |
| +++ b/content/browser/appcache/appcache_url_loader_factory.h |
| @@ -11,8 +11,11 @@ |
| #include "url/gurl.h" |
| namespace content { |
| +class AppCacheNavigationHandleCore; |
| +class AppCacheURLLoader; |
| class ChromeAppCacheService; |
| class URLLoaderFactoryGetter; |
| +class URLLoaderRequestHandler; |
| // Implements the URLLoaderFactory mojom for AppCache requests. |
| class AppCacheURLLoaderFactory : public mojom::URLLoaderFactory { |
| @@ -20,13 +23,26 @@ class AppCacheURLLoaderFactory : public mojom::URLLoaderFactory { |
| ~AppCacheURLLoaderFactory() override; |
| // Factory function to create an instance of the factory. |
| - // The |appcache_service| parameter is used to query the underlying |
| - // AppCacheStorage instance to check if we can service requests from the |
| - // AppCache. We pass unhandled requests to the network service retrieved from |
| - // the |factory_getter|. |
| + // 1. The |appcache_service| parameter is passed to the URLLoader mojom for |
| + // checking if the request can be serviced from the AppCache. |
| + // 2. The |factory_getter| parameter is used to query the network service |
| + // to pass network requests to. |
| + // 3. The |navigation_url_loader| is valid only for navigation requests. In |
| + // other cases like subresource requests we create an instance of the |
| + // AppCacheURLLoader class to handle the request. |
| + // 4. The process_id parameter identifies the process. 0 for browser |
| + // initiated requests. |
| static void CreateURLLoaderFactory(mojom::URLLoaderFactoryRequest request, |
|
jam
2017/06/01 15:00:46
this isn't called externally anymore, so no need t
ananta
2017/06/01 17:28:01
The static function uses the loader_factory_bindin
|
| ChromeAppCacheService* appcache_service, |
| - URLLoaderFactoryGetter* factory_getter); |
| + URLLoaderFactoryGetter* factory_getter, |
| + AppCacheURLLoader* navigation_url_loader, |
| + int process_id); |
| + |
| + // Creates an instance of the URLLoaderRequestHandler subclass to see if we |
| + // can serve this request from the AppCache. |
| + static std::unique_ptr<URLLoaderRequestHandler> CreateRequestHandler( |
| + AppCacheNavigationHandleCore* appcache_handle_core, |
| + URLLoaderFactoryGetter* url_loader_factory_getter); |
| // mojom::URLLoaderFactory implementation. |
| void CreateLoaderAndStart(mojom::URLLoaderRequest url_loader_request, |
| @@ -42,7 +58,9 @@ class AppCacheURLLoaderFactory : public mojom::URLLoaderFactory { |
| private: |
| AppCacheURLLoaderFactory(ChromeAppCacheService* appcache_service, |
| - URLLoaderFactoryGetter* factory_getter); |
| + URLLoaderFactoryGetter* factory_getter, |
| + AppCacheURLLoader* url_loader_instance, |
| + int process_id); |
| // Used to query AppCacheStorage to see if a request can be served out of the |
| /// AppCache. |
| @@ -52,6 +70,12 @@ class AppCacheURLLoaderFactory : public mojom::URLLoaderFactory { |
| // the network service. |
| scoped_refptr<URLLoaderFactoryGetter> factory_getter_; |
| + // Only set for navigation requests. |
| + AppCacheURLLoader* navigation_url_loader_; |
| + |
| + // Process id. 0 for browser. |
| + int process_id_; |
| + |
| mojo::StrongBindingSet<mojom::URLLoaderFactory> loader_factory_bindings_; |
| DISALLOW_COPY_AND_ASSIGN(AppCacheURLLoaderFactory); |