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

Side by Side Diff: chrome/browser/plugin_service.cc

Issue 5961004: Revert 69755 - Move the NPAPI files from webkit/glue/plugins to webkit/plugin... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years 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 | « chrome/browser/plugin_service.h ('k') | chrome/browser/plugin_service_browsertest.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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "build/build_config.h" 5 #include "build/build_config.h"
6 6
7 #include "chrome/browser/plugin_service.h" 7 #include "chrome/browser/plugin_service.h"
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 16 matching lines...) Expand all
27 #include "chrome/common/default_plugin.h" 27 #include "chrome/common/default_plugin.h"
28 #include "chrome/common/extensions/extension.h" 28 #include "chrome/common/extensions/extension.h"
29 #include "chrome/common/gpu_plugin.h" 29 #include "chrome/common/gpu_plugin.h"
30 #include "chrome/common/logging_chrome.h" 30 #include "chrome/common/logging_chrome.h"
31 #include "chrome/common/notification_type.h" 31 #include "chrome/common/notification_type.h"
32 #include "chrome/common/notification_service.h" 32 #include "chrome/common/notification_service.h"
33 #include "chrome/common/pepper_plugin_registry.h" 33 #include "chrome/common/pepper_plugin_registry.h"
34 #include "chrome/common/plugin_messages.h" 34 #include "chrome/common/plugin_messages.h"
35 #include "chrome/common/pref_names.h" 35 #include "chrome/common/pref_names.h"
36 #include "chrome/common/render_messages.h" 36 #include "chrome/common/render_messages.h"
37 #include "webkit/plugins/npapi/plugin_constants_win.h"
38 #include "webkit/plugins/npapi/plugin_list.h"
39 #include "webkit/plugins/npapi/webplugininfo.h"
40
41 #ifndef DISABLE_NACL 37 #ifndef DISABLE_NACL
42 #include "native_client/src/trusted/plugin/nacl_entry_points.h" 38 #include "native_client/src/trusted/plugin/nacl_entry_points.h"
43 #endif 39 #endif
40 #include "webkit/glue/plugins/plugin_constants_win.h"
41 #include "webkit/glue/plugins/plugin_list.h"
42 #include "webkit/glue/plugins/webplugininfo.h"
44 43
45 #if defined(OS_CHROMEOS) 44 #if defined(OS_CHROMEOS)
46 #include "chrome/browser/chromeos/plugin_selection_policy.h" 45 #include "chrome/browser/chromeos/plugin_selection_policy.h"
47 #endif 46 #endif
48 47
49 #if defined(OS_MACOSX) 48 #if defined(OS_MACOSX)
50 static void NotifyPluginsOfActivation() { 49 static void NotifyPluginsOfActivation() {
51 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 50 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
52 51
53 for (BrowserChildProcessHost::Iterator iter(ChildProcessInfo::PLUGIN_PROCESS); 52 for (BrowserChildProcessHost::Iterator iter(ChildProcessInfo::PLUGIN_PROCESS);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 ui_locale_(g_browser_process->GetApplicationLocale()) { 87 ui_locale_(g_browser_process->GetApplicationLocale()) {
89 RegisterPepperPlugins(); 88 RegisterPepperPlugins();
90 89
91 // Have the NPAPI plugin list search for Chrome plugins as well. 90 // Have the NPAPI plugin list search for Chrome plugins as well.
92 ChromePluginLib::RegisterPluginsWithNPAPI(); 91 ChromePluginLib::RegisterPluginsWithNPAPI();
93 92
94 // Load any specified on the command line as well. 93 // Load any specified on the command line as well.
95 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 94 const CommandLine* command_line = CommandLine::ForCurrentProcess();
96 FilePath path = command_line->GetSwitchValuePath(switches::kLoadPlugin); 95 FilePath path = command_line->GetSwitchValuePath(switches::kLoadPlugin);
97 if (!path.empty()) 96 if (!path.empty())
98 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(path); 97 NPAPI::PluginList::Singleton()->AddExtraPluginPath(path);
99 path = command_line->GetSwitchValuePath(switches::kExtraPluginDir); 98 path = command_line->GetSwitchValuePath(switches::kExtraPluginDir);
100 if (!path.empty()) 99 if (!path.empty())
101 webkit::npapi::PluginList::Singleton()->AddExtraPluginDir(path); 100 NPAPI::PluginList::Singleton()->AddExtraPluginDir(path);
102 101
103 chrome::RegisterInternalDefaultPlugin(); 102 chrome::RegisterInternalDefaultPlugin();
104 103
105 // Register the internal Flash and PDF, if available. 104 // Register the internal Flash and PDF, if available.
106 if (!CommandLine::ForCurrentProcess()->HasSwitch( 105 if (!CommandLine::ForCurrentProcess()->HasSwitch(
107 switches::kDisableInternalFlash) && 106 switches::kDisableInternalFlash) &&
108 PathService::Get(chrome::FILE_FLASH_PLUGIN, &path)) { 107 PathService::Get(chrome::FILE_FLASH_PLUGIN, &path)) {
109 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(path); 108 NPAPI::PluginList::Singleton()->AddExtraPluginPath(path);
110 } 109 }
111 110
112 #ifndef DISABLE_NACL 111 #ifndef DISABLE_NACL
113 if (command_line->HasSwitch(switches::kInternalNaCl)) { 112 if (command_line->HasSwitch(switches::kInternalNaCl)) {
114 RegisterInternalNaClPlugin(); 113 RegisterInternalNaClPlugin();
115 } 114 }
116 #endif 115 #endif
117 116
118 #if defined(OS_CHROMEOS) 117 #if defined(OS_CHROMEOS)
119 plugin_selection_policy_ = new chromeos::PluginSelectionPolicy; 118 plugin_selection_policy_ = new chromeos::PluginSelectionPolicy;
120 plugin_selection_policy_->StartInit(); 119 plugin_selection_policy_->StartInit();
121 #endif 120 #endif
122 121
123 chrome::RegisterInternalGPUPlugin(); 122 chrome::RegisterInternalGPUPlugin();
124 123
125 #if defined(OS_WIN) 124 #if defined(OS_WIN)
126 hkcu_key_.Create( 125 hkcu_key_.Create(
127 HKEY_CURRENT_USER, webkit::npapi::kRegistryMozillaPlugins, KEY_NOTIFY); 126 HKEY_CURRENT_USER, kRegistryMozillaPlugins, KEY_NOTIFY);
128 hklm_key_.Create( 127 hklm_key_.Create(
129 HKEY_LOCAL_MACHINE, webkit::npapi::kRegistryMozillaPlugins, KEY_NOTIFY); 128 HKEY_LOCAL_MACHINE, kRegistryMozillaPlugins, KEY_NOTIFY);
130 if (hkcu_key_.StartWatching()) { 129 if (hkcu_key_.StartWatching()) {
131 hkcu_event_.reset(new base::WaitableEvent(hkcu_key_.watch_event())); 130 hkcu_event_.reset(new base::WaitableEvent(hkcu_key_.watch_event()));
132 hkcu_watcher_.StartWatching(hkcu_event_.get(), this); 131 hkcu_watcher_.StartWatching(hkcu_event_.get(), this);
133 } 132 }
134 133
135 if (hklm_key_.StartWatching()) { 134 if (hklm_key_.StartWatching()) {
136 hklm_event_.reset(new base::WaitableEvent(hklm_key_.watch_event())); 135 hklm_event_.reset(new base::WaitableEvent(hklm_key_.watch_event()));
137 hklm_watcher_.StartWatching(hklm_event_.get(), this); 136 hklm_watcher_.StartWatching(hklm_event_.get(), this);
138 } 137 }
139 #elif defined(OS_POSIX) && !defined(OS_MACOSX) 138 #elif defined(OS_POSIX) && !defined(OS_MACOSX)
140 // Also find plugins in a user-specific plugins dir, 139 // Also find plugins in a user-specific plugins dir,
141 // e.g. ~/.config/chromium/Plugins. 140 // e.g. ~/.config/chromium/Plugins.
142 FilePath user_data_dir; 141 FilePath user_data_dir;
143 if (PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) { 142 if (PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) {
144 webkit::npapi::PluginList::Singleton()->AddExtraPluginDir( 143 NPAPI::PluginList::Singleton()->AddExtraPluginDir(
145 user_data_dir.Append("Plugins")); 144 user_data_dir.Append("Plugins"));
146 } 145 }
147 #endif 146 #endif
148 147
149 registrar_.Add(this, NotificationType::EXTENSION_LOADED, 148 registrar_.Add(this, NotificationType::EXTENSION_LOADED,
150 NotificationService::AllSources()); 149 NotificationService::AllSources());
151 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED, 150 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED,
152 NotificationService::AllSources()); 151 NotificationService::AllSources());
153 #if defined(OS_MACOSX) 152 #if defined(OS_MACOSX)
154 // We need to know when the browser comes forward so we can bring modal plugin 153 // We need to know when the browser comes forward so we can bring modal plugin
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 205 }
207 206
208 PluginProcessHost* PluginService::FindOrStartPluginProcess( 207 PluginProcessHost* PluginService::FindOrStartPluginProcess(
209 const FilePath& plugin_path) { 208 const FilePath& plugin_path) {
210 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
211 210
212 PluginProcessHost* plugin_host = FindPluginProcess(plugin_path); 211 PluginProcessHost* plugin_host = FindPluginProcess(plugin_path);
213 if (plugin_host) 212 if (plugin_host)
214 return plugin_host; 213 return plugin_host;
215 214
216 webkit::npapi::WebPluginInfo info; 215 WebPluginInfo info;
217 if (!webkit::npapi::PluginList::Singleton()->GetPluginInfoByPath( 216 if (!NPAPI::PluginList::Singleton()->GetPluginInfoByPath(
218 plugin_path, &info)) { 217 plugin_path, &info)) {
219 return NULL; 218 return NULL;
220 } 219 }
221 220
222 // This plugin isn't loaded by any plugin process, so create a new process. 221 // This plugin isn't loaded by any plugin process, so create a new process.
223 scoped_ptr<PluginProcessHost> new_host(new PluginProcessHost()); 222 scoped_ptr<PluginProcessHost> new_host(new PluginProcessHost());
224 if (!new_host->Init(info, ui_locale_)) { 223 if (!new_host->Init(info, ui_locale_)) {
225 NOTREACHED(); // Init is not expected to fail 224 NOTREACHED(); // Init is not expected to fail
226 return NULL; 225 return NULL;
227 } 226 }
228 227
(...skipping 11 matching lines...) Expand all
240 NewRunnableMethod( 239 NewRunnableMethod(
241 this, &PluginService::GetAllowedPluginForOpenChannelToPlugin, 240 this, &PluginService::GetAllowedPluginForOpenChannelToPlugin,
242 url, mime_type, client)); 241 url, mime_type, client));
243 } 242 }
244 243
245 void PluginService::GetAllowedPluginForOpenChannelToPlugin( 244 void PluginService::GetAllowedPluginForOpenChannelToPlugin(
246 const GURL& url, 245 const GURL& url,
247 const std::string& mime_type, 246 const std::string& mime_type,
248 PluginProcessHost::Client* client) { 247 PluginProcessHost::Client* client) {
249 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 248 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
250 webkit::npapi::WebPluginInfo info; 249 WebPluginInfo info;
251 bool found = GetFirstAllowedPluginInfo(url, mime_type, &info, NULL); 250 bool found = GetFirstAllowedPluginInfo(url, mime_type, &info, NULL);
252 FilePath plugin_path; 251 FilePath plugin_path;
253 if (found && info.enabled) 252 if (found && info.enabled)
254 plugin_path = FilePath(info.path); 253 plugin_path = FilePath(info.path);
255 254
256 // Now we jump back to the IO thread to finish opening the channel. 255 // Now we jump back to the IO thread to finish opening the channel.
257 BrowserThread::PostTask( 256 BrowserThread::PostTask(
258 BrowserThread::IO, FROM_HERE, 257 BrowserThread::IO, FROM_HERE,
259 NewRunnableMethod( 258 NewRunnableMethod(
260 this, &PluginService::FinishOpenChannelToPlugin, 259 this, &PluginService::FinishOpenChannelToPlugin,
261 plugin_path, client)); 260 plugin_path, client));
262 } 261 }
263 262
264 void PluginService::FinishOpenChannelToPlugin( 263 void PluginService::FinishOpenChannelToPlugin(
265 const FilePath& plugin_path, 264 const FilePath& plugin_path,
266 PluginProcessHost::Client* client) { 265 PluginProcessHost::Client* client) {
267 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 266 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
268 267
269 PluginProcessHost* plugin_host = FindOrStartPluginProcess(plugin_path); 268 PluginProcessHost* plugin_host = FindOrStartPluginProcess(plugin_path);
270 if (plugin_host) 269 if (plugin_host)
271 plugin_host->OpenChannelToPlugin(client); 270 plugin_host->OpenChannelToPlugin(client);
272 else 271 else
273 client->OnError(); 272 client->OnError();
274 } 273 }
275 274
276 bool PluginService::GetFirstAllowedPluginInfo( 275 bool PluginService::GetFirstAllowedPluginInfo(
277 const GURL& url, 276 const GURL& url,
278 const std::string& mime_type, 277 const std::string& mime_type,
279 webkit::npapi::WebPluginInfo* info, 278 WebPluginInfo* info,
280 std::string* actual_mime_type) { 279 std::string* actual_mime_type) {
281 // GetPluginInfoArray may need to load the plugins, so we need to be 280 // GetPluginInfoArray may need to load the plugins, so we need to be
282 // on the FILE thread. 281 // on the FILE thread.
283 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
284 bool allow_wildcard = true; 283 bool allow_wildcard = true;
285 #if defined(OS_CHROMEOS) 284 #if defined(OS_CHROMEOS)
286 std::vector<webkit::npapi::WebPluginInfo> info_array; 285 std::vector<WebPluginInfo> info_array;
287 std::vector<std::string> actual_mime_types; 286 std::vector<std::string> actual_mime_types;
288 webkit::npapi::PluginList::Singleton()->GetPluginInfoArray( 287 NPAPI::PluginList::Singleton()->GetPluginInfoArray(
289 url, mime_type, allow_wildcard, &info_array, &actual_mime_types); 288 url, mime_type, allow_wildcard, &info_array, &actual_mime_types);
290 289
291 // Now we filter by the plugin selection policy. 290 // Now we filter by the plugin selection policy.
292 int allowed_index = plugin_selection_policy_->FindFirstAllowed(url, 291 int allowed_index = plugin_selection_policy_->FindFirstAllowed(url,
293 info_array); 292 info_array);
294 if (!info_array.empty() && allowed_index >= 0) { 293 if (!info_array.empty() && allowed_index >= 0) {
295 *info = info_array[allowed_index]; 294 *info = info_array[allowed_index];
296 if (actual_mime_type) 295 if (actual_mime_type)
297 *actual_mime_type = actual_mime_types[allowed_index]; 296 *actual_mime_type = actual_mime_types[allowed_index];
298 return true; 297 return true;
299 } 298 }
300 return false; 299 return false;
301 #else 300 #else
302 return webkit::npapi::PluginList::Singleton()->GetPluginInfo( 301 return NPAPI::PluginList::Singleton()->GetPluginInfo(
303 url, mime_type, allow_wildcard, info, actual_mime_type); 302 url, mime_type, allow_wildcard, info, actual_mime_type);
304 #endif 303 #endif
305 } 304 }
306 305
307 static void PurgePluginListCache(bool reload_pages) { 306 static void PurgePluginListCache(bool reload_pages) {
308 for (RenderProcessHost::iterator it = RenderProcessHost::AllHostsIterator(); 307 for (RenderProcessHost::iterator it = RenderProcessHost::AllHostsIterator();
309 !it.IsAtEnd(); it.Advance()) { 308 !it.IsAtEnd(); it.Advance()) {
310 it.GetCurrentValue()->Send(new ViewMsg_PurgePluginListCache(reload_pages)); 309 it.GetCurrentValue()->Send(new ViewMsg_PurgePluginListCache(reload_pages));
311 } 310 }
312 } 311 }
313 312
314 void PluginService::OnWaitableEventSignaled( 313 void PluginService::OnWaitableEventSignaled(
315 base::WaitableEvent* waitable_event) { 314 base::WaitableEvent* waitable_event) {
316 #if defined(OS_WIN) 315 #if defined(OS_WIN)
317 if (waitable_event == hkcu_event_.get()) { 316 if (waitable_event == hkcu_event_.get()) {
318 hkcu_key_.StartWatching(); 317 hkcu_key_.StartWatching();
319 } else { 318 } else {
320 hklm_key_.StartWatching(); 319 hklm_key_.StartWatching();
321 } 320 }
322 321
323 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); 322 NPAPI::PluginList::Singleton()->RefreshPlugins();
324 PurgePluginListCache(true); 323 PurgePluginListCache(true);
325 #endif // defined(OS_WIN) 324 #endif // defined(OS_WIN)
326 } 325 }
327 326
328 static void ForceShutdownPlugin(const FilePath& plugin_path) { 327 static void ForceShutdownPlugin(const FilePath& plugin_path) {
329 PluginProcessHost* plugin = 328 PluginProcessHost* plugin =
330 PluginService::GetInstance()->FindPluginProcess(plugin_path); 329 PluginService::GetInstance()->FindPluginProcess(plugin_path);
331 if (plugin) 330 if (plugin)
332 plugin->ForceShutdown(); 331 plugin->ForceShutdown();
333 } 332 }
334 333
335 void PluginService::Observe(NotificationType type, 334 void PluginService::Observe(NotificationType type,
336 const NotificationSource& source, 335 const NotificationSource& source,
337 const NotificationDetails& details) { 336 const NotificationDetails& details) {
338 switch (type.value) { 337 switch (type.value) {
339 case NotificationType::EXTENSION_LOADED: { 338 case NotificationType::EXTENSION_LOADED: {
340 const Extension* extension = Details<const Extension>(details).ptr(); 339 const Extension* extension = Details<const Extension>(details).ptr();
341 bool plugins_changed = false; 340 bool plugins_changed = false;
342 for (size_t i = 0; i < extension->plugins().size(); ++i) { 341 for (size_t i = 0; i < extension->plugins().size(); ++i) {
343 const Extension::PluginInfo& plugin = extension->plugins()[i]; 342 const Extension::PluginInfo& plugin = extension->plugins()[i];
344 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); 343 NPAPI::PluginList::Singleton()->RefreshPlugins();
345 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(plugin.path); 344 NPAPI::PluginList::Singleton()->AddExtraPluginPath(plugin.path);
346 plugins_changed = true; 345 plugins_changed = true;
347 if (!plugin.is_public) 346 if (!plugin.is_public)
348 private_plugins_[plugin.path] = extension->url(); 347 private_plugins_[plugin.path] = extension->url();
349 } 348 }
350 if (plugins_changed) 349 if (plugins_changed)
351 PurgePluginListCache(false); 350 PurgePluginListCache(false);
352 break; 351 break;
353 } 352 }
354 353
355 case NotificationType::EXTENSION_UNLOADED: { 354 case NotificationType::EXTENSION_UNLOADED: {
356 const Extension* extension = Details<const Extension>(details).ptr(); 355 const Extension* extension = Details<const Extension>(details).ptr();
357 bool plugins_changed = false; 356 bool plugins_changed = false;
358 for (size_t i = 0; i < extension->plugins().size(); ++i) { 357 for (size_t i = 0; i < extension->plugins().size(); ++i) {
359 const Extension::PluginInfo& plugin = extension->plugins()[i]; 358 const Extension::PluginInfo& plugin = extension->plugins()[i];
360 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 359 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
361 NewRunnableFunction(&ForceShutdownPlugin, 360 NewRunnableFunction(&ForceShutdownPlugin,
362 plugin.path)); 361 plugin.path));
363 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); 362 NPAPI::PluginList::Singleton()->RefreshPlugins();
364 webkit::npapi::PluginList::Singleton()->RemoveExtraPluginPath( 363 NPAPI::PluginList::Singleton()->RemoveExtraPluginPath(plugin.path);
365 plugin.path);
366 plugins_changed = true; 364 plugins_changed = true;
367 if (!plugin.is_public) 365 if (!plugin.is_public)
368 private_plugins_.erase(plugin.path); 366 private_plugins_.erase(plugin.path);
369 } 367 }
370 if (plugins_changed) 368 if (plugins_changed)
371 PurgePluginListCache(false); 369 PurgePluginListCache(false);
372 break; 370 break;
373 } 371 }
374 372
375 #if defined(OS_MACOSX) 373 #if defined(OS_MACOSX)
(...skipping 26 matching lines...) Expand all
402 // service, since we only care about this for extensions. 400 // service, since we only care about this for extensions.
403 const GURL& required_url = it->second; 401 const GURL& required_url = it->second;
404 return (url.scheme() == required_url.scheme() && 402 return (url.scheme() == required_url.scheme() &&
405 url.host() == required_url.host()); 403 url.host() == required_url.host());
406 } 404 }
407 405
408 void PluginService::RegisterPepperPlugins() { 406 void PluginService::RegisterPepperPlugins() {
409 std::vector<PepperPluginInfo> plugins; 407 std::vector<PepperPluginInfo> plugins;
410 PepperPluginRegistry::GetList(&plugins); 408 PepperPluginRegistry::GetList(&plugins);
411 for (size_t i = 0; i < plugins.size(); ++i) { 409 for (size_t i = 0; i < plugins.size(); ++i) {
412 webkit::npapi::PluginVersionInfo info; 410 NPAPI::PluginVersionInfo info;
413 info.path = plugins[i].path; 411 info.path = plugins[i].path;
414 info.product_name = plugins[i].name.empty() ? 412 info.product_name = plugins[i].name.empty() ?
415 plugins[i].path.BaseName().ToWStringHack() : 413 plugins[i].path.BaseName().ToWStringHack() :
416 ASCIIToWide(plugins[i].name); 414 ASCIIToWide(plugins[i].name);
417 info.file_description = ASCIIToWide(plugins[i].description); 415 info.file_description = ASCIIToWide(plugins[i].description);
418 info.file_extensions = ASCIIToWide(plugins[i].file_extensions); 416 info.file_extensions = ASCIIToWide(plugins[i].file_extensions);
419 info.file_description = ASCIIToWide(plugins[i].type_descriptions); 417 info.file_description = ASCIIToWide(plugins[i].type_descriptions);
420 info.mime_types = ASCIIToWide(JoinString(plugins[i].mime_types, '|')); 418 info.mime_types = ASCIIToWide(JoinString(plugins[i].mime_types, '|'));
421 419
422 // These NPAPI entry points will never be called. TODO(darin): Come up 420 // These NPAPI entry points will never be called. TODO(darin): Come up
423 // with a cleaner way to register pepper plugins with the NPAPI PluginList, 421 // with a cleaner way to register pepper plugins with the NPAPI PluginList,
424 // or perhaps refactor the PluginList to be less specific to NPAPI. 422 // or perhaps refactor the PluginList to be less specific to NPAPI.
425 memset(&info.entry_points, 0, sizeof(info.entry_points)); 423 memset(&info.entry_points, 0, sizeof(info.entry_points));
426 424
427 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info); 425 NPAPI::PluginList::Singleton()->RegisterInternalPlugin(info);
428 } 426 }
429 } 427 }
OLDNEW
« no previous file with comments | « chrome/browser/plugin_service.h ('k') | chrome/browser/plugin_service_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698