xref: /aosp_15_r20/external/cronet/net/base/net_module.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2011 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_NET_MODULE_H__
6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_NET_MODULE_H__
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "base/memory/scoped_refptr.h"
9*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
10*6777b538SAndroid Build Coastguard Worker 
11*6777b538SAndroid Build Coastguard Worker namespace base {
12*6777b538SAndroid Build Coastguard Worker class RefCountedMemory;
13*6777b538SAndroid Build Coastguard Worker }
14*6777b538SAndroid Build Coastguard Worker 
15*6777b538SAndroid Build Coastguard Worker namespace net {
16*6777b538SAndroid Build Coastguard Worker 
17*6777b538SAndroid Build Coastguard Worker // Defines global initializers and associated methods for the net module.
18*6777b538SAndroid Build Coastguard Worker //
19*6777b538SAndroid Build Coastguard Worker // The network module does not have direct access to the way application
20*6777b538SAndroid Build Coastguard Worker // resources are stored and fetched by the embedding application (e.g., it
21*6777b538SAndroid Build Coastguard Worker // cannot see the ResourceBundle class used by Chrome), so it uses this API to
22*6777b538SAndroid Build Coastguard Worker // get access to such resources.
23*6777b538SAndroid Build Coastguard Worker //
24*6777b538SAndroid Build Coastguard Worker class NET_EXPORT NetModule {
25*6777b538SAndroid Build Coastguard Worker  public:
26*6777b538SAndroid Build Coastguard Worker   typedef scoped_refptr<base::RefCountedMemory> (*ResourceProvider)(int key);
27*6777b538SAndroid Build Coastguard Worker 
28*6777b538SAndroid Build Coastguard Worker   NetModule() = delete;
29*6777b538SAndroid Build Coastguard Worker   NetModule(const NetModule&) = delete;
30*6777b538SAndroid Build Coastguard Worker   NetModule& operator=(const NetModule&) = delete;
31*6777b538SAndroid Build Coastguard Worker 
32*6777b538SAndroid Build Coastguard Worker   // Set the function to call when the net module needs resources
33*6777b538SAndroid Build Coastguard Worker   static void SetResourceProvider(ResourceProvider func);
34*6777b538SAndroid Build Coastguard Worker 
35*6777b538SAndroid Build Coastguard Worker   // Call the resource provider (if one exists) to get the specified resource.
36*6777b538SAndroid Build Coastguard Worker   // Returns nullptr if the resource does not exist or if there is no resource
37*6777b538SAndroid Build Coastguard Worker   // provider.
38*6777b538SAndroid Build Coastguard Worker   static scoped_refptr<base::RefCountedMemory> GetResource(int key);
39*6777b538SAndroid Build Coastguard Worker };
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker }  // namespace net
42*6777b538SAndroid Build Coastguard Worker 
43*6777b538SAndroid Build Coastguard Worker #endif  // NET_BASE_NET_MODULE_H__
44