// Copyright 2020 The Chromium Embedded Framework Authors. // Portions copyright 2012 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/common/chrome/chrome_main_delegate_cef.h" #include "libcef/browser/chrome/chrome_content_browser_client_cef.h" ChromeMainDelegateCef::ChromeMainDelegateCef(CefMainRunnerHandler* runner) : ChromeMainDelegate(base::TimeTicks::Now()), runner_(runner) {} ChromeMainDelegateCef::~ChromeMainDelegateCef() = default; void ChromeMainDelegateCef::PreCreateMainMessageLoop() { // The parent ChromeMainDelegate implementation creates the NSApplication // instance on macOS, and we intentionally don't want to do that here. runner_->PreCreateMainMessageLoop(); } int ChromeMainDelegateCef::RunProcess( const std::string& process_type, const content::MainFunctionParams& main_function_params) { if (process_type.empty()) { return runner_->RunMainProcess(main_function_params); } return ChromeMainDelegate::RunProcess(process_type, main_function_params); } content::ContentBrowserClient* ChromeMainDelegateCef::CreateContentBrowserClient() { // Match the logic in the parent ChromeMainDelegate implementation, but create // our own object type. if (chrome_content_browser_client_ == nullptr) { DCHECK(!startup_data_); startup_data_ = std::make_unique(); chrome_content_browser_client_ = std::make_unique(startup_data_.get()); } return chrome_content_browser_client_.get(); } scoped_refptr ChromeMainDelegateCef::GetBackgroundTaskRunner() { auto browser_client = content_browser_client(); if (browser_client) return browser_client->background_task_runner(); return nullptr; } scoped_refptr ChromeMainDelegateCef::GetUserVisibleTaskRunner() { auto browser_client = content_browser_client(); if (browser_client) return browser_client->user_visible_task_runner(); return nullptr; } scoped_refptr ChromeMainDelegateCef::GetUserBlockingTaskRunner() { auto browser_client = content_browser_client(); if (browser_client) return browser_client->user_blocking_task_runner(); return nullptr; } scoped_refptr ChromeMainDelegateCef::GetRenderTaskRunner() { // TODO: Implement. NOTREACHED(); return nullptr; } scoped_refptr ChromeMainDelegateCef::GetWebWorkerTaskRunner() { // TODO: Implement. NOTREACHED(); return nullptr; } ChromeContentBrowserClientCef* ChromeMainDelegateCef::content_browser_client() const { return static_cast( chrome_content_browser_client_.get()); }