コード例 #1
0
        /// <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);
        }
コード例 #2
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);
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
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());
        }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
 /// <summary>
 /// Create a new CefRequest object.
 /// </summary>
 public static CefRequest Create()
 {
     return(CefRequest.From(
                NativeMethods.cef_request_create()
                ));
 }