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

Side by Side Diff: chrome/common/extensions/user_script_unittest.cc

Issue 340057: Add first-class support for user scripts (Closed)
Patch Set: newness Created 11 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/file_path.h" 5 #include "base/file_path.h"
6 #include "base/pickle.h" 6 #include "base/pickle.h"
7 #include "chrome/common/extensions/user_script.h" 7 #include "chrome/common/extensions/user_script.h"
8 #include "googleurl/src/gurl.h" 8 #include "googleurl/src/gurl.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 TEST(UserScriptTest, Match1) { 11 TEST(UserScriptTest, Match1) {
12 UserScript script; 12 UserScript script;
13 script.add_glob("*mail.google.com*"); 13 script.add_glob("*mail.google.com*");
14 script.add_glob("*mail.yahoo.com*"); 14 script.add_glob("*mail.yahoo.com*");
15 script.add_glob("*mail.msn.com*"); 15 script.add_glob("*mail.msn.com*");
16 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com"))); 16 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com")));
17 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com/foo"))); 17 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com/foo")));
18 EXPECT_TRUE(script.MatchesUrl(GURL("https://mail.google.com/foo"))); 18 EXPECT_TRUE(script.MatchesUrl(GURL("https://mail.google.com/foo")));
19 EXPECT_TRUE(script.MatchesUrl(GURL("ftp://mail.google.com/foo"))); 19 EXPECT_TRUE(script.MatchesUrl(GURL("ftp://mail.google.com/foo")));
20 EXPECT_TRUE(script.MatchesUrl(GURL("http://woo.mail.google.com/foo"))); 20 EXPECT_TRUE(script.MatchesUrl(GURL("http://woo.mail.google.com/foo")));
21 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.yahoo.com/bar"))); 21 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.yahoo.com/bar")));
22 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.msn.com/baz"))); 22 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.msn.com/baz")));
23 EXPECT_FALSE(script.MatchesUrl(GURL("http://www.hotmail.com"))); 23 EXPECT_FALSE(script.MatchesUrl(GURL("http://www.hotmail.com")));
24
25 script.add_exclude_glob("*foo*");
26 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com")));
27 EXPECT_FALSE(script.MatchesUrl(GURL("http://mail.google.com/foo")));
24 } 28 }
25 29
26 TEST(UserScriptTest, Match2) { 30 TEST(UserScriptTest, Match2) {
27 UserScript script; 31 UserScript script;
28 script.add_glob("*mail.google.com/"); 32 script.add_glob("*mail.google.com/");
29 // GURL normalizes the URL to have a trailing "/" 33 // GURL normalizes the URL to have a trailing "/"
30 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com"))); 34 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com")));
31 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com/"))); 35 EXPECT_TRUE(script.MatchesUrl(GURL("http://mail.google.com/")));
32 EXPECT_FALSE(script.MatchesUrl(GURL("http://mail.google.com/foo"))); 36 EXPECT_FALSE(script.MatchesUrl(GURL("http://mail.google.com/foo")));
33 } 37 }
(...skipping 29 matching lines...) Expand all
63 ASSERT_TRUE(pattern.Parse("http://*/foo*")); 67 ASSERT_TRUE(pattern.Parse("http://*/foo*"));
64 68
65 UserScript script; 69 UserScript script;
66 script.add_url_pattern(pattern); 70 script.add_url_pattern(pattern);
67 EXPECT_TRUE(script.MatchesUrl(GURL("http://monkey.com/foobar"))); 71 EXPECT_TRUE(script.MatchesUrl(GURL("http://monkey.com/foobar")));
68 EXPECT_FALSE(script.MatchesUrl(GURL("http://monkey.com/hotdog"))); 72 EXPECT_FALSE(script.MatchesUrl(GURL("http://monkey.com/hotdog")));
69 73
70 // NOTE: URLPattern is tested more extensively in url_pattern_unittest.cc. 74 // NOTE: URLPattern is tested more extensively in url_pattern_unittest.cc.
71 } 75 }
72 76
77 TEST(UserScriptTest, UrlPatternGlobInteraction) {
78 // If there are both, match intersection(union(globs), union(urlpatterns)).
79 UserScript script;
80
81 URLPattern pattern;
82 ASSERT_TRUE(pattern.Parse("http://www.google.com/*"));
83 script.add_url_pattern(pattern);
84
85 script.add_glob("*bar*");
86
87 // No match, because it doesn't match the glob.
88 EXPECT_FALSE(script.MatchesUrl(GURL("http://www.google.com/foo")));
89
90 script.add_exclude_glob("*baz*");
91
92 // No match, because it matches the exclude glob.
93 EXPECT_FALSE(script.MatchesUrl(GURL("http://www.google.com/baz")));
94
95 // Match, because it matches the glob, doesn't match the exclude glob.
96 EXPECT_TRUE(script.MatchesUrl(GURL("http://www.google.com/bar")));
97
98 // Try with just a single exclude glob.
99 script.clear_globs();
100 EXPECT_TRUE(script.MatchesUrl(GURL("http://www.google.com/foo")));
101
102 // Try with no globs or exclude globs.
103 script.clear_exclude_globs();
104 EXPECT_TRUE(script.MatchesUrl(GURL("http://www.google.com/foo")));
105 }
106
73 TEST(UserScriptTest, Pickle) { 107 TEST(UserScriptTest, Pickle) {
74 URLPattern pattern1; 108 URLPattern pattern1;
75 URLPattern pattern2; 109 URLPattern pattern2;
76 ASSERT_TRUE(pattern1.Parse("http://*/foo*")); 110 ASSERT_TRUE(pattern1.Parse("http://*/foo*"));
77 ASSERT_TRUE(pattern2.Parse("http://bar/baz*")); 111 ASSERT_TRUE(pattern2.Parse("http://bar/baz*"));
78 112
79 UserScript script1; 113 UserScript script1;
80 script1.js_scripts().push_back(UserScript::File( 114 script1.js_scripts().push_back(UserScript::File(
81 FilePath(FILE_PATH_LITERAL("c:\\foo\\")), 115 FilePath(FILE_PATH_LITERAL("c:\\foo\\")),
82 FilePath(FILE_PATH_LITERAL("foo.user.js")), 116 FilePath(FILE_PATH_LITERAL("foo.user.js")),
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 for (size_t i = 0; i < script1.url_patterns().size(); ++i) { 151 for (size_t i = 0; i < script1.url_patterns().size(); ++i) {
118 EXPECT_EQ(script1.url_patterns()[i].GetAsString(), 152 EXPECT_EQ(script1.url_patterns()[i].GetAsString(),
119 script2.url_patterns()[i].GetAsString()); 153 script2.url_patterns()[i].GetAsString());
120 } 154 }
121 } 155 }
122 156
123 TEST(UserScriptTest, Defaults) { 157 TEST(UserScriptTest, Defaults) {
124 UserScript script; 158 UserScript script;
125 ASSERT_EQ(UserScript::DOCUMENT_END, script.run_location()); 159 ASSERT_EQ(UserScript::DOCUMENT_END, script.run_location());
126 } 160 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698