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 /* DO NOT EDIT. Generated from components/cronet/native/generated/cronet.idl */
6 
7 #ifndef COMPONENTS_CRONET_NATIVE_GENERATED_CRONET_IDL_C_H_
8 #define COMPONENTS_CRONET_NATIVE_GENERATED_CRONET_IDL_C_H_
9 #include "cronet_export.h"
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #include <stdint.h>
16 
17 typedef const char* Cronet_String;
18 typedef void* Cronet_RawDataPtr;
19 typedef void* Cronet_ClientContext;
20 
21 // Forward declare interfaces.
22 typedef struct Cronet_Buffer Cronet_Buffer;
23 typedef struct Cronet_Buffer* Cronet_BufferPtr;
24 typedef struct Cronet_BufferCallback Cronet_BufferCallback;
25 typedef struct Cronet_BufferCallback* Cronet_BufferCallbackPtr;
26 typedef struct Cronet_Runnable Cronet_Runnable;
27 typedef struct Cronet_Runnable* Cronet_RunnablePtr;
28 typedef struct Cronet_Executor Cronet_Executor;
29 typedef struct Cronet_Executor* Cronet_ExecutorPtr;
30 typedef struct Cronet_Engine Cronet_Engine;
31 typedef struct Cronet_Engine* Cronet_EnginePtr;
32 typedef struct Cronet_UrlRequestStatusListener Cronet_UrlRequestStatusListener;
33 typedef struct Cronet_UrlRequestStatusListener*
34     Cronet_UrlRequestStatusListenerPtr;
35 typedef struct Cronet_UrlRequestCallback Cronet_UrlRequestCallback;
36 typedef struct Cronet_UrlRequestCallback* Cronet_UrlRequestCallbackPtr;
37 typedef struct Cronet_UploadDataSink Cronet_UploadDataSink;
38 typedef struct Cronet_UploadDataSink* Cronet_UploadDataSinkPtr;
39 typedef struct Cronet_UploadDataProvider Cronet_UploadDataProvider;
40 typedef struct Cronet_UploadDataProvider* Cronet_UploadDataProviderPtr;
41 typedef struct Cronet_UrlRequest Cronet_UrlRequest;
42 typedef struct Cronet_UrlRequest* Cronet_UrlRequestPtr;
43 typedef struct Cronet_RequestFinishedInfoListener
44     Cronet_RequestFinishedInfoListener;
45 typedef struct Cronet_RequestFinishedInfoListener*
46     Cronet_RequestFinishedInfoListenerPtr;
47 
48 // Forward declare structs.
49 typedef struct Cronet_Error Cronet_Error;
50 typedef struct Cronet_Error* Cronet_ErrorPtr;
51 typedef struct Cronet_QuicHint Cronet_QuicHint;
52 typedef struct Cronet_QuicHint* Cronet_QuicHintPtr;
53 typedef struct Cronet_PublicKeyPins Cronet_PublicKeyPins;
54 typedef struct Cronet_PublicKeyPins* Cronet_PublicKeyPinsPtr;
55 typedef struct Cronet_EngineParams Cronet_EngineParams;
56 typedef struct Cronet_EngineParams* Cronet_EngineParamsPtr;
57 typedef struct Cronet_HttpHeader Cronet_HttpHeader;
58 typedef struct Cronet_HttpHeader* Cronet_HttpHeaderPtr;
59 typedef struct Cronet_UrlResponseInfo Cronet_UrlResponseInfo;
60 typedef struct Cronet_UrlResponseInfo* Cronet_UrlResponseInfoPtr;
61 typedef struct Cronet_UrlRequestParams Cronet_UrlRequestParams;
62 typedef struct Cronet_UrlRequestParams* Cronet_UrlRequestParamsPtr;
63 typedef struct Cronet_DateTime Cronet_DateTime;
64 typedef struct Cronet_DateTime* Cronet_DateTimePtr;
65 typedef struct Cronet_Metrics Cronet_Metrics;
66 typedef struct Cronet_Metrics* Cronet_MetricsPtr;
67 typedef struct Cronet_RequestFinishedInfo Cronet_RequestFinishedInfo;
68 typedef struct Cronet_RequestFinishedInfo* Cronet_RequestFinishedInfoPtr;
69 
70 // Declare enums
71 typedef enum Cronet_RESULT {
72   Cronet_RESULT_SUCCESS = 0,
73   Cronet_RESULT_ILLEGAL_ARGUMENT = -100,
74   Cronet_RESULT_ILLEGAL_ARGUMENT_STORAGE_PATH_MUST_EXIST = -101,
75   Cronet_RESULT_ILLEGAL_ARGUMENT_INVALID_PIN = -102,
76   Cronet_RESULT_ILLEGAL_ARGUMENT_INVALID_HOSTNAME = -103,
77   Cronet_RESULT_ILLEGAL_ARGUMENT_INVALID_HTTP_METHOD = -104,
78   Cronet_RESULT_ILLEGAL_ARGUMENT_INVALID_HTTP_HEADER = -105,
79   Cronet_RESULT_ILLEGAL_STATE = -200,
80   Cronet_RESULT_ILLEGAL_STATE_STORAGE_PATH_IN_USE = -201,
81   Cronet_RESULT_ILLEGAL_STATE_CANNOT_SHUTDOWN_ENGINE_FROM_NETWORK_THREAD = -202,
82   Cronet_RESULT_ILLEGAL_STATE_ENGINE_ALREADY_STARTED = -203,
83   Cronet_RESULT_ILLEGAL_STATE_REQUEST_ALREADY_STARTED = -204,
84   Cronet_RESULT_ILLEGAL_STATE_REQUEST_NOT_INITIALIZED = -205,
85   Cronet_RESULT_ILLEGAL_STATE_REQUEST_ALREADY_INITIALIZED = -206,
86   Cronet_RESULT_ILLEGAL_STATE_REQUEST_NOT_STARTED = -207,
87   Cronet_RESULT_ILLEGAL_STATE_UNEXPECTED_REDIRECT = -208,
88   Cronet_RESULT_ILLEGAL_STATE_UNEXPECTED_READ = -209,
89   Cronet_RESULT_ILLEGAL_STATE_READ_FAILED = -210,
90   Cronet_RESULT_NULL_POINTER = -300,
91   Cronet_RESULT_NULL_POINTER_HOSTNAME = -301,
92   Cronet_RESULT_NULL_POINTER_SHA256_PINS = -302,
93   Cronet_RESULT_NULL_POINTER_EXPIRATION_DATE = -303,
94   Cronet_RESULT_NULL_POINTER_ENGINE = -304,
95   Cronet_RESULT_NULL_POINTER_URL = -305,
96   Cronet_RESULT_NULL_POINTER_CALLBACK = -306,
97   Cronet_RESULT_NULL_POINTER_EXECUTOR = -307,
98   Cronet_RESULT_NULL_POINTER_METHOD = -308,
99   Cronet_RESULT_NULL_POINTER_HEADER_NAME = -309,
100   Cronet_RESULT_NULL_POINTER_HEADER_VALUE = -310,
101   Cronet_RESULT_NULL_POINTER_PARAMS = -311,
102   Cronet_RESULT_NULL_POINTER_REQUEST_FINISHED_INFO_LISTENER_EXECUTOR = -312,
103 } Cronet_RESULT;
104 
105 typedef enum Cronet_Error_ERROR_CODE {
106   Cronet_Error_ERROR_CODE_ERROR_CALLBACK = 0,
107   Cronet_Error_ERROR_CODE_ERROR_HOSTNAME_NOT_RESOLVED = 1,
108   Cronet_Error_ERROR_CODE_ERROR_INTERNET_DISCONNECTED = 2,
109   Cronet_Error_ERROR_CODE_ERROR_NETWORK_CHANGED = 3,
110   Cronet_Error_ERROR_CODE_ERROR_TIMED_OUT = 4,
111   Cronet_Error_ERROR_CODE_ERROR_CONNECTION_CLOSED = 5,
112   Cronet_Error_ERROR_CODE_ERROR_CONNECTION_TIMED_OUT = 6,
113   Cronet_Error_ERROR_CODE_ERROR_CONNECTION_REFUSED = 7,
114   Cronet_Error_ERROR_CODE_ERROR_CONNECTION_RESET = 8,
115   Cronet_Error_ERROR_CODE_ERROR_ADDRESS_UNREACHABLE = 9,
116   Cronet_Error_ERROR_CODE_ERROR_QUIC_PROTOCOL_FAILED = 10,
117   Cronet_Error_ERROR_CODE_ERROR_OTHER = 11,
118 } Cronet_Error_ERROR_CODE;
119 
120 typedef enum Cronet_EngineParams_HTTP_CACHE_MODE {
121   Cronet_EngineParams_HTTP_CACHE_MODE_DISABLED = 0,
122   Cronet_EngineParams_HTTP_CACHE_MODE_IN_MEMORY = 1,
123   Cronet_EngineParams_HTTP_CACHE_MODE_DISK_NO_HTTP = 2,
124   Cronet_EngineParams_HTTP_CACHE_MODE_DISK = 3,
125 } Cronet_EngineParams_HTTP_CACHE_MODE;
126 
127 typedef enum Cronet_UrlRequestParams_REQUEST_PRIORITY {
128   Cronet_UrlRequestParams_REQUEST_PRIORITY_REQUEST_PRIORITY_IDLE = 0,
129   Cronet_UrlRequestParams_REQUEST_PRIORITY_REQUEST_PRIORITY_LOWEST = 1,
130   Cronet_UrlRequestParams_REQUEST_PRIORITY_REQUEST_PRIORITY_LOW = 2,
131   Cronet_UrlRequestParams_REQUEST_PRIORITY_REQUEST_PRIORITY_MEDIUM = 3,
132   Cronet_UrlRequestParams_REQUEST_PRIORITY_REQUEST_PRIORITY_HIGHEST = 4,
133 } Cronet_UrlRequestParams_REQUEST_PRIORITY;
134 
135 typedef enum Cronet_UrlRequestParams_IDEMPOTENCY {
136   Cronet_UrlRequestParams_IDEMPOTENCY_DEFAULT_IDEMPOTENCY = 0,
137   Cronet_UrlRequestParams_IDEMPOTENCY_IDEMPOTENT = 1,
138   Cronet_UrlRequestParams_IDEMPOTENCY_NOT_IDEMPOTENT = 2,
139 } Cronet_UrlRequestParams_IDEMPOTENCY;
140 
141 typedef enum Cronet_RequestFinishedInfo_FINISHED_REASON {
142   Cronet_RequestFinishedInfo_FINISHED_REASON_SUCCEEDED = 0,
143   Cronet_RequestFinishedInfo_FINISHED_REASON_FAILED = 1,
144   Cronet_RequestFinishedInfo_FINISHED_REASON_CANCELED = 2,
145 } Cronet_RequestFinishedInfo_FINISHED_REASON;
146 
147 typedef enum Cronet_UrlRequestStatusListener_Status {
148   Cronet_UrlRequestStatusListener_Status_INVALID = -1,
149   Cronet_UrlRequestStatusListener_Status_IDLE = 0,
150   Cronet_UrlRequestStatusListener_Status_WAITING_FOR_STALLED_SOCKET_POOL = 1,
151   Cronet_UrlRequestStatusListener_Status_WAITING_FOR_AVAILABLE_SOCKET = 2,
152   Cronet_UrlRequestStatusListener_Status_WAITING_FOR_DELEGATE = 3,
153   Cronet_UrlRequestStatusListener_Status_WAITING_FOR_CACHE = 4,
154   Cronet_UrlRequestStatusListener_Status_DOWNLOADING_PAC_FILE = 5,
155   Cronet_UrlRequestStatusListener_Status_RESOLVING_PROXY_FOR_URL = 6,
156   Cronet_UrlRequestStatusListener_Status_RESOLVING_HOST_IN_PAC_FILE = 7,
157   Cronet_UrlRequestStatusListener_Status_ESTABLISHING_PROXY_TUNNEL = 8,
158   Cronet_UrlRequestStatusListener_Status_RESOLVING_HOST = 9,
159   Cronet_UrlRequestStatusListener_Status_CONNECTING = 10,
160   Cronet_UrlRequestStatusListener_Status_SSL_HANDSHAKE = 11,
161   Cronet_UrlRequestStatusListener_Status_SENDING_REQUEST = 12,
162   Cronet_UrlRequestStatusListener_Status_WAITING_FOR_RESPONSE = 13,
163   Cronet_UrlRequestStatusListener_Status_READING_RESPONSE = 14,
164 } Cronet_UrlRequestStatusListener_Status;
165 
166 // Declare constants
167 
168 ///////////////////////
169 // Concrete interface Cronet_Buffer.
170 
171 // Create an instance of Cronet_Buffer.
172 CRONET_EXPORT Cronet_BufferPtr Cronet_Buffer_Create(void);
173 // Destroy an instance of Cronet_Buffer.
174 CRONET_EXPORT void Cronet_Buffer_Destroy(Cronet_BufferPtr self);
175 // Set and get app-specific Cronet_ClientContext.
176 CRONET_EXPORT void Cronet_Buffer_SetClientContext(
177     Cronet_BufferPtr self,
178     Cronet_ClientContext client_context);
179 CRONET_EXPORT Cronet_ClientContext
180 Cronet_Buffer_GetClientContext(Cronet_BufferPtr self);
181 // Concrete methods of Cronet_Buffer implemented by Cronet.
182 // The app calls them to manipulate Cronet_Buffer.
183 CRONET_EXPORT
184 void Cronet_Buffer_InitWithDataAndCallback(Cronet_BufferPtr self,
185                                            Cronet_RawDataPtr data,
186                                            uint64_t size,
187                                            Cronet_BufferCallbackPtr callback);
188 CRONET_EXPORT
189 void Cronet_Buffer_InitWithAlloc(Cronet_BufferPtr self, uint64_t size);
190 CRONET_EXPORT
191 uint64_t Cronet_Buffer_GetSize(Cronet_BufferPtr self);
192 CRONET_EXPORT
193 Cronet_RawDataPtr Cronet_Buffer_GetData(Cronet_BufferPtr self);
194 // Concrete interface Cronet_Buffer is implemented by Cronet.
195 // The app can implement these for testing / mocking.
196 typedef void (*Cronet_Buffer_InitWithDataAndCallbackFunc)(
197     Cronet_BufferPtr self,
198     Cronet_RawDataPtr data,
199     uint64_t size,
200     Cronet_BufferCallbackPtr callback);
201 typedef void (*Cronet_Buffer_InitWithAllocFunc)(Cronet_BufferPtr self,
202                                                 uint64_t size);
203 typedef uint64_t (*Cronet_Buffer_GetSizeFunc)(Cronet_BufferPtr self);
204 typedef Cronet_RawDataPtr (*Cronet_Buffer_GetDataFunc)(Cronet_BufferPtr self);
205 // Concrete interface Cronet_Buffer is implemented by Cronet.
206 // The app can use this for testing / mocking.
207 CRONET_EXPORT Cronet_BufferPtr Cronet_Buffer_CreateWith(
208     Cronet_Buffer_InitWithDataAndCallbackFunc InitWithDataAndCallbackFunc,
209     Cronet_Buffer_InitWithAllocFunc InitWithAllocFunc,
210     Cronet_Buffer_GetSizeFunc GetSizeFunc,
211     Cronet_Buffer_GetDataFunc GetDataFunc);
212 
213 ///////////////////////
214 // Abstract interface Cronet_BufferCallback is implemented by the app.
215 
216 // There is no method to create a concrete implementation.
217 
218 // Destroy an instance of Cronet_BufferCallback.
219 CRONET_EXPORT void Cronet_BufferCallback_Destroy(Cronet_BufferCallbackPtr self);
220 // Set and get app-specific Cronet_ClientContext.
221 CRONET_EXPORT void Cronet_BufferCallback_SetClientContext(
222     Cronet_BufferCallbackPtr self,
223     Cronet_ClientContext client_context);
224 CRONET_EXPORT Cronet_ClientContext
225 Cronet_BufferCallback_GetClientContext(Cronet_BufferCallbackPtr self);
226 // Abstract interface Cronet_BufferCallback is implemented by the app.
227 // The following concrete methods forward call to app implementation.
228 // The app doesn't normally call them.
229 CRONET_EXPORT
230 void Cronet_BufferCallback_OnDestroy(Cronet_BufferCallbackPtr self,
231                                      Cronet_BufferPtr buffer);
232 // The app implements abstract interface Cronet_BufferCallback by defining
233 // custom functions for each method.
234 typedef void (*Cronet_BufferCallback_OnDestroyFunc)(
235     Cronet_BufferCallbackPtr self,
236     Cronet_BufferPtr buffer);
237 // The app creates an instance of Cronet_BufferCallback by providing custom
238 // functions for each method.
239 CRONET_EXPORT Cronet_BufferCallbackPtr Cronet_BufferCallback_CreateWith(
240     Cronet_BufferCallback_OnDestroyFunc OnDestroyFunc);
241 
242 ///////////////////////
243 // Abstract interface Cronet_Runnable is implemented by the app.
244 
245 // There is no method to create a concrete implementation.
246 
247 // Destroy an instance of Cronet_Runnable.
248 CRONET_EXPORT void Cronet_Runnable_Destroy(Cronet_RunnablePtr self);
249 // Set and get app-specific Cronet_ClientContext.
250 CRONET_EXPORT void Cronet_Runnable_SetClientContext(
251     Cronet_RunnablePtr self,
252     Cronet_ClientContext client_context);
253 CRONET_EXPORT Cronet_ClientContext
254 Cronet_Runnable_GetClientContext(Cronet_RunnablePtr self);
255 // Abstract interface Cronet_Runnable is implemented by the app.
256 // The following concrete methods forward call to app implementation.
257 // The app doesn't normally call them.
258 CRONET_EXPORT
259 void Cronet_Runnable_Run(Cronet_RunnablePtr self);
260 // The app implements abstract interface Cronet_Runnable by defining custom
261 // functions for each method.
262 typedef void (*Cronet_Runnable_RunFunc)(Cronet_RunnablePtr self);
263 // The app creates an instance of Cronet_Runnable by providing custom functions
264 // for each method.
265 CRONET_EXPORT Cronet_RunnablePtr
266 Cronet_Runnable_CreateWith(Cronet_Runnable_RunFunc RunFunc);
267 
268 ///////////////////////
269 // Abstract interface Cronet_Executor is implemented by the app.
270 
271 // There is no method to create a concrete implementation.
272 
273 // Destroy an instance of Cronet_Executor.
274 CRONET_EXPORT void Cronet_Executor_Destroy(Cronet_ExecutorPtr self);
275 // Set and get app-specific Cronet_ClientContext.
276 CRONET_EXPORT void Cronet_Executor_SetClientContext(
277     Cronet_ExecutorPtr self,
278     Cronet_ClientContext client_context);
279 CRONET_EXPORT Cronet_ClientContext
280 Cronet_Executor_GetClientContext(Cronet_ExecutorPtr self);
281 // Abstract interface Cronet_Executor is implemented by the app.
282 // The following concrete methods forward call to app implementation.
283 // The app doesn't normally call them.
284 CRONET_EXPORT
285 void Cronet_Executor_Execute(Cronet_ExecutorPtr self,
286                              Cronet_RunnablePtr command);
287 // The app implements abstract interface Cronet_Executor by defining custom
288 // functions for each method.
289 typedef void (*Cronet_Executor_ExecuteFunc)(Cronet_ExecutorPtr self,
290                                             Cronet_RunnablePtr command);
291 // The app creates an instance of Cronet_Executor by providing custom functions
292 // for each method.
293 CRONET_EXPORT Cronet_ExecutorPtr
294 Cronet_Executor_CreateWith(Cronet_Executor_ExecuteFunc ExecuteFunc);
295 
296 ///////////////////////
297 // Concrete interface Cronet_Engine.
298 
299 // Create an instance of Cronet_Engine.
300 CRONET_EXPORT Cronet_EnginePtr Cronet_Engine_Create(void);
301 // Destroy an instance of Cronet_Engine.
302 CRONET_EXPORT void Cronet_Engine_Destroy(Cronet_EnginePtr self);
303 // Set and get app-specific Cronet_ClientContext.
304 CRONET_EXPORT void Cronet_Engine_SetClientContext(
305     Cronet_EnginePtr self,
306     Cronet_ClientContext client_context);
307 CRONET_EXPORT Cronet_ClientContext
308 Cronet_Engine_GetClientContext(Cronet_EnginePtr self);
309 // Concrete methods of Cronet_Engine implemented by Cronet.
310 // The app calls them to manipulate Cronet_Engine.
311 CRONET_EXPORT
312 Cronet_RESULT Cronet_Engine_StartWithParams(Cronet_EnginePtr self,
313                                             Cronet_EngineParamsPtr params);
314 CRONET_EXPORT
315 bool Cronet_Engine_StartNetLogToFile(Cronet_EnginePtr self,
316                                      Cronet_String file_name,
317                                      bool log_all);
318 CRONET_EXPORT
319 void Cronet_Engine_StopNetLog(Cronet_EnginePtr self);
320 CRONET_EXPORT
321 Cronet_RESULT Cronet_Engine_Shutdown(Cronet_EnginePtr self);
322 CRONET_EXPORT
323 Cronet_String Cronet_Engine_GetVersionString(Cronet_EnginePtr self);
324 CRONET_EXPORT
325 Cronet_String Cronet_Engine_GetDefaultUserAgent(Cronet_EnginePtr self);
326 CRONET_EXPORT
327 void Cronet_Engine_AddRequestFinishedListener(
328     Cronet_EnginePtr self,
329     Cronet_RequestFinishedInfoListenerPtr listener,
330     Cronet_ExecutorPtr executor);
331 CRONET_EXPORT
332 void Cronet_Engine_RemoveRequestFinishedListener(
333     Cronet_EnginePtr self,
334     Cronet_RequestFinishedInfoListenerPtr listener);
335 // Concrete interface Cronet_Engine is implemented by Cronet.
336 // The app can implement these for testing / mocking.
337 typedef Cronet_RESULT (*Cronet_Engine_StartWithParamsFunc)(
338     Cronet_EnginePtr self,
339     Cronet_EngineParamsPtr params);
340 typedef bool (*Cronet_Engine_StartNetLogToFileFunc)(Cronet_EnginePtr self,
341                                                     Cronet_String file_name,
342                                                     bool log_all);
343 typedef void (*Cronet_Engine_StopNetLogFunc)(Cronet_EnginePtr self);
344 typedef Cronet_RESULT (*Cronet_Engine_ShutdownFunc)(Cronet_EnginePtr self);
345 typedef Cronet_String (*Cronet_Engine_GetVersionStringFunc)(
346     Cronet_EnginePtr self);
347 typedef Cronet_String (*Cronet_Engine_GetDefaultUserAgentFunc)(
348     Cronet_EnginePtr self);
349 typedef void (*Cronet_Engine_AddRequestFinishedListenerFunc)(
350     Cronet_EnginePtr self,
351     Cronet_RequestFinishedInfoListenerPtr listener,
352     Cronet_ExecutorPtr executor);
353 typedef void (*Cronet_Engine_RemoveRequestFinishedListenerFunc)(
354     Cronet_EnginePtr self,
355     Cronet_RequestFinishedInfoListenerPtr listener);
356 // Concrete interface Cronet_Engine is implemented by Cronet.
357 // The app can use this for testing / mocking.
358 CRONET_EXPORT Cronet_EnginePtr Cronet_Engine_CreateWith(
359     Cronet_Engine_StartWithParamsFunc StartWithParamsFunc,
360     Cronet_Engine_StartNetLogToFileFunc StartNetLogToFileFunc,
361     Cronet_Engine_StopNetLogFunc StopNetLogFunc,
362     Cronet_Engine_ShutdownFunc ShutdownFunc,
363     Cronet_Engine_GetVersionStringFunc GetVersionStringFunc,
364     Cronet_Engine_GetDefaultUserAgentFunc GetDefaultUserAgentFunc,
365     Cronet_Engine_AddRequestFinishedListenerFunc AddRequestFinishedListenerFunc,
366     Cronet_Engine_RemoveRequestFinishedListenerFunc
367         RemoveRequestFinishedListenerFunc);
368 
369 ///////////////////////
370 // Abstract interface Cronet_UrlRequestStatusListener is implemented by the app.
371 
372 // There is no method to create a concrete implementation.
373 
374 // Destroy an instance of Cronet_UrlRequestStatusListener.
375 CRONET_EXPORT void Cronet_UrlRequestStatusListener_Destroy(
376     Cronet_UrlRequestStatusListenerPtr self);
377 // Set and get app-specific Cronet_ClientContext.
378 CRONET_EXPORT void Cronet_UrlRequestStatusListener_SetClientContext(
379     Cronet_UrlRequestStatusListenerPtr self,
380     Cronet_ClientContext client_context);
381 CRONET_EXPORT Cronet_ClientContext
382 Cronet_UrlRequestStatusListener_GetClientContext(
383     Cronet_UrlRequestStatusListenerPtr self);
384 // Abstract interface Cronet_UrlRequestStatusListener is implemented by the app.
385 // The following concrete methods forward call to app implementation.
386 // The app doesn't normally call them.
387 CRONET_EXPORT
388 void Cronet_UrlRequestStatusListener_OnStatus(
389     Cronet_UrlRequestStatusListenerPtr self,
390     Cronet_UrlRequestStatusListener_Status status);
391 // The app implements abstract interface Cronet_UrlRequestStatusListener by
392 // defining custom functions for each method.
393 typedef void (*Cronet_UrlRequestStatusListener_OnStatusFunc)(
394     Cronet_UrlRequestStatusListenerPtr self,
395     Cronet_UrlRequestStatusListener_Status status);
396 // The app creates an instance of Cronet_UrlRequestStatusListener by providing
397 // custom functions for each method.
398 CRONET_EXPORT Cronet_UrlRequestStatusListenerPtr
399 Cronet_UrlRequestStatusListener_CreateWith(
400     Cronet_UrlRequestStatusListener_OnStatusFunc OnStatusFunc);
401 
402 ///////////////////////
403 // Abstract interface Cronet_UrlRequestCallback is implemented by the app.
404 
405 // There is no method to create a concrete implementation.
406 
407 // Destroy an instance of Cronet_UrlRequestCallback.
408 CRONET_EXPORT void Cronet_UrlRequestCallback_Destroy(
409     Cronet_UrlRequestCallbackPtr self);
410 // Set and get app-specific Cronet_ClientContext.
411 CRONET_EXPORT void Cronet_UrlRequestCallback_SetClientContext(
412     Cronet_UrlRequestCallbackPtr self,
413     Cronet_ClientContext client_context);
414 CRONET_EXPORT Cronet_ClientContext
415 Cronet_UrlRequestCallback_GetClientContext(Cronet_UrlRequestCallbackPtr self);
416 // Abstract interface Cronet_UrlRequestCallback is implemented by the app.
417 // The following concrete methods forward call to app implementation.
418 // The app doesn't normally call them.
419 CRONET_EXPORT
420 void Cronet_UrlRequestCallback_OnRedirectReceived(
421     Cronet_UrlRequestCallbackPtr self,
422     Cronet_UrlRequestPtr request,
423     Cronet_UrlResponseInfoPtr info,
424     Cronet_String new_location_url);
425 CRONET_EXPORT
426 void Cronet_UrlRequestCallback_OnResponseStarted(
427     Cronet_UrlRequestCallbackPtr self,
428     Cronet_UrlRequestPtr request,
429     Cronet_UrlResponseInfoPtr info);
430 CRONET_EXPORT
431 void Cronet_UrlRequestCallback_OnReadCompleted(
432     Cronet_UrlRequestCallbackPtr self,
433     Cronet_UrlRequestPtr request,
434     Cronet_UrlResponseInfoPtr info,
435     Cronet_BufferPtr buffer,
436     uint64_t bytes_read);
437 CRONET_EXPORT
438 void Cronet_UrlRequestCallback_OnSucceeded(Cronet_UrlRequestCallbackPtr self,
439                                            Cronet_UrlRequestPtr request,
440                                            Cronet_UrlResponseInfoPtr info);
441 CRONET_EXPORT
442 void Cronet_UrlRequestCallback_OnFailed(Cronet_UrlRequestCallbackPtr self,
443                                         Cronet_UrlRequestPtr request,
444                                         Cronet_UrlResponseInfoPtr info,
445                                         Cronet_ErrorPtr error);
446 CRONET_EXPORT
447 void Cronet_UrlRequestCallback_OnCanceled(Cronet_UrlRequestCallbackPtr self,
448                                           Cronet_UrlRequestPtr request,
449                                           Cronet_UrlResponseInfoPtr info);
450 // The app implements abstract interface Cronet_UrlRequestCallback by defining
451 // custom functions for each method.
452 typedef void (*Cronet_UrlRequestCallback_OnRedirectReceivedFunc)(
453     Cronet_UrlRequestCallbackPtr self,
454     Cronet_UrlRequestPtr request,
455     Cronet_UrlResponseInfoPtr info,
456     Cronet_String new_location_url);
457 typedef void (*Cronet_UrlRequestCallback_OnResponseStartedFunc)(
458     Cronet_UrlRequestCallbackPtr self,
459     Cronet_UrlRequestPtr request,
460     Cronet_UrlResponseInfoPtr info);
461 typedef void (*Cronet_UrlRequestCallback_OnReadCompletedFunc)(
462     Cronet_UrlRequestCallbackPtr self,
463     Cronet_UrlRequestPtr request,
464     Cronet_UrlResponseInfoPtr info,
465     Cronet_BufferPtr buffer,
466     uint64_t bytes_read);
467 typedef void (*Cronet_UrlRequestCallback_OnSucceededFunc)(
468     Cronet_UrlRequestCallbackPtr self,
469     Cronet_UrlRequestPtr request,
470     Cronet_UrlResponseInfoPtr info);
471 typedef void (*Cronet_UrlRequestCallback_OnFailedFunc)(
472     Cronet_UrlRequestCallbackPtr self,
473     Cronet_UrlRequestPtr request,
474     Cronet_UrlResponseInfoPtr info,
475     Cronet_ErrorPtr error);
476 typedef void (*Cronet_UrlRequestCallback_OnCanceledFunc)(
477     Cronet_UrlRequestCallbackPtr self,
478     Cronet_UrlRequestPtr request,
479     Cronet_UrlResponseInfoPtr info);
480 // The app creates an instance of Cronet_UrlRequestCallback by providing custom
481 // functions for each method.
482 CRONET_EXPORT Cronet_UrlRequestCallbackPtr Cronet_UrlRequestCallback_CreateWith(
483     Cronet_UrlRequestCallback_OnRedirectReceivedFunc OnRedirectReceivedFunc,
484     Cronet_UrlRequestCallback_OnResponseStartedFunc OnResponseStartedFunc,
485     Cronet_UrlRequestCallback_OnReadCompletedFunc OnReadCompletedFunc,
486     Cronet_UrlRequestCallback_OnSucceededFunc OnSucceededFunc,
487     Cronet_UrlRequestCallback_OnFailedFunc OnFailedFunc,
488     Cronet_UrlRequestCallback_OnCanceledFunc OnCanceledFunc);
489 
490 ///////////////////////
491 // Concrete interface Cronet_UploadDataSink.
492 
493 // Create an instance of Cronet_UploadDataSink.
494 CRONET_EXPORT Cronet_UploadDataSinkPtr Cronet_UploadDataSink_Create(void);
495 // Destroy an instance of Cronet_UploadDataSink.
496 CRONET_EXPORT void Cronet_UploadDataSink_Destroy(Cronet_UploadDataSinkPtr self);
497 // Set and get app-specific Cronet_ClientContext.
498 CRONET_EXPORT void Cronet_UploadDataSink_SetClientContext(
499     Cronet_UploadDataSinkPtr self,
500     Cronet_ClientContext client_context);
501 CRONET_EXPORT Cronet_ClientContext
502 Cronet_UploadDataSink_GetClientContext(Cronet_UploadDataSinkPtr self);
503 // Concrete methods of Cronet_UploadDataSink implemented by Cronet.
504 // The app calls them to manipulate Cronet_UploadDataSink.
505 CRONET_EXPORT
506 void Cronet_UploadDataSink_OnReadSucceeded(Cronet_UploadDataSinkPtr self,
507                                            uint64_t bytes_read,
508                                            bool final_chunk);
509 CRONET_EXPORT
510 void Cronet_UploadDataSink_OnReadError(Cronet_UploadDataSinkPtr self,
511                                        Cronet_String error_message);
512 CRONET_EXPORT
513 void Cronet_UploadDataSink_OnRewindSucceeded(Cronet_UploadDataSinkPtr self);
514 CRONET_EXPORT
515 void Cronet_UploadDataSink_OnRewindError(Cronet_UploadDataSinkPtr self,
516                                          Cronet_String error_message);
517 // Concrete interface Cronet_UploadDataSink is implemented by Cronet.
518 // The app can implement these for testing / mocking.
519 typedef void (*Cronet_UploadDataSink_OnReadSucceededFunc)(
520     Cronet_UploadDataSinkPtr self,
521     uint64_t bytes_read,
522     bool final_chunk);
523 typedef void (*Cronet_UploadDataSink_OnReadErrorFunc)(
524     Cronet_UploadDataSinkPtr self,
525     Cronet_String error_message);
526 typedef void (*Cronet_UploadDataSink_OnRewindSucceededFunc)(
527     Cronet_UploadDataSinkPtr self);
528 typedef void (*Cronet_UploadDataSink_OnRewindErrorFunc)(
529     Cronet_UploadDataSinkPtr self,
530     Cronet_String error_message);
531 // Concrete interface Cronet_UploadDataSink is implemented by Cronet.
532 // The app can use this for testing / mocking.
533 CRONET_EXPORT Cronet_UploadDataSinkPtr Cronet_UploadDataSink_CreateWith(
534     Cronet_UploadDataSink_OnReadSucceededFunc OnReadSucceededFunc,
535     Cronet_UploadDataSink_OnReadErrorFunc OnReadErrorFunc,
536     Cronet_UploadDataSink_OnRewindSucceededFunc OnRewindSucceededFunc,
537     Cronet_UploadDataSink_OnRewindErrorFunc OnRewindErrorFunc);
538 
539 ///////////////////////
540 // Abstract interface Cronet_UploadDataProvider is implemented by the app.
541 
542 // There is no method to create a concrete implementation.
543 
544 // Destroy an instance of Cronet_UploadDataProvider.
545 CRONET_EXPORT void Cronet_UploadDataProvider_Destroy(
546     Cronet_UploadDataProviderPtr self);
547 // Set and get app-specific Cronet_ClientContext.
548 CRONET_EXPORT void Cronet_UploadDataProvider_SetClientContext(
549     Cronet_UploadDataProviderPtr self,
550     Cronet_ClientContext client_context);
551 CRONET_EXPORT Cronet_ClientContext
552 Cronet_UploadDataProvider_GetClientContext(Cronet_UploadDataProviderPtr self);
553 // Abstract interface Cronet_UploadDataProvider is implemented by the app.
554 // The following concrete methods forward call to app implementation.
555 // The app doesn't normally call them.
556 CRONET_EXPORT
557 int64_t Cronet_UploadDataProvider_GetLength(Cronet_UploadDataProviderPtr self);
558 CRONET_EXPORT
559 void Cronet_UploadDataProvider_Read(Cronet_UploadDataProviderPtr self,
560                                     Cronet_UploadDataSinkPtr upload_data_sink,
561                                     Cronet_BufferPtr buffer);
562 CRONET_EXPORT
563 void Cronet_UploadDataProvider_Rewind(
564     Cronet_UploadDataProviderPtr self,
565     Cronet_UploadDataSinkPtr upload_data_sink);
566 CRONET_EXPORT
567 void Cronet_UploadDataProvider_Close(Cronet_UploadDataProviderPtr self);
568 // The app implements abstract interface Cronet_UploadDataProvider by defining
569 // custom functions for each method.
570 typedef int64_t (*Cronet_UploadDataProvider_GetLengthFunc)(
571     Cronet_UploadDataProviderPtr self);
572 typedef void (*Cronet_UploadDataProvider_ReadFunc)(
573     Cronet_UploadDataProviderPtr self,
574     Cronet_UploadDataSinkPtr upload_data_sink,
575     Cronet_BufferPtr buffer);
576 typedef void (*Cronet_UploadDataProvider_RewindFunc)(
577     Cronet_UploadDataProviderPtr self,
578     Cronet_UploadDataSinkPtr upload_data_sink);
579 typedef void (*Cronet_UploadDataProvider_CloseFunc)(
580     Cronet_UploadDataProviderPtr self);
581 // The app creates an instance of Cronet_UploadDataProvider by providing custom
582 // functions for each method.
583 CRONET_EXPORT Cronet_UploadDataProviderPtr Cronet_UploadDataProvider_CreateWith(
584     Cronet_UploadDataProvider_GetLengthFunc GetLengthFunc,
585     Cronet_UploadDataProvider_ReadFunc ReadFunc,
586     Cronet_UploadDataProvider_RewindFunc RewindFunc,
587     Cronet_UploadDataProvider_CloseFunc CloseFunc);
588 
589 ///////////////////////
590 // Concrete interface Cronet_UrlRequest.
591 
592 // Create an instance of Cronet_UrlRequest.
593 CRONET_EXPORT Cronet_UrlRequestPtr Cronet_UrlRequest_Create(void);
594 // Destroy an instance of Cronet_UrlRequest.
595 CRONET_EXPORT void Cronet_UrlRequest_Destroy(Cronet_UrlRequestPtr self);
596 // Set and get app-specific Cronet_ClientContext.
597 CRONET_EXPORT void Cronet_UrlRequest_SetClientContext(
598     Cronet_UrlRequestPtr self,
599     Cronet_ClientContext client_context);
600 CRONET_EXPORT Cronet_ClientContext
601 Cronet_UrlRequest_GetClientContext(Cronet_UrlRequestPtr self);
602 // Concrete methods of Cronet_UrlRequest implemented by Cronet.
603 // The app calls them to manipulate Cronet_UrlRequest.
604 CRONET_EXPORT
605 Cronet_RESULT Cronet_UrlRequest_InitWithParams(
606     Cronet_UrlRequestPtr self,
607     Cronet_EnginePtr engine,
608     Cronet_String url,
609     Cronet_UrlRequestParamsPtr params,
610     Cronet_UrlRequestCallbackPtr callback,
611     Cronet_ExecutorPtr executor);
612 CRONET_EXPORT
613 Cronet_RESULT Cronet_UrlRequest_Start(Cronet_UrlRequestPtr self);
614 CRONET_EXPORT
615 Cronet_RESULT Cronet_UrlRequest_FollowRedirect(Cronet_UrlRequestPtr self);
616 CRONET_EXPORT
617 Cronet_RESULT Cronet_UrlRequest_Read(Cronet_UrlRequestPtr self,
618                                      Cronet_BufferPtr buffer);
619 CRONET_EXPORT
620 void Cronet_UrlRequest_Cancel(Cronet_UrlRequestPtr self);
621 CRONET_EXPORT
622 bool Cronet_UrlRequest_IsDone(Cronet_UrlRequestPtr self);
623 CRONET_EXPORT
624 void Cronet_UrlRequest_GetStatus(Cronet_UrlRequestPtr self,
625                                  Cronet_UrlRequestStatusListenerPtr listener);
626 // Concrete interface Cronet_UrlRequest is implemented by Cronet.
627 // The app can implement these for testing / mocking.
628 typedef Cronet_RESULT (*Cronet_UrlRequest_InitWithParamsFunc)(
629     Cronet_UrlRequestPtr self,
630     Cronet_EnginePtr engine,
631     Cronet_String url,
632     Cronet_UrlRequestParamsPtr params,
633     Cronet_UrlRequestCallbackPtr callback,
634     Cronet_ExecutorPtr executor);
635 typedef Cronet_RESULT (*Cronet_UrlRequest_StartFunc)(Cronet_UrlRequestPtr self);
636 typedef Cronet_RESULT (*Cronet_UrlRequest_FollowRedirectFunc)(
637     Cronet_UrlRequestPtr self);
638 typedef Cronet_RESULT (*Cronet_UrlRequest_ReadFunc)(Cronet_UrlRequestPtr self,
639                                                     Cronet_BufferPtr buffer);
640 typedef void (*Cronet_UrlRequest_CancelFunc)(Cronet_UrlRequestPtr self);
641 typedef bool (*Cronet_UrlRequest_IsDoneFunc)(Cronet_UrlRequestPtr self);
642 typedef void (*Cronet_UrlRequest_GetStatusFunc)(
643     Cronet_UrlRequestPtr self,
644     Cronet_UrlRequestStatusListenerPtr listener);
645 // Concrete interface Cronet_UrlRequest is implemented by Cronet.
646 // The app can use this for testing / mocking.
647 CRONET_EXPORT Cronet_UrlRequestPtr Cronet_UrlRequest_CreateWith(
648     Cronet_UrlRequest_InitWithParamsFunc InitWithParamsFunc,
649     Cronet_UrlRequest_StartFunc StartFunc,
650     Cronet_UrlRequest_FollowRedirectFunc FollowRedirectFunc,
651     Cronet_UrlRequest_ReadFunc ReadFunc,
652     Cronet_UrlRequest_CancelFunc CancelFunc,
653     Cronet_UrlRequest_IsDoneFunc IsDoneFunc,
654     Cronet_UrlRequest_GetStatusFunc GetStatusFunc);
655 
656 ///////////////////////
657 // Abstract interface Cronet_RequestFinishedInfoListener is implemented by the
658 // app.
659 
660 // There is no method to create a concrete implementation.
661 
662 // Destroy an instance of Cronet_RequestFinishedInfoListener.
663 CRONET_EXPORT void Cronet_RequestFinishedInfoListener_Destroy(
664     Cronet_RequestFinishedInfoListenerPtr self);
665 // Set and get app-specific Cronet_ClientContext.
666 CRONET_EXPORT void Cronet_RequestFinishedInfoListener_SetClientContext(
667     Cronet_RequestFinishedInfoListenerPtr self,
668     Cronet_ClientContext client_context);
669 CRONET_EXPORT Cronet_ClientContext
670 Cronet_RequestFinishedInfoListener_GetClientContext(
671     Cronet_RequestFinishedInfoListenerPtr self);
672 // Abstract interface Cronet_RequestFinishedInfoListener is implemented by the
673 // app. The following concrete methods forward call to app implementation. The
674 // app doesn't normally call them.
675 CRONET_EXPORT
676 void Cronet_RequestFinishedInfoListener_OnRequestFinished(
677     Cronet_RequestFinishedInfoListenerPtr self,
678     Cronet_RequestFinishedInfoPtr request_info,
679     Cronet_UrlResponseInfoPtr response_info,
680     Cronet_ErrorPtr error);
681 // The app implements abstract interface Cronet_RequestFinishedInfoListener by
682 // defining custom functions for each method.
683 typedef void (*Cronet_RequestFinishedInfoListener_OnRequestFinishedFunc)(
684     Cronet_RequestFinishedInfoListenerPtr self,
685     Cronet_RequestFinishedInfoPtr request_info,
686     Cronet_UrlResponseInfoPtr response_info,
687     Cronet_ErrorPtr error);
688 // The app creates an instance of Cronet_RequestFinishedInfoListener by
689 // providing custom functions for each method.
690 CRONET_EXPORT Cronet_RequestFinishedInfoListenerPtr
691 Cronet_RequestFinishedInfoListener_CreateWith(
692     Cronet_RequestFinishedInfoListener_OnRequestFinishedFunc
693         OnRequestFinishedFunc);
694 
695 ///////////////////////
696 // Struct Cronet_Error.
697 CRONET_EXPORT Cronet_ErrorPtr Cronet_Error_Create(void);
698 CRONET_EXPORT void Cronet_Error_Destroy(Cronet_ErrorPtr self);
699 // Cronet_Error setters.
700 CRONET_EXPORT
701 void Cronet_Error_error_code_set(Cronet_ErrorPtr self,
702                                  const Cronet_Error_ERROR_CODE error_code);
703 CRONET_EXPORT
704 void Cronet_Error_message_set(Cronet_ErrorPtr self,
705                               const Cronet_String message);
706 CRONET_EXPORT
707 void Cronet_Error_internal_error_code_set(Cronet_ErrorPtr self,
708                                           const int32_t internal_error_code);
709 CRONET_EXPORT
710 void Cronet_Error_immediately_retryable_set(Cronet_ErrorPtr self,
711                                             const bool immediately_retryable);
712 CRONET_EXPORT
713 void Cronet_Error_quic_detailed_error_code_set(
714     Cronet_ErrorPtr self,
715     const int32_t quic_detailed_error_code);
716 // Cronet_Error getters.
717 CRONET_EXPORT
718 Cronet_Error_ERROR_CODE Cronet_Error_error_code_get(const Cronet_ErrorPtr self);
719 CRONET_EXPORT
720 Cronet_String Cronet_Error_message_get(const Cronet_ErrorPtr self);
721 CRONET_EXPORT
722 int32_t Cronet_Error_internal_error_code_get(const Cronet_ErrorPtr self);
723 CRONET_EXPORT
724 bool Cronet_Error_immediately_retryable_get(const Cronet_ErrorPtr self);
725 CRONET_EXPORT
726 int32_t Cronet_Error_quic_detailed_error_code_get(const Cronet_ErrorPtr self);
727 
728 ///////////////////////
729 // Struct Cronet_QuicHint.
730 CRONET_EXPORT Cronet_QuicHintPtr Cronet_QuicHint_Create(void);
731 CRONET_EXPORT void Cronet_QuicHint_Destroy(Cronet_QuicHintPtr self);
732 // Cronet_QuicHint setters.
733 CRONET_EXPORT
734 void Cronet_QuicHint_host_set(Cronet_QuicHintPtr self,
735                               const Cronet_String host);
736 CRONET_EXPORT
737 void Cronet_QuicHint_port_set(Cronet_QuicHintPtr self, const int32_t port);
738 CRONET_EXPORT
739 void Cronet_QuicHint_alternate_port_set(Cronet_QuicHintPtr self,
740                                         const int32_t alternate_port);
741 // Cronet_QuicHint getters.
742 CRONET_EXPORT
743 Cronet_String Cronet_QuicHint_host_get(const Cronet_QuicHintPtr self);
744 CRONET_EXPORT
745 int32_t Cronet_QuicHint_port_get(const Cronet_QuicHintPtr self);
746 CRONET_EXPORT
747 int32_t Cronet_QuicHint_alternate_port_get(const Cronet_QuicHintPtr self);
748 
749 ///////////////////////
750 // Struct Cronet_PublicKeyPins.
751 CRONET_EXPORT Cronet_PublicKeyPinsPtr Cronet_PublicKeyPins_Create(void);
752 CRONET_EXPORT void Cronet_PublicKeyPins_Destroy(Cronet_PublicKeyPinsPtr self);
753 // Cronet_PublicKeyPins setters.
754 CRONET_EXPORT
755 void Cronet_PublicKeyPins_host_set(Cronet_PublicKeyPinsPtr self,
756                                    const Cronet_String host);
757 CRONET_EXPORT
758 void Cronet_PublicKeyPins_pins_sha256_add(Cronet_PublicKeyPinsPtr self,
759                                           const Cronet_String element);
760 CRONET_EXPORT
761 void Cronet_PublicKeyPins_include_subdomains_set(Cronet_PublicKeyPinsPtr self,
762                                                  const bool include_subdomains);
763 CRONET_EXPORT
764 void Cronet_PublicKeyPins_expiration_date_set(Cronet_PublicKeyPinsPtr self,
765                                               const int64_t expiration_date);
766 // Cronet_PublicKeyPins getters.
767 CRONET_EXPORT
768 Cronet_String Cronet_PublicKeyPins_host_get(const Cronet_PublicKeyPinsPtr self);
769 CRONET_EXPORT
770 uint32_t Cronet_PublicKeyPins_pins_sha256_size(
771     const Cronet_PublicKeyPinsPtr self);
772 CRONET_EXPORT
773 Cronet_String Cronet_PublicKeyPins_pins_sha256_at(
774     const Cronet_PublicKeyPinsPtr self,
775     uint32_t index);
776 CRONET_EXPORT
777 void Cronet_PublicKeyPins_pins_sha256_clear(Cronet_PublicKeyPinsPtr self);
778 CRONET_EXPORT
779 bool Cronet_PublicKeyPins_include_subdomains_get(
780     const Cronet_PublicKeyPinsPtr self);
781 CRONET_EXPORT
782 int64_t Cronet_PublicKeyPins_expiration_date_get(
783     const Cronet_PublicKeyPinsPtr self);
784 
785 ///////////////////////
786 // Struct Cronet_EngineParams.
787 CRONET_EXPORT Cronet_EngineParamsPtr Cronet_EngineParams_Create(void);
788 CRONET_EXPORT void Cronet_EngineParams_Destroy(Cronet_EngineParamsPtr self);
789 // Cronet_EngineParams setters.
790 CRONET_EXPORT
791 void Cronet_EngineParams_enable_check_result_set(
792     Cronet_EngineParamsPtr self,
793     const bool enable_check_result);
794 CRONET_EXPORT
795 void Cronet_EngineParams_user_agent_set(Cronet_EngineParamsPtr self,
796                                         const Cronet_String user_agent);
797 CRONET_EXPORT
798 void Cronet_EngineParams_accept_language_set(
799     Cronet_EngineParamsPtr self,
800     const Cronet_String accept_language);
801 CRONET_EXPORT
802 void Cronet_EngineParams_storage_path_set(Cronet_EngineParamsPtr self,
803                                           const Cronet_String storage_path);
804 CRONET_EXPORT
805 void Cronet_EngineParams_enable_quic_set(Cronet_EngineParamsPtr self,
806                                          const bool enable_quic);
807 CRONET_EXPORT
808 void Cronet_EngineParams_enable_http2_set(Cronet_EngineParamsPtr self,
809                                           const bool enable_http2);
810 CRONET_EXPORT
811 void Cronet_EngineParams_enable_brotli_set(Cronet_EngineParamsPtr self,
812                                            const bool enable_brotli);
813 CRONET_EXPORT
814 void Cronet_EngineParams_http_cache_mode_set(
815     Cronet_EngineParamsPtr self,
816     const Cronet_EngineParams_HTTP_CACHE_MODE http_cache_mode);
817 CRONET_EXPORT
818 void Cronet_EngineParams_http_cache_max_size_set(
819     Cronet_EngineParamsPtr self,
820     const int64_t http_cache_max_size);
821 CRONET_EXPORT
822 void Cronet_EngineParams_quic_hints_add(Cronet_EngineParamsPtr self,
823                                         const Cronet_QuicHintPtr element);
824 CRONET_EXPORT
825 void Cronet_EngineParams_public_key_pins_add(
826     Cronet_EngineParamsPtr self,
827     const Cronet_PublicKeyPinsPtr element);
828 CRONET_EXPORT
829 void Cronet_EngineParams_enable_public_key_pinning_bypass_for_local_trust_anchors_set(
830     Cronet_EngineParamsPtr self,
831     const bool enable_public_key_pinning_bypass_for_local_trust_anchors);
832 CRONET_EXPORT
833 void Cronet_EngineParams_network_thread_priority_set(
834     Cronet_EngineParamsPtr self,
835     const double network_thread_priority);
836 CRONET_EXPORT
837 void Cronet_EngineParams_experimental_options_set(
838     Cronet_EngineParamsPtr self,
839     const Cronet_String experimental_options);
840 // Cronet_EngineParams getters.
841 CRONET_EXPORT
842 bool Cronet_EngineParams_enable_check_result_get(
843     const Cronet_EngineParamsPtr self);
844 CRONET_EXPORT
845 Cronet_String Cronet_EngineParams_user_agent_get(
846     const Cronet_EngineParamsPtr self);
847 CRONET_EXPORT
848 Cronet_String Cronet_EngineParams_accept_language_get(
849     const Cronet_EngineParamsPtr self);
850 CRONET_EXPORT
851 Cronet_String Cronet_EngineParams_storage_path_get(
852     const Cronet_EngineParamsPtr self);
853 CRONET_EXPORT
854 bool Cronet_EngineParams_enable_quic_get(const Cronet_EngineParamsPtr self);
855 CRONET_EXPORT
856 bool Cronet_EngineParams_enable_http2_get(const Cronet_EngineParamsPtr self);
857 CRONET_EXPORT
858 bool Cronet_EngineParams_enable_brotli_get(const Cronet_EngineParamsPtr self);
859 CRONET_EXPORT
860 Cronet_EngineParams_HTTP_CACHE_MODE Cronet_EngineParams_http_cache_mode_get(
861     const Cronet_EngineParamsPtr self);
862 CRONET_EXPORT
863 int64_t Cronet_EngineParams_http_cache_max_size_get(
864     const Cronet_EngineParamsPtr self);
865 CRONET_EXPORT
866 uint32_t Cronet_EngineParams_quic_hints_size(const Cronet_EngineParamsPtr self);
867 CRONET_EXPORT
868 Cronet_QuicHintPtr Cronet_EngineParams_quic_hints_at(
869     const Cronet_EngineParamsPtr self,
870     uint32_t index);
871 CRONET_EXPORT
872 void Cronet_EngineParams_quic_hints_clear(Cronet_EngineParamsPtr self);
873 CRONET_EXPORT
874 uint32_t Cronet_EngineParams_public_key_pins_size(
875     const Cronet_EngineParamsPtr self);
876 CRONET_EXPORT
877 Cronet_PublicKeyPinsPtr Cronet_EngineParams_public_key_pins_at(
878     const Cronet_EngineParamsPtr self,
879     uint32_t index);
880 CRONET_EXPORT
881 void Cronet_EngineParams_public_key_pins_clear(Cronet_EngineParamsPtr self);
882 CRONET_EXPORT
883 bool Cronet_EngineParams_enable_public_key_pinning_bypass_for_local_trust_anchors_get(
884     const Cronet_EngineParamsPtr self);
885 CRONET_EXPORT
886 double Cronet_EngineParams_network_thread_priority_get(
887     const Cronet_EngineParamsPtr self);
888 CRONET_EXPORT
889 Cronet_String Cronet_EngineParams_experimental_options_get(
890     const Cronet_EngineParamsPtr self);
891 
892 ///////////////////////
893 // Struct Cronet_HttpHeader.
894 CRONET_EXPORT Cronet_HttpHeaderPtr Cronet_HttpHeader_Create(void);
895 CRONET_EXPORT void Cronet_HttpHeader_Destroy(Cronet_HttpHeaderPtr self);
896 // Cronet_HttpHeader setters.
897 CRONET_EXPORT
898 void Cronet_HttpHeader_name_set(Cronet_HttpHeaderPtr self,
899                                 const Cronet_String name);
900 CRONET_EXPORT
901 void Cronet_HttpHeader_value_set(Cronet_HttpHeaderPtr self,
902                                  const Cronet_String value);
903 // Cronet_HttpHeader getters.
904 CRONET_EXPORT
905 Cronet_String Cronet_HttpHeader_name_get(const Cronet_HttpHeaderPtr self);
906 CRONET_EXPORT
907 Cronet_String Cronet_HttpHeader_value_get(const Cronet_HttpHeaderPtr self);
908 
909 ///////////////////////
910 // Struct Cronet_UrlResponseInfo.
911 CRONET_EXPORT Cronet_UrlResponseInfoPtr Cronet_UrlResponseInfo_Create(void);
912 CRONET_EXPORT void Cronet_UrlResponseInfo_Destroy(
913     Cronet_UrlResponseInfoPtr self);
914 // Cronet_UrlResponseInfo setters.
915 CRONET_EXPORT
916 void Cronet_UrlResponseInfo_url_set(Cronet_UrlResponseInfoPtr self,
917                                     const Cronet_String url);
918 CRONET_EXPORT
919 void Cronet_UrlResponseInfo_url_chain_add(Cronet_UrlResponseInfoPtr self,
920                                           const Cronet_String element);
921 CRONET_EXPORT
922 void Cronet_UrlResponseInfo_http_status_code_set(
923     Cronet_UrlResponseInfoPtr self,
924     const int32_t http_status_code);
925 CRONET_EXPORT
926 void Cronet_UrlResponseInfo_http_status_text_set(
927     Cronet_UrlResponseInfoPtr self,
928     const Cronet_String http_status_text);
929 CRONET_EXPORT
930 void Cronet_UrlResponseInfo_all_headers_list_add(
931     Cronet_UrlResponseInfoPtr self,
932     const Cronet_HttpHeaderPtr element);
933 CRONET_EXPORT
934 void Cronet_UrlResponseInfo_was_cached_set(Cronet_UrlResponseInfoPtr self,
935                                            const bool was_cached);
936 CRONET_EXPORT
937 void Cronet_UrlResponseInfo_negotiated_protocol_set(
938     Cronet_UrlResponseInfoPtr self,
939     const Cronet_String negotiated_protocol);
940 CRONET_EXPORT
941 void Cronet_UrlResponseInfo_proxy_server_set(Cronet_UrlResponseInfoPtr self,
942                                              const Cronet_String proxy_server);
943 CRONET_EXPORT
944 void Cronet_UrlResponseInfo_received_byte_count_set(
945     Cronet_UrlResponseInfoPtr self,
946     const int64_t received_byte_count);
947 // Cronet_UrlResponseInfo getters.
948 CRONET_EXPORT
949 Cronet_String Cronet_UrlResponseInfo_url_get(
950     const Cronet_UrlResponseInfoPtr self);
951 CRONET_EXPORT
952 uint32_t Cronet_UrlResponseInfo_url_chain_size(
953     const Cronet_UrlResponseInfoPtr self);
954 CRONET_EXPORT
955 Cronet_String Cronet_UrlResponseInfo_url_chain_at(
956     const Cronet_UrlResponseInfoPtr self,
957     uint32_t index);
958 CRONET_EXPORT
959 void Cronet_UrlResponseInfo_url_chain_clear(Cronet_UrlResponseInfoPtr self);
960 CRONET_EXPORT
961 int32_t Cronet_UrlResponseInfo_http_status_code_get(
962     const Cronet_UrlResponseInfoPtr self);
963 CRONET_EXPORT
964 Cronet_String Cronet_UrlResponseInfo_http_status_text_get(
965     const Cronet_UrlResponseInfoPtr self);
966 CRONET_EXPORT
967 uint32_t Cronet_UrlResponseInfo_all_headers_list_size(
968     const Cronet_UrlResponseInfoPtr self);
969 CRONET_EXPORT
970 Cronet_HttpHeaderPtr Cronet_UrlResponseInfo_all_headers_list_at(
971     const Cronet_UrlResponseInfoPtr self,
972     uint32_t index);
973 CRONET_EXPORT
974 void Cronet_UrlResponseInfo_all_headers_list_clear(
975     Cronet_UrlResponseInfoPtr self);
976 CRONET_EXPORT
977 bool Cronet_UrlResponseInfo_was_cached_get(
978     const Cronet_UrlResponseInfoPtr self);
979 CRONET_EXPORT
980 Cronet_String Cronet_UrlResponseInfo_negotiated_protocol_get(
981     const Cronet_UrlResponseInfoPtr self);
982 CRONET_EXPORT
983 Cronet_String Cronet_UrlResponseInfo_proxy_server_get(
984     const Cronet_UrlResponseInfoPtr self);
985 CRONET_EXPORT
986 int64_t Cronet_UrlResponseInfo_received_byte_count_get(
987     const Cronet_UrlResponseInfoPtr self);
988 
989 ///////////////////////
990 // Struct Cronet_UrlRequestParams.
991 CRONET_EXPORT Cronet_UrlRequestParamsPtr Cronet_UrlRequestParams_Create(void);
992 CRONET_EXPORT void Cronet_UrlRequestParams_Destroy(
993     Cronet_UrlRequestParamsPtr self);
994 // Cronet_UrlRequestParams setters.
995 CRONET_EXPORT
996 void Cronet_UrlRequestParams_http_method_set(Cronet_UrlRequestParamsPtr self,
997                                              const Cronet_String http_method);
998 CRONET_EXPORT
999 void Cronet_UrlRequestParams_request_headers_add(
1000     Cronet_UrlRequestParamsPtr self,
1001     const Cronet_HttpHeaderPtr element);
1002 CRONET_EXPORT
1003 void Cronet_UrlRequestParams_disable_cache_set(Cronet_UrlRequestParamsPtr self,
1004                                                const bool disable_cache);
1005 CRONET_EXPORT
1006 void Cronet_UrlRequestParams_priority_set(
1007     Cronet_UrlRequestParamsPtr self,
1008     const Cronet_UrlRequestParams_REQUEST_PRIORITY priority);
1009 CRONET_EXPORT
1010 void Cronet_UrlRequestParams_upload_data_provider_set(
1011     Cronet_UrlRequestParamsPtr self,
1012     const Cronet_UploadDataProviderPtr upload_data_provider);
1013 CRONET_EXPORT
1014 void Cronet_UrlRequestParams_upload_data_provider_executor_set(
1015     Cronet_UrlRequestParamsPtr self,
1016     const Cronet_ExecutorPtr upload_data_provider_executor);
1017 CRONET_EXPORT
1018 void Cronet_UrlRequestParams_allow_direct_executor_set(
1019     Cronet_UrlRequestParamsPtr self,
1020     const bool allow_direct_executor);
1021 CRONET_EXPORT
1022 void Cronet_UrlRequestParams_annotations_add(Cronet_UrlRequestParamsPtr self,
1023                                              const Cronet_RawDataPtr element);
1024 CRONET_EXPORT
1025 void Cronet_UrlRequestParams_request_finished_listener_set(
1026     Cronet_UrlRequestParamsPtr self,
1027     const Cronet_RequestFinishedInfoListenerPtr request_finished_listener);
1028 CRONET_EXPORT
1029 void Cronet_UrlRequestParams_request_finished_executor_set(
1030     Cronet_UrlRequestParamsPtr self,
1031     const Cronet_ExecutorPtr request_finished_executor);
1032 CRONET_EXPORT
1033 void Cronet_UrlRequestParams_idempotency_set(
1034     Cronet_UrlRequestParamsPtr self,
1035     const Cronet_UrlRequestParams_IDEMPOTENCY idempotency);
1036 // Cronet_UrlRequestParams getters.
1037 CRONET_EXPORT
1038 Cronet_String Cronet_UrlRequestParams_http_method_get(
1039     const Cronet_UrlRequestParamsPtr self);
1040 CRONET_EXPORT
1041 uint32_t Cronet_UrlRequestParams_request_headers_size(
1042     const Cronet_UrlRequestParamsPtr self);
1043 CRONET_EXPORT
1044 Cronet_HttpHeaderPtr Cronet_UrlRequestParams_request_headers_at(
1045     const Cronet_UrlRequestParamsPtr self,
1046     uint32_t index);
1047 CRONET_EXPORT
1048 void Cronet_UrlRequestParams_request_headers_clear(
1049     Cronet_UrlRequestParamsPtr self);
1050 CRONET_EXPORT
1051 bool Cronet_UrlRequestParams_disable_cache_get(
1052     const Cronet_UrlRequestParamsPtr self);
1053 CRONET_EXPORT
1054 Cronet_UrlRequestParams_REQUEST_PRIORITY Cronet_UrlRequestParams_priority_get(
1055     const Cronet_UrlRequestParamsPtr self);
1056 CRONET_EXPORT
1057 Cronet_UploadDataProviderPtr Cronet_UrlRequestParams_upload_data_provider_get(
1058     const Cronet_UrlRequestParamsPtr self);
1059 CRONET_EXPORT
1060 Cronet_ExecutorPtr Cronet_UrlRequestParams_upload_data_provider_executor_get(
1061     const Cronet_UrlRequestParamsPtr self);
1062 CRONET_EXPORT
1063 bool Cronet_UrlRequestParams_allow_direct_executor_get(
1064     const Cronet_UrlRequestParamsPtr self);
1065 CRONET_EXPORT
1066 uint32_t Cronet_UrlRequestParams_annotations_size(
1067     const Cronet_UrlRequestParamsPtr self);
1068 CRONET_EXPORT
1069 Cronet_RawDataPtr Cronet_UrlRequestParams_annotations_at(
1070     const Cronet_UrlRequestParamsPtr self,
1071     uint32_t index);
1072 CRONET_EXPORT
1073 void Cronet_UrlRequestParams_annotations_clear(Cronet_UrlRequestParamsPtr self);
1074 CRONET_EXPORT
1075 Cronet_RequestFinishedInfoListenerPtr
1076 Cronet_UrlRequestParams_request_finished_listener_get(
1077     const Cronet_UrlRequestParamsPtr self);
1078 CRONET_EXPORT
1079 Cronet_ExecutorPtr Cronet_UrlRequestParams_request_finished_executor_get(
1080     const Cronet_UrlRequestParamsPtr self);
1081 CRONET_EXPORT
1082 Cronet_UrlRequestParams_IDEMPOTENCY Cronet_UrlRequestParams_idempotency_get(
1083     const Cronet_UrlRequestParamsPtr self);
1084 
1085 ///////////////////////
1086 // Struct Cronet_DateTime.
1087 CRONET_EXPORT Cronet_DateTimePtr Cronet_DateTime_Create(void);
1088 CRONET_EXPORT void Cronet_DateTime_Destroy(Cronet_DateTimePtr self);
1089 // Cronet_DateTime setters.
1090 CRONET_EXPORT
1091 void Cronet_DateTime_value_set(Cronet_DateTimePtr self, const int64_t value);
1092 // Cronet_DateTime getters.
1093 CRONET_EXPORT
1094 int64_t Cronet_DateTime_value_get(const Cronet_DateTimePtr self);
1095 
1096 ///////////////////////
1097 // Struct Cronet_Metrics.
1098 CRONET_EXPORT Cronet_MetricsPtr Cronet_Metrics_Create(void);
1099 CRONET_EXPORT void Cronet_Metrics_Destroy(Cronet_MetricsPtr self);
1100 // Cronet_Metrics setters.
1101 CRONET_EXPORT
1102 void Cronet_Metrics_request_start_set(Cronet_MetricsPtr self,
1103                                       const Cronet_DateTimePtr request_start);
1104 // Move data from |request_start|. The caller retains ownership of
1105 // |request_start| and must destroy it.
1106 void Cronet_Metrics_request_start_move(Cronet_MetricsPtr self,
1107                                        Cronet_DateTimePtr request_start);
1108 CRONET_EXPORT
1109 void Cronet_Metrics_dns_start_set(Cronet_MetricsPtr self,
1110                                   const Cronet_DateTimePtr dns_start);
1111 // Move data from |dns_start|. The caller retains ownership of |dns_start| and
1112 // must destroy it.
1113 void Cronet_Metrics_dns_start_move(Cronet_MetricsPtr self,
1114                                    Cronet_DateTimePtr dns_start);
1115 CRONET_EXPORT
1116 void Cronet_Metrics_dns_end_set(Cronet_MetricsPtr self,
1117                                 const Cronet_DateTimePtr dns_end);
1118 // Move data from |dns_end|. The caller retains ownership of |dns_end| and must
1119 // destroy it.
1120 void Cronet_Metrics_dns_end_move(Cronet_MetricsPtr self,
1121                                  Cronet_DateTimePtr dns_end);
1122 CRONET_EXPORT
1123 void Cronet_Metrics_connect_start_set(Cronet_MetricsPtr self,
1124                                       const Cronet_DateTimePtr connect_start);
1125 // Move data from |connect_start|. The caller retains ownership of
1126 // |connect_start| and must destroy it.
1127 void Cronet_Metrics_connect_start_move(Cronet_MetricsPtr self,
1128                                        Cronet_DateTimePtr connect_start);
1129 CRONET_EXPORT
1130 void Cronet_Metrics_connect_end_set(Cronet_MetricsPtr self,
1131                                     const Cronet_DateTimePtr connect_end);
1132 // Move data from |connect_end|. The caller retains ownership of |connect_end|
1133 // and must destroy it.
1134 void Cronet_Metrics_connect_end_move(Cronet_MetricsPtr self,
1135                                      Cronet_DateTimePtr connect_end);
1136 CRONET_EXPORT
1137 void Cronet_Metrics_ssl_start_set(Cronet_MetricsPtr self,
1138                                   const Cronet_DateTimePtr ssl_start);
1139 // Move data from |ssl_start|. The caller retains ownership of |ssl_start| and
1140 // must destroy it.
1141 void Cronet_Metrics_ssl_start_move(Cronet_MetricsPtr self,
1142                                    Cronet_DateTimePtr ssl_start);
1143 CRONET_EXPORT
1144 void Cronet_Metrics_ssl_end_set(Cronet_MetricsPtr self,
1145                                 const Cronet_DateTimePtr ssl_end);
1146 // Move data from |ssl_end|. The caller retains ownership of |ssl_end| and must
1147 // destroy it.
1148 void Cronet_Metrics_ssl_end_move(Cronet_MetricsPtr self,
1149                                  Cronet_DateTimePtr ssl_end);
1150 CRONET_EXPORT
1151 void Cronet_Metrics_sending_start_set(Cronet_MetricsPtr self,
1152                                       const Cronet_DateTimePtr sending_start);
1153 // Move data from |sending_start|. The caller retains ownership of
1154 // |sending_start| and must destroy it.
1155 void Cronet_Metrics_sending_start_move(Cronet_MetricsPtr self,
1156                                        Cronet_DateTimePtr sending_start);
1157 CRONET_EXPORT
1158 void Cronet_Metrics_sending_end_set(Cronet_MetricsPtr self,
1159                                     const Cronet_DateTimePtr sending_end);
1160 // Move data from |sending_end|. The caller retains ownership of |sending_end|
1161 // and must destroy it.
1162 void Cronet_Metrics_sending_end_move(Cronet_MetricsPtr self,
1163                                      Cronet_DateTimePtr sending_end);
1164 CRONET_EXPORT
1165 void Cronet_Metrics_push_start_set(Cronet_MetricsPtr self,
1166                                    const Cronet_DateTimePtr push_start);
1167 // Move data from |push_start|. The caller retains ownership of |push_start| and
1168 // must destroy it.
1169 void Cronet_Metrics_push_start_move(Cronet_MetricsPtr self,
1170                                     Cronet_DateTimePtr push_start);
1171 CRONET_EXPORT
1172 void Cronet_Metrics_push_end_set(Cronet_MetricsPtr self,
1173                                  const Cronet_DateTimePtr push_end);
1174 // Move data from |push_end|. The caller retains ownership of |push_end| and
1175 // must destroy it.
1176 void Cronet_Metrics_push_end_move(Cronet_MetricsPtr self,
1177                                   Cronet_DateTimePtr push_end);
1178 CRONET_EXPORT
1179 void Cronet_Metrics_response_start_set(Cronet_MetricsPtr self,
1180                                        const Cronet_DateTimePtr response_start);
1181 // Move data from |response_start|. The caller retains ownership of
1182 // |response_start| and must destroy it.
1183 void Cronet_Metrics_response_start_move(Cronet_MetricsPtr self,
1184                                         Cronet_DateTimePtr response_start);
1185 CRONET_EXPORT
1186 void Cronet_Metrics_request_end_set(Cronet_MetricsPtr self,
1187                                     const Cronet_DateTimePtr request_end);
1188 // Move data from |request_end|. The caller retains ownership of |request_end|
1189 // and must destroy it.
1190 void Cronet_Metrics_request_end_move(Cronet_MetricsPtr self,
1191                                      Cronet_DateTimePtr request_end);
1192 CRONET_EXPORT
1193 void Cronet_Metrics_socket_reused_set(Cronet_MetricsPtr self,
1194                                       const bool socket_reused);
1195 CRONET_EXPORT
1196 void Cronet_Metrics_sent_byte_count_set(Cronet_MetricsPtr self,
1197                                         const int64_t sent_byte_count);
1198 CRONET_EXPORT
1199 void Cronet_Metrics_received_byte_count_set(Cronet_MetricsPtr self,
1200                                             const int64_t received_byte_count);
1201 // Cronet_Metrics getters.
1202 CRONET_EXPORT
1203 Cronet_DateTimePtr Cronet_Metrics_request_start_get(
1204     const Cronet_MetricsPtr self);
1205 CRONET_EXPORT
1206 Cronet_DateTimePtr Cronet_Metrics_dns_start_get(const Cronet_MetricsPtr self);
1207 CRONET_EXPORT
1208 Cronet_DateTimePtr Cronet_Metrics_dns_end_get(const Cronet_MetricsPtr self);
1209 CRONET_EXPORT
1210 Cronet_DateTimePtr Cronet_Metrics_connect_start_get(
1211     const Cronet_MetricsPtr self);
1212 CRONET_EXPORT
1213 Cronet_DateTimePtr Cronet_Metrics_connect_end_get(const Cronet_MetricsPtr self);
1214 CRONET_EXPORT
1215 Cronet_DateTimePtr Cronet_Metrics_ssl_start_get(const Cronet_MetricsPtr self);
1216 CRONET_EXPORT
1217 Cronet_DateTimePtr Cronet_Metrics_ssl_end_get(const Cronet_MetricsPtr self);
1218 CRONET_EXPORT
1219 Cronet_DateTimePtr Cronet_Metrics_sending_start_get(
1220     const Cronet_MetricsPtr self);
1221 CRONET_EXPORT
1222 Cronet_DateTimePtr Cronet_Metrics_sending_end_get(const Cronet_MetricsPtr self);
1223 CRONET_EXPORT
1224 Cronet_DateTimePtr Cronet_Metrics_push_start_get(const Cronet_MetricsPtr self);
1225 CRONET_EXPORT
1226 Cronet_DateTimePtr Cronet_Metrics_push_end_get(const Cronet_MetricsPtr self);
1227 CRONET_EXPORT
1228 Cronet_DateTimePtr Cronet_Metrics_response_start_get(
1229     const Cronet_MetricsPtr self);
1230 CRONET_EXPORT
1231 Cronet_DateTimePtr Cronet_Metrics_request_end_get(const Cronet_MetricsPtr self);
1232 CRONET_EXPORT
1233 bool Cronet_Metrics_socket_reused_get(const Cronet_MetricsPtr self);
1234 CRONET_EXPORT
1235 int64_t Cronet_Metrics_sent_byte_count_get(const Cronet_MetricsPtr self);
1236 CRONET_EXPORT
1237 int64_t Cronet_Metrics_received_byte_count_get(const Cronet_MetricsPtr self);
1238 
1239 ///////////////////////
1240 // Struct Cronet_RequestFinishedInfo.
1241 CRONET_EXPORT Cronet_RequestFinishedInfoPtr
1242 Cronet_RequestFinishedInfo_Create(void);
1243 CRONET_EXPORT void Cronet_RequestFinishedInfo_Destroy(
1244     Cronet_RequestFinishedInfoPtr self);
1245 // Cronet_RequestFinishedInfo setters.
1246 CRONET_EXPORT
1247 void Cronet_RequestFinishedInfo_metrics_set(Cronet_RequestFinishedInfoPtr self,
1248                                             const Cronet_MetricsPtr metrics);
1249 // Move data from |metrics|. The caller retains ownership of |metrics| and must
1250 // destroy it.
1251 void Cronet_RequestFinishedInfo_metrics_move(Cronet_RequestFinishedInfoPtr self,
1252                                              Cronet_MetricsPtr metrics);
1253 CRONET_EXPORT
1254 void Cronet_RequestFinishedInfo_annotations_add(
1255     Cronet_RequestFinishedInfoPtr self,
1256     const Cronet_RawDataPtr element);
1257 CRONET_EXPORT
1258 void Cronet_RequestFinishedInfo_finished_reason_set(
1259     Cronet_RequestFinishedInfoPtr self,
1260     const Cronet_RequestFinishedInfo_FINISHED_REASON finished_reason);
1261 // Cronet_RequestFinishedInfo getters.
1262 CRONET_EXPORT
1263 Cronet_MetricsPtr Cronet_RequestFinishedInfo_metrics_get(
1264     const Cronet_RequestFinishedInfoPtr self);
1265 CRONET_EXPORT
1266 uint32_t Cronet_RequestFinishedInfo_annotations_size(
1267     const Cronet_RequestFinishedInfoPtr self);
1268 CRONET_EXPORT
1269 Cronet_RawDataPtr Cronet_RequestFinishedInfo_annotations_at(
1270     const Cronet_RequestFinishedInfoPtr self,
1271     uint32_t index);
1272 CRONET_EXPORT
1273 void Cronet_RequestFinishedInfo_annotations_clear(
1274     Cronet_RequestFinishedInfoPtr self);
1275 CRONET_EXPORT
1276 Cronet_RequestFinishedInfo_FINISHED_REASON
1277 Cronet_RequestFinishedInfo_finished_reason_get(
1278     const Cronet_RequestFinishedInfoPtr self);
1279 
1280 #ifdef __cplusplus
1281 }
1282 #endif
1283 
1284 #endif  // COMPONENTS_CRONET_NATIVE_GENERATED_CRONET_IDL_C_H_
1285