#include <map>
#include "base/containers/hash_tables.h"
-#include "base/lazy_instance.h"
#include "base/memory/linked_ptr.h"
#include "base/memory/ref_counted.h"
#include "base/scoped_observer.h"
namespace extensions {
-namespace api {
+namespace core_api {
class BluetoothSocketApiFunction;
class BluetoothSocketEventDispatcher;
-}
-
-namespace core_api {
class SerialEventDispatcher;
class TCPServerSocketEventDispatcher;
class TCPSocketEventDispatcher;
// TODO(rockot): ApiResourceData could be moved out of ApiResourceManager and
// we could avoid maintaining a friends list here.
friend class BluetoothAPI;
- friend class api::BluetoothSocketApiFunction;
- friend class api::BluetoothSocketEventDispatcher;
+ friend class core_api::BluetoothSocketApiFunction;
+ friend class core_api::BluetoothSocketEventDispatcher;
friend class core_api::SerialEventDispatcher;
friend class core_api::TCPServerSocketEventDispatcher;
friend class core_api::TCPSocketEventDispatcher;
api_resource_map_[id] = resource_ptr;
const std::string& extension_id = api_resource->owner_extension_id();
- if (extension_resource_map_.find(extension_id) ==
- extension_resource_map_.end()) {
- extension_resource_map_[extension_id] = base::hash_set<int>();
+ ExtensionToResourceMap::iterator it =
+ extension_resource_map_.find(extension_id);
+ if (it == extension_resource_map_.end()) {
+ it = extension_resource_map_.insert(
+ std::make_pair(extension_id, base::hash_set<int>())).first;
}
- extension_resource_map_[extension_id].insert(id);
-
+ it->second.insert(id);
return id;
}
return 0;
void Remove(const std::string& extension_id, int api_resource_id) {
DCHECK(ThreadingTraits::IsCalledOnValidThread());
- if (GetOwnedResource(extension_id, api_resource_id) != NULL) {
- DCHECK(extension_resource_map_.find(extension_id) !=
- extension_resource_map_.end());
- extension_resource_map_[extension_id].erase(api_resource_id);
+ if (GetOwnedResource(extension_id, api_resource_id)) {
+ ExtensionToResourceMap::iterator it =
+ extension_resource_map_.find(extension_id);
+ it->second.erase(api_resource_id);
api_resource_map_.erase(api_resource_id);
}
}
base::hash_set<int>* GetOwnedResourceIds(const std::string& extension_id) {
DCHECK(ThreadingTraits::IsCalledOnValidThread());
- if (extension_resource_map_.find(extension_id) ==
- extension_resource_map_.end())
+ ExtensionToResourceMap::iterator it =
+ extension_resource_map_.find(extension_id);
+ if (it == extension_resource_map_.end())
return NULL;
-
- return &extension_resource_map_[extension_id];
+ return &(it->second);
}
void CleanupResourcesFromUnloadedExtension(
bool remove_all) {
DCHECK(ThreadingTraits::IsCalledOnValidThread());
- if (extension_resource_map_.find(extension_id) ==
- extension_resource_map_.end()) {
+ ExtensionToResourceMap::iterator it =
+ extension_resource_map_.find(extension_id);
+ if (it == extension_resource_map_.end())
return;
- }
// Remove all resources, or the non persistent ones only if |remove_all|
// is false.
- base::hash_set<int>& resource_ids = extension_resource_map_[extension_id];
+ base::hash_set<int>& resource_ids = it->second;
for (base::hash_set<int>::iterator it = resource_ids.begin();
it != resource_ids.end();) {
bool erase = false;