Enable NPAPI plugins if any plugin policies are set.
Once NPAPI is pushed behind a flag in M42, enterprise polices that are set need to re-enable NPAPI plugins correctly.
This CL covers all the policy cases and is intended to be a wide net to catch any/all policies. We don't particularly mind if this has a few false positives, because NPAPI will be totally gone soon.
BUG=295137
TEST=Set e.g. EnabledPlugins policy. Check that NPAPI plugins are listed in chrome://plugins
Review URL: https://codereview.chromium.org/930243008
Cr-Commit-Position: refs/heads/master@{#317329}
diff --git a/content/browser/plugin_service_impl.cc b/content/browser/plugin_service_impl.cc
index 42ac63b..e431095 100644
--- a/content/browser/plugin_service_impl.cc
+++ b/content/browser/plugin_service_impl.cc
@@ -190,15 +190,6 @@
if (command_line->HasSwitch(switches::kDisablePluginsDiscovery))
PluginList::Singleton()->DisablePluginsDiscovery();
-#if defined(OS_WIN) || defined(OS_MACOSX)
- npapi_plugins_enabled_ = command_line->HasSwitch(switches::kEnableNpapi);
- NPAPIPluginStatus status =
- npapi_plugins_enabled_ ? NPAPI_STATUS_ENABLED : NPAPI_STATUS_DISABLED;
-#else
- NPAPIPluginStatus status = NPAPI_STATUS_UNSUPPORTED;
-#endif
- UMA_HISTOGRAM_ENUMERATION("Plugin.NPAPIStatus", status,
- NPAPI_STATUS_ENUM_COUNT);
}
void PluginServiceImpl::StartWatchingPlugins() {
@@ -779,8 +770,9 @@
void PluginServiceImpl::RegisterInternalPlugin(
const WebPluginInfo& info,
bool add_at_beginning) {
- if (!NPAPIPluginsSupported() &&
- info.type == WebPluginInfo::PLUGIN_TYPE_NPAPI) {
+ // Internal plugins should never be NPAPI.
+ CHECK_NE(info.type, WebPluginInfo::PLUGIN_TYPE_NPAPI);
+ if (info.type == WebPluginInfo::PLUGIN_TYPE_NPAPI) {
DVLOG(0) << "Don't register NPAPI plugins when they're not supported";
return;
}
@@ -797,6 +789,22 @@
}
bool PluginServiceImpl::NPAPIPluginsSupported() {
+ static bool command_line_checked = false;
+
+ if (!command_line_checked) {
+#if defined(OS_WIN) || defined(OS_MACOSX)
+ const base::CommandLine* command_line =
+ base::CommandLine::ForCurrentProcess();
+ npapi_plugins_enabled_ = command_line->HasSwitch(switches::kEnableNpapi);
+ NPAPIPluginStatus status =
+ npapi_plugins_enabled_ ? NPAPI_STATUS_ENABLED : NPAPI_STATUS_DISABLED;
+#else
+ NPAPIPluginStatus status = NPAPI_STATUS_UNSUPPORTED;
+#endif
+ UMA_HISTOGRAM_ENUMERATION("Plugin.NPAPIStatus", status,
+ NPAPI_STATUS_ENUM_COUNT);
+ }
+
return npapi_plugins_enabled_;
}