/// <summary> /// Called on the IO thread before a resource is loaded. To allow the /// resource to load normally return false. To redirect the resource to a /// new url populate the |redirectUrl| value and return false. To /// specify data for the resource return a CefStream object in /// |resourceStream|, use the |response| object to set mime type, HTTP /// status code and optional header values, and return false. To cancel /// loading of the resource return true. Any modifications to |request| /// will be observed. If the URL in |request| is changed and /// |redirectUrl| is also set, the URL in |request| will be used. /// </summary> private int on_before_resource_load(cef_request_handler_t *self, cef_browser_t *browser, cef_request_t *request, cef_string_t *redirectUrl, cef_stream_reader_t **resourceStream, cef_response_t *response, int loadFlags) { ThrowIfObjectDisposed(); var m_browser = CefBrowser.From(browser); var m_request = CefRequest.From(request); string m_redirectUrl; CefStreamReader m_resourceStream; var m_response = CefResponse.From(response); var handled = this.OnBeforeResourceLoad(m_browser, m_request, out m_redirectUrl, out m_resourceStream, m_response, loadFlags); if (!handled) { if (!string.IsNullOrEmpty(m_redirectUrl)) { cef_string_t.Copy(m_redirectUrl, redirectUrl); } if (m_resourceStream != null) { *resourceStream = m_resourceStream.GetNativePointerAndAddRef(); } } return(handled ? 1 : 0); }
/// <summary> /// Notifies the client that the request has been redirected and /// provides a chance to change the request parameters. /// </summary> private void on_redirect(cef_web_urlrequest_client_t *self, cef_web_urlrequest_t *requester, cef_request_t *request, cef_response_t *response) { ThrowIfObjectDisposed(); var m_requester = CefWebUrlRequest.From(requester); var m_request = CefRequest.From(request); var m_response = CefResponse.From(response); this.OnRedirect(m_requester, m_request, m_response); }
/// <summary> /// Begin processing the request. To handle the request return true and /// call HeadersAvailable() once the response header information is /// available (HeadersAvailable() can also be called from inside this /// method if header information is available immediately). To cancel the request return false. /// </summary> private int process_request(cef_scheme_handler_t *self, cef_request_t *request, cef_scheme_handler_callback_t *callback) { ThrowIfObjectDisposed(); var mRequest = CefRequest.From(request); var mCallback = CefSchemeHandlerCallback.From(callback); var handled = this.ProcessRequest(mRequest, mCallback); return(handled ? 1 : 0); }
/// <summary> /// Return a new scheme handler instance to handle the request. |browser| will /// be the browser window that initiated the request. If the request was /// initiated using the CefWebURLRequest API |browser| will be NULL. /// </summary> private cef_scheme_handler_t *create(cef_scheme_handler_factory_t *self, cef_browser_t *browser, /*const*/ cef_string_t *scheme_name, cef_request_t *request) { ThrowIfObjectDisposed(); var mBrowser = CefBrowser.FromOrDefault(browser); var m_schemeName = cef_string_t.ToString(scheme_name); var m_request = CefRequest.From(request); var handler = this.Create(mBrowser, m_schemeName, m_request); return(handler.GetNativePointerAndAddRef()); }
/// <summary> /// Called on the UI thread before browser navigation. Return true to /// cancel the navigation or false to allow the navigation to proceed. /// </summary> private int on_before_browse(cef_request_handler_t *self, cef_browser_t *browser, cef_frame_t *frame, cef_request_t *request, cef_handler_navtype_t navType, int isRedirect) { ThrowIfObjectDisposed(); var m_browser = CefBrowser.From(browser); var m_frame = CefFrame.From(frame); var m_request = CefRequest.From(request); var m_navType = (CefHandlerNavType)navType; var m_isRedirect = isRedirect != 0; var handled = this.OnBeforeBrowse(m_browser, m_frame, m_request, m_navType, m_isRedirect); return(handled ? 1 : 0); }
/// <summary> /// Create a new CefRequest object. /// </summary> public static CefRequest Create() { return(CefRequest.From( NativeMethods.cef_request_create() )); }