#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"
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