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/plugins/ppapi/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/plugins/ppapi/resource.h" |
14 | 15 |
15 namespace pepper { | 16 namespace webkit { |
| 17 namespace ppapi { |
| 18 |
| 19 static base::LazyInstance<ResourceTracker> g_resource_tracker( |
| 20 base::LINKER_INITIALIZED); |
16 | 21 |
17 scoped_refptr<Resource> ResourceTracker::GetResource(PP_Resource res) const { | 22 scoped_refptr<Resource> ResourceTracker::GetResource(PP_Resource res) const { |
18 ResourceMap::const_iterator result = live_resources_.find(res); | 23 ResourceMap::const_iterator result = live_resources_.find(res); |
19 if (result == live_resources_.end()) { | 24 if (result == live_resources_.end()) { |
20 return scoped_refptr<Resource>(); | 25 return scoped_refptr<Resource>(); |
21 } | 26 } |
22 return result->second.first; | 27 return result->second.first; |
23 } | 28 } |
24 | 29 |
25 // static | 30 // static |
26 ResourceTracker* ResourceTracker::singleton_override_ = NULL; | 31 ResourceTracker* ResourceTracker::singleton_override_ = NULL; |
27 | 32 |
28 ResourceTracker::ResourceTracker() | 33 ResourceTracker::ResourceTracker() |
29 : last_id_(0) { | 34 : last_id_(0) { |
30 } | 35 } |
31 | 36 |
32 ResourceTracker::~ResourceTracker() { | 37 ResourceTracker::~ResourceTracker() { |
33 } | 38 } |
34 | 39 |
35 // static | 40 // static |
36 ResourceTracker* ResourceTracker::Get() { | 41 ResourceTracker* ResourceTracker::Get() { |
37 if (singleton_override_) | 42 if (singleton_override_) |
38 return singleton_override_; | 43 return singleton_override_; |
39 return Singleton<ResourceTracker>::get(); | 44 return g_resource_tracker.Pointer(); |
40 } | 45 } |
41 | 46 |
42 PP_Resource ResourceTracker::AddResource(Resource* resource) { | 47 PP_Resource ResourceTracker::AddResource(Resource* resource) { |
43 // If the plugin manages to create 4B resources... | 48 // If the plugin manages to create 4B resources... |
44 if (last_id_ == std::numeric_limits<PP_Resource>::max()) { | 49 if (last_id_ == std::numeric_limits<PP_Resource>::max()) { |
45 return 0; | 50 return 0; |
46 } | 51 } |
47 // Add the resource with plugin use-count 1. | 52 // Add the resource with plugin use-count 1. |
48 ++last_id_; | 53 ++last_id_; |
49 live_resources_.insert(std::make_pair(last_id_, std::make_pair(resource, 1))); | 54 live_resources_.insert(std::make_pair(last_id_, std::make_pair(resource, 1))); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 DCHECK(!singleton_override_); | 184 DCHECK(!singleton_override_); |
180 singleton_override_ = tracker; | 185 singleton_override_ = tracker; |
181 } | 186 } |
182 | 187 |
183 // static | 188 // static |
184 void ResourceTracker::ClearSingletonOverride() { | 189 void ResourceTracker::ClearSingletonOverride() { |
185 DCHECK(singleton_override_); | 190 DCHECK(singleton_override_); |
186 singleton_override_ = NULL; | 191 singleton_override_ = NULL; |
187 } | 192 } |
188 | 193 |
189 } // namespace pepper | 194 } // namespace ppapi |
| 195 } // namespace webkit |
| 196 |
OLD | NEW |