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

Side by Side Diff: content/common/np_channel_base.cc

Issue 8491043: Allow linker initialization of lazy instance (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: willchan comments + rebase Created 9 years, 1 month 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 | « content/common/net/url_fetcher_impl.cc ('k') | content/common/socket_stream_dispatcher.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) 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/common/np_channel_base.h" 5 #include "content/common/np_channel_base.h"
6 6
7 #include <stack> 7 #include <stack>
8 8
9 #include "base/auto_reset.h" 9 #include "base/auto_reset.h"
10 #include "base/hash_tables.h" 10 #include "base/hash_tables.h"
11 #include "base/lazy_instance.h" 11 #include "base/lazy_instance.h"
12 #include "base/string_number_conversions.h" 12 #include "base/string_number_conversions.h"
13 #include "ipc/ipc_sync_message.h" 13 #include "ipc/ipc_sync_message.h"
14 14
15 #if defined(OS_POSIX) 15 #if defined(OS_POSIX)
16 #include "ipc/ipc_channel_posix.h" 16 #include "ipc/ipc_channel_posix.h"
17 #endif 17 #endif
18 18
19 typedef base::hash_map<std::string, scoped_refptr<NPChannelBase> > ChannelMap; 19 typedef base::hash_map<std::string, scoped_refptr<NPChannelBase> > ChannelMap;
20 static base::LazyInstance<ChannelMap, 20 static base::LazyInstance<ChannelMap,
21 base::LeakyLazyInstanceTraits<ChannelMap> > 21 base::LeakyLazyInstanceTraits<ChannelMap> >
22 g_channels(base::LINKER_INITIALIZED); 22 g_channels = LAZY_INSTANCE_INITIALIZER;
23 23
24 typedef std::stack<scoped_refptr<NPChannelBase> > NPChannelRefStack; 24 typedef std::stack<scoped_refptr<NPChannelBase> > NPChannelRefStack;
25 static base::LazyInstance<NPChannelRefStack, 25 static base::LazyInstance<NPChannelRefStack,
26 base::LeakyLazyInstanceTraits<NPChannelRefStack> > 26 base::LeakyLazyInstanceTraits<NPChannelRefStack> >
27 g_lazy_channel_stack(base::LINKER_INITIALIZED); 27 g_lazy_channel_stack = LAZY_INSTANCE_INITIALIZER;
28 28
29 static int next_pipe_id = 0; 29 static int next_pipe_id = 0;
30 30
31 NPChannelBase* NPChannelBase::GetChannel( 31 NPChannelBase* NPChannelBase::GetChannel(
32 const IPC::ChannelHandle& channel_handle, IPC::Channel::Mode mode, 32 const IPC::ChannelHandle& channel_handle, IPC::Channel::Mode mode,
33 ChannelFactory factory, base::MessageLoopProxy* ipc_message_loop, 33 ChannelFactory factory, base::MessageLoopProxy* ipc_message_loop,
34 bool create_pipe_now, base::WaitableEvent* shutdown_event) { 34 bool create_pipe_now, base::WaitableEvent* shutdown_event) {
35 scoped_refptr<NPChannelBase> channel; 35 scoped_refptr<NPChannelBase> channel;
36 std::string channel_key = channel_handle.name; 36 std::string channel_key = channel_handle.name;
37 ChannelMap::const_iterator iter = g_channels.Get().find(channel_key); 37 ChannelMap::const_iterator iter = g_channels.Get().find(channel_key);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 270
271 void NPChannelBase::RemoveMappingForNPObjectStub(int route_id, 271 void NPChannelBase::RemoveMappingForNPObjectStub(int route_id,
272 NPObject* object) { 272 NPObject* object) {
273 DCHECK(object != NULL); 273 DCHECK(object != NULL);
274 stub_map_.erase(object); 274 stub_map_.erase(object);
275 } 275 }
276 276
277 void NPChannelBase::RemoveMappingForNPObjectProxy(int route_id) { 277 void NPChannelBase::RemoveMappingForNPObjectProxy(int route_id) {
278 proxy_map_.erase(route_id); 278 proxy_map_.erase(route_id);
279 } 279 }
OLDNEW
« no previous file with comments | « content/common/net/url_fetcher_impl.cc ('k') | content/common/socket_stream_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698