Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / declarative_content / content_action_unittest.cc
index 47d2a70..bf29bb5 100644 (file)
@@ -9,9 +9,9 @@
 #include "chrome/browser/extensions/extension_action_manager.h"
 #include "chrome/browser/extensions/extension_tab_util.h"
 #include "chrome/browser/extensions/test_extension_environment.h"
-#include "chrome/common/extensions/extension_builder.h"
 #include "chrome/test/base/testing_profile.h"
 #include "content/public/browser/web_contents.h"
+#include "extensions/common/extension_builder.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -109,5 +109,181 @@ TEST(DeclarativeContentActionTest, ShowPageAction) {
   EXPECT_FALSE(page_action->GetIsVisible(tab_id));
 }
 
+TEST(DeclarativeContentActionTest, RequestContentScriptMissingScripts) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptCSS) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptJS) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptCSSBadType) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *ParseJson(
+          "{\n"
+          "  \"instanceType\": \"declarativeContent.RequestContentScript\",\n"
+          "  \"css\": \"style.css\"\n"
+          "}"),
+      &error,
+      &bad_message);
+  EXPECT_TRUE(bad_message);
+  ASSERT_FALSE(result.get());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptJSBadType) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *ParseJson(
+          "{\n"
+          "  \"instanceType\": \"declarativeContent.RequestContentScript\",\n"
+          "  \"js\": \"script.js\"\n"
+          "}"),
+      &error,
+      &bad_message);
+  EXPECT_TRUE(bad_message);
+  ASSERT_FALSE(result.get());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptAllFrames) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptMatchAboutBlank) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptAllFramesBadType) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *ParseJson(
+          "{\n"
+          "  \"instanceType\": \"declarativeContent.RequestContentScript\",\n"
+          "  \"js\": [\"script.js\"],\n"
+          "  \"allFrames\": null\n"
+          "}"),
+      &error,
+      &bad_message);
+  EXPECT_TRUE(bad_message);
+  ASSERT_FALSE(result.get());
+}
+
+TEST(DeclarativeContentActionTest, RequestContentScriptMatchAboutBlankBadType) {
+  TestExtensionEnvironment env;
+
+  std::string error;
+  bool bad_message = false;
+  scoped_refptr<const ContentAction> result = ContentAction::Create(
+      NULL,
+      *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