| Index: chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc b/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
|
| index 34f87fff2fb12fda0c5216847fa1505dc4c71332..44617c991f97329460cac34311e8a30550942c2c 100644
|
| --- a/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
|
| +++ b/chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc
|
| @@ -7,6 +7,8 @@
|
| #include "base/bind.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "chrome/browser/extensions/api/declarative/test_rules_registry.h"
|
| +#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
|
| +#include "chrome/test/base/testing_profile.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -53,11 +55,12 @@ class RulesRegistryServiceTest : public testing::Test {
|
| };
|
|
|
| TEST_F(RulesRegistryServiceTest, TestConstructionAndMultiThreading) {
|
| + const RulesRegistry::WebViewKey key(0, 0);
|
| TestRulesRegistry* ui_registry =
|
| - new TestRulesRegistry(content::BrowserThread::UI, "ui");
|
| + new TestRulesRegistry(content::BrowserThread::UI, "ui", key);
|
|
|
| TestRulesRegistry* io_registry =
|
| - new TestRulesRegistry(content::BrowserThread::IO, "io");
|
| + new TestRulesRegistry(content::BrowserThread::IO, "io", key);
|
|
|
| // Test registration.
|
|
|
| @@ -65,29 +68,29 @@ TEST_F(RulesRegistryServiceTest, TestConstructionAndMultiThreading) {
|
| registry_service.RegisterRulesRegistry(make_scoped_refptr(ui_registry));
|
| registry_service.RegisterRulesRegistry(make_scoped_refptr(io_registry));
|
|
|
| - EXPECT_TRUE(registry_service.GetRulesRegistry("ui").get());
|
| - EXPECT_TRUE(registry_service.GetRulesRegistry("io").get());
|
| - EXPECT_FALSE(registry_service.GetRulesRegistry("foo").get());
|
| + EXPECT_TRUE(registry_service.GetRulesRegistry(key, "ui").get());
|
| + EXPECT_TRUE(registry_service.GetRulesRegistry(key, "io").get());
|
| + EXPECT_FALSE(registry_service.GetRulesRegistry(key, "foo").get());
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&InsertRule, registry_service.GetRulesRegistry("ui"),
|
| + base::Bind(&InsertRule, registry_service.GetRulesRegistry(key, "ui"),
|
| "ui_task"));
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| - base::Bind(&InsertRule, registry_service.GetRulesRegistry("io"),
|
| + base::Bind(&InsertRule, registry_service.GetRulesRegistry(key, "io"),
|
| "io_task"));
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
| base::Bind(&VerifyNumberOfRules,
|
| - registry_service.GetRulesRegistry("ui"), 1));
|
| + registry_service.GetRulesRegistry(key, "ui"), 1));
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| base::Bind(&VerifyNumberOfRules,
|
| - registry_service.GetRulesRegistry("io"), 1));
|
| + registry_service.GetRulesRegistry(key, "io"), 1));
|
|
|
| message_loop_.RunUntilIdle();
|
|
|
| @@ -98,14 +101,64 @@ TEST_F(RulesRegistryServiceTest, TestConstructionAndMultiThreading) {
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::UI, FROM_HERE,
|
| base::Bind(&VerifyNumberOfRules,
|
| - registry_service.GetRulesRegistry("ui"), 0));
|
| + registry_service.GetRulesRegistry(key, "ui"), 0));
|
|
|
| content::BrowserThread::PostTask(
|
| content::BrowserThread::IO, FROM_HERE,
|
| base::Bind(&VerifyNumberOfRules,
|
| - registry_service.GetRulesRegistry("io"), 0));
|
| + registry_service.GetRulesRegistry(key, "io"), 0));
|
|
|
| message_loop_.RunUntilIdle();
|
| }
|
|
|
| +// This test verifies that removing rules registries by process ID works as
|
| +// intended. This test ensures that removing registries associated with one
|
| +// Webview embedder process does not remove registries associated with the
|
| +// other.
|
| +TEST_F(RulesRegistryServiceTest, TestWebViewKey) {
|
| + const int kEmbedderProcessID1 = 1;
|
| + const int kEmbedderProcessID2 = 2;
|
| + const int kWebViewInstanceID = 1;
|
| +
|
| + const RulesRegistry::WebViewKey key1(kEmbedderProcessID1, kWebViewInstanceID);
|
| + const RulesRegistry::WebViewKey key2(kEmbedderProcessID2, kWebViewInstanceID);
|
| +
|
| + TestRulesRegistry* ui_registry_key1 =
|
| + new TestRulesRegistry(content::BrowserThread::UI, "ui", key1);
|
| + TestRulesRegistry* ui_registry_key2 =
|
| + new TestRulesRegistry(content::BrowserThread::UI, "ui", key2);
|
| +
|
| + RulesRegistryService registry_service(NULL);
|
| + registry_service.RegisterRulesRegistry(make_scoped_refptr(ui_registry_key1));
|
| + registry_service.RegisterRulesRegistry(make_scoped_refptr(ui_registry_key2));
|
| +
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&InsertRule, registry_service.GetRulesRegistry(key1, "ui"),
|
| + "ui_task"));
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::UI, FROM_HERE,
|
| + base::Bind(&InsertRule, registry_service.GetRulesRegistry(key2, "ui"),
|
| + "ui_task"));
|
| + message_loop_.RunUntilIdle();
|
| +
|
| + registry_service.RemoveWebViewRulesRegistries(kEmbedderProcessID1);
|
| + EXPECT_FALSE(registry_service.GetRulesRegistry(key1, "ui").get());
|
| + EXPECT_TRUE(registry_service.GetRulesRegistry(key2, "ui").get());
|
| +}
|
| +
|
| +TEST_F(RulesRegistryServiceTest, TestWebViewWebRequestRegistryHasNoCache) {
|
| + const int kEmbedderProcessID = 1;
|
| + const int kWebViewInstanceID = 1;
|
| + const RulesRegistry::WebViewKey key(kEmbedderProcessID, kWebViewInstanceID);
|
| + TestingProfile profile;
|
| + RulesRegistryService registry_service(&profile);
|
| + RulesRegistry* registry =
|
| + registry_service.GetRulesRegistry(
|
| + key,
|
| + declarative_webrequest_constants::kOnRequest).get();
|
| + EXPECT_TRUE(registry);
|
| + EXPECT_FALSE(registry->rules_cache_delegate_for_testing());
|
| +}
|
| +
|
| } // namespace extensions
|
|
|