diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc
index d49a1df73622..9a389e4383f0 100644
--- chrome/browser/plugins/plugin_info_host_impl.cc
+++ chrome/browser/plugins/plugin_info_host_impl.cc
@@ -18,6 +18,7 @@
 #include "base/task_runner_util.h"
 #include "build/branding_buildflags.h"
 #include "build/build_config.h"
+#include "cef/libcef/features/features.h"
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/content_settings/host_content_settings_map_factory.h"
 #include "chrome/browser/plugins/chrome_plugin_service_filter.h"
@@ -54,6 +55,11 @@
 #include "url/gurl.h"
 #include "url/origin.h"
 
+#if BUILDFLAG(ENABLE_CEF)
+#include "cef/libcef/browser/plugins/plugin_service_filter.h"
+#include "cef/libcef/common/extensions/extensions_util.h"
+#endif
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 #include "components/guest_view/browser/guest_view_base.h"
 #include "extensions/browser/extension_registry.h"
@@ -100,6 +106,9 @@ bool IsPluginLoadingAccessibleResourceInWebView(
     extensions::ExtensionRegistry* extension_registry,
     int process_id,
     const GURL& resource) {
+  if (!extension_registry)
+    return false;
+
   extensions::WebViewRendererState* renderer_state =
       extensions::WebViewRendererState::GetInstance();
   std::string partition_id;
@@ -128,9 +137,6 @@ bool IsPluginLoadingAccessibleResourceInWebView(
 
 PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile)
     : render_process_id_(render_process_id),
-#if BUILDFLAG(ENABLE_EXTENSIONS)
-      extension_registry_(extensions::ExtensionRegistry::Get(profile)),
-#endif
       host_content_settings_map_(
           HostContentSettingsMapFactory::GetForProfile(profile)),
       plugin_prefs_(PluginPrefs::GetForProfile(profile)) {
@@ -138,6 +144,13 @@ PluginInfoHostImpl::Context::Context(int render_process_id, Profile* profile)
                                profile->GetPrefs());
   run_all_flash_in_allow_mode_.Init(prefs::kRunAllFlashInAllowMode,
                                     profile->GetPrefs());
+
+#if BUILDFLAG(ENABLE_EXTENSIONS)
+#if BUILDFLAG(ENABLE_CEF)
+  if (extensions::ExtensionsEnabled())
+#endif
+    extension_registry_ = extensions::ExtensionRegistry::Get(profile);
+#endif
 }
 
 PluginInfoHostImpl::Context::~Context() {}
@@ -208,6 +221,7 @@ void PluginInfoHostImpl::PluginsLoaded(
         plugin_metadata->identifier(), &output->status);
   }
 
