Commit 4fd9442f authored by Devlin Cronin's avatar Devlin Cronin Committed by Commit Bot

[Extensions] Introduce TestExtensionDir::CopyFileTo()

Add a TestExtensionDir::CopyFileTo() method that copies a given
filepath into the temporary directory held by the TestExtensionDir. This
prevents callers from having to either do the copy more manually
(reading the content and then writing it) or poking into the
TestExtensionDir's inner temp directory.

Bug: None
Change-Id: I3ce727548ff9a4184c33d57bbacaee7e132baa43
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2265292Reviewed-by: default avatarDavid Bertoni <dbertoni@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#782260}
parent b6730bf2
......@@ -549,24 +549,16 @@ IN_PROC_BROWSER_TEST_P(MultiActionAPICanvasTest, DynamicSetIcon) {
"background": { "scripts": ["background.js"] }
})";
std::string blue_icon;
std::string red_icon;
{
base::ScopedAllowBlockingForTesting allow_blocking;
ASSERT_TRUE(base::ReadFileToString(
test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"), &blue_icon));
ASSERT_TRUE(base::ReadFileToString(
test_data_dir_.AppendASCII("icon_rgb_255_0_0.png"), &red_icon));
}
TestExtensionDir test_dir;
test_dir.WriteManifest(base::StringPrintf(
kManifestTemplate, GetManifestKeyForActionType(GetParam())));
test_dir.WriteFile(FILE_PATH_LITERAL("background.js"),
base::StringPrintf(kSetIconBackgroundJsTemplate,
GetAPINameForActionType(GetParam())));
test_dir.WriteFile(FILE_PATH_LITERAL("blue_icon.png"), blue_icon);
test_dir.WriteFile(FILE_PATH_LITERAL("red_icon.png"), red_icon);
test_dir.CopyFileTo(test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"),
FILE_PATH_LITERAL("blue_icon.png"));
test_dir.CopyFileTo(test_data_dir_.AppendASCII("icon_rgb_255_0_0.png"),
FILE_PATH_LITERAL("red_icon.png"));
const Extension* extension = LoadExtension(test_dir.UnpackedPath());
ASSERT_TRUE(extension);
......@@ -672,20 +664,14 @@ IN_PROC_BROWSER_TEST_P(MultiActionAPITest, SetIconWithJavascriptHooks) {
"background": { "scripts": ["background.js"] }
})";
std::string blue_icon;
{
base::ScopedAllowBlockingForTesting allow_blocking;
ASSERT_TRUE(base::ReadFileToString(
test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"), &blue_icon));
}
TestExtensionDir test_dir;
test_dir.WriteManifest(base::StringPrintf(
kManifestTemplate, GetManifestKeyForActionType(GetParam())));
test_dir.WriteFile(FILE_PATH_LITERAL("background.js"),
base::StringPrintf(kSetIconBackgroundJsTemplate,
GetAPINameForActionType(GetParam())));
test_dir.WriteFile(FILE_PATH_LITERAL("blue_icon.png"), blue_icon);
test_dir.CopyFileTo(test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"),
FILE_PATH_LITERAL("blue_icon.png"));
const Extension* extension = LoadExtension(test_dir.UnpackedPath());
ASSERT_TRUE(extension);
......@@ -738,13 +724,6 @@ IN_PROC_BROWSER_TEST_P(MultiActionAPITest, SetIconWithSelfDefined) {
"background": { "scripts": ["background.js"] }
})";
std::string blue_icon;
{
base::ScopedAllowBlockingForTesting allow_blocking;
ASSERT_TRUE(base::ReadFileToString(
test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"), &blue_icon));
}
TestExtensionDir test_dir;
test_dir.WriteManifest(base::StringPrintf(
kManifestTemplate, GetManifestKeyForActionType(GetParam())));
......@@ -752,7 +731,8 @@ IN_PROC_BROWSER_TEST_P(MultiActionAPITest, SetIconWithSelfDefined) {
test_dir.WriteFile(FILE_PATH_LITERAL("background.js"),
base::StringPrintf(kSetIconBackgroundJsTemplate,
GetAPINameForActionType(GetParam())));
test_dir.WriteFile(FILE_PATH_LITERAL("blue_icon.png"), blue_icon);
test_dir.CopyFileTo(test_data_dir_.AppendASCII("icon_rgb_0_0_255.png"),
FILE_PATH_LITERAL("blue_icon.png"));
const Extension* extension = LoadExtension(test_dir.UnpackedPath());
ASSERT_TRUE(extension);
......
......@@ -4,7 +4,6 @@
#include "base/macros.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/extensions/extension_action_manager.h"
#include "chrome/browser/extensions/extension_browsertest.h"
#include "chrome/browser/ui/browser.h"
......@@ -123,18 +122,12 @@ IN_PROC_BROWSER_TEST_F(ManifestV3BrowserTest, ActionAPI) {
});
chrome.test.sendMessage('ready');)";
std::string blue_icon;
{
base::ScopedAllowBlockingForTesting allow_blocking;
ASSERT_TRUE(base::ReadFileToString(
test_data_dir_.AppendASCII("api_test/icon_rgb_0_0_255.png"),
&blue_icon));
}
TestExtensionDir test_dir;
test_dir.WriteManifest(kManifest);
test_dir.WriteFile(FILE_PATH_LITERAL("worker.js"), kWorker);
test_dir.WriteFile(FILE_PATH_LITERAL("blue_icon.png"), blue_icon);
test_dir.CopyFileTo(
test_data_dir_.AppendASCII("api_test/icon_rgb_0_0_255.png"),
FILE_PATH_LITERAL("blue_icon.png"));
ExtensionTestMessageListener listener("ready", /*will_reply=*/false);
const Extension* extension = LoadMv3Extension(test_dir.UnpackedPath());
......
......@@ -36,6 +36,15 @@ void TestExtensionDir::WriteFile(const base::FilePath::StringType& filename,
contents.size()));
}
void TestExtensionDir::CopyFileTo(
const base::FilePath& from_path,
const base::FilePath::StringType& local_filename) {
base::ScopedAllowBlockingForTesting allow_blocking;
ASSERT_TRUE(base::PathExists(from_path)) << from_path;
EXPECT_TRUE(base::CopyFile(from_path, dir_.GetPath().Append(local_filename)))
<< "Failed to copy file from " << from_path << " to " << local_filename;
}
base::FilePath TestExtensionDir::Pack() {
base::ScopedAllowBlockingForTesting allow_blocking;
ExtensionCreator creator;
......
......@@ -28,6 +28,11 @@ class TestExtensionDir {
void WriteFile(const base::FilePath::StringType& filename,
base::StringPiece contents);
// Copies the file at |from_path| into |local_filename| under the temp
// directory, overwriting anything that was already there.
void CopyFileTo(const base::FilePath& from_path,
const base::FilePath::StringType& local_filename);
// Packs the extension into a .crx, and returns the path to that
// .crx. Multiple calls to Pack() will produce extensions with the same ID.
base::FilePath Pack();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment