blob: c6d0f1867a41b3e0a05effaed49c7560b927d049 [file] [log] [blame]
// 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 <stddef.h>
#include <algorithm>
#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<mojom::PluginsPageHandler> request) {
plugins_handler_.reset(new PluginsPageHandler(web_ui(), std::move(request)));
}