| Index: webkit/plugins/npapi/plugin_list.cc
|
| diff --git a/webkit/plugins/npapi/plugin_list.cc b/webkit/plugins/npapi/plugin_list.cc
|
| index 2d70c010359a1531dc9a82d6086e16ae20192c95..260fadfefed73b20df98fe8a0f16fbee98d9eee0 100644
|
| --- a/webkit/plugins/npapi/plugin_list.cc
|
| +++ b/webkit/plugins/npapi/plugin_list.cc
|
| @@ -53,99 +53,81 @@ bool AllowMimeTypeMismatch(const std::string& orig_mime_type,
|
| namespace webkit {
|
| namespace npapi {
|
|
|
| +// Note: If you change the plug-in definitions here, also update
|
| +// chrome/browser/resources/plugins_*.json correspondingly!
|
| +// In particular, the identifier and the update URLs need to be kept in sync.
|
| +
|
| // Some version ranges can be shared across operating systems. This should be
|
| // done where possible to avoid duplication.
|
| -// TODO(bauerb): The |requires_authorization| flag should be part of
|
| -// PluginGroupDefinition, not VersionRangeDefinition.
|
| -static const VersionRangeDefinition kAllVersionsInfobarVersionRange[] = {
|
| - { "", "", "", true }
|
| -};
|
| -
|
| -static const VersionRangeDefinition kAllVersionsNoInfobarVersionRange[] = {
|
| - { "", "", "", false }
|
| -};
|
|
|
| // This is up to date with
|
| // http://www.adobe.com/support/security/bulletins/apsb12-03.html
|
| // NOTE: We would like to go to the 4th component value but we cannot because
|
| // on some platforms, such as Linux, it is not available.
|
| static const VersionRangeDefinition kFlashVersionRange[] = {
|
| - { "", "", "11.1.102", false }
|
| + { "", "", "11.1.102" }
|
| };
|
| // This is up to date with
|
| // http://www.adobe.com/support/security/bulletins/apsb12-02.html
|
| static const VersionRangeDefinition kShockwaveVersionRange[] = {
|
| - { "", "", "11.6.4.634", true }
|
| + { "", "", "11.6.4.634" }
|
| };
|
| // This is up to date with
|
| // http://support.microsoft.com/kb/2668562
|
| // http://technet.microsoft.com/en-us/security/Bulletin/MS12-016
|
| static const VersionRangeDefinition kSilverlightVersionRange[] = {
|
| - { "0", "5", "4.1.10111.0", false },
|
| - { "5", "6", "", false },
|
| + { "0", "5", "4.1.10111.0" },
|
| + { "5", "6", "" },
|
| };
|
|
|
| // Similarly, try and share the group definition for plug-ins that are
|
| // very consistent across OS'es.
|
| #define kFlashDefinition { \
|
| "adobe-flash-player", "Flash", "Shockwave Flash", kFlashVersionRange,\
|
| - arraysize(kFlashVersionRange), "http://get.adobe.com/flashplayer/" }
|
| + arraysize(kFlashVersionRange) }
|
|
|
| #define kShockwaveDefinition { \
|
| "shockwave", PluginGroup::kShockwaveGroupName, "Shockwave for Director", \
|
| - kShockwaveVersionRange, arraysize(kShockwaveVersionRange), \
|
| - "http://www.adobe.com/shockwave/download/" }
|
| + kShockwaveVersionRange, arraysize(kShockwaveVersionRange) }
|
|
|
| #define kSilverlightDefinition { \
|
| "silverlight", PluginGroup::kSilverlightGroupName, "Silverlight", \
|
| - kSilverlightVersionRange, arraysize(kSilverlightVersionRange), \
|
| - "http://www.microsoft.com/getsilverlight/" }
|
| + kSilverlightVersionRange, arraysize(kSilverlightVersionRange) }
|
|
|
| #define kChromePdfDefinition { \
|
| - "google-chrome-pdf", "Chrome PDF Viewer", "Chrome PDF Viewer", \
|
| - kAllVersionsNoInfobarVersionRange, \
|
| - arraysize(kAllVersionsNoInfobarVersionRange), "" }
|
| + "google-chrome-pdf", "Chrome PDF Viewer", "Chrome PDF Viewer", NULL, 0 }
|
|
|
| #define kGoogleTalkDefinition { \
|
| - "google-talk", "Google Talk", "Google Talk", \
|
| - kAllVersionsNoInfobarVersionRange, \
|
| - arraysize(kAllVersionsNoInfobarVersionRange), ""}
|
| + "google-talk", "Google Talk", "Google Talk", NULL, 0 }
|
|
|
| #if defined(OS_MACOSX)
|
| // Plugin Groups for Mac.
|
| // Plugins are listed here as soon as vulnerabilities and solutions
|
| // (new versions) are published.
|
| static const VersionRangeDefinition kQuicktimeVersionRange[] = {
|
| - { "", "", "7.6.6", true }
|
| + { "", "", "7.6.6" }
|
| };
|
| static const VersionRangeDefinition kJavaVersionRange[] = {
|
| - { "0", "13.0", "12.8.0", true }, // Leopard
|
| - { "13.0", "14.0", "13.5.0", true }, // Snow Leopard
|
| - { "14.0", "", "14.0.3", true } // Lion
|
| + { "0", "13.0", "12.8.0" }, // Leopard
|
| + { "13.0", "14.0", "13.5.0" }, // Snow Leopard
|
| + { "14.0", "", "14.0.3" } // Lion
|
| };
|
| static const VersionRangeDefinition kFlip4MacVersionRange[] = {
|
| - { "", "", "2.2.1", true }
|
| -};
|
| -static const VersionRangeDefinition kDivXVersionRange[] = {
|
| - { "", "", "", true }
|
| + { "", "", "2.2.1" }
|
| };
|
| // Note: The Adobe Reader browser plug-in is not supported in Chrome.
|
| // Note: The Real Player plugin for mac doesn't expose a version at all.
|
| static const PluginGroupDefinition kGroupDefinitions[] = {
|
| kFlashDefinition,
|
| { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in",
|
| - kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange),
|
| - "http://www.apple.com/quicktime/download/" },
|
| + kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange) },
|
| { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
|
| - kJavaVersionRange, arraysize(kJavaVersionRange),
|
| - "http://support.apple.com/kb/HT1338" },
|
| + kJavaVersionRange, arraysize(kJavaVersionRange) },
|
| kSilverlightDefinition,
|
| { "flip4mac", "Flip4Mac", "Flip4Mac", kFlip4MacVersionRange,
|
| - arraysize(kFlip4MacVersionRange),
|
| - "http://www.telestream.net/flip4mac-wmv/overview.htm" },
|
| + arraysize(kFlip4MacVersionRange) },
|
| { "divx-player", "DivX Plus Web Player", "DivX Plus Web Player",
|
| - kDivXVersionRange, arraysize(kDivXVersionRange),
|
| - "http://www.divx.com/en/software/divx-plus/web-player" },
|
| + NULL, 0 },
|
| kShockwaveDefinition,
|
| kChromePdfDefinition,
|
| kGoogleTalkDefinition,
|
| @@ -155,54 +137,46 @@ static const PluginGroupDefinition kGroupDefinitions[] = {
|
| // TODO(panayiotis): We should group "RealJukebox NS Plugin" with the rest of
|
| // the RealPlayer files.
|
| static const VersionRangeDefinition kQuicktimeVersionRange[] = {
|
| - { "", "", "7.6.9", true }
|
| + { "", "", "7.6.9" }
|
| };
|
| static const VersionRangeDefinition kJavaVersionRange[] = {
|
| - { "0", "7", "6.0.310", true }, // "310" is not a typo.
|
| - { "7", "", "10.3", true } // JDK7u3 identifies itself as 10.3
|
| + { "0", "7", "6.0.310" }, // "310" is not a typo.
|
| + { "7", "", "10.3" } // JDK7u3 identifies itself as 10.3
|
| };
|
| // This is up to date with
|
| // http://www.adobe.com/support/security/bulletins/apsb12-01.html
|
| static const VersionRangeDefinition kAdobeReaderVersionRange[] = {
|
| - { "10", "11", "10.1.2", false },
|
| - { "0", "10", "9.5", false }
|
| + { "10", "11", "10.1.2" },
|
| + { "0", "10", "9.5" }
|
| };
|
| static const VersionRangeDefinition kDivXVersionRange[] = {
|
| - { "", "", "1.4.3.4", true }
|
| + { "", "", "1.4.3.4" }
|
| };
|
| // This is up to date with
|
| // http://service.real.com/realplayer/security/02062012_player/en/
|
| static const VersionRangeDefinition kRealPlayerVersionRange[] = {
|
| - { "", "", "15.0.2.71", true }
|
| + { "", "", "15.0.2.71" }
|
| };
|
| static const PluginGroupDefinition kGroupDefinitions[] = {
|
| kFlashDefinition,
|
| { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in",
|
| - kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange),
|
| - "http://www.apple.com/quicktime/download/" },
|
| + kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange) },
|
| { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
|
| - kJavaVersionRange, arraysize(kJavaVersionRange),
|
| - "http://www.java.com/download" },
|
| + kJavaVersionRange, arraysize(kJavaVersionRange) },
|
| { "adobe-reader", PluginGroup::kAdobeReaderGroupName, "Adobe Acrobat",
|
| - kAdobeReaderVersionRange, arraysize(kAdobeReaderVersionRange),
|
| - "http://get.adobe.com/reader/" },
|
| + kAdobeReaderVersionRange, arraysize(kAdobeReaderVersionRange) },
|
| kSilverlightDefinition,
|
| kShockwaveDefinition,
|
| { "divx-player", "DivX Player", "DivX Web Player", kDivXVersionRange,
|
| - arraysize(kDivXVersionRange),
|
| - "http://download.divx.com/divx/autoupdate/player/"
|
| - "DivXWebPlayerInstaller.exe" },
|
| + arraysize(kDivXVersionRange) },
|
| { "realplayer", PluginGroup::kRealPlayerGroupName, "RealPlayer",
|
| - kRealPlayerVersionRange, arraysize(kRealPlayerVersionRange),
|
| - "http://www.real.com/realplayer/download" },
|
| + kRealPlayerVersionRange, arraysize(kRealPlayerVersionRange) },
|
| // These are here for grouping, no vulnerabilities known.
|
| { "windows-media-player", PluginGroup::kWindowsMediaPlayerGroupName,
|
| - "Windows Media Player", kAllVersionsInfobarVersionRange,
|
| - arraysize(kAllVersionsInfobarVersionRange), "" },
|
| + "Windows Media Player", NULL, 0 },
|
| { "microsoft-office", "Microsoft Office", "Microsoft Office",
|
| - NULL, 0, "" },
|
| - { "nvidia-3d", "NVIDIA 3D", "NVIDIA 3D", kAllVersionsInfobarVersionRange,
|
| - arraysize(kAllVersionsInfobarVersionRange), "" },
|
| + NULL, 0 },
|
| + { "nvidia-3d", "NVIDIA 3D", "NVIDIA 3D", NULL, 0 },
|
| kChromePdfDefinition,
|
| kGoogleTalkDefinition,
|
| };
|
| @@ -217,18 +191,18 @@ static const PluginGroupDefinition kGroupDefinitions[] = {
|
|
|
| #else // Most importantly, covers desktop Linux.
|
| static const VersionRangeDefinition kJavaVersionRange[] = {
|
| - { "0", "1.7", "1.6.0.31", true },
|
| - { "1.7", "", "1.7.0.3", true }
|
| + { "0", "1.7", "1.6.0.31" },
|
| + { "1.7", "", "1.7.0.3" }
|
| };
|
|
|
| // Up to date with:
|
| // http://blog.fuseyism.com/index.php/2012/02/15/
|
| // security-icedtea6-1-8-13-1-9-13-1-10-6-and-icedtea-2-0-1-released/
|
| static const VersionRangeDefinition kRedhatIcedTeaVersionRange[] = {
|
| - { "0", "1.9", "1.8.13", true },
|
| - { "1.9", "1.10", "1.9.13", true },
|
| - { "1.10", "2", "1.10.6", true },
|
| - { "2", "", "2.0.1", true }
|
| + { "0", "1.9", "1.8.13" },
|
| + { "1.9", "1.10", "1.9.13" },
|
| + { "1.10", "2", "1.10.6" },
|
| + { "2", "", "2.0.1" }
|
| };
|
|
|
| static const PluginGroupDefinition kGroupDefinitions[] = {
|
| @@ -236,11 +210,9 @@ static const PluginGroupDefinition kGroupDefinitions[] = {
|
| // plug-in on the Linux 64-bit version of Chrome.
|
| kFlashDefinition,
|
| { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
|
| - kJavaVersionRange, arraysize(kJavaVersionRange),
|
| - "http://www.java.com/en/download/manual.jsp" },
|
| + kJavaVersionRange, arraysize(kJavaVersionRange) },
|
| { "redhat-icetea-java", "IcedTea", "IcedTea",
|
| - kRedhatIcedTeaVersionRange, arraysize(kRedhatIcedTeaVersionRange),
|
| - "http://www.linuxsecurity.com/content/section/3/170/" },
|
| + kRedhatIcedTeaVersionRange, arraysize(kRedhatIcedTeaVersionRange) },
|
| kChromePdfDefinition,
|
| kGoogleTalkDefinition,
|
| };
|
| @@ -440,7 +412,8 @@ void PluginList::LoadPluginsInternal(ScopedVector<PluginGroup>* plugin_groups) {
|
| for (std::vector<FilePath>::const_iterator it = plugin_paths.begin();
|
| it != plugin_paths.end();
|
| ++it) {
|
| - LoadPlugin(*it, plugin_groups);
|
| + WebPluginInfo plugin_info;
|
| + LoadPlugin(*it, plugin_groups, &plugin_info);
|
| }
|
| }
|
|
|
| @@ -459,35 +432,34 @@ void PluginList::LoadPlugins() {
|
| plugin_groups_.swap(new_plugin_groups);
|
| }
|
|
|
| -void PluginList::LoadPlugin(const FilePath& path,
|
| - ScopedVector<PluginGroup>* plugin_groups) {
|
| +bool PluginList::LoadPlugin(const FilePath& path,
|
| + ScopedVector<PluginGroup>* plugin_groups,
|
| + WebPluginInfo* plugin_info) {
|
| LOG_IF(ERROR, PluginList::DebugPluginLoading())
|
| << "Loading plugin " << path.value();
|
| - WebPluginInfo plugin_info;
|
| const PluginEntryPoints* entry_points;
|
|
|
| - if (!ReadPluginInfo(path, &plugin_info, &entry_points))
|
| - return;
|
| + if (!ReadPluginInfo(path, plugin_info, &entry_points))
|
| + return false;
|
|
|
| - if (!ShouldLoadPlugin(plugin_info, plugin_groups))
|
| - return;
|
| + if (!ShouldLoadPlugin(*plugin_info, plugin_groups))
|
| + return false;
|
|
|
| #if defined(OS_WIN) && !defined(NDEBUG)
|
| if (path.BaseName().value() != L"npspy.dll") // Make an exception for NPSPY
|
| #endif
|
| {
|
| - for (size_t i = 0; i < plugin_info.mime_types.size(); ++i) {
|
| + for (size_t i = 0; i < plugin_info->mime_types.size(); ++i) {
|
| // TODO: don't load global handlers for now.
|
| // WebKit hands to the Plugin before it tries
|
| // to handle mimeTypes on its own.
|
| - const std::string &mime_type = plugin_info.mime_types[i].mime_type;
|
| + const std::string &mime_type = plugin_info->mime_types[i].mime_type;
|
| if (mime_type == "*")
|
| - return;
|
| + return false;
|
| }
|
| }
|
| -
|
| - base::AutoLock lock(lock_);
|
| - AddToPluginGroups(plugin_info, plugin_groups);
|
| + AddToPluginGroups(*plugin_info, plugin_groups);
|
| + return true;
|
| }
|
|
|
| void PluginList::GetPluginPathsToLoad(std::vector<FilePath>* plugin_paths) {
|
|
|