Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(127)

Side by Side Diff: webkit/plugins/npapi/plugin_list.cc

Issue 9874001: revert 128949 (and dependent 129252) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « webkit/plugins/npapi/plugin_list.h ('k') | webkit/plugins/npapi/plugin_list_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "webkit/plugins/npapi/plugin_list.h" 5 #include "webkit/plugins/npapi/plugin_list.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 << actual_mime_type << " (expected " << orig_mime_type 46 << actual_mime_type << " (expected " << orig_mime_type
47 << ")"; 47 << ")";
48 return allow; 48 return allow;
49 } 49 }
50 50
51 } 51 }
52 52
53 namespace webkit { 53 namespace webkit {
54 namespace npapi { 54 namespace npapi {
55 55
56 // Note: If you change the plug-in definitions here, also update
57 // chrome/browser/resources/plugins_*.json correspondingly!
58 // In particular, the identifier and the update URLs need to be kept in sync.
59
60 // Some version ranges can be shared across operating systems. This should be 56 // Some version ranges can be shared across operating systems. This should be
61 // done where possible to avoid duplication. 57 // done where possible to avoid duplication.
58 // TODO(bauerb): The |requires_authorization| flag should be part of
59 // PluginGroupDefinition, not VersionRangeDefinition.
60 static const VersionRangeDefinition kAllVersionsInfobarVersionRange[] = {
61 { "", "", "", true }
62 };
63
64 static const VersionRangeDefinition kAllVersionsNoInfobarVersionRange[] = {
65 { "", "", "", false }
66 };
62 67
63 // This is up to date with 68 // This is up to date with
64 // http://www.adobe.com/support/security/bulletins/apsb12-03.html 69 // http://www.adobe.com/support/security/bulletins/apsb12-03.html
65 // NOTE: We would like to go to the 4th component value but we cannot because 70 // NOTE: We would like to go to the 4th component value but we cannot because
66 // on some platforms, such as Linux, it is not available. 71 // on some platforms, such as Linux, it is not available.
67 static const VersionRangeDefinition kFlashVersionRange[] = { 72 static const VersionRangeDefinition kFlashVersionRange[] = {
68 { "", "", "11.1.102" } 73 { "", "", "11.1.102", false }
69 }; 74 };
70 // This is up to date with 75 // This is up to date with
71 // http://www.adobe.com/support/security/bulletins/apsb12-02.html 76 // http://www.adobe.com/support/security/bulletins/apsb12-02.html
72 static const VersionRangeDefinition kShockwaveVersionRange[] = { 77 static const VersionRangeDefinition kShockwaveVersionRange[] = {
73 { "", "", "11.6.4.634" } 78 { "", "", "11.6.4.634", true }
74 }; 79 };
75 // This is up to date with 80 // This is up to date with
76 // http://support.microsoft.com/kb/2668562 81 // http://support.microsoft.com/kb/2668562
77 // http://technet.microsoft.com/en-us/security/Bulletin/MS12-016 82 // http://technet.microsoft.com/en-us/security/Bulletin/MS12-016
78 static const VersionRangeDefinition kSilverlightVersionRange[] = { 83 static const VersionRangeDefinition kSilverlightVersionRange[] = {
79 { "0", "5", "4.1.10111.0" }, 84 { "0", "5", "4.1.10111.0", false },
80 { "5", "6", "" }, 85 { "5", "6", "", false },
81 }; 86 };
82 87
83 // Similarly, try and share the group definition for plug-ins that are 88 // Similarly, try and share the group definition for plug-ins that are
84 // very consistent across OS'es. 89 // very consistent across OS'es.
85 #define kFlashDefinition { \ 90 #define kFlashDefinition { \
86 "adobe-flash-player", "Flash", "Shockwave Flash", kFlashVersionRange,\ 91 "adobe-flash-player", "Flash", "Shockwave Flash", kFlashVersionRange,\
87 arraysize(kFlashVersionRange) } 92 arraysize(kFlashVersionRange), "http://get.adobe.com/flashplayer/" }
88 93
89 #define kShockwaveDefinition { \ 94 #define kShockwaveDefinition { \
90 "shockwave", PluginGroup::kShockwaveGroupName, "Shockwave for Director", \ 95 "shockwave", PluginGroup::kShockwaveGroupName, "Shockwave for Director", \
91 kShockwaveVersionRange, arraysize(kShockwaveVersionRange) } 96 kShockwaveVersionRange, arraysize(kShockwaveVersionRange), \
97 "http://www.adobe.com/shockwave/download/" }
92 98
93 #define kSilverlightDefinition { \ 99 #define kSilverlightDefinition { \
94 "silverlight", PluginGroup::kSilverlightGroupName, "Silverlight", \ 100 "silverlight", PluginGroup::kSilverlightGroupName, "Silverlight", \
95 kSilverlightVersionRange, arraysize(kSilverlightVersionRange) } 101 kSilverlightVersionRange, arraysize(kSilverlightVersionRange), \
102 "http://www.microsoft.com/getsilverlight/" }
96 103
97 #define kChromePdfDefinition { \ 104 #define kChromePdfDefinition { \
98 "google-chrome-pdf", "Chrome PDF Viewer", "Chrome PDF Viewer", NULL, 0 } 105 "google-chrome-pdf", "Chrome PDF Viewer", "Chrome PDF Viewer", \
106 kAllVersionsNoInfobarVersionRange, \
107 arraysize(kAllVersionsNoInfobarVersionRange), "" }
99 108
100 #define kGoogleTalkDefinition { \ 109 #define kGoogleTalkDefinition { \
101 "google-talk", "Google Talk", "Google Talk", NULL, 0 } 110 "google-talk", "Google Talk", "Google Talk", \
111 kAllVersionsNoInfobarVersionRange, \
112 arraysize(kAllVersionsNoInfobarVersionRange), ""}
102 113
103 #if defined(OS_MACOSX) 114 #if defined(OS_MACOSX)
104 // Plugin Groups for Mac. 115 // Plugin Groups for Mac.
105 // Plugins are listed here as soon as vulnerabilities and solutions 116 // Plugins are listed here as soon as vulnerabilities and solutions
106 // (new versions) are published. 117 // (new versions) are published.
107 static const VersionRangeDefinition kQuicktimeVersionRange[] = { 118 static const VersionRangeDefinition kQuicktimeVersionRange[] = {
108 { "", "", "7.6.6" } 119 { "", "", "7.6.6", true }
109 }; 120 };
110 static const VersionRangeDefinition kJavaVersionRange[] = { 121 static const VersionRangeDefinition kJavaVersionRange[] = {
111 { "0", "13.0", "12.8.0" }, // Leopard 122 { "0", "13.0", "12.8.0", true }, // Leopard
112 { "13.0", "14.0", "13.5.0" }, // Snow Leopard 123 { "13.0", "14.0", "13.5.0", true }, // Snow Leopard
113 { "14.0", "", "14.0.3" } // Lion 124 { "14.0", "", "14.0.3", true } // Lion
114 }; 125 };
115 static const VersionRangeDefinition kFlip4MacVersionRange[] = { 126 static const VersionRangeDefinition kFlip4MacVersionRange[] = {
116 { "", "", "2.2.1" } 127 { "", "", "2.2.1", true }
128 };
129 static const VersionRangeDefinition kDivXVersionRange[] = {
130 { "", "", "", true }
117 }; 131 };
118 // Note: The Adobe Reader browser plug-in is not supported in Chrome. 132 // Note: The Adobe Reader browser plug-in is not supported in Chrome.
119 // Note: The Real Player plugin for mac doesn't expose a version at all. 133 // Note: The Real Player plugin for mac doesn't expose a version at all.
120 static const PluginGroupDefinition kGroupDefinitions[] = { 134 static const PluginGroupDefinition kGroupDefinitions[] = {
121 kFlashDefinition, 135 kFlashDefinition,
122 { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in", 136 { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in",
123 kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange) }, 137 kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange),
138 "http://www.apple.com/quicktime/download/" },
124 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java", 139 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
125 kJavaVersionRange, arraysize(kJavaVersionRange) }, 140 kJavaVersionRange, arraysize(kJavaVersionRange),
141 "http://support.apple.com/kb/HT1338" },
126 kSilverlightDefinition, 142 kSilverlightDefinition,
127 { "flip4mac", "Flip4Mac", "Flip4Mac", kFlip4MacVersionRange, 143 { "flip4mac", "Flip4Mac", "Flip4Mac", kFlip4MacVersionRange,
128 arraysize(kFlip4MacVersionRange) }, 144 arraysize(kFlip4MacVersionRange),
145 "http://www.telestream.net/flip4mac-wmv/overview.htm" },
129 { "divx-player", "DivX Plus Web Player", "DivX Plus Web Player", 146 { "divx-player", "DivX Plus Web Player", "DivX Plus Web Player",
130 NULL, 0 }, 147 kDivXVersionRange, arraysize(kDivXVersionRange),
148 "http://www.divx.com/en/software/divx-plus/web-player" },
131 kShockwaveDefinition, 149 kShockwaveDefinition,
132 kChromePdfDefinition, 150 kChromePdfDefinition,
133 kGoogleTalkDefinition, 151 kGoogleTalkDefinition,
134 }; 152 };
135 153
136 #elif defined(OS_WIN) 154 #elif defined(OS_WIN)
137 // TODO(panayiotis): We should group "RealJukebox NS Plugin" with the rest of 155 // TODO(panayiotis): We should group "RealJukebox NS Plugin" with the rest of
138 // the RealPlayer files. 156 // the RealPlayer files.
139 static const VersionRangeDefinition kQuicktimeVersionRange[] = { 157 static const VersionRangeDefinition kQuicktimeVersionRange[] = {
140 { "", "", "7.6.9" } 158 { "", "", "7.6.9", true }
141 }; 159 };
142 static const VersionRangeDefinition kJavaVersionRange[] = { 160 static const VersionRangeDefinition kJavaVersionRange[] = {
143 { "0", "7", "6.0.310" }, // "310" is not a typo. 161 { "0", "7", "6.0.310", true }, // "310" is not a typo.
144 { "7", "", "10.3" } // JDK7u3 identifies itself as 10.3 162 { "7", "", "10.3", true } // JDK7u3 identifies itself as 10.3
145 }; 163 };
146 // This is up to date with 164 // This is up to date with
147 // http://www.adobe.com/support/security/bulletins/apsb12-01.html 165 // http://www.adobe.com/support/security/bulletins/apsb12-01.html
148 static const VersionRangeDefinition kAdobeReaderVersionRange[] = { 166 static const VersionRangeDefinition kAdobeReaderVersionRange[] = {
149 { "10", "11", "10.1.2" }, 167 { "10", "11", "10.1.2", false },
150 { "0", "10", "9.5" } 168 { "0", "10", "9.5", false }
151 }; 169 };
152 static const VersionRangeDefinition kDivXVersionRange[] = { 170 static const VersionRangeDefinition kDivXVersionRange[] = {
153 { "", "", "1.4.3.4" } 171 { "", "", "1.4.3.4", true }
154 }; 172 };
155 // This is up to date with 173 // This is up to date with
156 // http://service.real.com/realplayer/security/02062012_player/en/ 174 // http://service.real.com/realplayer/security/02062012_player/en/
157 static const VersionRangeDefinition kRealPlayerVersionRange[] = { 175 static const VersionRangeDefinition kRealPlayerVersionRange[] = {
158 { "", "", "15.0.2.71" } 176 { "", "", "15.0.2.71", true }
159 }; 177 };
160 static const PluginGroupDefinition kGroupDefinitions[] = { 178 static const PluginGroupDefinition kGroupDefinitions[] = {
161 kFlashDefinition, 179 kFlashDefinition,
162 { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in", 180 { "apple-quicktime", PluginGroup::kQuickTimeGroupName, "QuickTime Plug-in",
163 kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange) }, 181 kQuicktimeVersionRange, arraysize(kQuicktimeVersionRange),
182 "http://www.apple.com/quicktime/download/" },
164 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java", 183 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
165 kJavaVersionRange, arraysize(kJavaVersionRange) }, 184 kJavaVersionRange, arraysize(kJavaVersionRange),
185 "http://www.java.com/download" },
166 { "adobe-reader", PluginGroup::kAdobeReaderGroupName, "Adobe Acrobat", 186 { "adobe-reader", PluginGroup::kAdobeReaderGroupName, "Adobe Acrobat",
167 kAdobeReaderVersionRange, arraysize(kAdobeReaderVersionRange) }, 187 kAdobeReaderVersionRange, arraysize(kAdobeReaderVersionRange),
188 "http://get.adobe.com/reader/" },
168 kSilverlightDefinition, 189 kSilverlightDefinition,
169 kShockwaveDefinition, 190 kShockwaveDefinition,
170 { "divx-player", "DivX Player", "DivX Web Player", kDivXVersionRange, 191 { "divx-player", "DivX Player", "DivX Web Player", kDivXVersionRange,
171 arraysize(kDivXVersionRange) }, 192 arraysize(kDivXVersionRange),
193 "http://download.divx.com/divx/autoupdate/player/"
194 "DivXWebPlayerInstaller.exe" },
172 { "realplayer", PluginGroup::kRealPlayerGroupName, "RealPlayer", 195 { "realplayer", PluginGroup::kRealPlayerGroupName, "RealPlayer",
173 kRealPlayerVersionRange, arraysize(kRealPlayerVersionRange) }, 196 kRealPlayerVersionRange, arraysize(kRealPlayerVersionRange),
197 "http://www.real.com/realplayer/download" },
174 // These are here for grouping, no vulnerabilities known. 198 // These are here for grouping, no vulnerabilities known.
175 { "windows-media-player", PluginGroup::kWindowsMediaPlayerGroupName, 199 { "windows-media-player", PluginGroup::kWindowsMediaPlayerGroupName,
176 "Windows Media Player", NULL, 0 }, 200 "Windows Media Player", kAllVersionsInfobarVersionRange,
201 arraysize(kAllVersionsInfobarVersionRange), "" },
177 { "microsoft-office", "Microsoft Office", "Microsoft Office", 202 { "microsoft-office", "Microsoft Office", "Microsoft Office",
178 NULL, 0 }, 203 NULL, 0, "" },
179 { "nvidia-3d", "NVIDIA 3D", "NVIDIA 3D", NULL, 0 }, 204 { "nvidia-3d", "NVIDIA 3D", "NVIDIA 3D", kAllVersionsInfobarVersionRange,
205 arraysize(kAllVersionsInfobarVersionRange), "" },
180 kChromePdfDefinition, 206 kChromePdfDefinition,
181 kGoogleTalkDefinition, 207 kGoogleTalkDefinition,
182 }; 208 };
183 209
184 #elif defined(OS_CHROMEOS) 210 #elif defined(OS_CHROMEOS)
185 // ChromeOS generally has (autoupdated) system plug-ins and no user-installable 211 // ChromeOS generally has (autoupdated) system plug-ins and no user-installable
186 // plug-ins, so we just use these definitions for grouping. 212 // plug-ins, so we just use these definitions for grouping.
187 static const PluginGroupDefinition kGroupDefinitions[] = { 213 static const PluginGroupDefinition kGroupDefinitions[] = {
188 kFlashDefinition, 214 kFlashDefinition,
189 kChromePdfDefinition, 215 kChromePdfDefinition,
190 }; 216 };
191 217
192 #else // Most importantly, covers desktop Linux. 218 #else // Most importantly, covers desktop Linux.
193 static const VersionRangeDefinition kJavaVersionRange[] = { 219 static const VersionRangeDefinition kJavaVersionRange[] = {
194 { "0", "1.7", "1.6.0.31" }, 220 { "0", "1.7", "1.6.0.31", true },
195 { "1.7", "", "1.7.0.3" } 221 { "1.7", "", "1.7.0.3", true }
196 }; 222 };
197 223
198 // Up to date with: 224 // Up to date with:
199 // http://blog.fuseyism.com/index.php/2012/02/15/ 225 // http://blog.fuseyism.com/index.php/2012/02/15/
200 // security-icedtea6-1-8-13-1-9-13-1-10-6-and-icedtea-2-0-1-released/ 226 // security-icedtea6-1-8-13-1-9-13-1-10-6-and-icedtea-2-0-1-released/
201 static const VersionRangeDefinition kRedhatIcedTeaVersionRange[] = { 227 static const VersionRangeDefinition kRedhatIcedTeaVersionRange[] = {
202 { "0", "1.9", "1.8.13" }, 228 { "0", "1.9", "1.8.13", true },
203 { "1.9", "1.10", "1.9.13" }, 229 { "1.9", "1.10", "1.9.13", true },
204 { "1.10", "2", "1.10.6" }, 230 { "1.10", "2", "1.10.6", true },
205 { "2", "", "2.0.1" } 231 { "2", "", "2.0.1", true }
206 }; 232 };
207 233
208 static const PluginGroupDefinition kGroupDefinitions[] = { 234 static const PluginGroupDefinition kGroupDefinitions[] = {
209 // Flash on Linux is significant because there isn't yet a built-in Flash 235 // Flash on Linux is significant because there isn't yet a built-in Flash
210 // plug-in on the Linux 64-bit version of Chrome. 236 // plug-in on the Linux 64-bit version of Chrome.
211 kFlashDefinition, 237 kFlashDefinition,
212 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java", 238 { "java-runtime-environment", PluginGroup::kJavaGroupName, "Java",
213 kJavaVersionRange, arraysize(kJavaVersionRange) }, 239 kJavaVersionRange, arraysize(kJavaVersionRange),
240 "http://www.java.com/en/download/manual.jsp" },
214 { "redhat-icetea-java", "IcedTea", "IcedTea", 241 { "redhat-icetea-java", "IcedTea", "IcedTea",
215 kRedhatIcedTeaVersionRange, arraysize(kRedhatIcedTeaVersionRange) }, 242 kRedhatIcedTeaVersionRange, arraysize(kRedhatIcedTeaVersionRange),
243 "http://www.linuxsecurity.com/content/section/3/170/" },
216 kChromePdfDefinition, 244 kChromePdfDefinition,
217 kGoogleTalkDefinition, 245 kGoogleTalkDefinition,
218 }; 246 };
219 #endif 247 #endif
220 248
221 // static 249 // static
222 PluginList* PluginList::Singleton() { 250 PluginList* PluginList::Singleton() {
223 return g_singleton.Pointer(); 251 return g_singleton.Pointer();
224 } 252 }
225 253
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
405 433
406 if (!will_load_callback.is_null()) 434 if (!will_load_callback.is_null())
407 will_load_callback.Run(); 435 will_load_callback.Run();
408 436
409 std::vector<FilePath> plugin_paths; 437 std::vector<FilePath> plugin_paths;
410 GetPluginPathsToLoad(&plugin_paths); 438 GetPluginPathsToLoad(&plugin_paths);
411 439
412 for (std::vector<FilePath>::const_iterator it = plugin_paths.begin(); 440 for (std::vector<FilePath>::const_iterator it = plugin_paths.begin();
413 it != plugin_paths.end(); 441 it != plugin_paths.end();
414 ++it) { 442 ++it) {
415 WebPluginInfo plugin_info; 443 LoadPlugin(*it, plugin_groups);
416 LoadPlugin(*it, plugin_groups, &plugin_info);
417 } 444 }
418 } 445 }
419 446
420 void PluginList::LoadPlugins() { 447 void PluginList::LoadPlugins() {
421 { 448 {
422 base::AutoLock lock(lock_); 449 base::AutoLock lock(lock_);
423 if (!plugins_need_refresh_) 450 if (!plugins_need_refresh_)
424 return; 451 return;
425 } 452 }
426 453
427 ScopedVector<PluginGroup> new_plugin_groups; 454 ScopedVector<PluginGroup> new_plugin_groups;
428 // Do the actual loading of the plugins. 455 // Do the actual loading of the plugins.
429 LoadPluginsInternal(&new_plugin_groups); 456 LoadPluginsInternal(&new_plugin_groups);
430 457
431 base::AutoLock lock(lock_); 458 base::AutoLock lock(lock_);
432 plugin_groups_.swap(new_plugin_groups); 459 plugin_groups_.swap(new_plugin_groups);
433 } 460 }
434 461
435 bool PluginList::LoadPlugin(const FilePath& path, 462 void PluginList::LoadPlugin(const FilePath& path,
436 ScopedVector<PluginGroup>* plugin_groups, 463 ScopedVector<PluginGroup>* plugin_groups) {
437 WebPluginInfo* plugin_info) {
438 LOG_IF(ERROR, PluginList::DebugPluginLoading()) 464 LOG_IF(ERROR, PluginList::DebugPluginLoading())
439 << "Loading plugin " << path.value(); 465 << "Loading plugin " << path.value();
466 WebPluginInfo plugin_info;
440 const PluginEntryPoints* entry_points; 467 const PluginEntryPoints* entry_points;
441 468
442 if (!ReadPluginInfo(path, plugin_info, &entry_points)) 469 if (!ReadPluginInfo(path, &plugin_info, &entry_points))
443 return false; 470 return;
444 471
445 if (!ShouldLoadPlugin(*plugin_info, plugin_groups)) 472 if (!ShouldLoadPlugin(plugin_info, plugin_groups))
446 return false; 473 return;
447 474
448 #if defined(OS_WIN) && !defined(NDEBUG) 475 #if defined(OS_WIN) && !defined(NDEBUG)
449 if (path.BaseName().value() != L"npspy.dll") // Make an exception for NPSPY 476 if (path.BaseName().value() != L"npspy.dll") // Make an exception for NPSPY
450 #endif 477 #endif
451 { 478 {
452 for (size_t i = 0; i < plugin_info->mime_types.size(); ++i) { 479 for (size_t i = 0; i < plugin_info.mime_types.size(); ++i) {
453 // TODO: don't load global handlers for now. 480 // TODO: don't load global handlers for now.
454 // WebKit hands to the Plugin before it tries 481 // WebKit hands to the Plugin before it tries
455 // to handle mimeTypes on its own. 482 // to handle mimeTypes on its own.
456 const std::string &mime_type = plugin_info->mime_types[i].mime_type; 483 const std::string &mime_type = plugin_info.mime_types[i].mime_type;
457 if (mime_type == "*") 484 if (mime_type == "*")
458 return false; 485 return;
459 } 486 }
460 } 487 }
461 AddToPluginGroups(*plugin_info, plugin_groups); 488
462 return true; 489 base::AutoLock lock(lock_);
490 AddToPluginGroups(plugin_info, plugin_groups);
463 } 491 }
464 492
465 void PluginList::GetPluginPathsToLoad(std::vector<FilePath>* plugin_paths) { 493 void PluginList::GetPluginPathsToLoad(std::vector<FilePath>* plugin_paths) {
466 // Don't want to hold the lock while loading new plugins, so we don't block 494 // Don't want to hold the lock while loading new plugins, so we don't block
467 // other methods if they're called on other threads. 495 // other methods if they're called on other threads.
468 std::vector<FilePath> extra_plugin_paths; 496 std::vector<FilePath> extra_plugin_paths;
469 std::vector<FilePath> extra_plugin_dirs; 497 std::vector<FilePath> extra_plugin_dirs;
470 { 498 {
471 base::AutoLock lock(lock_); 499 base::AutoLock lock(lock_);
472 extra_plugin_paths = extra_plugin_paths_; 500 extra_plugin_paths = extra_plugin_paths_;
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
712 } 740 }
713 return false; 741 return false;
714 } 742 }
715 743
716 PluginList::~PluginList() { 744 PluginList::~PluginList() {
717 } 745 }
718 746
719 747
720 } // namespace npapi 748 } // namespace npapi
721 } // namespace webkit 749 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/npapi/plugin_list.h ('k') | webkit/plugins/npapi/plugin_list_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698