| Index: content/common/plugin_list.cc | 
| diff --git a/content/common/plugin_list.cc b/content/common/plugin_list.cc | 
| index 80438818181f7f3577fb9f88ec91f6e736224a5d..eff0f66b26964b38d5dd6dec5e05f144b0150a5b 100644 | 
| --- a/content/common/plugin_list.cc | 
| +++ b/content/common/plugin_list.cc | 
| @@ -20,10 +20,6 @@ | 
| #include "net/base/mime_util.h" | 
| #include "url/gurl.h" | 
|  | 
| -#if defined(OS_WIN) | 
| -#include "content/common/plugin_constants_win.h" | 
| -#endif | 
| - | 
| namespace content { | 
|  | 
| namespace { | 
| @@ -37,42 +33,11 @@ PluginList* PluginList::Singleton() { | 
| return g_singleton.Pointer(); | 
| } | 
|  | 
| -// static | 
| -bool PluginList::DebugPluginLoading() { | 
| -  return base::CommandLine::ForCurrentProcess()->HasSwitch( | 
| -      switches::kDebugPluginLoading); | 
| -} | 
| - | 
| -void PluginList::DisablePluginsDiscovery() { | 
| -  plugins_discovery_disabled_ = true; | 
| -} | 
| - | 
| void PluginList::RefreshPlugins() { | 
| base::AutoLock lock(lock_); | 
| loading_state_ = LOADING_STATE_NEEDS_REFRESH; | 
| } | 
|  | 
| -void PluginList::AddExtraPluginPath(const base::FilePath& plugin_path) { | 
| -  // Chrome OS only loads plugins from /opt/google/chrome/plugins. | 
| -#if !defined(OS_CHROMEOS) | 
| -  base::AutoLock lock(lock_); | 
| -  extra_plugin_paths_.push_back(plugin_path); | 
| -#endif | 
| -} | 
| - | 
| -void PluginList::RemoveExtraPluginPath(const base::FilePath& plugin_path) { | 
| -  base::AutoLock lock(lock_); | 
| -  RemoveExtraPluginPathLocked(plugin_path); | 
| -} | 
| - | 
| -void PluginList::AddExtraPluginDir(const base::FilePath& plugin_dir) { | 
| -  // Chrome OS only loads plugins from /opt/google/chrome/plugins. | 
| -#if !defined(OS_CHROMEOS) | 
| -  base::AutoLock lock(lock_); | 
| -  extra_plugin_dirs_.push_back(plugin_dir); | 
| -#endif | 
| -} | 
| - | 
| void PluginList::RegisterInternalPlugin(const WebPluginInfo& info, | 
| bool add_at_beginning) { | 
| base::AutoLock lock(lock_); | 
| @@ -114,70 +79,18 @@ void PluginList::GetInternalPlugins( | 
|  | 
| bool PluginList::ReadPluginInfo(const base::FilePath& filename, | 
| WebPluginInfo* info) { | 
| -  { | 
| -    base::AutoLock lock(lock_); | 
| -    for (size_t i = 0; i < internal_plugins_.size(); ++i) { | 
| -      if (filename == internal_plugins_[i].path) { | 
| -        *info = internal_plugins_[i]; | 
| -        return true; | 
| -      } | 
| -    } | 
| -  } | 
| - | 
| -  return PluginList::ReadWebPluginInfo(filename, info); | 
| -} | 
| - | 
| -// static | 
| -bool PluginList::ParseMimeTypes( | 
| -    const std::string& mime_types_str, | 
| -    const std::string& file_extensions_str, | 
| -    const base::string16& mime_type_descriptions_str, | 
| -    std::vector<WebPluginMimeType>* parsed_mime_types) { | 
| -  std::vector<std::string> mime_types = base::SplitString( | 
| -      mime_types_str, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 
| -  std::vector<std::string> file_extensions = base::SplitString( | 
| -      file_extensions_str, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 
| -  std::vector<base::string16> descriptions = base::SplitString( | 
| -      mime_type_descriptions_str, base::string16(1, '|'), base::TRIM_WHITESPACE, | 
| -      base::SPLIT_WANT_ALL); | 
| - | 
| -  parsed_mime_types->clear(); | 
| - | 
| -  if (mime_types.empty()) | 
| -    return false; | 
| - | 
| -  for (size_t i = 0; i < mime_types.size(); ++i) { | 
| -    WebPluginMimeType mime_type; | 
| -    mime_type.mime_type = base::ToLowerASCII(mime_types[i]); | 
| -    if (file_extensions.size() > i) { | 
| -      mime_type.file_extensions = base::SplitString( | 
| -          file_extensions[i], ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 
| -    } | 
| - | 
| -    if (descriptions.size() > i) { | 
| -      mime_type.description = descriptions[i]; | 
| - | 
| -      // On Windows, the description likely has a list of file extensions | 
| -      // embedded in it (e.g. "SurfWriter file (*.swr)"). Remove an extension | 
| -      // list from the description if it is present. | 
| -      size_t ext = mime_type.description.find(base::ASCIIToUTF16("(*")); | 
| -      if (ext != base::string16::npos) { | 
| -        if (ext > 1 && mime_type.description[ext - 1] == ' ') | 
| -          ext--; | 
| - | 
| -        mime_type.description.erase(ext); | 
| -      } | 
| +  base::AutoLock lock(lock_); | 
| +  for (const auto& plugin : internal_plugins_) { | 
| +    if (filename == plugin.path) { | 
| +      *info = plugin; | 
| +      return true; | 
| } | 
| - | 
| -    parsed_mime_types->push_back(mime_type); | 
| } | 
| - | 
| -  return true; | 
| +  return false; | 
| } | 
|  | 
| PluginList::PluginList() | 
| -    : loading_state_(LOADING_STATE_NEEDS_REFRESH), | 
| -      plugins_discovery_disabled_(false) { | 
| +    : loading_state_(LOADING_STATE_NEEDS_REFRESH) { | 
| } | 
|  | 
| bool PluginList::PrepareForPluginLoading() { | 
| @@ -189,7 +102,7 @@ bool PluginList::PrepareForPluginLoading() { | 
| return true; | 
| } | 
|  | 
| -void PluginList::LoadPlugins(bool include_npapi) { | 
| +void PluginList::LoadPlugins() { | 
| if (!PrepareForPluginLoading()) | 
| return; | 
|  | 
| @@ -203,7 +116,7 @@ void PluginList::LoadPlugins(bool include_npapi) { | 
| will_load_callback.Run(); | 
|  | 
| std::vector<base::FilePath> plugin_paths; | 
| -  GetPluginPathsToLoad(&plugin_paths, include_npapi); | 
| +  GetPluginPathsToLoad(&plugin_paths); | 
|  | 
| for (std::vector<base::FilePath>::const_iterator it = plugin_paths.begin(); | 
| it != plugin_paths.end(); | 
| @@ -219,41 +132,30 @@ bool PluginList::LoadPluginIntoPluginList( | 
| const base::FilePath& path, | 
| std::vector<WebPluginInfo>* plugins, | 
| WebPluginInfo* plugin_info) { | 
| -  LOG_IF(ERROR, PluginList::DebugPluginLoading()) | 
| -      << "Loading plugin " << path.value(); | 
| if (!ReadPluginInfo(path, plugin_info)) | 
| return false; | 
|  | 
| -  if (!ShouldLoadPluginUsingPluginList(*plugin_info, plugins)) | 
| -    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) { | 
| -      // 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; | 
| -      if (mime_type == "*") | 
| -        return false; | 
| -    } | 
| +  // TODO(piman): Do we still need this after NPAPI removal? | 
| +  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; | 
| +    if (mime_type == "*") | 
| +      return false; | 
| } | 
| plugins->push_back(*plugin_info); | 
| return true; | 
| } | 
|  | 
| -void PluginList::GetPluginPathsToLoad(std::vector<base::FilePath>* plugin_paths, | 
| -                                      bool include_npapi) { | 
| +void PluginList::GetPluginPathsToLoad( | 
| +    std::vector<base::FilePath>* plugin_paths) { | 
| // Don't want to hold the lock while loading new plugins, so we don't block | 
| // other methods if they're called on other threads. | 
| std::vector<base::FilePath> extra_plugin_paths; | 
| -  std::vector<base::FilePath> extra_plugin_dirs; | 
| { | 
| base::AutoLock lock(lock_); | 
| extra_plugin_paths = extra_plugin_paths_; | 
| -    extra_plugin_dirs = extra_plugin_dirs_; | 
| } | 
|  | 
| for (size_t i = 0; i < extra_plugin_paths.size(); ++i) { | 
| @@ -264,22 +166,6 @@ void PluginList::GetPluginPathsToLoad(std::vector<base::FilePath>* plugin_paths, | 
| } | 
| plugin_paths->push_back(path); | 
| } | 
| - | 
| -  if (include_npapi) { | 
| -    // A bit confusingly, this function is used to load Pepper plugins as well. | 
| -    // Those are all internal plugins so we have to use extra_plugin_paths. | 
| -    for (size_t i = 0; i < extra_plugin_dirs.size(); ++i) | 
| -      GetPluginsInDir(extra_plugin_dirs[i], plugin_paths); | 
| - | 
| -    std::vector<base::FilePath> directories_to_scan; | 
| -    GetPluginDirectories(&directories_to_scan); | 
| -    for (size_t i = 0; i < directories_to_scan.size(); ++i) | 
| -      GetPluginsInDir(directories_to_scan[i], plugin_paths); | 
| - | 
| -#if defined(OS_WIN) | 
| -    GetPluginPathsFromRegistry(plugin_paths); | 
| -#endif | 
| -  } | 
| } | 
|  | 
| void PluginList::SetPlugins(const std::vector<WebPluginInfo>& plugins) { | 
| @@ -298,9 +184,8 @@ void PluginList::set_will_load_plugins_callback(const base::Closure& callback) { | 
| will_load_plugins_callback_ = callback; | 
| } | 
|  | 
| -void PluginList::GetPlugins(std::vector<WebPluginInfo>* plugins, | 
| -                            bool include_npapi) { | 
| -  LoadPlugins(include_npapi); | 
| +void PluginList::GetPlugins(std::vector<WebPluginInfo>* plugins) { | 
| +  LoadPlugins(); | 
| base::AutoLock lock(lock_); | 
| plugins->insert(plugins->end(), plugins_list_.begin(), plugins_list_.end()); | 
| } | 
| @@ -317,14 +202,13 @@ void PluginList::GetPluginInfoArray( | 
| const std::string& mime_type, | 
| bool allow_wildcard, | 
| bool* use_stale, | 
| -    bool include_npapi, | 
| std::vector<WebPluginInfo>* info, | 
| std::vector<std::string>* actual_mime_types) { | 
| DCHECK(mime_type == base::ToLowerASCII(mime_type)); | 
| DCHECK(info); | 
|  | 
| if (!use_stale) | 
| -    LoadPlugins(include_npapi); | 
| +    LoadPlugins(); | 
| base::AutoLock lock(lock_); | 
| if (use_stale) | 
| *use_stale = (loading_state_ != LOADING_STATE_UP_TO_DATE); | 
|  |