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

Side by Side Diff: chrome/common/chrome_plugin_lib.cc

Issue 6001010: Move platform_thread to base/threading and put in the base namespace. I left ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 9 years, 11 months 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/ui/tests/browser_uitest.cc ('k') | chrome/gpu/gpu_main.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 "chrome/common/chrome_plugin_lib.h" 5 #include "chrome/common/chrome_plugin_lib.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/hash_tables.h" 8 #include "base/hash_tables.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
11 #include "base/path_service.h" 11 #include "base/path_service.h"
12 #include "base/perftimer.h" 12 #include "base/perftimer.h"
13 #include "base/string_util.h"
13 #include "base/thread.h" 14 #include "base/thread.h"
14 #if defined(OS_WIN) 15 #include "base/threading/platform_thread.h"
15 #include "base/win/registry.h"
16 #endif
17 #include "base/string_util.h"
18 #include "chrome/common/chrome_counters.h" 16 #include "chrome/common/chrome_counters.h"
19 #include "chrome/common/chrome_switches.h" 17 #include "chrome/common/chrome_switches.h"
20 #include "chrome/common/notification_service.h" 18 #include "chrome/common/notification_service.h"
21 #include "chrome/common/chrome_paths.h" 19 #include "chrome/common/chrome_paths.h"
22 #include "webkit/plugins/npapi/plugin_list.h" 20 #include "webkit/plugins/npapi/plugin_list.h"
23 21
22 #if defined(OS_WIN)
23 #include "base/win/registry.h"
24 #endif
25
24 using base::TimeDelta; 26 using base::TimeDelta;
25 27
26 // TODO(port): revisit when plugins happier 28 // TODO(port): revisit when plugins happier
27 #if defined(OS_WIN) 29 #if defined(OS_WIN)
28 const wchar_t ChromePluginLib::kRegistryChromePlugins[] = 30 const wchar_t ChromePluginLib::kRegistryChromePlugins[] =
29 L"Software\\Google\\Chrome\\Plugins"; 31 L"Software\\Google\\Chrome\\Plugins";
30 static const wchar_t kRegistryLoadOnStartup[] = L"LoadOnStartup"; 32 static const wchar_t kRegistryLoadOnStartup[] = L"LoadOnStartup";
31 static const wchar_t kRegistryPath[] = L"Path"; 33 static const wchar_t kRegistryPath[] = L"Path";
32 #endif 34 #endif
33 35
34 typedef base::hash_map<FilePath, scoped_refptr<ChromePluginLib> > 36 typedef base::hash_map<FilePath, scoped_refptr<ChromePluginLib> >
35 PluginMap; 37 PluginMap;
36 38
37 // A map of all the instantiated plugins. 39 // A map of all the instantiated plugins.
38 static PluginMap* g_loaded_libs; 40 static PluginMap* g_loaded_libs;
39 41
40 // The thread plugins are loaded and used in, lazily initialized upon 42 // The thread plugins are loaded and used in, lazily initialized upon
41 // the first creation call. 43 // the first creation call.
42 static PlatformThreadId g_plugin_thread_id = 0; 44 static base::PlatformThreadId g_plugin_thread_id = 0;
43 static MessageLoop* g_plugin_thread_loop = NULL; 45 static MessageLoop* g_plugin_thread_loop = NULL;
44 46
45 static bool IsSingleProcessMode() { 47 static bool IsSingleProcessMode() {
46 // We don't support ChromePlugins in single-process mode. 48 // We don't support ChromePlugins in single-process mode.
47 return CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess); 49 return CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess);
48 } 50 }
49 51
50 // static 52 // static
51 bool ChromePluginLib::IsInitialized() { 53 bool ChromePluginLib::IsInitialized() {
52 return (g_loaded_libs != NULL); 54 return (g_loaded_libs != NULL);
53 } 55 }
54 56
55 // static 57 // static
56 ChromePluginLib* ChromePluginLib::Create(const FilePath& filename, 58 ChromePluginLib* ChromePluginLib::Create(const FilePath& filename,
57 const CPBrowserFuncs* bfuncs) { 59 const CPBrowserFuncs* bfuncs) {
58 // Keep a map of loaded plugins to ensure we only load each library once. 60 // Keep a map of loaded plugins to ensure we only load each library once.
59 if (!g_loaded_libs) { 61 if (!g_loaded_libs) {
60 g_loaded_libs = new PluginMap(); 62 g_loaded_libs = new PluginMap();
61 g_plugin_thread_id = PlatformThread::CurrentId(); 63 g_plugin_thread_id = base::PlatformThread::CurrentId();
62 g_plugin_thread_loop = MessageLoop::current(); 64 g_plugin_thread_loop = MessageLoop::current();
63 } 65 }
64 DCHECK(IsPluginThread()); 66 DCHECK(IsPluginThread());
65 67
66 PluginMap::const_iterator iter = g_loaded_libs->find(filename); 68 PluginMap::const_iterator iter = g_loaded_libs->find(filename);
67 if (iter != g_loaded_libs->end()) 69 if (iter != g_loaded_libs->end())
68 return iter->second; 70 return iter->second;
69 71
70 scoped_refptr<ChromePluginLib> plugin(new ChromePluginLib(filename)); 72 scoped_refptr<ChromePluginLib> plugin(new ChromePluginLib(filename));
71 if (!plugin->CP_Initialize(bfuncs)) 73 if (!plugin->CP_Initialize(bfuncs))
(...skipping 18 matching lines...) Expand all
90 DCHECK(g_loaded_libs); 92 DCHECK(g_loaded_libs);
91 PluginMap::iterator iter = g_loaded_libs->find(filename); 93 PluginMap::iterator iter = g_loaded_libs->find(filename);
92 if (iter != g_loaded_libs->end()) { 94 if (iter != g_loaded_libs->end()) {
93 iter->second->Unload(); 95 iter->second->Unload();
94 g_loaded_libs->erase(iter); 96 g_loaded_libs->erase(iter);
95 } 97 }
96 } 98 }
97 99
98 // static 100 // static
99 bool ChromePluginLib::IsPluginThread() { 101 bool ChromePluginLib::IsPluginThread() {
100 return PlatformThread::CurrentId() == g_plugin_thread_id; 102 return base::PlatformThread::CurrentId() == g_plugin_thread_id;
101 } 103 }
102 104
103 // static 105 // static
104 MessageLoop* ChromePluginLib::GetPluginThreadLoop() { 106 MessageLoop* ChromePluginLib::GetPluginThreadLoop() {
105 return g_plugin_thread_loop; 107 return g_plugin_thread_loop;
106 } 108 }
107 109
108 // static 110 // static
109 void ChromePluginLib::RegisterPluginsWithNPAPI() { 111 void ChromePluginLib::RegisterPluginsWithNPAPI() {
110 // We don't support ChromePlugins in single-process mode. 112 // We don't support ChromePlugins in single-process mode.
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 if (initialized_) 283 if (initialized_)
282 CP_Shutdown(); 284 CP_Shutdown();
283 285
284 #if defined(OS_WIN) 286 #if defined(OS_WIN)
285 if (module_) { 287 if (module_) {
286 FreeLibrary(module_); 288 FreeLibrary(module_);
287 module_ = 0; 289 module_ = 0;
288 } 290 }
289 #endif 291 #endif
290 } 292 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/tests/browser_uitest.cc ('k') | chrome/gpu/gpu_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698