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 "content/browser/plugin_service.h" | 5 #include "content/browser/plugin_service.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 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 // A callback for GetPlugins() that then gets the freshly loaded plugin groups | 55 // A callback for GetPlugins() that then gets the freshly loaded plugin groups |
56 // and runs the callback for GetPluginGroups(). | 56 // and runs the callback for GetPluginGroups(). |
57 static void GetPluginsForGroupsCallback( | 57 static void GetPluginsForGroupsCallback( |
58 const PluginService::GetPluginGroupsCallback& callback, | 58 const PluginService::GetPluginGroupsCallback& callback, |
59 const std::vector<webkit::WebPluginInfo>& plugins) { | 59 const std::vector<webkit::WebPluginInfo>& plugins) { |
60 std::vector<webkit::npapi::PluginGroup> groups; | 60 std::vector<webkit::npapi::PluginGroup> groups; |
61 webkit::npapi::PluginList::Singleton()->GetPluginGroups(false, &groups); | 61 webkit::npapi::PluginList::Singleton()->GetPluginGroups(false, &groups); |
62 callback.Run(groups); | 62 callback.Run(groups); |
63 } | 63 } |
64 | 64 |
| 65 static void GetPluginsAndIgnoreCallback( |
| 66 const base::Closure& callback, |
| 67 const std::vector<webkit::WebPluginInfo>& plugins) { |
| 68 callback.Run(); |
| 69 } |
| 70 |
65 // Callback set on the PluginList to assert that plugin loading happens on the | 71 // Callback set on the PluginList to assert that plugin loading happens on the |
66 // correct thread. | 72 // correct thread. |
67 void WillLoadPluginsCallback() { | 73 void WillLoadPluginsCallback() { |
68 // TODO(rsesek): Change these to CHECKs. | 74 // TODO(rsesek): Change these to CHECKs. |
69 #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MACOSX)) | 75 #if defined(OS_WIN) || (defined(OS_POSIX) && !defined(OS_MACOSX)) |
70 LOG_IF(ERROR, !BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 76 LOG_IF(ERROR, !BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
71 #else | 77 #else |
72 LOG(ERROR) << "Plugin loading should happen out-of-process."; | 78 LOG(ERROR) << "Plugin loading should happen out-of-process."; |
73 #endif | 79 #endif |
74 } | 80 } |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 | 481 |
476 PluginProcessHost* plugin_host = FindOrStartNpapiPluginProcess(plugin_path); | 482 PluginProcessHost* plugin_host = FindOrStartNpapiPluginProcess(plugin_path); |
477 if (plugin_host) { | 483 if (plugin_host) { |
478 client->OnFoundPluginProcessHost(plugin_host); | 484 client->OnFoundPluginProcessHost(plugin_host); |
479 plugin_host->OpenChannelToPlugin(client); | 485 plugin_host->OpenChannelToPlugin(client); |
480 } else { | 486 } else { |
481 client->OnError(); | 487 client->OnError(); |
482 } | 488 } |
483 } | 489 } |
484 | 490 |
| 491 bool PluginService::GetPluginInfoArray( |
| 492 const GURL& url, |
| 493 const std::string& mime_type, |
| 494 bool allow_wildcard, |
| 495 std::vector<webkit::WebPluginInfo>* plugins, |
| 496 std::vector<std::string>* actual_mime_types) { |
| 497 bool use_stale = false; |
| 498 webkit::npapi::PluginList::Singleton()->GetPluginInfoArray( |
| 499 url, mime_type, allow_wildcard, &use_stale, plugins, actual_mime_types); |
| 500 return use_stale; |
| 501 } |
| 502 |
485 bool PluginService::GetPluginInfo(int render_process_id, | 503 bool PluginService::GetPluginInfo(int render_process_id, |
486 int render_view_id, | 504 int render_view_id, |
487 const content::ResourceContext& context, | 505 const content::ResourceContext& context, |
488 const GURL& url, | 506 const GURL& url, |
489 const GURL& page_url, | 507 const GURL& page_url, |
490 const std::string& mime_type, | 508 const std::string& mime_type, |
491 bool allow_wildcard, | 509 bool allow_wildcard, |
492 bool* use_stale, | 510 bool* use_stale, |
493 webkit::WebPluginInfo* info, | 511 webkit::WebPluginInfo* info, |
494 std::string* actual_mime_type) { | 512 std::string* actual_mime_type) { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
561 const PluginService::GetPluginsCallback& callback) { | 579 const PluginService::GetPluginsCallback& callback) { |
562 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 580 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
563 | 581 |
564 std::vector<webkit::WebPluginInfo> plugins; | 582 std::vector<webkit::WebPluginInfo> plugins; |
565 webkit::npapi::PluginList::Singleton()->GetPlugins(&plugins); | 583 webkit::npapi::PluginList::Singleton()->GetPlugins(&plugins); |
566 | 584 |
567 target_loop->PostTask(FROM_HERE, | 585 target_loop->PostTask(FROM_HERE, |
568 base::Bind(&RunGetPluginsCallback, callback, plugins)); | 586 base::Bind(&RunGetPluginsCallback, callback, plugins)); |
569 } | 587 } |
570 | 588 |
| 589 void PluginService::EnsurePluginsLoaded(const base::Closure& callback) { |
| 590 GetPlugins(base::Bind(&GetPluginsAndIgnoreCallback, callback)); |
| 591 } |
| 592 |
571 void PluginService::OnWaitableEventSignaled( | 593 void PluginService::OnWaitableEventSignaled( |
572 base::WaitableEvent* waitable_event) { | 594 base::WaitableEvent* waitable_event) { |
573 #if defined(OS_WIN) | 595 #if defined(OS_WIN) |
574 if (waitable_event == hkcu_event_.get()) { | 596 if (waitable_event == hkcu_event_.get()) { |
575 hkcu_key_.StartWatching(); | 597 hkcu_key_.StartWatching(); |
576 } else { | 598 } else { |
577 hklm_key_.StartWatching(); | 599 hklm_key_.StartWatching(); |
578 } | 600 } |
579 | 601 |
580 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); | 602 webkit::npapi::PluginList::Singleton()->RefreshPlugins(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
645 #if defined(OS_POSIX) && !defined(OS_MACOSX) | 667 #if defined(OS_POSIX) && !defined(OS_MACOSX) |
646 // static | 668 // static |
647 void PluginService::RegisterFilePathWatcher( | 669 void PluginService::RegisterFilePathWatcher( |
648 FilePathWatcher *watcher, | 670 FilePathWatcher *watcher, |
649 const FilePath& path, | 671 const FilePath& path, |
650 FilePathWatcher::Delegate* delegate) { | 672 FilePathWatcher::Delegate* delegate) { |
651 bool result = watcher->Watch(path, delegate); | 673 bool result = watcher->Watch(path, delegate); |
652 DCHECK(result); | 674 DCHECK(result); |
653 } | 675 } |
654 #endif | 676 #endif |
OLD | NEW |