// Copyright 2017 the Chromium Embedded Framework Authors. Portions copyright // 2013 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/extensions/extension_background_host.h" #include "libcef/browser/browser_host_impl.h" #include "libcef/browser/extensions/extension_host_delegate.h" #include "base/callback.h" namespace extensions { CefExtensionBackgroundHost::CefExtensionBackgroundHost( CefBrowserHostImpl* browser, base::OnceClosure deleted_callback, const Extension* extension, content::BrowserContext* browser_context, content::WebContents* host_contents, const GURL& url, ViewType host_type) : ExtensionHost(new CefExtensionHostDelegate(browser), extension, browser_context, host_contents, url, host_type), deleted_callback_(std::move(deleted_callback)) { DCHECK(!deleted_callback_.is_null()); // Only used for background pages. DCHECK(host_type == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE); } CefExtensionBackgroundHost::~CefExtensionBackgroundHost() { std::move(deleted_callback_).Run(); } bool CefExtensionBackgroundHost::ShouldTransferNavigation( bool is_main_frame_navigation) { // Block navigations that cause the main frame to navigate to non-extension // content (i.e. to web content). return !is_main_frame_navigation; } } // namespace extensions