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

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

Issue 23874006: Add a function to send scripts from a browsertest to an extension's background page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Test that sending a non-string fails the test Created 7 years, 3 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/browser/extensions/browsertest_util.h » ('j') | no next file with comments »
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 55e443ada315a2710c2688a0fa50544c97d6aa8b..04ecc9af4c14586c0fcc723ca408886249dc43c2 100644
--- a/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
+++ b/chrome/browser/extensions/api/declarative_content/declarative_content_apitest.cc
@@ -11,6 +11,7 @@
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/common/extensions/features/feature_channel.h"
#include "content/public/test/browser_test_utils.h"
+#include "testing/gmock/include/gmock/gmock.h"
namespace extensions {
namespace {
@@ -114,57 +115,58 @@ IN_PROC_BROWSER_TEST_F(DeclarativeContentApiTest,
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();
+ "function Return(obj) {\n"
+ " window.domAutomationController.send('' + obj);\n"
+ "}\n");
+ const Extension* extension = LoadExtension(ext_dir_.unpacked_path());
+ ASSERT_TRUE(extension);
+
+ EXPECT_EQ("input[type=\"password\"]",
+ ExecuteScriptInBackgroundPage(
+ extension->id(),
+ "var psm = new PageStateMatcher(\n"
+ " {css: [\"input[type='password']\"]});\n"
+ "Return(psm.css);"));
+
+ EXPECT_THAT(ExecuteScriptInBackgroundPage(
+ extension->id(),
+ "try {\n"
+ " new PageStateMatcher({css: 'Not-an-array'});\n"
+ " Return('Failed to throw');\n"
+ "} catch (e) {\n"
+ " Return(e.message);\n"
+ "}\n"),
+ testing::ContainsRegex("css.*Expected 'array'"));
+ EXPECT_THAT(ExecuteScriptInBackgroundPage(
+ extension->id(),
+ "try {\n"
+ " new PageStateMatcher({css: [null]});\n" // Not a string.
+ " Return('Failed to throw');\n"
+ "} catch (e) {\n"
+ " Return(e.message);\n"
+ "}\n"),
+ testing::ContainsRegex("css\\.0.*Expected 'string'"));
+ EXPECT_THAT(ExecuteScriptInBackgroundPage(
+ extension->id(),
+ "try {\n"
+ // Invalid CSS:
+ " new PageStateMatcher({css: [\"input''\"]});\n"
+ " Return('Failed to throw');\n"
+ "} catch (e) {\n"
+ " Return(e.message);\n"
+ "}\n"),
+ testing::ContainsRegex("valid.*: input''$"));
+ EXPECT_THAT(ExecuteScriptInBackgroundPage(
+ extension->id(),
+ "try {\n"
+ // "Complex" selector:
+ " new PageStateMatcher({css: ['div input']});\n"
+ " Return('Failed to throw');\n"
+ "} catch (e) {\n"
+ " Return(e.message);\n"
+ "}\n"),
+ testing::ContainsRegex("compound selector.*: div input$"));
}
} // namespace
« no previous file with comments | « no previous file | chrome/browser/extensions/browsertest_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698