Chromium Code Reviews| 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 |