app_list: Re-enable people search.
[chromium-blink-merge.git] / chrome / browser / extensions / api / declarative_content / content_condition_unittest.cc
blob9d6f24ad5605628452aeddbad6f2bff527514e27
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/extensions/api/declarative_content/content_condition.h"
7 #include <set>
9 #include "base/message_loop/message_loop.h"
10 #include "base/test/values_test_util.h"
11 #include "base/values.h"
12 #include "chrome/browser/extensions/api/declarative_content/content_constants.h"
13 #include "components/url_matcher/url_matcher.h"
14 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h"
16 #include "url/gurl.h"
18 using testing::ElementsAre;
19 using testing::HasSubstr;
20 using url_matcher::URLMatcher;
21 using url_matcher::URLMatcherConditionSet;
23 namespace extensions {
24 namespace {
26 TEST(DeclarativeContentConditionTest, UnknownConditionName) {
27 URLMatcher matcher;
28 std::string error;
29 scoped_ptr<ContentCondition> result = ContentCondition::Create(
30 NULL,
31 matcher.condition_factory(),
32 *base::test::ParseJson(
33 "{\n"
34 " \"invalid\": \"foobar\",\n"
35 " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
36 "}"),
37 &error);
38 EXPECT_THAT(error, HasSubstr("Unknown condition attribute"));
39 EXPECT_FALSE(result);
41 EXPECT_TRUE(matcher.IsEmpty()) << "Errors shouldn't add URL conditions";
44 TEST(DeclarativeContentConditionTest, WrongPageUrlDatatype) {
45 URLMatcher matcher;
46 std::string error;
47 scoped_ptr<ContentCondition> result = ContentCondition::Create(
48 NULL,
49 matcher.condition_factory(),
50 *base::test::ParseJson(
51 "{\n"
52 " \"pageUrl\": [],\n"
53 " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
54 "}"),
55 &error);
56 EXPECT_THAT(error, HasSubstr("invalid type"));
57 EXPECT_FALSE(result);
59 EXPECT_TRUE(matcher.IsEmpty()) << "Errors shouldn't add URL conditions";
62 TEST(DeclarativeContentConditionTest, WrongCssDatatype) {
63 URLMatcher matcher;
64 std::string error;
65 scoped_ptr<ContentCondition> result = ContentCondition::Create(
66 NULL,
67 matcher.condition_factory(),
68 *base::test::ParseJson(
69 "{\n"
70 " \"css\": \"selector\",\n"
71 " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
72 "}"),
73 &error);
74 EXPECT_THAT(error, HasSubstr("invalid type"));
75 EXPECT_FALSE(result);
77 EXPECT_TRUE(matcher.IsEmpty()) << "Errors shouldn't add URL conditions";
80 TEST(DeclarativeContentConditionTest, ConditionWithUrlAndCss) {
81 URLMatcher matcher;
83 std::string error;
84 scoped_ptr<ContentCondition> result = ContentCondition::Create(
85 NULL,
86 matcher.condition_factory(),
87 *base::test::ParseJson(
88 "{\n"
89 " \"instanceType\": \"declarativeContent.PageStateMatcher\",\n"
90 " \"pageUrl\": {\"hostSuffix\": \"example.com\"},\n"
91 " \"css\": [\"input\"],\n"
92 "}"),
93 &error);
94 EXPECT_EQ("", error);
95 ASSERT_TRUE(result);
97 URLMatcherConditionSet::Vector all_new_condition_sets;
98 result->GetURLMatcherConditionSets(&all_new_condition_sets);
99 matcher.AddConditionSets(all_new_condition_sets);
100 EXPECT_FALSE(matcher.IsEmpty());
102 RendererContentMatchData match_data;
103 match_data.css_selectors.insert("input");
105 EXPECT_THAT(matcher.MatchURL(GURL("http://google.com/")),
106 ElementsAre(/*empty*/));
107 match_data.page_url_matches = matcher.MatchURL(
108 GURL("http://www.example.com/foobar"));
109 EXPECT_THAT(match_data.page_url_matches,
110 ElementsAre(result->url_matcher_condition_set_id()));
112 EXPECT_TRUE(result->IsFulfilled(match_data));
114 match_data.css_selectors.clear();
115 match_data.css_selectors.insert("body");
116 EXPECT_FALSE(result->IsFulfilled(match_data));
119 } // namespace
120 } // namespace extensions