| Index: webkit/plugins/npapi/plugin_list.cc
|
| diff --git a/webkit/plugins/npapi/plugin_list.cc b/webkit/plugins/npapi/plugin_list.cc
|
| index db82d3591c88d1fa56eb67f885e558f7117f2476..b2e236ad3a8a615211473e21e787c889efd6a4fd 100644
|
| --- a/webkit/plugins/npapi/plugin_list.cc
|
| +++ b/webkit/plugins/npapi/plugin_list.cc
|
| @@ -216,40 +216,40 @@ void PluginList::AddExtraPluginDir(const FilePath& plugin_dir) {
|
| #endif
|
| }
|
|
|
| -void PluginList::RegisterInternalPlugin(const PluginVersionInfo& info) {
|
| - AutoLock lock(lock_);
|
| - internal_plugins_.push_back(info);
|
| -}
|
| +void PluginList::RegisterInternalPlugin(const WebPluginInfo& info) {
|
| + PluginEntryPoints entry_points = {0};
|
| + InternalPlugin plugin = { info, entry_points };
|
|
|
| -void PluginList::RegisterInternalPlugin(const FilePath& path) {
|
| - webkit::npapi::PluginVersionInfo info;
|
| - info.path = path;
|
| - memset(&info.entry_points, 0, sizeof(info.entry_points));
|
| - RegisterInternalPlugin(info);
|
| + AutoLock lock(lock_);
|
| + internal_plugins_.push_back(plugin);
|
| }
|
|
|
| void PluginList::RegisterInternalPlugin(const FilePath& filename,
|
| const std::string& name,
|
| const std::string& description,
|
| - const std::string& mime_type,
|
| + const std::string& mime_type_str,
|
| const PluginEntryPoints& entry_points) {
|
| - webkit::npapi::PluginVersionInfo info = {
|
| - filename,
|
| - ASCIIToWide(name),
|
| - ASCIIToWide(description),
|
| - L"1",
|
| - ASCIIToWide(mime_type),
|
| - L"",
|
| - L"",
|
| - entry_points
|
| - };
|
| - RegisterInternalPlugin(info);
|
| + InternalPlugin plugin;
|
| + plugin.info.path = filename;
|
| + plugin.info.name = ASCIIToUTF16(name);
|
| + plugin.info.version = ASCIIToUTF16("1");
|
| + plugin.info.desc = ASCIIToUTF16(description);
|
| + plugin.info.enabled = true;
|
| +
|
| + WebPluginMimeType mime_type;
|
| + mime_type.mime_type = mime_type_str;
|
| + plugin.info.mime_types.push_back(mime_type);
|
| +
|
| + plugin.entry_points = entry_points;
|
| +
|
| + AutoLock lock(lock_);
|
| + internal_plugins_.push_back(plugin);
|
| }
|
|
|
| void PluginList::UnregisterInternalPlugin(const FilePath& path) {
|
| AutoLock lock(lock_);
|
| for (size_t i = 0; i < internal_plugins_.size(); i++) {
|
| - if (internal_plugins_[i].path == path) {
|
| + if (internal_plugins_[i].info.path == path) {
|
| internal_plugins_.erase(internal_plugins_.begin() + i);
|
| return;
|
| }
|
| @@ -263,9 +263,10 @@ bool PluginList::ReadPluginInfo(const FilePath& filename,
|
| {
|
| AutoLock lock(lock_);
|
| for (size_t i = 0; i < internal_plugins_.size(); ++i) {
|
| - if (filename == internal_plugins_[i].path) {
|
| + if (filename == internal_plugins_[i].info.path) {
|
| *entry_points = &internal_plugins_[i].entry_points;
|
| - return CreateWebPluginInfo(internal_plugins_[i], info);
|
| + *info = internal_plugins_[i].info;
|
| + return true;
|
| }
|
| }
|
| }
|
| @@ -276,27 +277,22 @@ bool PluginList::ReadPluginInfo(const FilePath& filename,
|
| return PluginLib::ReadWebPluginInfo(filename, info);
|
| }
|
|
|
| -bool PluginList::CreateWebPluginInfo(const PluginVersionInfo& pvi,
|
| - WebPluginInfo* info) {
|
| +// static
|
| +bool PluginList::ParseMimeTypes(
|
| + const std::string& mime_types_str,
|
| + const std::string& file_extensions_str,
|
| + const string16& mime_type_descriptions_str,
|
| + std::vector<WebPluginMimeType>* parsed_mime_types) {
|
| std::vector<std::string> mime_types, file_extensions;
|
| std::vector<string16> descriptions;
|
| - base::SplitString(WideToUTF8(pvi.mime_types), '|', &mime_types);
|
| - base::SplitString(WideToUTF8(pvi.file_extensions), '|', &file_extensions);
|
| - base::SplitString(WideToUTF16(pvi.type_descriptions), '|', &descriptions);
|
| + base::SplitString(mime_types_str, '|', &mime_types);
|
| + base::SplitString(file_extensions_str, '|', &file_extensions);
|
| + base::SplitString(mime_type_descriptions_str, '|', &descriptions);
|
|
|
| - info->mime_types.clear();
|
| + parsed_mime_types->clear();
|
|
|
| - if (mime_types.empty()) {
|
| - LOG_IF(ERROR, PluginList::DebugPluginLoading())
|
| - << "Plugin " << pvi.product_name << " has no MIME types, skipping";
|
| + if (mime_types.empty())
|
| return false;
|
| - }
|
| -
|
| - info->name = WideToUTF16(pvi.product_name);
|
| - info->desc = WideToUTF16(pvi.file_description);
|
| - info->version = WideToUTF16(pvi.file_version);
|
| - info->path = pvi.path;
|
| - info->enabled = true;
|
|
|
| for (size_t i = 0; i < mime_types.size(); ++i) {
|
| WebPluginMimeType mime_type;
|
| @@ -312,14 +308,14 @@ bool PluginList::CreateWebPluginInfo(const PluginVersionInfo& pvi,
|
| // list from the description if it is present.
|
| size_t ext = mime_type.description.find(ASCIIToUTF16("(*"));
|
| if (ext != string16::npos) {
|
| - if (ext > 1 && mime_type.description[ext -1] == ' ')
|
| + if (ext > 1 && mime_type.description[ext - 1] == ' ')
|
| ext--;
|
|
|
| mime_type.description.erase(ext);
|
| }
|
| }
|
|
|
| - info->mime_types.push_back(mime_type);
|
| + parsed_mime_types->push_back(mime_type);
|
| }
|
|
|
| return true;
|
| @@ -348,7 +344,7 @@ void PluginList::LoadPlugins(bool refresh) {
|
| // other methods if they're called on other threads.
|
| std::vector<FilePath> extra_plugin_paths;
|
| std::vector<FilePath> extra_plugin_dirs;
|
| - std::vector<PluginVersionInfo> internal_plugins;
|
| + std::vector<InternalPlugin> internal_plugins;
|
| {
|
| AutoLock lock(lock_);
|
| if (plugins_loaded_ && !refresh && !plugins_need_refresh_)
|
| @@ -372,9 +368,9 @@ void PluginList::LoadPlugins(bool refresh) {
|
| // "discovered" plugin want to handle the same type, the internal plugin
|
| // will have precedence.
|
| for (size_t i = 0; i < internal_plugins.size(); ++i) {
|
| - if (internal_plugins[i].path.value() == kDefaultPluginLibraryName)
|
| + if (internal_plugins[i].info.path.value() == kDefaultPluginLibraryName)
|
| continue;
|
| - LoadPlugin(internal_plugins[i].path, &new_plugins);
|
| + LoadPlugin(internal_plugins[i].info.path, &new_plugins);
|
| }
|
|
|
| for (size_t i = 0; i < extra_plugin_paths.size(); ++i) {
|
|
|