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

Unified Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc

Issue 11572061: Create DeclarativeConditionSet, DeclarativeActionSet, and DeclarativeRule templates (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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_webrequest/webrequest_rules_registry_unittest.cc
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
index 3d6895c559d3856079aab304eb38a3142c7e4d0d..c3767fd99192b00d896318affc6fc006e74e9065 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
@@ -6,15 +6,16 @@
#include <vector>
+#include "base/json/json_reader.h"
#include "base/memory/linked_ptr.h"
#include "base/message_loop.h"
#include "base/values.h"
-#include "chrome/common/extensions/matcher/url_matcher_constants.h"
#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h"
-#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h"
#include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
+#include "chrome/common/extensions/matcher/url_matcher_constants.h"
#include "content/public/test/test_browser_thread.h"
#include "net/url_request/url_request_test_util.h"
+#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace {
@@ -28,6 +29,8 @@ const char kRuleId4[] = "rule4";
namespace extensions {
+using testing::HasSubstr;
+
namespace helpers = extension_web_request_api_helpers;
namespace keys = declarative_webrequest_constants;
namespace keys2 = url_matcher_constants;
@@ -230,7 +233,7 @@ TEST_F(WebRequestRulesRegistryTest, AddRulesImpl) {
net::TestURLRequestContext context;
net::TestURLRequest http_request(http_url, NULL, &context);
matches = registry->GetMatches(
- WebRequestRule::RequestData(&http_request, ON_BEFORE_REQUEST));
+ DeclarativeWebRequestData(&http_request, ON_BEFORE_REQUEST));
EXPECT_EQ(2u, matches.size());
EXPECT_TRUE(matches.find(std::make_pair(kExtensionId, kRuleId1)) !=
matches.end());
@@ -240,7 +243,7 @@ TEST_F(WebRequestRulesRegistryTest, AddRulesImpl) {
GURL foobar_url("http://www.foobar.com");
net::TestURLRequest foobar_request(foobar_url, NULL, &context);
matches = registry->GetMatches(
- WebRequestRule::RequestData(&foobar_request, ON_BEFORE_REQUEST));
+ DeclarativeWebRequestData(&foobar_request, ON_BEFORE_REQUEST));
EXPECT_EQ(1u, matches.size());
EXPECT_TRUE(matches.find(std::make_pair(kExtensionId, kRuleId2)) !=
matches.end());
@@ -364,7 +367,7 @@ TEST_F(WebRequestRulesRegistryTest, Precedences) {
std::list<LinkedPtrEventResponseDelta> deltas =
registry->CreateDeltas(
NULL,
- WebRequestRule::RequestData(&request, ON_BEFORE_REQUEST),
+ DeclarativeWebRequestData(&request, ON_BEFORE_REQUEST),
false);
// The second extension is installed later and will win for this reason
@@ -414,7 +417,7 @@ TEST_F(WebRequestRulesRegistryTest, Priorities) {
std::list<LinkedPtrEventResponseDelta> deltas =
registry->CreateDeltas(
NULL,
- WebRequestRule::RequestData(&request, ON_BEFORE_REQUEST),
+ DeclarativeWebRequestData(&request, ON_BEFORE_REQUEST),
false);
// The redirect by the first extension is ignored due to the ignore rule.
@@ -426,4 +429,44 @@ TEST_F(WebRequestRulesRegistryTest, Priorities) {
effective_rule->extension_install_time);
EXPECT_EQ(GURL("http://www.bar.com"), effective_rule->new_url);
}
+
+TEST_F(WebRequestRulesRegistryTest, CheckConsistency) {
+ // The contentType condition can only be evaluated during ON_HEADERS_RECEIVED
+ // but the redirect action can only be executed during ON_BEFORE_REQUEST.
+ // Therefore, this is an inconsistent rule that needs to be flagged.
+ const char kRule[] =
+ "{ \n"
+ " \"id\": \"rule1\", \n"
+ " \"conditions\": [ \n"
+ " { \n"
+ " \"instanceType\": \"declarativeWebRequest.RequestMatcher\", \n"
+ " \"url\": {\"hostSuffix\": \"foo.com\"}, \n"
+ " \"contentType\": [\"image/jpeg\"] \n"
+ " } \n"
+ " ], \n"
+ " \"actions\": [ \n"
+ " { \n"
+ " \"instanceType\": \"declarativeWebRequest.RedirectRequest\",\n"
+ " \"redirectUrl\": \"http://bar.com\" \n"
+ " } \n"
+ " ], \n"
+ " \"priority\": 200 \n"
+ "} ";
+
+ scoped_ptr<Value> value(base::JSONReader::Read(kRule));
+ ASSERT_TRUE(value.get());
+
+ std::vector<linked_ptr<RulesRegistry::Rule> > rules;
+ rules.push_back(make_linked_ptr(new RulesRegistry::Rule));
+ ASSERT_TRUE(RulesRegistry::Rule::Populate(*value, rules.back().get()));
+
+ scoped_refptr<WebRequestRulesRegistry> registry(
+ new TestWebRequestRulesRegistry());
+
+ URLMatcher matcher;
+ std::string error = registry->AddRulesImpl(kExtensionId, rules);
+ EXPECT_THAT(error, HasSubstr("no time in the request life-cycle"));
+ EXPECT_TRUE(registry->IsEmpty());
+}
+
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698