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..60d84b4b371a905b74c8f3a6d5f860b601a0b4d9 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,54 @@ 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" |
+ "\n" |
+ "chrome.test.runTests([\n" |
+ " function canonicalizesCss() {\n" |
+ " var psm = new PageStateMatcher(\n" |
Jeffrey Yasskin
2013/08/26 22:35:19
I ought to be able to run these tests entirely on
not at google - send to devlin
2013/08/27 01:46:14
Given we have no way to spin up a fake webkit inst
Jeffrey Yasskin
2013/08/27 19:09:48
There's something to be said, but it tends to take
not at google - send to devlin
2013/08/27 19:39:53
I do wish there was a better pattern for this.
Pe
|
+ " {css: [\"input[type='password']\"]});\n" |
+ " chrome.test.assertEq(['input[type=\"password\"]'], psm.css);\n" |
+ " chrome.test.succeed();\n" |
+ " },\n" |
+ "\n" |
+ " function throwsOnBadCss() {\n" |
+ " function NewPageStateMatcher(obj) {\n" |
+ " return new PageStateMatcher(obj);\n" |
+ " }" |
+ " chrome.test.assertThrows(NewPageStateMatcher,\n" |
+ " undefined,\n" |
+ " [{css: [\"input''\"]}],\n" |
+ " \"Invalid selector: input''\");\n" |
+ " chrome.test.succeed();\n" |
+ " },\n" |
+ // TODO(jyasskin): Let the extension developer know if their |
+ // selector list includes a complex selector |
+ // (http://dev.w3.org/csswg/selectors4/#structure), since those |
+ // are disallowed by WebDocument::watchSelectors(). |
+ // |
+ // " function throwsOnComplexSelector() {\n" |
+ // " function NewPageStateMatcher(obj) {\n" |
+ // " return new PageStateMatcher(obj);\n" |
+ // " }" |
+ // " chrome.test.assertThrows(NewPageStateMatcher,\n" |
+ // " undefined,\n" |
+ // " [{css: [\"div input\"]}],\n" |
+ // " 'compound selector');\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 |