| Index: chrome/browser/dom_ui/plugins_ui.cc
|
| ===================================================================
|
| --- chrome/browser/dom_ui/plugins_ui.cc (revision 46737)
|
| +++ chrome/browser/dom_ui/plugins_ui.cc (working copy)
|
| @@ -18,6 +18,7 @@
|
| #include "chrome/browser/browser_window.h"
|
| #include "chrome/browser/chrome_thread.h"
|
| #include "chrome/browser/dom_ui/chrome_url_data_manager.h"
|
| +#include "chrome/browser/plugin_updater.h"
|
| #include "chrome/browser/pref_service.h"
|
| #include "chrome/browser/profile.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -70,6 +71,12 @@
|
| l10n_util::GetString(IDS_PLUGINS_NONE_INSTALLED));
|
| localized_strings.SetString(L"pluginDisabled",
|
| l10n_util::GetString(IDS_PLUGINS_DISABLED_PLUGIN));
|
| + localized_strings.SetString(L"pluginDownload",
|
| + l10n_util::GetString(IDS_PLUGINS_DOWNLOAD));
|
| + localized_strings.SetString(L"pluginName",
|
| + l10n_util::GetString(IDS_PLUGINS_NAME));
|
| + localized_strings.SetString(L"pluginPriority",
|
| + l10n_util::GetString(IDS_PLUGINS_PRIORITY));
|
| localized_strings.SetString(L"pluginVersion",
|
| l10n_util::GetString(IDS_PLUGINS_VERSION));
|
| localized_strings.SetString(L"pluginDescription",
|
| @@ -136,10 +143,6 @@
|
| void HandleShowTermsOfServiceMessage(const Value* value);
|
|
|
| private:
|
| - // Creates a dictionary containing all the information about the given plugin;
|
| - // this is put into the list to "return" for the "requestPluginsData" message.
|
| - DictionaryValue* CreatePluginDetailValue(const WebPluginInfo& plugin);
|
| -
|
| // Creates a dictionary containing the important parts of the information
|
| // about the given plugin; this is put into a list and saved in prefs.
|
| DictionaryValue* CreatePluginSummaryValue(const WebPluginInfo& plugin);
|
| @@ -163,19 +166,9 @@
|
| void PluginsDOMHandler::HandleRequestPluginsData(const Value* value) {
|
| DictionaryValue* results = new DictionaryValue();
|
|
|
| - // Add plugins to the results structure.
|
| - ListValue* plugins_list = new ListValue();
|
| + // Grouped plugins.
|
| + results->Set(L"plugins", PluginUpdater::GetInstance()->GetPluginGroupsData());
|
|
|
| - std::vector<WebPluginInfo> plugins;
|
| - NPAPI::PluginList::Singleton()->GetPlugins(false, &plugins);
|
| -
|
| - for (std::vector<WebPluginInfo>::const_iterator it = plugins.begin();
|
| - it != plugins.end();
|
| - ++it) {
|
| - plugins_list->Append(CreatePluginDetailValue(*it));
|
| - }
|
| - results->Set(L"plugins", plugins_list);
|
| -
|
| dom_ui_->CallJavascriptFunction(L"returnPluginsData", *results);
|
| }
|
|
|
| @@ -186,26 +179,35 @@
|
| return;
|
|
|
| const ListValue* list = static_cast<const ListValue*>(value);
|
| - if (list->GetSize() != 2)
|
| + if (list->GetSize() != 3)
|
| return;
|
|
|
| - FilePath::StringType plugin_path;
|
| std::string enable_str;
|
| - if (!list->GetString(0, &plugin_path) ||
|
| - !list->GetString(1, &enable_str))
|
| + std::string is_group_str;
|
| + if (!list->GetString(1, &enable_str) ||
|
| + !list->GetString(2, &is_group_str))
|
| return;
|
|
|
| - if (enable_str == "true")
|
| - NPAPI::PluginList::Singleton()->EnablePlugin(FilePath(plugin_path));
|
| - else
|
| - NPAPI::PluginList::Singleton()->DisablePlugin(FilePath(plugin_path));
|
| + if (is_group_str == "true") {
|
| + std::wstring group_name;
|
| + if (!list->GetString(0, &group_name))
|
| + return;
|
|
|
| - // TODO(viettrungluu): It's morally wrong to do this here (it should be done
|
| - // by the plugins service), and we might also want to ensure that the plugins
|
| + PluginUpdater::GetInstance()->EnablePluginGroup(enable_str == "true",
|
| + WideToUTF16(group_name));
|
| + } else {
|
| + FilePath::StringType file_path;
|
| + if (!list->GetString(0, &file_path))
|
| + return;
|
| +
|
| + PluginUpdater::GetInstance()->EnablePluginFile(enable_str == "true",
|
| + file_path);
|
| + }
|
| +
|
| + // TODO(viettrungluu): We might also want to ensure that the plugins
|
| // list is always written to prefs even when the user hasn't disabled a
|
| - // plugin. This will require refactoring the plugin list and service.
|
| - // <http://crbug.com/39101>
|
| - UpdatePreferences();
|
| + // plugin. <http://crbug.com/39101>
|
| + PluginUpdater::GetInstance()->UpdatePreferences(dom_ui_->GetProfile());
|
| }
|
|
|
| void PluginsDOMHandler::HandleShowTermsOfServiceMessage(const Value* value) {
|
| @@ -216,72 +218,6 @@
|
| browser->window()->Show();
|
| }
|
|
|
| -DictionaryValue* PluginsDOMHandler::CreatePluginDetailValue(
|
| - const WebPluginInfo& plugin) {
|
| - DictionaryValue* plugin_data = new DictionaryValue();
|
| - plugin_data->SetString(L"path", plugin.path.value());
|
| - plugin_data->SetString(L"name", plugin.name);
|
| - plugin_data->SetString(L"version", plugin.version);
|
| - plugin_data->SetString(L"description", plugin.desc);
|
| - plugin_data->SetBoolean(L"enabled", plugin.enabled);
|
| -
|
| - ListValue* mime_types = new ListValue();
|
| - for (std::vector<WebPluginMimeType>::const_iterator type_it =
|
| - plugin.mime_types.begin();
|
| - type_it != plugin.mime_types.end();
|
| - ++type_it) {
|
| - DictionaryValue* mime_type = new DictionaryValue();
|
| - mime_type->SetString(L"mimeType", type_it->mime_type);
|
| - mime_type->SetString(L"description", type_it->description);
|
| -
|
| - ListValue* file_extensions = new ListValue();
|
| - for (std::vector<std::string>::const_iterator ext_it =
|
| - type_it->file_extensions.begin();
|
| - ext_it != type_it->file_extensions.end();
|
| - ++ext_it) {
|
| - file_extensions->Append(new StringValue(*ext_it));
|
| - }
|
| - mime_type->Set(L"fileExtensions", file_extensions);
|
| -
|
| - mime_types->Append(mime_type);
|
| - }
|
| - plugin_data->Set(L"mimeTypes", mime_types);
|
| -
|
| - return plugin_data;
|
| -}
|
| -
|
| -DictionaryValue* PluginsDOMHandler::CreatePluginSummaryValue(
|
| - const WebPluginInfo& plugin) {
|
| - DictionaryValue* plugin_data = new DictionaryValue();
|
| - plugin_data->SetString(L"path", plugin.path.value());
|
| - plugin_data->SetString(L"name", plugin.name);
|
| - plugin_data->SetString(L"version", plugin.version);
|
| - plugin_data->SetBoolean(L"enabled", plugin.enabled);
|
| - return plugin_data;
|
| -}
|
| -
|
| -// TODO(viettrungluu): move this (and the registration of the prefs into the
|
| -// plugins service.
|
| -void PluginsDOMHandler::UpdatePreferences() {
|
| - PrefService* prefs = dom_ui_->GetProfile()->GetPrefs();
|
| -
|
| - FilePath internal_dir;
|
| - if (PathService::Get(chrome::DIR_INTERNAL_PLUGINS, &internal_dir))
|
| - prefs->SetFilePath(prefs::kPluginsLastInternalDirectory, internal_dir);
|
| -
|
| - ListValue* plugins_list = prefs->GetMutableList(prefs::kPluginsPluginsList);
|
| - plugins_list->Clear();
|
| -
|
| - std::vector<WebPluginInfo> plugins;
|
| - NPAPI::PluginList::Singleton()->GetPlugins(false, &plugins);
|
| -
|
| - for (std::vector<WebPluginInfo>::const_iterator it = plugins.begin();
|
| - it != plugins.end();
|
| - ++it) {
|
| - plugins_list->Append(CreatePluginSummaryValue(*it));
|
| - }
|
| -}
|
| -
|
| } // namespace
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
|
|