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