+#if !BUILDFLAG(ENABLE_CEF)
   if (output->status == chrome::mojom::PluginStatus::kNotFound) {
     // Check to see if the component updater can fetch an implementation.
     std::unique_ptr<component_updater::ComponentInfo> cus_plugin_info =
@@ -216,7 +230,9 @@ void PluginInfoHostImpl::PluginsLoaded(
     ComponentPluginLookupDone(params, std::move(output), std::move(callback),
                               std::move(plugin_metadata),
                               std::move(cus_plugin_info));
-  } else {
+  } else
+#endif  // !BUILDFLAG(ENABLE_CEF)
+  {
     GetPluginInfoFinish(params, std::move(output), std::move(callback),
                         std::move(plugin_metadata));
   }
@@ -229,6 +245,14 @@ void PluginInfoHostImpl::Context::DecidePluginStatus(
     PluginMetadata::SecurityStatus security_status,
     const std::string& plugin_identifier,
     chrome::mojom::PluginStatus* status) const {
+#if BUILDFLAG(ENABLE_CEF)
+  // Don't override the user decision.
+  if (*status == chrome::mojom::PluginStatus::kBlocked ||
+      *status == chrome::mojom::PluginStatus::kDisabled) {
+    return;
+  }
+#endif
+
   if (security_status == PluginMetadata::SECURITY_STATUS_FULLY_TRUSTED) {
     *status = chrome::mojom::PluginStatus::kAllowed;
     return;
@@ -337,16 +361,35 @@ bool PluginInfoHostImpl::Context::FindEnabledPlugin(
     return false;
   }
 
+  const bool is_main_frame =
+      main_frame_origin.IsSameOriginWith(url::Origin::Create(url));
+
+#if BUILDFLAG(ENABLE_CEF)
+  CefPluginServiceFilter* filter = static_cast<CefPluginServiceFilter*>(
+      PluginService::GetInstance()->GetFilter());
+  DCHECK(filter);
+
+  size_t i = 0;
+  for (; i < matching_plugins.size(); ++i) {
+    if (filter->IsPluginAvailable(render_process_id_, render_frame_id,
+                                  url, is_main_frame, main_frame_origin,
+                                  &matching_plugins[i], status)) {
+      break;
+    }
+  }
+#else  // !BUILDFLAG(ENABLE_CEF)
   content::PluginServiceFilter* filter =
       PluginService::GetInstance()->GetFilter();
   size_t i = 0;
   for (; i < matching_plugins.size(); ++i) {
     if (!filter ||
         filter->IsPluginAvailable(render_process_id_, render_frame_id, url,
-                                  main_frame_origin, &matching_plugins[i])) {
+                                  is_main_frame, main_frame_origin,
+                                  &matching_plugins[i])) {
       break;
     }
   }
+#endif  // !BUILDFLAG(ENABLE_CEF)
 
   // If we broke out of the loop, we have found an enabled plugin.
   bool enabled = i < matching_plugins.size();
diff --git chrome/browser/plugins/plugin_utils.cc chrome/browser/plugins/plugin_utils.cc
index 4e64db143b8a..71322b0261a1 100644
--- chrome/browser/plugins/plugin_utils.cc
+++ chrome/browser/plugins/plugin_utils.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/plugins/plugin_utils.h"
 
 #include "base/values.h"
+#include "cef/libcef/features/features.h"
 #include "chrome/browser/profiles/profile_io_data.h"
 #include "chrome/common/plugin_utils.h"
 #include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -14,6 +15,11 @@
 #include "url/gurl.h"
 #include "url/origin.h"
 
+#if BUILDFLAG(ENABLE_CEF)
+#include "cef/libcef/browser/resource_context.h"
+#include "cef/libcef/common/extensions/extensions_util.h"
+#endif
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 #include "chrome/common/pref_names.h"
 #include "components/prefs/pref_service.h"
@@ -182,6 +188,12 @@ base::flat_map<std::string, std::string>
 PluginUtils::GetMimeTypeToExtensionIdMap(
     content::BrowserContext* browser_context) {
   base::flat_map<std::string, std::string> mime_type_to_extension_id_map;
+
+#if BUILDFLAG(ENABLE_CEF)
+  if (!extensions::ExtensionsEnabled())
+    return mime_type_to_extension_id_map;
+#endif
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   Profile* profile = Profile::FromBrowserContext(browser_context);
   std::vector<std::string> whitelist = MimeTypesHandler::GetMIMETypeWhitelist();
diff --git chrome/common/google_url_loader_throttle.cc chrome/common/google_url_loader_throttle.cc
index bcb97138c321..df6792bd5317 100644
--- chrome/common/google_url_loader_throttle.cc
+++ chrome/common/google_url_loader_throttle.cc
@@ -5,10 +5,15 @@
 #include "chrome/common/google_url_loader_throttle.h"
 
 #include "build/build_config.h"
+#include "cef/libcef/features/features.h"
 #include "chrome/common/net/safe_search_util.h"
 #include "components/google/core/common/google_util.h"
 #include "services/network/public/mojom/url_response_head.mojom.h"
 
+#if BUILDFLAG(ENABLE_CEF)
+#include "cef/libcef/common/extensions/extensions_util.h"
+#endif
+
 #if BUILDFLAG(ENABLE_EXTENSIONS)
 #include "extensions/common/extension_urls.h"
 #endif
@@ -116,6 +121,11 @@ void GoogleURLLoaderThrottle::WillProcessResponse(
     const GURL& response_url,
     network::mojom::URLResponseHead* response_head,
     bool* defer) {
+#if BUILDFLAG(ENABLE_CEF)
+  if (!extensions::ExtensionsEnabled())
+    return;
+#endif
+
   // Built-in additional protection for the chrome web store origin.
   GURL webstore_url(extension_urls::GetWebstoreLaunchURL());
   if (response_url.SchemeIsHTTPOrHTTPS() &&
diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc
index b96048aec4f7..edaa78c59fe8 100644
--- chrome/renderer/chrome_content_renderer_client.cc
+++ chrome/renderer/chrome_content_renderer_client.cc
@@ -813,6 +813,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
 
     if ((status == chrome::mojom::PluginStatus::kUnauthorized ||
          status == chrome::mojom::PluginStatus::kBlocked) &&
+        content_settings_agent &&
         content_settings_agent->IsPluginTemporarilyAllowed(identifier)) {
       status = chrome::mojom::PluginStatus::kAllowed;
     }
@@ -1015,7 +1016,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
         render_frame->GetRemoteAssociatedInterfaces()->GetInterface(
             plugin_auth_host.BindNewEndpointAndPassReceiver());
         plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier);
-        content_settings_agent->DidBlockContentType(content_type);
+        if (content_settings_agent)
+          content_settings_agent->DidBlockContentType(content_type);
         break;
       }
       case chrome::mojom::PluginStatus::kBlocked: {
@@ -1024,7 +1026,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
             l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name));
         placeholder->AllowLoading();
         RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked"));
-        content_settings_agent->DidBlockContentType(content_type);
+        if (content_settings_agent)
+          content_settings_agent->DidBlockContentType(content_type);
         break;
       }
       case chrome::mojom::PluginStatus::kBlockedByPolicy: {
@@ -1034,7 +1037,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
                                        group_name));
         RenderThread::Get()->RecordAction(
             UserMetricsAction("Plugin_BlockedByPolicy"));
