| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 import "network_error.mojom" | 5 import "network_error.mojom" |
| 6 | 6 |
| 7 module mojo { | 7 module mojo { |
| 8 | 8 |
| 9 struct URLRequest { | 9 struct URLRequest { |
| 10 // The URL to load. |
| 10 string url; | 11 string url; |
| 12 |
| 13 // The HTTP method if applicable. |
| 11 string method = "GET"; | 14 string method = "GET"; |
| 15 |
| 16 // Additional HTTP request headers. |
| 12 string[] headers; | 17 string[] headers; |
| 18 |
| 19 // The payload for the request body. For HTTP requests, the method must be |
| 20 // set to "POST" or "PUT". |
| 13 handle<data_pipe_consumer> body; | 21 handle<data_pipe_consumer> body; |
| 14 int64 body_length = 0; // Set to -1 if length is unknown. | 22 |
| 15 bool follow_redirects = false; | 23 // The number of bytes to be read from |body|. A Content-Length header of |
| 24 // this value will be sent. Set to -1 if length is unknown, which will cause |
| 25 // |body| to be uploaded using a chunked encoding. |
| 26 int64 body_length = 0; |
| 27 |
| 28 // If set to true, then redirects will be automatically followed. Otherwise, |
| 29 // when a redirect is encounterd, FollowRedirect must be called to proceed. |
| 30 bool auto_follow_redirects = false; |
| 31 |
| 32 // If set to true, then the HTTP request will bypass the local cache and will |
| 33 // have a 'Cache-Control: nocache' header added in that causes any proxy |
| 34 // servers to also not satisfy the request from their cache. This has the |
| 35 // effect of forcing a full end-to-end fetch. |
| 16 bool bypass_cache = false; | 36 bool bypass_cache = false; |
| 17 }; | 37 }; |
| 18 | 38 |
| 19 struct URLResponse { | 39 struct URLResponse { |
| 40 // The final URL of the response, after redirects have been followed. |
| 20 string url; | 41 string url; |
| 21 string[] redirects; // The sequence of redirected URLs. | 42 |
| 43 // The HTTP status code. 0 if not applicable. |
| 22 uint32 status_code; | 44 uint32 status_code; |
| 45 |
| 46 // The HTTP status line. |
| 23 string status_line; | 47 string status_line; |
| 48 |
| 49 // The HTTP response headers. |
| 24 string[] headers; | 50 string[] headers; |
| 25 }; | 51 }; |
| 26 | 52 |
| 27 [Client=URLLoaderClient] | 53 [Client=URLLoaderClient] |
| 28 interface URLLoader { | 54 interface URLLoader { |
| 29 // Start loading the given |request|. When available, the response body will | 55 // Start loading the given |request|. When available, the response body will |
| 30 // be copied to |response_body_stream|. | 56 // be copied to |response_body_stream|. |
| 31 // | 57 // |
| 32 // The client's |OnReceivedResponse| method will run when response meta data | 58 // The client's |OnReceivedResponse| method will run when response meta data |
| 33 // becomes available, or if a redirect is encountered and |follow_redirects| | 59 // becomes available, or if a redirect response is encountered and |
| 34 // is false, the client's |OnRecievedRedirect| method will called. | 60 // |auto_follow_redirects| is false, the client's |OnRecievedRedirect| method |
| 61 // will called instead. |
| 35 // | 62 // |
| 36 // NOTE: You may observe data being pushed to |response_body_stream| before | 63 // NOTE: You may observe data being pushed to |response_body_stream| before |
| 37 // you receive |OnReceivedResponse|. | 64 // you receive |OnReceivedResponse|. |
| 38 Start(URLRequest request, handle<data_pipe_producer> response_body_stream); | 65 Start(URLRequest request, handle<data_pipe_producer> response_body_stream); |
| 39 | 66 |
| 40 // If the request passed to |Start| was configured with |follow_redirects| | 67 // If the request passed to |Start| had |auto_follow_redirects| set to false, |
| 41 // set to false, then upon receiving a redirect, |OnReceivedRedirect| will be | 68 // then upon receiving a redirect, |OnReceivedRedirect| will be called. To |
| 42 // called. To follow the indicated redirect, call the |FollowRedirect| | 69 // follow the indicated redirect, call the |FollowRedirect| method. |
| 43 // method. | |
| 44 FollowRedirect(); | 70 FollowRedirect(); |
| 45 }; | 71 }; |
| 46 | 72 |
| 47 interface URLLoaderClient { | 73 interface URLLoaderClient { |
| 48 // This method is called when a redirect is encountered, provided the | 74 // This method is called when a redirect is encountered, provided the |
| 49 // request's |follow_redirects| attribute was set to false. | 75 // request's |auto_follow_redirects| attribute was set to false. |
| 50 OnReceivedRedirect(URLResponse response, string new_url, string new_method); | 76 OnReceivedRedirect(URLResponse response, string new_url, string new_method); |
| 51 | 77 |
| 52 // This method is called when response meta data becomes available. | 78 // This method is called when response meta data becomes available. |
| 53 OnReceivedResponse(URLResponse response); | 79 OnReceivedResponse(URLResponse response); |
| 54 | 80 |
| 55 // This method is called when a network level error is encountered. This can | 81 // This method is called when a network level error is encountered. This can |
| 56 // happen before or after OnReceivedResponse, but cannot happen after | 82 // happen before or after OnReceivedResponse, but cannot happen after |
| 57 // OnReceivedEndOfResponseBody. | 83 // OnReceivedEndOfResponseBody. |
| 58 OnReceivedError(NetworkError error); | 84 OnReceivedError(NetworkError error); |
| 59 | 85 |
| 60 // This method is called when the response body has been successfully | 86 // This method is called when the response body has been successfully |
| 61 // downloaded and copied in its entirety to |response_body_stream|. | 87 // downloaded and copied in its entirety to |response_body_stream|. |
| 62 // | 88 // |
| 63 // NOTE: Because |response_body_stream| is limited in size, this event may be | 89 // NOTE: Because |response_body_stream| is limited in size, this event may be |
| 64 // delayed until |response_body_stream| is consumed. | 90 // delayed until |response_body_stream| is consumed. |
| 65 OnReceivedEndOfResponseBody(); | 91 OnReceivedEndOfResponseBody(); |
| 66 }; | 92 }; |
| 67 | 93 |
| 68 } | 94 } |
| OLD | NEW |