OLD | NEW |
---|---|
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 "webkit/glue/plugins/pepper_resource_tracker.h" | 5 #include "webkit/glue/plugins/pepper_resource_tracker.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/lazy_instance.h" | |
10 #include "base/logging.h" | 11 #include "base/logging.h" |
11 #include "base/rand_util.h" | 12 #include "base/rand_util.h" |
12 #include "ppapi/c/pp_resource.h" | 13 #include "ppapi/c/pp_resource.h" |
13 #include "webkit/glue/plugins/pepper_resource.h" | 14 #include "webkit/glue/plugins/pepper_resource.h" |
14 | 15 |
16 static base::LazyInstance<pepper::ResourceTracker> g_resource_tracker( | |
17 base::LINKER_INITIALIZED); | |
Nico
2010/12/12 23:42:47
can you move this file to a different CL since the
Satish
2010/12/13 08:16:30
Done.
| |
18 | |
15 namespace pepper { | 19 namespace pepper { |
16 | 20 |
17 scoped_refptr<Resource> ResourceTracker::GetResource(PP_Resource res) const { | 21 scoped_refptr<Resource> ResourceTracker::GetResource(PP_Resource res) const { |
18 ResourceMap::const_iterator result = live_resources_.find(res); | 22 ResourceMap::const_iterator result = live_resources_.find(res); |
19 if (result == live_resources_.end()) { | 23 if (result == live_resources_.end()) { |
20 return scoped_refptr<Resource>(); | 24 return scoped_refptr<Resource>(); |
21 } | 25 } |
22 return result->second.first; | 26 return result->second.first; |
23 } | 27 } |
24 | 28 |
25 // static | 29 // static |
26 ResourceTracker* ResourceTracker::singleton_override_ = NULL; | 30 ResourceTracker* ResourceTracker::singleton_override_ = NULL; |
27 | 31 |
28 ResourceTracker::ResourceTracker() | 32 ResourceTracker::ResourceTracker() |
29 : last_id_(0) { | 33 : last_id_(0) { |
30 } | 34 } |
31 | 35 |
32 ResourceTracker::~ResourceTracker() { | 36 ResourceTracker::~ResourceTracker() { |
33 } | 37 } |
34 | 38 |
35 // static | 39 // static |
36 ResourceTracker* ResourceTracker::Get() { | 40 ResourceTracker* ResourceTracker::Get() { |
37 if (singleton_override_) | 41 if (singleton_override_) |
38 return singleton_override_; | 42 return singleton_override_; |
39 return Singleton<ResourceTracker>::get(); | 43 return g_resource_tracker.Pointer(); |
40 } | 44 } |
41 | 45 |
42 PP_Resource ResourceTracker::AddResource(Resource* resource) { | 46 PP_Resource ResourceTracker::AddResource(Resource* resource) { |
43 // If the plugin manages to create 4B resources... | 47 // If the plugin manages to create 4B resources... |
44 if (last_id_ == std::numeric_limits<PP_Resource>::max()) { | 48 if (last_id_ == std::numeric_limits<PP_Resource>::max()) { |
45 return 0; | 49 return 0; |
46 } | 50 } |
47 // Add the resource with plugin use-count 1. | 51 // Add the resource with plugin use-count 1. |
48 ++last_id_; | 52 ++last_id_; |
49 live_resources_.insert(std::make_pair(last_id_, std::make_pair(resource, 1))); | 53 live_resources_.insert(std::make_pair(last_id_, std::make_pair(resource, 1))); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
180 singleton_override_ = tracker; | 184 singleton_override_ = tracker; |
181 } | 185 } |
182 | 186 |
183 // static | 187 // static |
184 void ResourceTracker::ClearSingletonOverride() { | 188 void ResourceTracker::ClearSingletonOverride() { |
185 DCHECK(singleton_override_); | 189 DCHECK(singleton_override_); |
186 singleton_override_ = NULL; | 190 singleton_override_ = NULL; |
187 } | 191 } |
188 | 192 |
189 } // namespace pepper | 193 } // namespace pepper |
OLD | NEW |