Index: chrome/browser/extensions/api/declarative_content/request_content_script_browsertest.cc |
diff --git a/chrome/browser/extensions/api/declarative_content/request_content_script_browsertest.cc b/chrome/browser/extensions/api/declarative_content/request_content_script_browsertest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f2920cb0137640ac1f7687f1d582eac985e8ea0e |
--- /dev/null |
+++ b/chrome/browser/extensions/api/declarative_content/request_content_script_browsertest.cc |
@@ -0,0 +1,262 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/files/file_path.h" |
+#include "base/test/values_test_util.h" |
+#include "chrome/browser/extensions/api/declarative_content/content_action.h" |
+#include "chrome/browser/extensions/extension_browsertest.h" |
+#include "chrome/browser/extensions/test_extension_dir.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace extensions { |
+namespace { |
+ |
+const char kRequestContentScriptManifest[] = |
+ "{\n" |
+ " \"name\": \"Request Content Script browsertest\",\n" |
+ " \"version\": \"0.1\",\n" |
+ " \"manifest_version\": 2,\n" |
+ " \"description\": \n" |
+ " \"browser test for the declarativeContentRequestContentScript\",\n" |
+ " \"background\": {\n" |
+ " \"scripts\": [\"background.js\"]\n" |
+ " },\n" |
+ " \"permissions\": [\n" |
+ " \"declarativeContent\"\n" |
+ " ]\n" |
+ "}\n"; |
+ |
+class RequestContentScriptTest : public ExtensionBrowserTest { |
+ public: |
+ void InitBasicExtensionFiles() { |
+ ext_dir().WriteManifest(kRequestContentScriptManifest); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("background.js"), ""); |
+ } |
+ |
+ const Extension* LoadTestExtension() { |
+ const Extension* extension = |
+ LoadExtension(ext_dir().unpacked_path()); |
+ return extension; |
+ } |
+ |
+ TestExtensionDir& ext_dir() { return ext_dir_; } |
+ |
+ private: |
+ TestExtensionDir ext_dir_; |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MissingScripts) { |
Jeffrey Yasskin
2014/08/22 01:12:24
These look like they just duplicate tests in conte
Mark Dittmer
2014/08/22 19:59:19
I originally implemented these as unittest, but th
|
+ InitBasicExtensionFiles(); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"allFrames\": true,\n" |
+ " \"matchAboutBlank\": true\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_THAT(error, testing::HasSubstr("Missing parameter is required")); |
+ EXPECT_FALSE(bad_message); |
+ ASSERT_FALSE(result.get()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, CSS) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("style.css"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"css\": [\"style.css\"]\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_EQ("", error); |
+ EXPECT_FALSE(bad_message); |
+ ASSERT_TRUE(result.get()); |
+ EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, JS) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": [\"script.js\"]\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_EQ("", error); |
+ EXPECT_FALSE(bad_message); |
+ ASSERT_TRUE(result.get()); |
+ EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, CSSBadType) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("style.css"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"css\": \"style.css\"\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_TRUE(bad_message); |
+ ASSERT_FALSE(result.get()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, JSBadType) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": \"script.js\"\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_TRUE(bad_message); |
+ ASSERT_FALSE(result.get()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, AllFrames) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": [\"script.js\"],\n" |
+ " \"allFrames\": true\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_EQ("", error); |
+ EXPECT_FALSE(bad_message); |
+ ASSERT_TRUE(result.get()); |
+ EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MatchAboutBlank) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": [\"script.js\"],\n" |
+ " \"matchAboutBlank\": true\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_EQ("", error); |
+ EXPECT_FALSE(bad_message); |
+ ASSERT_TRUE(result.get()); |
+ EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, AllFramesBadType) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": [\"script.js\"],\n" |
+ " \"allFrames\": null\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_TRUE(bad_message); |
+ ASSERT_FALSE(result.get()); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MatchAboutBlankBadType) { |
+ InitBasicExtensionFiles(); |
+ ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); |
+ const Extension* extension = LoadTestExtension(); |
+ ASSERT_TRUE(extension); |
+ |
+ std::string error; |
+ bool bad_message = false; |
+ scoped_refptr<const ContentAction> result = ContentAction::Create( |
+ profile(), |
+ extension, |
+ *base::test::ParseJson( |
+ "{\n" |
+ " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" |
+ " \"js\": [\"script.js\"],\n" |
+ " \"matchAboutBlank\": null\n" |
+ "}"), |
+ &error, |
+ &bad_message); |
+ EXPECT_TRUE(bad_message); |
+ ASSERT_FALSE(result.get()); |
+} |
+ |
+} // namespace |
+} // namespace extensions |