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

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

Issue 23478003: Check and canonicalize CSS selectors before registering PageStateMatchers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix problems kalman noticed Created 7 years, 4 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
« no previous file with comments | « no previous file | chrome/chrome_renderer.gypi » ('j') | chrome/renderer/extensions/css_native_handler.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
diff --git a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
index c75431674f92be195e45fe94f9edd36926abc379..55e443ada315a2710c2688a0fa50544c97d6aa8b 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -109,5 +109,63 @@ IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest, Overview) {
EXPECT_FALSE(page_action->GetIsVisible(tab_id));
}
+IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest,
+ CanonicalizesPageStateMatcherCss) {
+ ext_dir_.WriteManifest(kDeclarativeContentManifest);
+ ext_dir_.WriteFile(
+ FILE_PATH_LITERAL("background.js"),
+ "var declarative = chrome.declarative;\n"
+ "\n"
+ "var PageStateMatcher = chrome.declarativeContent.PageStateMatcher;\n"
+ "function NewPageStateMatcher(obj) {\n"
+ " return new PageStateMatcher(obj);\n"
+ "}\n"
+ "\n"
+ "chrome.test.runTests([\n"
+ " function canonicalizesCss() {\n"
+ " var psm = new PageStateMatcher(\n"
+ " {css: [\"input[type='password']\"]});\n"
+ " chrome.test.assertEq(['input[type=\"password\"]'], psm.css);\n"
+ " chrome.test.succeed();\n"
+ " },\n"
+ "\n"
+ " function throwsOnNonArrayCss() {\n"
+ " chrome.test.assertThrows(NewPageStateMatcher,\n"
+ " undefined,\n"
+ " [{css: 'Not-an-array'}],\n"
+ " /css.*Expected 'array'/);\n"
+ " chrome.test.succeed();\n"
+ " },\n"
+ "\n"
+ " function throwsOnNonStringCss() {\n"
+ " chrome.test.assertThrows(NewPageStateMatcher,\n"
+ " undefined,\n"
+ " [{css: [null]}],\n"
+ " /css\\.0.*Expected 'string'/);\n"
+ " chrome.test.succeed();\n"
+ " },\n"
+ "\n"
+ " function throwsOnBadCss() {\n"
+ " chrome.test.assertThrows(NewPageStateMatcher,\n"
+ " undefined,\n"
+ " [{css: [\"input''\"]}],\n"
+ " /valid.*: input''$/);\n"
+ " chrome.test.succeed();\n"
+ " },\n"
+ "\n"
+ " function throwsOnComplexSelector() {\n"
+ " chrome.test.assertThrows(NewPageStateMatcher,\n"
+ " undefined,\n"
+ " [{css: [\"div input\"]}],\n"
+ " /compound selector.*: div input$/);\n"
+ " chrome.test.succeed();\n"
+ " },\n"
+ "]);\n"
+ "\n");
+ ResultCatcher catcher;
+ ASSERT_TRUE(LoadExtension(ext_dir_.unpacked_path()));
+ ASSERT_TRUE(catcher.GetNextResult()) << catcher.message();
+}
+
} // namespace
} // namespace extensions
« no previous file with comments | « no previous file | chrome/chrome_renderer.gypi » ('j') | chrome/renderer/extensions/css_native_handler.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698