| OLD | NEW |
| 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 "content/browser/plugin_service_impl.h" | 5 #include "content/browser/plugin_service_impl.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 void PluginServiceImpl::OpenChannelToPpapiPlugin( | 335 void PluginServiceImpl::OpenChannelToPpapiPlugin( |
| 336 const FilePath& path, | 336 const FilePath& path, |
| 337 PpapiPluginProcessHost::PluginClient* client) { | 337 PpapiPluginProcessHost::PluginClient* client) { |
| 338 PpapiPluginProcessHost* plugin_host = FindOrStartPpapiPluginProcess( | 338 PpapiPluginProcessHost* plugin_host = FindOrStartPpapiPluginProcess( |
| 339 path, client); | 339 path, client); |
| 340 if (plugin_host) { | 340 if (plugin_host) { |
| 341 plugin_host->OpenChannelToPlugin(client); | 341 plugin_host->OpenChannelToPlugin(client); |
| 342 } else { | 342 } else { |
| 343 // Send error. | 343 // Send error. |
| 344 client->OnPpapiChannelOpened(base::kNullProcessHandle, | 344 client->OnPpapiChannelOpened(base::kNullProcessHandle, |
| 345 IPC::ChannelHandle()); | 345 IPC::ChannelHandle(), 0); |
| 346 } | 346 } |
| 347 } | 347 } |
| 348 | 348 |
| 349 void PluginServiceImpl::OpenChannelToPpapiBroker( | 349 void PluginServiceImpl::OpenChannelToPpapiBroker( |
| 350 const FilePath& path, | 350 const FilePath& path, |
| 351 PpapiPluginProcessHost::BrokerClient* client) { | 351 PpapiPluginProcessHost::BrokerClient* client) { |
| 352 PpapiPluginProcessHost* plugin_host = FindOrStartPpapiBrokerProcess(path); | 352 PpapiPluginProcessHost* plugin_host = FindOrStartPpapiBrokerProcess(path); |
| 353 if (plugin_host) { | 353 if (plugin_host) { |
| 354 plugin_host->OpenChannelToPlugin(client); | 354 plugin_host->OpenChannelToPlugin(client); |
| 355 } else { | 355 } else { |
| 356 // Send error. | 356 // Send error. |
| 357 client->OnPpapiChannelOpened(base::kNullProcessHandle, | 357 client->OnPpapiChannelOpened(base::kNullProcessHandle, |
| 358 IPC::ChannelHandle()); | 358 IPC::ChannelHandle(), 0); |
| 359 } | 359 } |
| 360 } | 360 } |
| 361 | 361 |
| 362 void PluginServiceImpl::CancelOpenChannelToNpapiPlugin( | 362 void PluginServiceImpl::CancelOpenChannelToNpapiPlugin( |
| 363 PluginProcessHost::Client* client) { | 363 PluginProcessHost::Client* client) { |
| 364 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 364 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 365 DCHECK(ContainsKey(pending_plugin_clients_, client)); | 365 DCHECK(ContainsKey(pending_plugin_clients_, client)); |
| 366 pending_plugin_clients_.erase(client); | 366 pending_plugin_clients_.erase(client); |
| 367 } | 367 } |
| 368 | 368 |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 ++it) { | 476 ++it) { |
| 477 if (it->path == plugin_path) { | 477 if (it->path == plugin_path) { |
| 478 *info = *it; | 478 *info = *it; |
| 479 return true; | 479 return true; |
| 480 } | 480 } |
| 481 } | 481 } |
| 482 | 482 |
| 483 return false; | 483 return false; |
| 484 } | 484 } |
| 485 | 485 |
| 486 string16 PluginServiceImpl::GetPluginDisplayNameByPath(const FilePath& path) { |
| 487 string16 plugin_name = path.LossyDisplayName(); |
| 488 webkit::WebPluginInfo info; |
| 489 if (PluginService::GetInstance()->GetPluginInfoByPath(path, &info) && |
| 490 !info.name.empty()) { |
| 491 plugin_name = info.name; |
| 492 #if defined(OS_MACOSX) |
| 493 // Many plugins on the Mac have .plugin in the actual name, which looks |
| 494 // terrible, so look for that and strip it off if present. |
| 495 const std::string kPluginExtension = ".plugin"; |
| 496 if (EndsWith(plugin_name, ASCIIToUTF16(kPluginExtension), true)) |
| 497 plugin_name.erase(plugin_name.length() - kPluginExtension.length()); |
| 498 #endif // OS_MACOSX |
| 499 } |
| 500 return plugin_name; |
| 501 } |
| 502 |
| 486 void PluginServiceImpl::GetPlugins(const GetPluginsCallback& callback) { | 503 void PluginServiceImpl::GetPlugins(const GetPluginsCallback& callback) { |
| 487 scoped_refptr<base::MessageLoopProxy> target_loop( | 504 scoped_refptr<base::MessageLoopProxy> target_loop( |
| 488 MessageLoop::current()->message_loop_proxy()); | 505 MessageLoop::current()->message_loop_proxy()); |
| 489 | 506 |
| 490 #if defined(OS_WIN) | 507 #if defined(OS_WIN) |
| 491 BrowserThread::GetBlockingPool()->PostWorkerTaskWithShutdownBehavior( | 508 BrowserThread::GetBlockingPool()->PostWorkerTaskWithShutdownBehavior( |
| 492 FROM_HERE, | 509 FROM_HERE, |
| 493 base::Bind(&PluginServiceImpl::GetPluginsInternal, base::Unretained(this), | 510 base::Bind(&PluginServiceImpl::GetPluginsInternal, base::Unretained(this), |
| 494 target_loop, callback), | 511 target_loop, callback), |
| 495 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); | 512 base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 plugin_list_->RegisterInternalPlugin(info, add_at_beginning); | 709 plugin_list_->RegisterInternalPlugin(info, add_at_beginning); |
| 693 } | 710 } |
| 694 | 711 |
| 695 string16 PluginServiceImpl::GetPluginGroupName(const std::string& plugin_name) { | 712 string16 PluginServiceImpl::GetPluginGroupName(const std::string& plugin_name) { |
| 696 return plugin_list_->GetPluginGroupName(plugin_name); | 713 return plugin_list_->GetPluginGroupName(plugin_name); |
| 697 } | 714 } |
| 698 | 715 |
| 699 webkit::npapi::PluginList* PluginServiceImpl::GetPluginList() { | 716 webkit::npapi::PluginList* PluginServiceImpl::GetPluginList() { |
| 700 return plugin_list_; | 717 return plugin_list_; |
| 701 } | 718 } |
| OLD | NEW |