Commit c71fdba3 authored by limasdf@gmail.com's avatar limasdf@gmail.com

Remove deprecated extension notifications from ApiResourceManager.

And Move api_resource_manager_unittest.cc to extensions_unittests to pass the unittest.(by using ExtensionsTest)

BUG=397164, 354046
TEST=extensions_unittests

Review URL: https://codereview.chromium.org/431023003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287485 0039d316-1c4b-4281-b951-d872f2087c98
parent e260af75
...@@ -525,7 +525,6 @@ ...@@ -525,7 +525,6 @@
# http://crbug.com/348066. They are duplicated here because we haven't # http://crbug.com/348066. They are duplicated here because we haven't
# extensions_unittests running in the bots yet. Until that happens, # extensions_unittests running in the bots yet. Until that happens,
# they should be kept here. # they should be kept here.
'../extensions/browser/api/api_resource_manager_unittest.cc',
'../extensions/browser/api/cast_channel/cast_channel_api_unittest.cc', '../extensions/browser/api/cast_channel/cast_channel_api_unittest.cc',
'../extensions/browser/api/cast_channel/cast_socket_unittest.cc', '../extensions/browser/api/cast_channel/cast_socket_unittest.cc',
'../extensions/browser/api/power/power_api_unittest.cc', '../extensions/browser/api/power/power_api_unittest.cc',
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/lazy_instance.h" #include "base/lazy_instance.h"
#include "base/memory/linked_ptr.h" #include "base/memory/linked_ptr.h"
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "base/scoped_observer.h"
#include "base/threading/non_thread_safe.h" #include "base/threading/non_thread_safe.h"
#include "components/keyed_service/core/keyed_service.h" #include "components/keyed_service/core/keyed_service.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
...@@ -19,6 +20,8 @@ ...@@ -19,6 +20,8 @@
#include "content/public/browser/notification_service.h" #include "content/public/browser/notification_service.h"
#include "extensions/browser/browser_context_keyed_api_factory.h" #include "extensions/browser/browser_context_keyed_api_factory.h"
#include "extensions/browser/extension_host.h" #include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_registry_observer.h"
#include "extensions/browser/notification_types.h" #include "extensions/browser/notification_types.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
...@@ -112,13 +115,12 @@ content::BrowserThread::ID TestThreadTraits<T>::thread_id_ = ...@@ -112,13 +115,12 @@ content::BrowserThread::ID TestThreadTraits<T>::thread_id_ =
template <class T, typename ThreadingTraits = NamedThreadTraits<T> > template <class T, typename ThreadingTraits = NamedThreadTraits<T> >
class ApiResourceManager : public BrowserContextKeyedAPI, class ApiResourceManager : public BrowserContextKeyedAPI,
public base::NonThreadSafe, public base::NonThreadSafe,
public content::NotificationObserver { public content::NotificationObserver,
public ExtensionRegistryObserver {
public: public:
explicit ApiResourceManager(content::BrowserContext* context) explicit ApiResourceManager(content::BrowserContext* context)
: data_(new ApiResourceData()) { : data_(new ApiResourceData()), extension_registry_observer_(this) {
registrar_.Add(this, extension_registry_observer_.Add(ExtensionRegistry::Get(context));
extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
content::NotificationService::AllSources());
registrar_.Add(this, registrar_.Add(this,
extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED,
content::NotificationService::AllSources()); content::NotificationService::AllSources());
...@@ -185,19 +187,17 @@ class ApiResourceManager : public BrowserContextKeyedAPI, ...@@ -185,19 +187,17 @@ class ApiResourceManager : public BrowserContextKeyedAPI,
virtual void Observe(int type, virtual void Observe(int type,
const content::NotificationSource& source, const content::NotificationSource& source,
const content::NotificationDetails& details) OVERRIDE { const content::NotificationDetails& details) OVERRIDE {
switch (type) { DCHECK_EQ(extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, type);
case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { ExtensionHost* host = content::Details<ExtensionHost>(details).ptr();
std::string id = content::Details<extensions::UnloadedExtensionInfo>( data_->InitiateExtensionSuspendedCleanup(host->extension_id());
details)->extension->id(); }
data_->InitiateExtensionUnloadedCleanup(id);
break; // ExtensionRegistryObserver:
} virtual void OnExtensionUnloaded(
case extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED: { content::BrowserContext* browser_context,
ExtensionHost* host = content::Details<ExtensionHost>(details).ptr(); const Extension* extension,
data_->InitiateExtensionSuspendedCleanup(host->extension_id()); UnloadedExtensionInfo::Reason reason) OVERRIDE {
break; data_->InitiateExtensionUnloadedCleanup(extension->id());
}
}
} }
private: private:
...@@ -398,6 +398,9 @@ class ApiResourceManager : public BrowserContextKeyedAPI, ...@@ -398,6 +398,9 @@ class ApiResourceManager : public BrowserContextKeyedAPI,
content::NotificationRegistrar registrar_; content::NotificationRegistrar registrar_;
scoped_refptr<ApiResourceData> data_; scoped_refptr<ApiResourceData> data_;
ScopedObserver<ExtensionRegistry, ExtensionRegistryObserver>
extension_registry_observer_;
}; };
// With WorkerPoolThreadTraits, ApiResourceManager can be used to manage the // With WorkerPoolThreadTraits, ApiResourceManager can be used to manage the
......
...@@ -4,24 +4,30 @@ ...@@ -4,24 +4,30 @@
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "chrome/browser/extensions/extension_function_test_utils.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "content/public/test/test_browser_thread_bundle.h" #include "content/public/test/test_browser_thread_bundle.h"
#include "extensions/browser/api/api_resource.h" #include "extensions/browser/api/api_resource.h"
#include "extensions/browser/api/api_resource_manager.h" #include "extensions/browser/api/api_resource_manager.h"
#include "extensions/browser/extensions_test.h"
#include "extensions/common/extension.h" #include "extensions/common/extension.h"
#include "extensions/common/id_util.h"
#include "extensions/common/test_util.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h" #include "url/gurl.h"
namespace utils = extension_function_test_utils;
using content::BrowserThread; using content::BrowserThread;
using content::NotificationService;
namespace extensions { namespace extensions {
class ApiResourceManagerUnitTest : public testing::Test { class ApiResourceManagerUnitTest : public ExtensionsTest {
public:
ApiResourceManagerUnitTest()
: notification_service_(NotificationService::Create()) {}
private: private:
content::TestBrowserThreadBundle thread_bundle_; content::TestBrowserThreadBundle thread_bundle_;
scoped_ptr<NotificationService> notification_service_;
}; };
class FakeApiResource : public ApiResource { class FakeApiResource : public ApiResource {
...@@ -35,10 +41,10 @@ class FakeApiResource : public ApiResource { ...@@ -35,10 +41,10 @@ class FakeApiResource : public ApiResource {
TEST_F(ApiResourceManagerUnitTest, TwoAppsCannotShareResources) { TEST_F(ApiResourceManagerUnitTest, TwoAppsCannotShareResources) {
scoped_ptr<ApiResourceManager<FakeApiResource> > manager( scoped_ptr<ApiResourceManager<FakeApiResource> > manager(
new ApiResourceManager<FakeApiResource>(NULL)); new ApiResourceManager<FakeApiResource>(NULL));
scoped_refptr<extensions::Extension> extension_one( scoped_refptr<extensions::Extension> extension_one =
utils::CreateEmptyExtension("one")); test_util::CreateExtensionWithID("one");
scoped_refptr<extensions::Extension> extension_two( scoped_refptr<extensions::Extension> extension_two =
utils::CreateEmptyExtension("two")); test_util::CreateExtensionWithID("two");
const std::string extension_one_id(extension_one->id()); const std::string extension_one_id(extension_one->id());
const std::string extension_two_id(extension_two->id()); const std::string extension_two_id(extension_two->id());
......
...@@ -821,6 +821,7 @@ ...@@ -821,6 +821,7 @@
], ],
'sources': [ 'sources': [
'browser/admin_policy_unittest.cc', 'browser/admin_policy_unittest.cc',
'browser/api/api_resource_manager_unittest.cc',
'browser/computed_hashes_unittest.cc', 'browser/computed_hashes_unittest.cc',
'browser/content_hash_tree_unittest.cc', 'browser/content_hash_tree_unittest.cc',
'browser/event_listener_map_unittest.cc', 'browser/event_listener_map_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment