// 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. #include "libcef/browser/resource_context.h" #include "libcef/browser/url_request_context_getter.h" #include "base/logging.h" #include "content/public/browser/browser_thread.h" CefResourceContext::CefResourceContext() { } CefResourceContext::~CefResourceContext() { if (getter_.get()) { // When the parent object (ResourceContext) destructor executes all // associated URLRequests should be destroyed. If there are no other // references it should then be safe to destroy the URLRequestContextGetter // which owns the URLRequestContext. getter_->AddRef(); CefURLRequestContextGetter* raw_getter = getter_.get(); getter_ = NULL; content::BrowserThread::ReleaseSoon( content::BrowserThread::IO, FROM_HERE, raw_getter); } } net::HostResolver* CefResourceContext::GetHostResolver() { CHECK(getter_.get()); return getter_->GetHostResolver(); } net::URLRequestContext* CefResourceContext::GetRequestContext() { CHECK(getter_.get()); return getter_->GetURLRequestContext(); } void CefResourceContext::set_url_request_context_getter( scoped_refptr getter) { DCHECK(!getter_.get()); getter_ = getter; }