| Index: base/path_service.cc
|
| diff --git a/base/path_service.cc b/base/path_service.cc
|
| index e72ae7deff9af69156ab2ed994de7431009ca5d8..4ede8f6f5b1feed90c58fbda9347108083e9d643 100644
|
| --- a/base/path_service.cc
|
| +++ b/base/path_service.cc
|
| @@ -266,3 +266,22 @@ void PathService::RegisterProvider(ProviderFunc func, int key_start,
|
| #endif
|
| path_data->providers = p;
|
| }
|
| +
|
| +void PathService::UnregisterProvider(ProviderFunc provider) {
|
| + PathData* path_data = GetPathData();
|
| + DCHECK(path_data);
|
| +
|
| + base::AutoLock scoped_lock(path_data->lock);
|
| +
|
| + for(Provider** p = &path_data->providers; *p; p = &(*p)->next) {
|
| + if ((*p)->func == provider) {
|
| + for(int key = (*p)->key_start; key != (*p)->key_end; ++key) {
|
| + // Removed the computed path from our cache.
|
| + path_data->cache.erase(key);
|
| + }
|
| + *p = (*p)->next;
|
| + return;
|
| + }
|
| + }
|
| + NOTREACHED();
|
| +}
|
|
|