Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5461)

Unified Diff: chrome/browser/extensions/api/declarative/rules_registry_service_unittest.cc

Issue 28273006: <webview>: Implement declarativeWebRequest API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed nits Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698