| 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) {
|
| + 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
|
|
|