-        content_settings_agent->DidBlockContentType(content_type);
+        if (content_settings_agent)
+          content_settings_agent->DidBlockContentType(content_type);
         break;
       }
       case chrome::mojom::PluginStatus::kBlockedNoLoading: {
@@ -1042,7 +1046,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin(
             IDR_BLOCKED_PLUGIN_HTML,
             l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED_NO_LOADING,
                                        group_name));
-        content_settings_agent->DidBlockContentType(content_type);
+        if (content_settings_agent)
+          content_settings_agent->DidBlockContentType(content_type);
         break;
       }
       case chrome::mojom::PluginStatus::kComponentUpdateRequired: {
diff --git chrome/renderer/plugins/chrome_plugin_placeholder.cc chrome/renderer/plugins/chrome_plugin_placeholder.cc
index 8a7d7402a48c..4dde943d0222 100644
--- chrome/renderer/plugins/chrome_plugin_placeholder.cc
+++ chrome/renderer/plugins/chrome_plugin_placeholder.cc
@@ -359,8 +359,11 @@ void ChromePluginPlaceholder::OnBlockedContent(
 
   if (status ==
       content::RenderFrame::PeripheralContentStatus::CONTENT_STATUS_TINY) {
-    ContentSettingsAgentImpl::Get(render_frame())
-        ->DidBlockContentType(ContentSettingsType::PLUGINS);
+      ContentSettingsAgentImpl *content_settings_agent =
+          ContentSettingsAgentImpl::Get(render_frame());
+      if (content_settings_agent) {
+        content_settings_agent->DidBlockContentType(ContentSettingsType::PLUGINS);
+      }
   }
 
   std::string message = base::StringPrintf(
