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

Unified Diff: chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc

Issue 11547033: Implement declarativeContent API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync Created 7 years, 11 months 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_content/content_condition_unittest.cc
diff --git a/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc b/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a26bf4c22398ba5e6ffad568915b2fc90f7cf39d
--- /dev/null
+++ b/chrome/browser/extensions/api/declarative_content/content_condition_unittest.cc
@@ -0,0 +1,97 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/extensions/api/declarative_content/content_condition.h"
+
+#include <set>
+
+#include "base/message_loop.h"
+#include "base/test/values_test_util.h"
+#include "base/values.h"
+#include "chrome/browser/extensions/api/declarative_content/content_constants.h"
+#include "chrome/common/extensions/matcher/url_matcher.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace extensions {
+namespace {
+
+using testing::ElementsAre;
+using testing::HasSubstr;
+
+TEST(DeclarativeContentConditionTest, ErroneousCondition) {
+ URLMatcher matcher;
+
+ std::string error;
+ scoped_ptr<ContentCondition> result;
+
+ // Test unknown condition name passed.
+ error.clear();
+ result = ContentCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{\n"
+ " \"invalid\": \"foobar\",\n"
+ " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
+ "}"),
+ &error);
+ EXPECT_THAT(error, HasSubstr("Unknown condition attribute"));
+ EXPECT_FALSE(result);
+
+ // Test wrong datatype in pageUrl.
+ error.clear();
+ result = ContentCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{\n"
+ " \"pageUrl\": [],\n"
+ " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
+ "}"),
+ &error);
+ EXPECT_THAT(error, HasSubstr("invalid type"));
+ EXPECT_FALSE(result);
+
+ EXPECT_TRUE(matcher.IsEmpty()) << "Errors shouldn't add URL conditions";
+}
+
+TEST(DeclarativeContentConditionTest, ConditionWithUrlAndCss) {
+ URLMatcher matcher;
+
+ std::string error;
+ scoped_ptr<ContentCondition> result = ContentCondition::Create(
+ matcher.condition_factory(),
+ *base::test::ParseJson(
+ "{\n"
+ " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
+ " \"pageUrl\": {\"hostSuffix\": \"example.com\"},\n"
+ " \"css\": [\"input\"],\n"
+ "}"),
+ &error);
+ EXPECT_EQ("", error);
+ ASSERT_TRUE(result);
+
+ URLMatcherConditionSet::Vector all_new_condition_sets;
+ result->GetURLMatcherConditionSets(&all_new_condition_sets);
+ matcher.AddConditionSets(all_new_condition_sets);
+ EXPECT_FALSE(matcher.IsEmpty());
+
+ RendererContentMatchData match_data;
+ match_data.css_selectors.insert("input");
+
+ EXPECT_THAT(matcher.MatchURL(GURL("http://google.com/")),
+ ElementsAre(/*empty*/));
+ match_data.page_url_matches = matcher.MatchURL(
+ GURL("http://www.example.com/foobar"));
+ EXPECT_THAT(match_data.page_url_matches,
+ ElementsAre(result->url_matcher_condition_set_id()));
+
+ EXPECT_TRUE(result->IsFulfilled(match_data));
+
+ match_data.css_selectors.clear();
+ match_data.css_selectors.insert("body");
+ EXPECT_FALSE(result->IsFulfilled(match_data));
+}
+
+} // namespace
+} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698