diff options
Diffstat (limited to 'libcef/common/urlrequest_impl.cc')
-rw-r--r-- | libcef/common/urlrequest_impl.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libcef/common/urlrequest_impl.cc b/libcef/common/urlrequest_impl.cc new file mode 100644 index 00000000..98688975 --- /dev/null +++ b/libcef/common/urlrequest_impl.cc @@ -0,0 +1,43 @@ +// Copyright (c) 2012 The Chromium Embedded Framework 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 "include/cef_urlrequest.h" +#include "libcef/browser/net_service/browser_urlrequest_impl.h" +#include "libcef/common/app_manager.h" +#include "libcef/common/task_runner_impl.h" +#include "libcef/features/runtime_checks.h" + +#include "base/logging.h" +#include "base/notreached.h" +#include "content/public/common/content_client.h" + +// static +CefRefPtr<CefURLRequest> CefURLRequest::Create( + CefRefPtr<CefRequest> request, + CefRefPtr<CefURLRequestClient> client, + CefRefPtr<CefRequestContext> request_context) { + if (!request.get() || !client.get()) { + NOTREACHED() << "called with invalid parameters"; + return nullptr; + } + + if (!CefTaskRunnerImpl::GetCurrentTaskRunner()) { + NOTREACHED() << "called on invalid thread"; + return nullptr; + } + + auto content_client = CefAppManager::Get()->GetContentClient(); + if (content_client->browser()) { + // In the browser process. + CefRefPtr<CefBrowserURLRequest> impl = + new CefBrowserURLRequest(nullptr, request, client, request_context); + if (impl->Start()) { + return impl.get(); + } + return nullptr; + } else { + NOTREACHED() << "called in unsupported process"; + return nullptr; + } +} |