// Copyright (c) 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CEF_LIBCEF_BROWSER_RESOURCE_CONTEXT_H_ #define CEF_LIBCEF_BROWSER_RESOURCE_CONTEXT_H_ #pragma once #include "include/cef_request_context.h" #include "include/cef_request_context_handler.h" #include "include/cef_scheme.h" #include "libcef/browser/request_context_handler_map.h" #include "content/public/browser/resource_context.h" class GURL; // Acts as a bridge for resource loading. Life span is controlled by // CefBrowserContext. Created on the UI thread but accessed and destroyed on the // IO thread. Network request objects are associated with the ResourceContext // via ProxyURLLoaderFactory. When the ResourceContext is destroyed all // outstanding network request objects will be canceled. // See browser_context.h for an object relationship diagram. class CefResourceContext : public content::ResourceContext { public: explicit CefResourceContext(bool is_off_the_record); ~CefResourceContext() override; // See comments in CefRequestContextHandlerMap. void AddHandler(int render_process_id, int render_frame_id, int frame_tree_node_id, CefRefPtr handler); void RemoveHandler(int render_process_id, int render_frame_id, int frame_tree_node_id); CefRefPtr GetHandler( int render_process_id, int render_frame_id, int frame_tree_node_id, bool require_frame_match) const; // Manage scheme handler factories associated with this context. void RegisterSchemeHandlerFactory(const std::string& scheme_name, const std::string& domain_name, CefRefPtr factory); void ClearSchemeHandlerFactories(); CefRefPtr GetSchemeHandlerFactory(const GURL& url); // State transferred from the BrowserContext for use on the IO thread. bool IsOffTheRecord() const { return is_off_the_record_; } private: void InitOnIOThread(); // Only accessed on the IO thread. const bool is_off_the_record_; // Map IDs to CefRequestContextHandler objects. CefRequestContextHandlerMap handler_map_; // Map (scheme, domain) to factories. typedef std::map, CefRefPtr> SchemeHandlerFactoryMap; SchemeHandlerFactoryMap scheme_handler_factory_map_; DISALLOW_COPY_AND_ASSIGN(CefResourceContext); }; #endif // CEF_LIBCEF_BROWSER_RESOURCE_CONTEXT_H_