private void on_download_progress(cef_urlrequest_client_t *self, cef_urlrequest_t *request, long current, long total) { CheckSelf(self); var m_request = CefUrlRequest.FromNative(request); OnDownloadProgress(m_request, current, total); }
private void on_request_complete(cef_urlrequest_client_t *self, cef_urlrequest_t *request) { CheckSelf(self); var m_request = CefUrlRequest.FromNative(request); OnRequestComplete(m_request); }
private void on_download_data(cef_urlrequest_client_t *self, cef_urlrequest_t *request, void *data, UIntPtr data_length) { CheckSelf(self); var m_request = CefUrlRequest.FromNative(request); using (var stream = new UnmanagedMemoryStream((byte *)data, (long)data_length)) { OnDownloadData(m_request, stream); } }
/// <summary> /// Create a new URL request. Only GET, POST, HEAD, DELETE and PUT request /// methods are supported. Multiple post data elements are not supported and /// elements of type PDE_TYPE_FILE are only supported for requests originating /// from the browser process. Requests originating from the render process will /// receive the same handling as requests originating from Web content -- if /// the response contains Content-Disposition or Mime-Type header values that /// would not normally be rendered then the response may receive special /// handling inside the browser (for example, via the file download code path /// instead of the URL request code path). The |request| object will be marked /// as read-only after calling this method. In the browser process if /// |request_context| is empty the global request context will be used. In the /// render process |request_context| must be empty and the context associated /// with the current renderer process' browser will be used. /// </summary> public static CefUrlRequest Create(CefRequest request, CefUrlRequestClient client, CefRequestContext requestContext) { if (request == null) { throw new ArgumentNullException("request"); } var n_request = request.ToNative(); var n_client = client.ToNative(); var n_requestContext = requestContext != null?requestContext.ToNative() : null; return(CefUrlRequest.FromNative( cef_urlrequest_t.create(n_request, n_client, n_requestContext) )); }
/// <summary> /// Called when some part of the response is read. |data| contains the current /// bytes received since the last call. This method will not be called if the /// UR_FLAG_NO_DOWNLOAD_DATA flag is set on the request. /// </summary> protected abstract void OnDownloadData(CefUrlRequest request, Stream data);
/// <summary> /// Notifies the client of download progress. |current| denotes the number of /// bytes received up to the call and |total| is the expected total size of the /// response (or -1 if not determined). /// </summary> protected abstract void OnDownloadProgress(CefUrlRequest request, long current, long total);
/// <summary> /// Notifies the client that the request has completed. Use the /// CefURLRequest::GetRequestStatus method to determine if the request was /// successful or not. /// </summary> protected abstract void OnRequestComplete(CefUrlRequest request);