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

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

Issue 7648017: Make WebPluginInfo more generic (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 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_win.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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 } 203 }
204 204
205 void PluginList::AddExtraPluginDir(const FilePath& plugin_dir) { 205 void PluginList::AddExtraPluginDir(const FilePath& plugin_dir) {
206 // Chrome OS only loads plugins from /opt/google/chrome/plugins. 206 // Chrome OS only loads plugins from /opt/google/chrome/plugins.
207 #if !defined(OS_CHROMEOS) 207 #if !defined(OS_CHROMEOS)
208 base::AutoLock lock(lock_); 208 base::AutoLock lock(lock_);
209 extra_plugin_dirs_.push_back(plugin_dir); 209 extra_plugin_dirs_.push_back(plugin_dir);
210 #endif 210 #endif
211 } 211 }
212 212
213 void PluginList::RegisterInternalPlugin(const WebPluginInfo& info) { 213 void PluginList::RegisterInternalPlugin(const webkit::WebPluginInfo& info) {
214 PluginEntryPoints entry_points = {0}; 214 PluginEntryPoints entry_points = {0};
215 InternalPlugin plugin = { info, entry_points }; 215 InternalPlugin plugin = { info, entry_points };
216 216
217 base::AutoLock lock(lock_); 217 base::AutoLock lock(lock_);
218 // Newer registrations go earlier in the list so they can override the MIME 218 // Newer registrations go earlier in the list so they can override the MIME
219 // types of older registrations. 219 // types of older registrations.
220 internal_plugins_.insert(internal_plugins_.begin(), plugin); 220 internal_plugins_.insert(internal_plugins_.begin(), plugin);
221 } 221 }
222 222
223 void PluginList::RegisterInternalPlugin(const FilePath& filename, 223 void PluginList::RegisterInternalPlugin(const FilePath& filename,
224 const std::string& name, 224 const std::string& name,
225 const std::string& description, 225 const std::string& description,
226 const std::string& mime_type_str, 226 const std::string& mime_type_str,
227 const PluginEntryPoints& entry_points) { 227 const PluginEntryPoints& entry_points) {
228 InternalPlugin plugin; 228 InternalPlugin plugin;
229 plugin.info.path = filename; 229 plugin.info.path = filename;
230 plugin.info.name = ASCIIToUTF16(name); 230 plugin.info.name = ASCIIToUTF16(name);
231 plugin.info.version = ASCIIToUTF16("1"); 231 plugin.info.version = ASCIIToUTF16("1");
232 plugin.info.desc = ASCIIToUTF16(description); 232 plugin.info.desc = ASCIIToUTF16(description);
233 plugin.info.enabled = WebPluginInfo::USER_ENABLED_POLICY_UNMANAGED; 233 plugin.info.enabled = webkit::WebPluginInfo::USER_ENABLED_POLICY_UNMANAGED;
234 234
235 WebPluginMimeType mime_type; 235 webkit::WebPluginMimeType mime_type;
236 mime_type.mime_type = mime_type_str; 236 mime_type.mime_type = mime_type_str;
237 plugin.info.mime_types.push_back(mime_type); 237 plugin.info.mime_types.push_back(mime_type);
238 238
239 plugin.entry_points = entry_points; 239 plugin.entry_points = entry_points;
240 240
241 base::AutoLock lock(lock_); 241 base::AutoLock lock(lock_);
242 internal_plugins_.push_back(plugin); 242 internal_plugins_.push_back(plugin);
243 if (filename.value() == kDefaultPluginLibraryName) 243 if (filename.value() == kDefaultPluginLibraryName)
244 default_plugin_enabled_ = true; 244 default_plugin_enabled_ = true;
245 } 245 }
246 246
247 void PluginList::UnregisterInternalPlugin(const FilePath& path) { 247 void PluginList::UnregisterInternalPlugin(const FilePath& path) {
248 base::AutoLock lock(lock_); 248 base::AutoLock lock(lock_);
249 for (size_t i = 0; i < internal_plugins_.size(); i++) { 249 for (size_t i = 0; i < internal_plugins_.size(); i++) {
250 if (internal_plugins_[i].info.path == path) { 250 if (internal_plugins_[i].info.path == path) {
251 internal_plugins_.erase(internal_plugins_.begin() + i); 251 internal_plugins_.erase(internal_plugins_.begin() + i);
252 return; 252 return;
253 } 253 }
254 } 254 }
255 NOTREACHED(); 255 NOTREACHED();
256 } 256 }
257 257
258 bool PluginList::ReadPluginInfo(const FilePath& filename, 258 bool PluginList::ReadPluginInfo(const FilePath& filename,
259 WebPluginInfo* info, 259 webkit::WebPluginInfo* info,
260 const PluginEntryPoints** entry_points) { 260 const PluginEntryPoints** entry_points) {
261 { 261 {
262 base::AutoLock lock(lock_); 262 base::AutoLock lock(lock_);
263 for (size_t i = 0; i < internal_plugins_.size(); ++i) { 263 for (size_t i = 0; i < internal_plugins_.size(); ++i) {
264 if (filename == internal_plugins_[i].info.path) { 264 if (filename == internal_plugins_[i].info.path) {
265 *entry_points = &internal_plugins_[i].entry_points; 265 *entry_points = &internal_plugins_[i].entry_points;
266 *info = internal_plugins_[i].info; 266 *info = internal_plugins_[i].info;
267 return true; 267 return true;
268 } 268 }
269 } 269 }
270 } 270 }
271 271
272 // Not an internal plugin. 272 // Not an internal plugin.
273 *entry_points = NULL; 273 *entry_points = NULL;
274 274
275 return PluginLib::ReadWebPluginInfo(filename, info); 275 return PluginLib::ReadWebPluginInfo(filename, info);
276 } 276 }
277 277
278 // static 278 // static
279 bool PluginList::ParseMimeTypes( 279 bool PluginList::ParseMimeTypes(
280 const std::string& mime_types_str, 280 const std::string& mime_types_str,
281 const std::string& file_extensions_str, 281 const std::string& file_extensions_str,
282 const string16& mime_type_descriptions_str, 282 const string16& mime_type_descriptions_str,
283 std::vector<WebPluginMimeType>* parsed_mime_types) { 283 std::vector<webkit::WebPluginMimeType>* parsed_mime_types) {
284 std::vector<std::string> mime_types, file_extensions; 284 std::vector<std::string> mime_types, file_extensions;
285 std::vector<string16> descriptions; 285 std::vector<string16> descriptions;
286 base::SplitString(mime_types_str, '|', &mime_types); 286 base::SplitString(mime_types_str, '|', &mime_types);
287 base::SplitString(file_extensions_str, '|', &file_extensions); 287 base::SplitString(file_extensions_str, '|', &file_extensions);
288 base::SplitString(mime_type_descriptions_str, '|', &descriptions); 288 base::SplitString(mime_type_descriptions_str, '|', &descriptions);
289 289
290 parsed_mime_types->clear(); 290 parsed_mime_types->clear();
291 291
292 if (mime_types.empty()) 292 if (mime_types.empty())
293 return false; 293 return false;
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 return; 404 return;
405 } 405 }
406 406
407 ScopedVector<PluginGroup> new_plugin_groups; 407 ScopedVector<PluginGroup> new_plugin_groups;
408 AddHardcodedPluginGroups(&new_plugin_groups); 408 AddHardcodedPluginGroups(&new_plugin_groups);
409 // Do the actual loading of the plugins. 409 // Do the actual loading of the plugins.
410 LoadPluginsInternal(&new_plugin_groups); 410 LoadPluginsInternal(&new_plugin_groups);
411 411
412 base::AutoLock lock(lock_); 412 base::AutoLock lock(lock_);
413 // Grab all plugins that were found before to copy enabled statuses. 413 // Grab all plugins that were found before to copy enabled statuses.
414 std::vector<WebPluginInfo> old_plugins; 414 std::vector<webkit::WebPluginInfo> old_plugins;
415 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 415 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
416 const std::vector<WebPluginInfo>& gr_plugins = 416 const std::vector<webkit::WebPluginInfo>& gr_plugins =
417 plugin_groups_[i]->web_plugins_info(); 417 plugin_groups_[i]->web_plugins_info();
418 old_plugins.insert(old_plugins.end(), gr_plugins.begin(), gr_plugins.end()); 418 old_plugins.insert(old_plugins.end(), gr_plugins.begin(), gr_plugins.end());
419 } 419 }
420 // Disable all of the plugins and plugin groups that are disabled by policy. 420 // Disable all of the plugins and plugin groups that are disabled by policy.
421 for (size_t i = 0; i < new_plugin_groups.size(); ++i) { 421 for (size_t i = 0; i < new_plugin_groups.size(); ++i) {
422 PluginGroup* group = new_plugin_groups[i]; 422 PluginGroup* group = new_plugin_groups[i];
423 string16 group_name = group->GetGroupName(); 423 string16 group_name = group->GetGroupName();
424 424
425 std::vector<WebPluginInfo>& gr_plugins = group->GetPluginsContainer(); 425 std::vector<webkit::WebPluginInfo>& gr_plugins =
426 group->GetPluginsContainer();
426 for (size_t j = 0; j < gr_plugins.size(); ++j) { 427 for (size_t j = 0; j < gr_plugins.size(); ++j) {
427 int plugin_found = -1; 428 int plugin_found = -1;
428 for (size_t k = 0; k < old_plugins.size(); ++k) { 429 for (size_t k = 0; k < old_plugins.size(); ++k) {
429 if (gr_plugins[j].path == old_plugins[k].path) { 430 if (gr_plugins[j].path == old_plugins[k].path) {
430 plugin_found = k; 431 plugin_found = k;
431 break; 432 break;
432 } 433 }
433 } 434 }
434 if (plugin_found >= 0) 435 if (plugin_found >= 0)
435 gr_plugins[j].enabled = old_plugins[plugin_found].enabled; 436 gr_plugins[j].enabled = old_plugins[plugin_found].enabled;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 } 489 }
489 490
490 base::AutoLock lock(lock_); 491 base::AutoLock lock(lock_);
491 AddToPluginGroups(plugin_info, plugin_groups); 492 AddToPluginGroups(plugin_info, plugin_groups);
492 } 493 }
493 494
494 void PluginList::GetPlugins(std::vector<WebPluginInfo>* plugins) { 495 void PluginList::GetPlugins(std::vector<WebPluginInfo>* plugins) {
495 LoadPlugins(); 496 LoadPlugins();
496 base::AutoLock lock(lock_); 497 base::AutoLock lock(lock_);
497 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 498 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
498 const std::vector<WebPluginInfo>& gr_plugins = 499 const std::vector<webkit::WebPluginInfo>& gr_plugins =
499 plugin_groups_[i]->web_plugins_info(); 500 plugin_groups_[i]->web_plugins_info();
500 plugins->insert(plugins->end(), gr_plugins.begin(), gr_plugins.end()); 501 plugins->insert(plugins->end(), gr_plugins.begin(), gr_plugins.end());
501 } 502 }
502 } 503 }
503 504
504 void PluginList::GetPluginInfoArray( 505 void PluginList::GetPluginInfoArray(
505 const GURL& url, 506 const GURL& url,
506 const std::string& mime_type, 507 const std::string& mime_type,
507 bool allow_wildcard, 508 bool allow_wildcard,
508 bool* use_stale, 509 bool* use_stale,
509 std::vector<WebPluginInfo>* info, 510 std::vector<webkit::WebPluginInfo>* info,
510 std::vector<std::string>* actual_mime_types) { 511 std::vector<std::string>* actual_mime_types) {
511 DCHECK(mime_type == StringToLowerASCII(mime_type)); 512 DCHECK(mime_type == StringToLowerASCII(mime_type));
512 DCHECK(info); 513 DCHECK(info);
513 514
514 if (!use_stale) 515 if (!use_stale)
515 LoadPlugins(); 516 LoadPlugins();
516 base::AutoLock lock(lock_); 517 base::AutoLock lock(lock_);
517 if (use_stale) 518 if (use_stale)
518 *use_stale = plugins_need_refresh_; 519 *use_stale = plugins_need_refresh_;
519 info->clear(); 520 info->clear();
520 if (actual_mime_types) 521 if (actual_mime_types)
521 actual_mime_types->clear(); 522 actual_mime_types->clear();
522 523
523 std::set<FilePath> visited_plugins; 524 std::set<FilePath> visited_plugins;
524 525
525 // Add in enabled plugins by mime type. 526 // Add in enabled plugins by mime type.
526 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 527 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
527 const std::vector<WebPluginInfo>& plugins = 528 const std::vector<webkit::WebPluginInfo>& plugins =
528 plugin_groups_[i]->web_plugins_info(); 529 plugin_groups_[i]->web_plugins_info();
529 for (size_t i = 0; i < plugins.size(); ++i) { 530 for (size_t i = 0; i < plugins.size(); ++i) {
530 if (IsPluginEnabled(plugins[i]) && SupportsType(plugins[i], 531 if (IsPluginEnabled(plugins[i]) && SupportsType(plugins[i],
531 mime_type, allow_wildcard)) { 532 mime_type, allow_wildcard)) {
532 FilePath path = plugins[i].path; 533 FilePath path = plugins[i].path;
533 if (path.value() != kDefaultPluginLibraryName && 534 if (path.value() != kDefaultPluginLibraryName &&
534 visited_plugins.insert(path).second) { 535 visited_plugins.insert(path).second) {
535 info->push_back(plugins[i]); 536 info->push_back(plugins[i]);
536 if (actual_mime_types) 537 if (actual_mime_types)
537 actual_mime_types->push_back(mime_type); 538 actual_mime_types->push_back(mime_type);
538 } 539 }
539 } 540 }
540 } 541 }
541 } 542 }
542 543
543 // Add in enabled plugins by url. 544 // Add in enabled plugins by url.
544 std::string path = url.path(); 545 std::string path = url.path();
545 std::string::size_type last_dot = path.rfind('.'); 546 std::string::size_type last_dot = path.rfind('.');
546 if (last_dot != std::string::npos) { 547 if (last_dot != std::string::npos) {
547 std::string extension = StringToLowerASCII(std::string(path, last_dot+1)); 548 std::string extension = StringToLowerASCII(std::string(path, last_dot+1));
548 std::string actual_mime_type; 549 std::string actual_mime_type;
549 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 550 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
550 const std::vector<WebPluginInfo>& plugins = 551 const std::vector<webkit::WebPluginInfo>& plugins =
551 plugin_groups_[i]->web_plugins_info(); 552 plugin_groups_[i]->web_plugins_info();
552 for (size_t i = 0; i < plugins.size(); ++i) { 553 for (size_t i = 0; i < plugins.size(); ++i) {
553 if (IsPluginEnabled(plugins[i]) && 554 if (IsPluginEnabled(plugins[i]) &&
554 SupportsExtension(plugins[i], extension, &actual_mime_type)) { 555 SupportsExtension(plugins[i], extension, &actual_mime_type)) {
555 FilePath path = plugins[i].path; 556 FilePath path = plugins[i].path;
556 if (path.value() != kDefaultPluginLibraryName && 557 if (path.value() != kDefaultPluginLibraryName &&
557 visited_plugins.insert(path).second) { 558 visited_plugins.insert(path).second) {
558 info->push_back(plugins[i]); 559 info->push_back(plugins[i]);
559 if (actual_mime_types) 560 if (actual_mime_types)
560 actual_mime_types->push_back(actual_mime_type); 561 actual_mime_types->push_back(actual_mime_type);
561 } 562 }
562 } 563 }
563 } 564 }
564 } 565 }
565 } 566 }
566 567
567 // Add in disabled plugins by mime type. 568 // Add in disabled plugins by mime type.
568 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 569 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
569 const std::vector<WebPluginInfo>& plugins = 570 const std::vector<webkit::WebPluginInfo>& plugins =
570 plugin_groups_[i]->web_plugins_info(); 571 plugin_groups_[i]->web_plugins_info();
571 for (size_t i = 0; i < plugins.size(); ++i) { 572 for (size_t i = 0; i < plugins.size(); ++i) {
572 if (!IsPluginEnabled(plugins[i]) && 573 if (!IsPluginEnabled(plugins[i]) &&
573 SupportsType(plugins[i], mime_type, allow_wildcard)) { 574 SupportsType(plugins[i], mime_type, allow_wildcard)) {
574 FilePath path = plugins[i].path; 575 FilePath path = plugins[i].path;
575 if (path.value() != kDefaultPluginLibraryName && 576 if (path.value() != kDefaultPluginLibraryName &&
576 visited_plugins.insert(path).second) { 577 visited_plugins.insert(path).second) {
577 info->push_back(plugins[i]); 578 info->push_back(plugins[i]);
578 if (actual_mime_types) 579 if (actual_mime_types)
579 actual_mime_types->push_back(mime_type); 580 actual_mime_types->push_back(mime_type);
580 } 581 }
581 } 582 }
582 } 583 }
583 } 584 }
584 585
585 // Add the default plugin at the end if it supports the mime type given, 586 // Add the default plugin at the end if it supports the mime type given,
586 // and the default plugin is enabled. 587 // and the default plugin is enabled.
587 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 588 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
588 #if defined(OS_WIN) 589 #if defined(OS_WIN)
589 if (plugin_groups_[i]->identifier().compare( 590 if (plugin_groups_[i]->identifier().compare(
590 WideToUTF8(kDefaultPluginLibraryName)) == 0) { 591 WideToUTF8(kDefaultPluginLibraryName)) == 0) {
591 #else 592 #else
592 if (plugin_groups_[i]->identifier().compare( 593 if (plugin_groups_[i]->identifier().compare(
593 kDefaultPluginLibraryName) == 0) { 594 kDefaultPluginLibraryName) == 0) {
594 #endif 595 #endif
595 DCHECK_NE(0U, plugin_groups_[i]->web_plugins_info().size()); 596 DCHECK_NE(0U, plugin_groups_[i]->web_plugins_info().size());
596 const WebPluginInfo& default_info = 597 const webkit::WebPluginInfo& default_info =
597 plugin_groups_[i]->web_plugins_info()[0]; 598 plugin_groups_[i]->web_plugins_info()[0];
598 if (SupportsType(default_info, mime_type, allow_wildcard)) { 599 if (SupportsType(default_info, mime_type, allow_wildcard)) {
599 info->push_back(default_info); 600 info->push_back(default_info);
600 if (actual_mime_types) 601 if (actual_mime_types)
601 actual_mime_types->push_back(mime_type); 602 actual_mime_types->push_back(mime_type);
602 } 603 }
603 } 604 }
604 } 605 }
605 } 606 }
606 607
607 bool PluginList::GetPluginInfoByPath(const FilePath& plugin_path, 608 bool PluginList::GetPluginInfoByPath(const FilePath& plugin_path,
608 WebPluginInfo* info) { 609 webkit::WebPluginInfo* info) {
609 LoadPlugins(); 610 LoadPlugins();
610 base::AutoLock lock(lock_); 611 base::AutoLock lock(lock_);
611 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 612 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
612 const std::vector<WebPluginInfo>& plugins = 613 const std::vector<webkit::WebPluginInfo>& plugins =
613 plugin_groups_[i]->web_plugins_info(); 614 plugin_groups_[i]->web_plugins_info();
614 for (size_t i = 0; i < plugins.size(); ++i) { 615 for (size_t i = 0; i < plugins.size(); ++i) {
615 if (plugins[i].path == plugin_path) { 616 if (plugins[i].path == plugin_path) {
616 *info = plugins[i]; 617 *info = plugins[i];
617 return true; 618 return true;
618 } 619 }
619 } 620 }
620 } 621 }
621 622
622 return false; 623 return false;
623 } 624 }
624 625
625 void PluginList::GetPluginGroups( 626 void PluginList::GetPluginGroups(
626 bool load_if_necessary, 627 bool load_if_necessary,
627 std::vector<PluginGroup>* plugin_groups) { 628 std::vector<PluginGroup>* plugin_groups) {
628 if (load_if_necessary) 629 if (load_if_necessary)
629 LoadPlugins(); 630 LoadPlugins();
630 base::AutoLock lock(lock_); 631 base::AutoLock lock(lock_);
631 plugin_groups->clear(); 632 plugin_groups->clear();
632 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 633 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
633 // In some unit tests we can get confronted with empty groups but in real 634 // In some unit tests we can get confronted with empty groups but in real
634 // world code this if should never be false here. 635 // world code this if should never be false here.
635 if (!plugin_groups_[i]->IsEmpty()) 636 if (!plugin_groups_[i]->IsEmpty())
636 plugin_groups->push_back(*plugin_groups_[i]); 637 plugin_groups->push_back(*plugin_groups_[i]);
637 } 638 }
638 } 639 }
639 640
640 const PluginGroup* PluginList::GetPluginGroup( 641 const PluginGroup* PluginList::GetPluginGroup(
641 const WebPluginInfo& web_plugin_info) { 642 const webkit::WebPluginInfo& web_plugin_info) {
642 base::AutoLock lock(lock_); 643 base::AutoLock lock(lock_);
643 return AddToPluginGroups(web_plugin_info, &plugin_groups_); 644 return AddToPluginGroups(web_plugin_info, &plugin_groups_);
644 } 645 }
645 646
646 string16 PluginList::GetPluginGroupName(const std::string& identifier) { 647 string16 PluginList::GetPluginGroupName(const std::string& identifier) {
647 for (size_t i = 0; i < plugin_groups_.size(); ++i) { 648 for (size_t i = 0; i < plugin_groups_.size(); ++i) {
648 if (plugin_groups_[i]->identifier() == identifier) 649 if (plugin_groups_[i]->identifier() == identifier)
649 return plugin_groups_[i]->GetGroupName(); 650 return plugin_groups_[i]->GetGroupName();
650 } 651 }
651 return string16(); 652 return string16();
652 } 653 }
653 654
654 std::string PluginList::GetPluginGroupIdentifier( 655 std::string PluginList::GetPluginGroupIdentifier(
655 const WebPluginInfo& web_plugin_info) { 656 const webkit::WebPluginInfo& web_plugin_info) {
656 base::AutoLock lock(lock_); 657 base::AutoLock lock(lock_);
657 PluginGroup* group = AddToPluginGroups(web_plugin_info, &plugin_groups_); 658 PluginGroup* group = AddToPluginGroups(web_plugin_info, &plugin_groups_);
658 return group->identifier(); 659 return group->identifier();
659 } 660 }
660 661
661 void PluginList::AddHardcodedPluginGroups(ScopedVector<PluginGroup>* groups) { 662 void PluginList::AddHardcodedPluginGroups(ScopedVector<PluginGroup>* groups) {
662 for (size_t i = 0; i < num_group_definitions_; ++i) { 663 for (size_t i = 0; i < num_group_definitions_; ++i) {
663 groups->push_back( 664 groups->push_back(
664 PluginGroup::FromPluginGroupDefinition(group_definitions_[i])); 665 PluginGroup::FromPluginGroupDefinition(group_definitions_[i]));
665 } 666 }
666 } 667 }
667 668
668 PluginGroup* PluginList::AddToPluginGroups( 669 PluginGroup* PluginList::AddToPluginGroups(
669 const WebPluginInfo& web_plugin_info, 670 const webkit::WebPluginInfo& web_plugin_info,
670 ScopedVector<PluginGroup>* plugin_groups) { 671 ScopedVector<PluginGroup>* plugin_groups) {
671 PluginGroup* group = NULL; 672 PluginGroup* group = NULL;
672 for (size_t i = 0; i < plugin_groups->size(); ++i) { 673 for (size_t i = 0; i < plugin_groups->size(); ++i) {
673 if ((*plugin_groups)[i]->Match(web_plugin_info)) { 674 if ((*plugin_groups)[i]->Match(web_plugin_info)) {
674 group = (*plugin_groups)[i]; 675 group = (*plugin_groups)[i];
675 break; 676 break;
676 } 677 }
677 } 678 }
678 if (!group) { 679 if (!group) {
679 group = PluginGroup::FromWebPluginInfo(web_plugin_info); 680 group = PluginGroup::FromWebPluginInfo(web_plugin_info);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
740 groups_to_disable_.insert(group_name); 741 groups_to_disable_.insert(group_name);
741 return true; 742 return true;
742 } else { 743 } else {
743 return (groups_to_disable_.erase(group_name) != 0); 744 return (groups_to_disable_.erase(group_name) != 0);
744 } 745 }
745 } 746 }
746 747
747 return group->EnableGroup(enable); 748 return group->EnableGroup(enable);
748 } 749 }
749 750
750 bool PluginList::SupportsType(const WebPluginInfo& plugin, 751 bool PluginList::SupportsType(const webkit::WebPluginInfo& plugin,
751 const std::string& mime_type, 752 const std::string& mime_type,
752 bool allow_wildcard) { 753 bool allow_wildcard) {
753 // Webkit will ask for a plugin to handle empty mime types. 754 // Webkit will ask for a plugin to handle empty mime types.
754 if (mime_type.empty()) 755 if (mime_type.empty())
755 return false; 756 return false;
756 757
757 for (size_t i = 0; i < plugin.mime_types.size(); ++i) { 758 for (size_t i = 0; i < plugin.mime_types.size(); ++i) {
758 const WebPluginMimeType& mime_info = plugin.mime_types[i]; 759 const webkit::WebPluginMimeType& mime_info = plugin.mime_types[i];
759 if (net::MatchesMimeType(mime_info.mime_type, mime_type)) { 760 if (net::MatchesMimeType(mime_info.mime_type, mime_type)) {
760 if (!allow_wildcard && mime_info.mime_type == "*") 761 if (!allow_wildcard && mime_info.mime_type == "*")
761 continue; 762 continue;
762 return true; 763 return true;
763 } 764 }
764 } 765 }
765 return false; 766 return false;
766 } 767 }
767 768
768 bool PluginList::SupportsExtension(const WebPluginInfo& plugin, 769 bool PluginList::SupportsExtension(const webkit::WebPluginInfo& plugin,
769 const std::string& extension, 770 const std::string& extension,
770 std::string* actual_mime_type) { 771 std::string* actual_mime_type) {
771 for (size_t i = 0; i < plugin.mime_types.size(); ++i) { 772 for (size_t i = 0; i < plugin.mime_types.size(); ++i) {
772 const WebPluginMimeType& mime_type = plugin.mime_types[i]; 773 const webkit::WebPluginMimeType& mime_type = plugin.mime_types[i];
773 for (size_t j = 0; j < mime_type.file_extensions.size(); ++j) { 774 for (size_t j = 0; j < mime_type.file_extensions.size(); ++j) {
774 if (mime_type.file_extensions[j] == extension) { 775 if (mime_type.file_extensions[j] == extension) {
775 if (actual_mime_type) 776 if (actual_mime_type)
776 *actual_mime_type = mime_type.mime_type; 777 *actual_mime_type = mime_type.mime_type;
777 return true; 778 return true;
778 } 779 }
779 } 780 }
780 } 781 }
781 return false; 782 return false;
782 } 783 }
783 784
784 void PluginList::DisableOutdatedPluginGroups() { 785 void PluginList::DisableOutdatedPluginGroups() {
785 disable_outdated_plugins_ = true; 786 disable_outdated_plugins_ = true;
786 } 787 }
787 788
788 PluginList::~PluginList() { 789 PluginList::~PluginList() {
789 } 790 }
790 791
791 792
792 } // namespace npapi 793 } // namespace npapi
793 } // namespace webkit 794 } // namespace webkit
OLDNEW
« no previous file with comments | « webkit/plugins/npapi/plugin_list.h ('k') | webkit/plugins/npapi/plugin_list_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698