// Copyright (c) 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 "chrome/browser/ui/webui/plugins/plugins_ui.h" #include #include #include "base/macros.h" #include "base/memory/ref_counted_memory.h" #include "build/build_config.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/plugins/plugins_handler.h" #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "chrome/grit/browser_resources.h" #include "chrome/grit/generated_resources.h" #include "chrome/grit/theme_resources.h" #include "components/pref_registry/pref_registry_syncable.h" #include "content/public/browser/web_ui.h" #include "content/public/browser/web_ui_data_source.h" #include "ui/base/resource/resource_bundle.h" #if defined(OS_CHROMEOS) #include "chrome/browser/ui/webui/chromeos/ui_account_tweaks.h" #endif namespace { content::WebUIDataSource* CreatePluginsUIHTMLSource(Profile* profile) { content::WebUIDataSource* source = content::WebUIDataSource::Create(chrome::kChromeUIPluginsHost); source->AddLocalizedString("pluginsTitle", IDS_PLUGINS_TITLE); source->AddLocalizedString("pluginsDetailsModeLink", IDS_PLUGINS_DETAILS_MODE_LINK); source->AddLocalizedString("pluginsNoneInstalled", IDS_PLUGINS_NONE_INSTALLED); source->AddLocalizedString("pluginDisabled", IDS_PLUGINS_DISABLED_PLUGIN); source->AddLocalizedString("pluginDisabledByPolicy", IDS_PLUGINS_DISABLED_BY_POLICY_PLUGIN); source->AddLocalizedString("pluginEnabledByPolicy", IDS_PLUGINS_ENABLED_BY_POLICY_PLUGIN); source->AddLocalizedString("pluginGroupManagedByPolicy", IDS_PLUGINS_GROUP_MANAGED_BY_POLICY); source->AddLocalizedString("pluginDownload", IDS_PLUGINS_DOWNLOAD); source->AddLocalizedString("pluginName", IDS_PLUGINS_NAME); source->AddLocalizedString("pluginVersion", IDS_PLUGINS_VERSION); source->AddLocalizedString("pluginDescription", IDS_PLUGINS_DESCRIPTION); source->AddLocalizedString("pluginPath", IDS_PLUGINS_PATH); source->AddLocalizedString("pluginType", IDS_PLUGINS_TYPE); source->AddLocalizedString("pluginMimeTypes", IDS_PLUGINS_MIME_TYPES); source->AddLocalizedString("pluginMimeTypesMimeType", IDS_PLUGINS_MIME_TYPES_MIME_TYPE); source->AddLocalizedString("pluginMimeTypesDescription", IDS_PLUGINS_MIME_TYPES_DESCRIPTION); source->AddLocalizedString("pluginMimeTypesFileExtensions", IDS_PLUGINS_MIME_TYPES_FILE_EXTENSIONS); source->AddLocalizedString("disable", IDS_PLUGINS_DISABLE); source->AddLocalizedString("enable", IDS_PLUGINS_ENABLE); source->AddLocalizedString("alwaysAllowed", IDS_PLUGINS_ALWAYS_ALLOWED); source->AddLocalizedString("noPlugins", IDS_PLUGINS_NO_PLUGINS); source->SetJsonPath("strings.js"); source->AddResourcePath("plugins.js", IDR_PLUGINS_JS); source->SetDefaultResource(IDR_PLUGINS_HTML); #if defined(OS_CHROMEOS) chromeos::AddAccountUITweaksLocalizedValues(source, profile); #endif source->AddResourcePath("chrome/browser/ui/webui/plugins/plugins.mojom", IDR_PLUGINS_MOJO_JS); return source; } } // namespace PluginsUI::PluginsUI(content::WebUI* web_ui) : MojoWebUIController(web_ui) { // Set up the chrome://plugins/ source. Profile* profile = Profile::FromWebUI(web_ui); content::WebUIDataSource::Add(profile, CreatePluginsUIHTMLSource(profile)); } PluginsUI::~PluginsUI() {} // static base::RefCountedMemory* PluginsUI::GetFaviconResourceBytes( ui::ScaleFactor scale_factor) { return ResourceBundle::GetSharedInstance().LoadDataResourceBytesForScale( IDR_PLUGINS_FAVICON, scale_factor); } // static void PluginsUI::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kPluginsShowDetails, false); registry->RegisterDictionaryPref( prefs::kContentSettingsPluginWhitelist, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); } void PluginsUI::BindUIHandler( mojo::InterfaceRequest request) { plugins_handler_.reset(new PluginsHandler(web_ui(), std::move(request))); }