mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-28 18:07:44 +01:00
This change allows the NetworkService to handle cookie load/save in cases where cookies will not be filtered (CefResourceRequestHandler::GetCookieAccessFilter returns null) and the request will be handled by the default network loader. This represents a minor performance improvement by reducing the volume of cross- process messaging in the default (no filtering or custom handing) case. Cookie load/save still needs to be routed through the browser process if a filter is returned, or if a CefResourceHandler is used for the request. To test: Test expectations are unchanged.
245 lines
11 KiB
C
245 lines
11 KiB
C
// Copyright (c) 2019 Marshall A. Greenblatt. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are
|
|
// met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above
|
|
// copyright notice, this list of conditions and the following disclaimer
|
|
// in the documentation and/or other materials provided with the
|
|
// distribution.
|
|
// * Neither the name of Google Inc. nor the name Chromium Embedded
|
|
// Framework nor the names of its contributors may be used to endorse
|
|
// or promote products derived from this software without specific prior
|
|
// written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
//
|
|
// ---------------------------------------------------------------------------
|
|
//
|
|
// This file was generated by the CEF translator tool and should not edited
|
|
// by hand. See the translator.README.txt file in the tools directory for
|
|
// more information.
|
|
//
|
|
// $hash=07e185ca89ea4b4db129a5d3650a55311e582fc4$
|
|
//
|
|
|
|
#ifndef CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
|
|
#define CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
|
|
#pragma once
|
|
|
|
#include "include/capi/cef_base_capi.h"
|
|
#include "include/capi/cef_browser_capi.h"
|
|
#include "include/capi/cef_frame_capi.h"
|
|
#include "include/capi/cef_request_callback_capi.h"
|
|
#include "include/capi/cef_request_capi.h"
|
|
#include "include/capi/cef_resource_handler_capi.h"
|
|
#include "include/capi/cef_response_capi.h"
|
|
#include "include/capi/cef_response_filter_capi.h"
|
|
#include "include/internal/cef_types_wrappers.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct _cef_cookie_access_filter_t;
|
|
|
|
///
|
|
// Implement this structure to handle events related to browser requests. The
|
|
// functions of this structure will be called on the IO thread unless otherwise
|
|
// indicated.
|
|
///
|
|
typedef struct _cef_resource_request_handler_t {
|
|
///
|
|
// Base structure.
|
|
///
|
|
cef_base_ref_counted_t base;
|
|
|
|
///
|
|
// Called on the IO thread before a resource request is loaded. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. To optionally filter cookies for
|
|
// the request return a cef_cookie_access_filter_t object. The |request|
|
|
// object cannot not be modified in this callback.
|
|
///
|
|
struct _cef_cookie_access_filter_t*(CEF_CALLBACK* get_cookie_access_filter)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request);
|
|
|
|
///
|
|
// Called on the IO thread before a resource request is loaded. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. To redirect or change the
|
|
// resource load optionally modify |request|. Modification of the request URL
|
|
// will be treated as a redirect. Return RV_CONTINUE to continue the request
|
|
// immediately. Return RV_CONTINUE_ASYNC and call cef_request_tCallback::
|
|
// cont() at a later time to continue or cancel the request asynchronously.
|
|
// Return RV_CANCEL to cancel the request immediately.
|
|
//
|
|
///
|
|
cef_return_value_t(CEF_CALLBACK* on_before_resource_load)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_request_callback_t* callback);
|
|
|
|
///
|
|
// Called on the IO thread before a resource is loaded. The |browser| and
|
|
// |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. To allow the resource to load
|
|
// using the default network loader return NULL. To specify a handler for the
|
|
// resource return a cef_resource_handler_t object. The |request| object
|
|
// cannot not be modified in this callback.
|
|
///
|
|
struct _cef_resource_handler_t*(CEF_CALLBACK* get_resource_handler)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request);
|
|
|
|
///
|
|
// Called on the IO thread when a resource load is redirected. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. The |request| parameter will
|
|
// contain the old URL and other request-related information. The |response|
|
|
// parameter will contain the response that resulted in the redirect. The
|
|
// |new_url| parameter will contain the new URL and can be changed if desired.
|
|
// The |request| and |response| objects cannot be modified in this callback.
|
|
///
|
|
void(CEF_CALLBACK* on_resource_redirect)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_response_t* response,
|
|
cef_string_t* new_url);
|
|
|
|
///
|
|
// Called on the IO thread when a resource response is received. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. To allow the resource load to
|
|
// proceed without modification return false (0). To redirect or retry the
|
|
// resource load optionally modify |request| and return true (1). Modification
|
|
// of the request URL will be treated as a redirect. Requests handled using
|
|
// the default network loader cannot be redirected in this callback. The
|
|
// |response| object cannot be modified in this callback.
|
|
//
|
|
// WARNING: Redirecting using this function is deprecated. Use
|
|
// OnBeforeResourceLoad or GetResourceHandler to perform redirects.
|
|
///
|
|
int(CEF_CALLBACK* on_resource_response)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_response_t* response);
|
|
|
|
///
|
|
// Called on the IO thread to optionally filter resource response content. The
|
|
// |browser| and |frame| values represent the source of the request, and may
|
|
// be NULL for requests originating from service workers. |request| and
|
|
// |response| represent the request and response respectively and cannot be
|
|
// modified in this callback.
|
|
///
|
|
struct _cef_response_filter_t*(CEF_CALLBACK* get_resource_response_filter)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_response_t* response);
|
|
|
|
///
|
|
// Called on the IO thread when a resource load has completed. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. |request| and |response|
|
|
// represent the request and response respectively and cannot be modified in
|
|
// this callback. |status| indicates the load completion status.
|
|
// |received_content_length| is the number of response bytes actually read.
|
|
///
|
|
void(CEF_CALLBACK* on_resource_load_complete)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_response_t* response,
|
|
cef_urlrequest_status_t status,
|
|
int64 received_content_length);
|
|
|
|
///
|
|
// Called on the IO thread to handle requests for URLs with an unknown
|
|
// protocol component. The |browser| and |frame| values represent the source
|
|
// of the request, and may be NULL for requests originating from service
|
|
// workers. |request| cannot be modified in this callback. Set
|
|
// |allow_os_execution| to true (1) to attempt execution via the registered OS
|
|
// protocol handler, if any. SECURITY WARNING: YOU SHOULD USE THIS METHOD TO
|
|
// ENFORCE RESTRICTIONS BASED ON SCHEME, HOST OR OTHER URL ANALYSIS BEFORE
|
|
// ALLOWING OS EXECUTION.
|
|
///
|
|
void(CEF_CALLBACK* on_protocol_execution)(
|
|
struct _cef_resource_request_handler_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
int* allow_os_execution);
|
|
} cef_resource_request_handler_t;
|
|
|
|
///
|
|
// Implement this structure to filter cookies that may be sent or received from
|
|
// resource requests. The functions of this structure will be called on the IO
|
|
// thread unless otherwise indicated.
|
|
///
|
|
typedef struct _cef_cookie_access_filter_t {
|
|
///
|
|
// Base structure.
|
|
///
|
|
cef_base_ref_counted_t base;
|
|
|
|
///
|
|
// Called on the IO thread before a resource request is sent. The |browser|
|
|
// and |frame| values represent the source of the request, and may be NULL for
|
|
// requests originating from service workers. |request| cannot be modified in
|
|
// this callback. Return true (1) if the specified cookie can be sent with the
|
|
// request or false (0) otherwise.
|
|
///
|
|
int(CEF_CALLBACK* can_send_cookie)(struct _cef_cookie_access_filter_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
const struct _cef_cookie_t* cookie);
|
|
|
|
///
|
|
// Called on the IO thread after a resource response is received. The
|
|
// |browser| and |frame| values represent the source of the request, and may
|
|
// be NULL for requests originating from service workers. |request| cannot be
|
|
// modified in this callback. Return true (1) if the specified cookie returned
|
|
// with the response can be saved or false (0) otherwise.
|
|
///
|
|
int(CEF_CALLBACK* can_save_cookie)(struct _cef_cookie_access_filter_t* self,
|
|
struct _cef_browser_t* browser,
|
|
struct _cef_frame_t* frame,
|
|
struct _cef_request_t* request,
|
|
struct _cef_response_t* response,
|
|
const struct _cef_cookie_t* cookie);
|
|
} cef_cookie_access_filter_t;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // CEF_INCLUDE_CAPI_CEF_RESOURCE_REQUEST_HANDLER_CAPI_H_
|