| OLD | NEW |
| 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 "chrome/browser/extensions/extension_service.h" | 5 #include "chrome/browser/extensions/extension_service.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 2539 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2550 const PepperPluginInfo* pepper_info = NULL; | 2550 const PepperPluginInfo* pepper_info = NULL; |
| 2551 std::vector<PepperPluginInfo> plugins; | 2551 std::vector<PepperPluginInfo> plugins; |
| 2552 PepperPluginRegistry::ComputeList(&plugins); | 2552 PepperPluginRegistry::ComputeList(&plugins); |
| 2553 | 2553 |
| 2554 // Search the entire plugin list for plugins that handle the NaCl MIME type. | 2554 // Search the entire plugin list for plugins that handle the NaCl MIME type. |
| 2555 // There can be multiple plugins like this, for instance the internal NaCl | 2555 // There can be multiple plugins like this, for instance the internal NaCl |
| 2556 // plugin and a plugin registered by --register-pepper-plugins during tests. | 2556 // plugin and a plugin registered by --register-pepper-plugins during tests. |
| 2557 for (size_t i = 0; i < plugins.size(); ++i) { | 2557 for (size_t i = 0; i < plugins.size(); ++i) { |
| 2558 pepper_info = &plugins[i]; | 2558 pepper_info = &plugins[i]; |
| 2559 CHECK(pepper_info); | 2559 CHECK(pepper_info); |
| 2560 std::vector<webkit::npapi::WebPluginMimeType>::const_iterator mime_iter; | 2560 std::vector<webkit::WebPluginMimeType>::const_iterator mime_iter; |
| 2561 // Check each MIME type the plugins handle for the NaCl MIME type. | 2561 // Check each MIME type the plugins handle for the NaCl MIME type. |
| 2562 for (mime_iter = pepper_info->mime_types.begin(); | 2562 for (mime_iter = pepper_info->mime_types.begin(); |
| 2563 mime_iter != pepper_info->mime_types.end(); ++mime_iter) { | 2563 mime_iter != pepper_info->mime_types.end(); ++mime_iter) { |
| 2564 if (mime_iter->mime_type == kNaClPluginMimeType) { | 2564 if (mime_iter->mime_type == kNaClPluginMimeType) { |
| 2565 // This plugin handles "application/x-nacl". | 2565 // This plugin handles "application/x-nacl". |
| 2566 | 2566 |
| 2567 webkit::npapi::PluginList::Singleton()-> | 2567 webkit::npapi::PluginList::Singleton()-> |
| 2568 UnregisterInternalPlugin(pepper_info->path); | 2568 UnregisterInternalPlugin(pepper_info->path); |
| 2569 | 2569 |
| 2570 webkit::npapi::WebPluginInfo info = pepper_info->ToWebPluginInfo(); | 2570 webkit::WebPluginInfo info = pepper_info->ToWebPluginInfo(); |
| 2571 | 2571 |
| 2572 for (ExtensionService::NaClModuleInfoList::const_iterator iter = | 2572 for (ExtensionService::NaClModuleInfoList::const_iterator iter = |
| 2573 nacl_module_list_.begin(); | 2573 nacl_module_list_.begin(); |
| 2574 iter != nacl_module_list_.end(); ++iter) { | 2574 iter != nacl_module_list_.end(); ++iter) { |
| 2575 // Add the MIME type specified in the extension to this NaCl plugin, | 2575 // Add the MIME type specified in the extension to this NaCl plugin, |
| 2576 // With an extra "nacl" argument to specify the location of the NaCl | 2576 // With an extra "nacl" argument to specify the location of the NaCl |
| 2577 // manifest file. | 2577 // manifest file. |
| 2578 webkit::npapi::WebPluginMimeType mime_type_info; | 2578 webkit::WebPluginMimeType mime_type_info; |
| 2579 mime_type_info.mime_type = iter->mime_type; | 2579 mime_type_info.mime_type = iter->mime_type; |
| 2580 mime_type_info.additional_param_names.push_back(UTF8ToUTF16("nacl")); | 2580 mime_type_info.additional_param_names.push_back(UTF8ToUTF16("nacl")); |
| 2581 mime_type_info.additional_param_values.push_back( | 2581 mime_type_info.additional_param_values.push_back( |
| 2582 UTF8ToUTF16(iter->url.spec())); | 2582 UTF8ToUTF16(iter->url.spec())); |
| 2583 info.mime_types.push_back(mime_type_info); | 2583 info.mime_types.push_back(mime_type_info); |
| 2584 } | 2584 } |
| 2585 | 2585 |
| 2586 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); | 2586 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); |
| 2587 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info); | 2587 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info); |
| 2588 // This plugin has been modified, no need to check the rest of its | 2588 // This plugin has been modified, no need to check the rest of its |
| 2589 // types, but continue checking other plugins. | 2589 // types, but continue checking other plugins. |
| 2590 break; | 2590 break; |
| 2591 } | 2591 } |
| 2592 } | 2592 } |
| 2593 } | 2593 } |
| 2594 } | 2594 } |
| 2595 | 2595 |
| 2596 ExtensionService::NaClModuleInfoList::iterator | 2596 ExtensionService::NaClModuleInfoList::iterator |
| 2597 ExtensionService::FindNaClModule(const GURL& url) { | 2597 ExtensionService::FindNaClModule(const GURL& url) { |
| 2598 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); | 2598 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); |
| 2599 iter != nacl_module_list_.end(); ++iter) { | 2599 iter != nacl_module_list_.end(); ++iter) { |
| 2600 if (iter->url == url) | 2600 if (iter->url == url) |
| 2601 return iter; | 2601 return iter; |
| 2602 } | 2602 } |
| 2603 return nacl_module_list_.end(); | 2603 return nacl_module_list_.end(); |
| 2604 } | 2604 } |
| OLD | NEW |