| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 // Copyright 2017 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 CONTENT_NETWORK_NETWORK_SERVICE_H_ |  | 
| 6 #define CONTENT_NETWORK_NETWORK_SERVICE_H_ |  | 
| 7 |  | 
| 8 #include <memory> |  | 
| 9 |  | 
| 10 #include "base/macros.h" |  | 
| 11 #include "content/common/content_export.h" |  | 
| 12 #include "content/public/common/network_service.mojom.h" |  | 
| 13 #include "mojo/public/cpp/bindings/binding.h" |  | 
| 14 #include "services/service_manager/public/cpp/binder_registry.h" |  | 
| 15 #include "services/service_manager/public/cpp/service.h" |  | 
| 16 |  | 
| 17 namespace content { |  | 
| 18 |  | 
| 19 class NetworkContext; |  | 
| 20 |  | 
| 21 class NetworkService : public service_manager::Service, |  | 
| 22                        public mojom::NetworkService { |  | 
| 23  public: |  | 
| 24   explicit NetworkService( |  | 
| 25       std::unique_ptr<service_manager::BinderRegistry> registry); |  | 
| 26   ~NetworkService() override; |  | 
| 27 |  | 
| 28   CONTENT_EXPORT static std::unique_ptr<NetworkService> CreateForTesting(); |  | 
| 29 |  | 
| 30   // These are called by NetworkContexts as they are being created and |  | 
| 31   // destroyed. |  | 
| 32   void RegisterNetworkContext(NetworkContext* network_context); |  | 
| 33   void DeregisterNetworkContext(NetworkContext* network_context); |  | 
| 34 |  | 
| 35   // mojom::NetworkService implementation: |  | 
| 36   void CreateNetworkContext(mojom::NetworkContextRequest request, |  | 
| 37                             mojom::NetworkContextParamsPtr params) override; |  | 
| 38 |  | 
| 39  private: |  | 
| 40   class MojoNetLog; |  | 
| 41 |  | 
| 42   // Used for tests. |  | 
| 43   NetworkService(); |  | 
| 44 |  | 
| 45   // service_manager::Service implementation. |  | 
| 46   void OnBindInterface(const service_manager::BindSourceInfo& source_info, |  | 
| 47                        const std::string& interface_name, |  | 
| 48                        mojo::ScopedMessagePipeHandle interface_pipe) override; |  | 
| 49 |  | 
| 50   void Create(const service_manager::BindSourceInfo& source_info, |  | 
| 51               mojom::NetworkServiceRequest request); |  | 
| 52 |  | 
| 53   std::unique_ptr<MojoNetLog> net_log_; |  | 
| 54 |  | 
| 55   std::unique_ptr<service_manager::BinderRegistry> registry_; |  | 
| 56 |  | 
| 57   mojo::Binding<mojom::NetworkService> binding_; |  | 
| 58 |  | 
| 59   // NetworkContexts register themselves with the NetworkService so that they |  | 
| 60   // can be cleaned up when the NetworkService goes away. This is needed as |  | 
| 61   // NetworkContexts share global state with the NetworkService, so must be |  | 
| 62   // destroyed first. |  | 
| 63   std::set<NetworkContext*> network_contexts_; |  | 
| 64 |  | 
| 65   DISALLOW_COPY_AND_ASSIGN(NetworkService); |  | 
| 66 }; |  | 
| 67 |  | 
| 68 }  // namespace content |  | 
| 69 |  | 
| 70 #endif  // CONTENT_NETWORK_NETWORK_SERVICE_H_ |  | 
| OLD | NEW | 
|---|