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

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

Issue 6012002: Move the NPAPI files from webkit/glue/plugins to webkit/plugins/npapi and put... (Closed) Base URL: svn://chrome-svn/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_updater.h » ('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
37 #ifndef DISABLE_NACL 41 #ifndef DISABLE_NACL
38 #include "native_client/src/trusted/plugin/nacl_entry_points.h" 42 #include "native_client/src/trusted/plugin/nacl_entry_points.h"
39 #endif 43 #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"
43 44
44 #if defined(OS_CHROMEOS) 45 #if defined(OS_CHROMEOS)
45 #include "chrome/browser/chromeos/plugin_selection_policy.h" 46 #include "chrome/browser/chromeos/plugin_selection_policy.h"
46 #endif 47 #endif
47 48
48 #if defined(OS_MACOSX) 49 #if defined(OS_MACOSX)
49 static void NotifyPluginsOfActivation() { 50 static void NotifyPluginsOfActivation() {
50 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 51 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
51 52
52 for (BrowserChildProcessHost::Iterator iter(ChildProcessInfo::PLUGIN_PROCESS); 53 for (BrowserChildProcessHost::Iterator iter(ChildProcessInfo::PLUGIN_PROCESS);
53 !iter.Done(); ++iter) { 54 !iter.Done(); ++iter) {
54 PluginProcessHost* plugin = static_cast<PluginProcessHost*>(*iter); 55 PluginProcessHost* plugin = static_cast<PluginProcessHost*>(*iter);
55 plugin->OnAppActivation(); 56 plugin->OnAppActivation();
56 } 57 }
57 } 58 }
58 #endif 59 #endif
59 60
60 // static 61 // static
61 bool PluginService::enable_chrome_plugins_ = true; 62 bool PluginService::enable_chrome_plugins_ = true;
62 63
63 // static 64 // static
64 void PluginService::InitGlobalInstance(Profile* profile) { 65 void PluginService::InitGlobalInstance(Profile* profile) {
65 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 66 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
66 67
67 // We first group the plugins and then figure out which groups to disable. 68 // We first group the plugins and then figure out which groups to disable.
68 PluginUpdater::GetInstance()->DisablePluginGroupsFromPrefs(profile); 69 PluginUpdater::GetInstance()->DisablePluginGroupsFromPrefs(profile);
69 70
70 if (CommandLine::ForCurrentProcess()->HasSwitch( 71 if (CommandLine::ForCurrentProcess()->HasSwitch(
71 switches::kDisableOutdatedPlugins)) { 72 switches::kDisableOutdatedPlugins)) {
72 NPAPI::PluginList::Singleton()->DisableOutdatedPluginGroups(); 73 webkit::npapi::PluginList::Singleton()->DisableOutdatedPluginGroups();
73 } 74 }
74 75
75 // Have Chrome plugins write their data to the profile directory. 76 // Have Chrome plugins write their data to the profile directory.
76 GetInstance()->SetChromePluginDataDir(profile->GetPath()); 77 GetInstance()->SetChromePluginDataDir(profile->GetPath());
77 } 78 }
78 79
79 // static 80 // static
80 PluginService* PluginService::GetInstance() { 81 PluginService* PluginService::GetInstance() {
81 return Singleton<PluginService>::get(); 82 return Singleton<PluginService>::get();
82 } 83 }
83 84
84 // static 85 // static
85 void PluginService::EnableChromePlugins(bool enable) { 86 void PluginService::EnableChromePlugins(bool enable) {
86 enable_chrome_plugins_ = enable; 87 enable_chrome_plugins_ = enable;
87 } 88 }
88 89
89 PluginService::PluginService() 90 PluginService::PluginService()
90 : main_message_loop_(MessageLoop::current()), 91 : main_message_loop_(MessageLoop::current()),
91 resource_dispatcher_host_(NULL), 92 resource_dispatcher_host_(NULL),
92 ui_locale_(g_browser_process->GetApplicationLocale()) { 93 ui_locale_(g_browser_process->GetApplicationLocale()) {
93 RegisterPepperPlugins(); 94 RegisterPepperPlugins();
94 95
95 // Have the NPAPI plugin list search for Chrome plugins as well. 96 // Have the NPAPI plugin list search for Chrome plugins as well.
96 ChromePluginLib::RegisterPluginsWithNPAPI(); 97 ChromePluginLib::RegisterPluginsWithNPAPI();
97 98
98 // Load any specified on the command line as well. 99 // Load any specified on the command line as well.
99 const CommandLine* command_line = CommandLine::ForCurrentProcess(); 100 const CommandLine* command_line = CommandLine::ForCurrentProcess();
100 FilePath path = command_line->GetSwitchValuePath(switches::kLoadPlugin); 101 FilePath path = command_line->GetSwitchValuePath(switches::kLoadPlugin);
101 if (!path.empty()) 102 if (!path.empty())
102 NPAPI::PluginList::Singleton()->AddExtraPluginPath(path); 103 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(path);
103 path = command_line->GetSwitchValuePath(switches::kExtraPluginDir); 104 path = command_line->GetSwitchValuePath(switches::kExtraPluginDir);
104 if (!path.empty()) 105 if (!path.empty())
105 NPAPI::PluginList::Singleton()->AddExtraPluginDir(path); 106 webkit::npapi::PluginList::Singleton()->AddExtraPluginDir(path);
106 107
107 chrome::RegisterInternalDefaultPlugin(); 108 chrome::RegisterInternalDefaultPlugin();
108 109
109 // Register the internal Flash and PDF, if available. 110 // Register the internal Flash and PDF, if available.
110 if (!CommandLine::ForCurrentProcess()->HasSwitch( 111 if (!CommandLine::ForCurrentProcess()->HasSwitch(
111 switches::kDisableInternalFlash) && 112 switches::kDisableInternalFlash) &&
112 PathService::Get(chrome::FILE_FLASH_PLUGIN, &path)) { 113 PathService::Get(chrome::FILE_FLASH_PLUGIN, &path)) {
113 NPAPI::PluginList::Singleton()->AddExtraPluginPath(path); 114 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(path);
114 } 115 }
115 116
116 #ifndef DISABLE_NACL 117 #ifndef DISABLE_NACL
117 if (command_line->HasSwitch(switches::kInternalNaCl)) { 118 if (command_line->HasSwitch(switches::kInternalNaCl)) {
118 RegisterInternalNaClPlugin(); 119 RegisterInternalNaClPlugin();
119 } 120 }
120 #endif 121 #endif
121 122
122 #if defined(OS_CHROMEOS) 123 #if defined(OS_CHROMEOS)
123 plugin_selection_policy_ = new chromeos::PluginSelectionPolicy; 124 plugin_selection_policy_ = new chromeos::PluginSelectionPolicy;
(...skipping 14 matching lines...) Expand all
138 139
139 if (hklm_key_.StartWatching()) { 140 if (hklm_key_.StartWatching()) {
140 hklm_event_.reset(new base::WaitableEvent(hklm_key_.watch_event())); 141 hklm_event_.reset(new base::WaitableEvent(hklm_key_.watch_event()));
141 hklm_watcher_.StartWatching(hklm_event_.get(), this); 142 hklm_watcher_.StartWatching(hklm_event_.get(), this);
142 } 143 }
143 #elif defined(OS_POSIX) && !defined(OS_MACOSX) 144 #elif defined(OS_POSIX) && !defined(OS_MACOSX)
144 // Also find plugins in a user-specific plugins dir, 145 // Also find plugins in a user-specific plugins dir,
145 // e.g. ~/.config/chromium/Plugins. 146 // e.g. ~/.config/chromium/Plugins.
146 FilePath user_data_dir; 147 FilePath user_data_dir;
147 if (PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) { 148 if (PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)) {
148 NPAPI::PluginList::Singleton()->AddExtraPluginDir( 149 webkit::npapi::PluginList::Singleton()->AddExtraPluginDir(
149 user_data_dir.Append("Plugins")); 150 user_data_dir.Append("Plugins"));
150 } 151 }
151 #endif 152 #endif
152 153
153 registrar_.Add(this, NotificationType::EXTENSION_LOADED, 154 registrar_.Add(this, NotificationType::EXTENSION_LOADED,
154 NotificationService::AllSources()); 155 NotificationService::AllSources());
155 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED, 156 registrar_.Add(this, NotificationType::EXTENSION_UNLOADED,
156 NotificationService::AllSources()); 157 NotificationService::AllSources());
157 #if defined(OS_MACOSX) 158 #if defined(OS_MACOSX)
158 // We need to know when the browser comes forward so we can bring modal plugin 159 // 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
210 } 211 }
211 212
212 PluginProcessHost* PluginService::FindOrStartPluginProcess( 213 PluginProcessHost* PluginService::FindOrStartPluginProcess(
213 const FilePath& plugin_path) { 214 const FilePath& plugin_path) {
214 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 215 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
215 216
216 PluginProcessHost* plugin_host = FindPluginProcess(plugin_path); 217 PluginProcessHost* plugin_host = FindPluginProcess(plugin_path);
217 if (plugin_host) 218 if (plugin_host)
218 return plugin_host; 219 return plugin_host;
219 220
220 WebPluginInfo info; 221 webkit::npapi::WebPluginInfo info;
221 if (!NPAPI::PluginList::Singleton()->GetPluginInfoByPath( 222 if (!webkit::npapi::PluginList::Singleton()->GetPluginInfoByPath(
222 plugin_path, &info)) { 223 plugin_path, &info)) {
223 return NULL; 224 return NULL;
224 } 225 }
225 226
226 // This plugin isn't loaded by any plugin process, so create a new process. 227 // This plugin isn't loaded by any plugin process, so create a new process.
227 scoped_ptr<PluginProcessHost> new_host(new PluginProcessHost()); 228 scoped_ptr<PluginProcessHost> new_host(new PluginProcessHost());
228 if (!new_host->Init(info, ui_locale_)) { 229 if (!new_host->Init(info, ui_locale_)) {
229 NOTREACHED(); // Init is not expected to fail 230 NOTREACHED(); // Init is not expected to fail
230 return NULL; 231 return NULL;
231 } 232 }
232 233
(...skipping 11 matching lines...) Expand all
244 NewRunnableMethod( 245 NewRunnableMethod(
245 this, &PluginService::GetAllowedPluginForOpenChannelToPlugin, 246 this, &PluginService::GetAllowedPluginForOpenChannelToPlugin,
246 url, mime_type, client)); 247 url, mime_type, client));
247 } 248 }
248 249
249 void PluginService::GetAllowedPluginForOpenChannelToPlugin( 250 void PluginService::GetAllowedPluginForOpenChannelToPlugin(
250 const GURL& url, 251 const GURL& url,
251 const std::string& mime_type, 252 const std::string& mime_type,
252 PluginProcessHost::Client* client) { 253 PluginProcessHost::Client* client) {
253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 254 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
254 WebPluginInfo info; 255 webkit::npapi::WebPluginInfo info;
255 bool found = GetFirstAllowedPluginInfo(url, mime_type, &info, NULL); 256 bool found = GetFirstAllowedPluginInfo(url, mime_type, &info, NULL);
256 FilePath plugin_path; 257 FilePath plugin_path;
257 if (found && info.enabled) 258 if (found && info.enabled)
258 plugin_path = FilePath(info.path); 259 plugin_path = FilePath(info.path);
259 260
260 // Now we jump back to the IO thread to finish opening the channel. 261 // Now we jump back to the IO thread to finish opening the channel.
261 BrowserThread::PostTask( 262 BrowserThread::PostTask(
262 BrowserThread::IO, FROM_HERE, 263 BrowserThread::IO, FROM_HERE,
263 NewRunnableMethod( 264 NewRunnableMethod(
264 this, &PluginService::FinishOpenChannelToPlugin, 265 this, &PluginService::FinishOpenChannelToPlugin,
265 plugin_path, client)); 266 plugin_path, client));
266 } 267 }
267 268
268 void PluginService::FinishOpenChannelToPlugin( 269 void PluginService::FinishOpenChannelToPlugin(
269 const FilePath& plugin_path, 270 const FilePath& plugin_path,
270 PluginProcessHost::Client* client) { 271 PluginProcessHost::Client* client) {
271 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
272 273
273 PluginProcessHost* plugin_host = FindOrStartPluginProcess(plugin_path); 274 PluginProcessHost* plugin_host = FindOrStartPluginProcess(plugin_path);
274 if (plugin_host) 275 if (plugin_host)
275 plugin_host->OpenChannelToPlugin(client); 276 plugin_host->OpenChannelToPlugin(client);
276 else 277 else
277 client->OnError(); 278 client->OnError();
278 } 279 }
279 280
280 bool PluginService::GetFirstAllowedPluginInfo( 281 bool PluginService::GetFirstAllowedPluginInfo(
281 const GURL& url, 282 const GURL& url,
282 const std::string& mime_type, 283 const std::string& mime_type,
283 WebPluginInfo* info, 284 webkit::npapi::WebPluginInfo* info,
284 std::string* actual_mime_type) { 285 std::string* actual_mime_type) {
285 // GetPluginInfoArray may need to load the plugins, so we need to be 286 // GetPluginInfoArray may need to load the plugins, so we need to be
286 // on the FILE thread. 287 // on the FILE thread.
287 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 288 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
288 bool allow_wildcard = true; 289 bool allow_wildcard = true;
289 #if defined(OS_CHROMEOS) 290 #if defined(OS_CHROMEOS)
290 std::vector<WebPluginInfo> info_array; 291 std::vector<webkit::npapi::WebPluginInfo> info_array;
291 std::vector<std::string> actual_mime_types; 292 std::vector<std::string> actual_mime_types;
292 NPAPI::PluginList::Singleton()->GetPluginInfoArray( 293 webkit::npapi::PluginList::Singleton()->GetPluginInfoArray(
293 url, mime_type, allow_wildcard, &info_array, &actual_mime_types); 294 url, mime_type, allow_wildcard, &info_array, &actual_mime_types);
294 295
295 // Now we filter by the plugin selection policy. 296 // Now we filter by the plugin selection policy.
296 int allowed_index = plugin_selection_policy_->FindFirstAllowed(url, 297 int allowed_index = plugin_selection_policy_->FindFirstAllowed(url,
297 info_array); 298 info_array);
298 if (!info_array.empty() && allowed_index >= 0) { 299 if (!info_array.empty() && allowed_index >= 0) {
299 *info = info_array[allowed_index]; 300 *info = info_array[allowed_index];
300 if (actual_mime_type) 301 if (actual_mime_type)
301 *actual_mime_type = actual_mime_types[allowed_index]; 302 *actual_mime_type = actual_mime_types[allowed_index];
302 return true; 303 return true;
303 } 304 }
304 return false; 305 return false;
305 #else 306 #else
306 return NPAPI::PluginList::Singleton()->GetPluginInfo( 307 return webkit::npapi::PluginList::Singleton()->GetPluginInfo(
307 url, mime_type, allow_wildcard, info, actual_mime_type); 308 url, mime_type, allow_wildcard, info, actual_mime_type);
308 #endif 309 #endif
309 } 310 }
310 311
311 static void PurgePluginListCache(bool reload_pages) { 312 static void PurgePluginListCache(bool reload_pages) {
312 for (RenderProcessHost::iterator it = RenderProcessHost::AllHostsIterator(); 313 for (RenderProcessHost::iterator it = RenderProcessHost::AllHostsIterator();
313 !it.IsAtEnd(); it.Advance()) { 314 !it.IsAtEnd(); it.Advance()) {
314 it.GetCurrentValue()->Send(new ViewMsg_PurgePluginListCache(reload_pages)); 315 it.GetCurrentValue()->Send(new ViewMsg_PurgePluginListCache(reload_pages));
315 } 316 }
316 } 317 }
317 318
318 void PluginService::OnWaitableEventSignaled( 319 void PluginService::OnWaitableEventSignaled(
319 base::WaitableEvent* waitable_event) { 320 base::WaitableEvent* waitable_event) {
320 #if defined(OS_WIN) 321 #if defined(OS_WIN)
321 if (waitable_event == hkcu_event_.get()) { 322 if (waitable_event == hkcu_event_.get()) {
322 hkcu_key_.StartWatching(); 323 hkcu_key_.StartWatching();
323 } else { 324 } else {
324 hklm_key_.StartWatching(); 325 hklm_key_.StartWatching();
325 } 326 }
326 327
327 NPAPI::PluginList::Singleton()->RefreshPlugins(); 328 webkit::npapi::PluginList::Singleton()->RefreshPlugins();
328 PurgePluginListCache(true); 329 PurgePluginListCache(true);
329 #endif // defined(OS_WIN) 330 #endif // defined(OS_WIN)
330 } 331 }
331 332
332 static void ForceShutdownPlugin(const FilePath& plugin_path) { 333 static void ForceShutdownPlugin(const FilePath& plugin_path) {
333 PluginProcessHost* plugin = 334 PluginProcessHost* plugin =
334 PluginService::GetInstance()->FindPluginProcess(plugin_path); 335 PluginService::GetInstance()->FindPluginProcess(plugin_path);
335 if (plugin) 336 if (plugin)
336 plugin->ForceShutdown(); 337 plugin->ForceShutdown();
337 } 338 }
338 339
339 void PluginService::Observe(NotificationType type, 340 void PluginService::Observe(NotificationType type,
340 const NotificationSource& source, 341 const NotificationSource& source,
341 const NotificationDetails& details) { 342 const NotificationDetails& details) {
342 switch (type.value) { 343 switch (type.value) {
343 case NotificationType::EXTENSION_LOADED: { 344 case NotificationType::EXTENSION_LOADED: {
344 const Extension* extension = Details<const Extension>(details).ptr(); 345 const Extension* extension = Details<const Extension>(details).ptr();
345 bool plugins_changed = false; 346 bool plugins_changed = false;
346 for (size_t i = 0; i < extension->plugins().size(); ++i) { 347 for (size_t i = 0; i < extension->plugins().size(); ++i) {
347 const Extension::PluginInfo& plugin = extension->plugins()[i]; 348 const Extension::PluginInfo& plugin = extension->plugins()[i];
348 NPAPI::PluginList::Singleton()->RefreshPlugins(); 349 webkit::npapi::PluginList::Singleton()->RefreshPlugins();
349 NPAPI::PluginList::Singleton()->AddExtraPluginPath(plugin.path); 350 webkit::npapi::PluginList::Singleton()->AddExtraPluginPath(plugin.path);
350 plugins_changed = true; 351 plugins_changed = true;
351 if (!plugin.is_public) 352 if (!plugin.is_public)
352 private_plugins_[plugin.path] = extension->url(); 353 private_plugins_[plugin.path] = extension->url();
353 } 354 }
354 if (plugins_changed) 355 if (plugins_changed)
355 PurgePluginListCache(false); 356 PurgePluginListCache(false);
356 break; 357 break;
357 } 358 }
358 359
359 case NotificationType::EXTENSION_UNLOADED: { 360 case NotificationType::EXTENSION_UNLOADED: {
360 const Extension* extension = Details<const Extension>(details).ptr(); 361 const Extension* extension = Details<const Extension>(details).ptr();
361 bool plugins_changed = false; 362 bool plugins_changed = false;
362 for (size_t i = 0; i < extension->plugins().size(); ++i) { 363 for (size_t i = 0; i < extension->plugins().size(); ++i) {
363 const Extension::PluginInfo& plugin = extension->plugins()[i]; 364 const Extension::PluginInfo& plugin = extension->plugins()[i];
364 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 365 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE,
365 NewRunnableFunction(&ForceShutdownPlugin, 366 NewRunnableFunction(&ForceShutdownPlugin,
366 plugin.path)); 367 plugin.path));
367 NPAPI::PluginList::Singleton()->RefreshPlugins(); 368 webkit::npapi::PluginList::Singleton()->RefreshPlugins();
368 NPAPI::PluginList::Singleton()->RemoveExtraPluginPath(plugin.path); 369 webkit::npapi::PluginList::Singleton()->RemoveExtraPluginPath(
370 plugin.path);
369 plugins_changed = true; 371 plugins_changed = true;
370 if (!plugin.is_public) 372 if (!plugin.is_public)
371 private_plugins_.erase(plugin.path); 373 private_plugins_.erase(plugin.path);
372 } 374 }
373 if (plugins_changed) 375 if (plugins_changed)
374 PurgePluginListCache(false); 376 PurgePluginListCache(false);
375 break; 377 break;
376 } 378 }
377 379
378 #if defined(OS_MACOSX) 380 #if defined(OS_MACOSX)
(...skipping 26 matching lines...) Expand all
405 // service, since we only care about this for extensions. 407 // service, since we only care about this for extensions.
406 const GURL& required_url = it->second; 408 const GURL& required_url = it->second;
407 return (url.scheme() == required_url.scheme() && 409 return (url.scheme() == required_url.scheme() &&
408 url.host() == required_url.host()); 410 url.host() == required_url.host());
409 } 411 }
410 412
411 void PluginService::RegisterPepperPlugins() { 413 void PluginService::RegisterPepperPlugins() {
412 std::vector<PepperPluginInfo> plugins; 414 std::vector<PepperPluginInfo> plugins;
413 PepperPluginRegistry::GetList(&plugins); 415 PepperPluginRegistry::GetList(&plugins);
414 for (size_t i = 0; i < plugins.size(); ++i) { 416 for (size_t i = 0; i < plugins.size(); ++i) {
415 NPAPI::PluginVersionInfo info; 417 webkit::npapi::PluginVersionInfo info;
416 info.path = plugins[i].path; 418 info.path = plugins[i].path;
417 info.product_name = plugins[i].name.empty() ? 419 info.product_name = plugins[i].name.empty() ?
418 plugins[i].path.BaseName().ToWStringHack() : 420 plugins[i].path.BaseName().ToWStringHack() :
419 ASCIIToWide(plugins[i].name); 421 ASCIIToWide(plugins[i].name);
420 info.file_description = ASCIIToWide(plugins[i].description); 422 info.file_description = ASCIIToWide(plugins[i].description);
421 info.file_extensions = ASCIIToWide(plugins[i].file_extensions); 423 info.file_extensions = ASCIIToWide(plugins[i].file_extensions);
422 info.file_description = ASCIIToWide(plugins[i].type_descriptions); 424 info.file_description = ASCIIToWide(plugins[i].type_descriptions);
423 info.mime_types = ASCIIToWide(JoinString(plugins[i].mime_types, '|')); 425 info.mime_types = ASCIIToWide(JoinString(plugins[i].mime_types, '|'));
424 426
425 // These NPAPI entry points will never be called. TODO(darin): Come up 427 // These NPAPI entry points will never be called. TODO(darin): Come up
426 // with a cleaner way to register pepper plugins with the NPAPI PluginList, 428 // with a cleaner way to register pepper plugins with the NPAPI PluginList,
427 // or perhaps refactor the PluginList to be less specific to NPAPI. 429 // or perhaps refactor the PluginList to be less specific to NPAPI.
428 memset(&info.entry_points, 0, sizeof(info.entry_points)); 430 memset(&info.entry_points, 0, sizeof(info.entry_points));
429 431
430 NPAPI::PluginList::Singleton()->RegisterInternalPlugin(info); 432 webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin(info);
431 } 433 }
432 } 434 }
OLDNEW
« no previous file with comments | « chrome/browser/plugin_service.h ('k') | chrome/browser/plugin_updater.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698