Commit 81458383 authored by Joe Mason's avatar Joe Mason Committed by Commit Bot

Use ChildProcessLogger in FileRemoverQuarantineTest and SandboxedShortcutParserTest

R=proberge

Bug: 1030333
Change-Id: I66b9b3dc73980e8ed03ee37d89eb172b5330c913
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1948235
Commit-Queue: Joe Mason <joenotcharles@chromium.org>
Reviewed-by: default avatarproberge <proberge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#721193}
parent 33508671
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#include "chrome/chrome_cleaner/os/pre_fetched_paths.h" #include "chrome/chrome_cleaner/os/pre_fetched_paths.h"
#include "chrome/chrome_cleaner/os/system_util.h" #include "chrome/chrome_cleaner/os/system_util.h"
#include "chrome/chrome_cleaner/os/whitelisted_directory.h" #include "chrome/chrome_cleaner/os/whitelisted_directory.h"
#include "chrome/chrome_cleaner/test/child_process_logger.h"
#include "chrome/chrome_cleaner/test/file_remover_test_util.h" #include "chrome/chrome_cleaner/test/file_remover_test_util.h"
#include "chrome/chrome_cleaner/test/reboot_deletion_helper.h" #include "chrome/chrome_cleaner/test/reboot_deletion_helper.h"
#include "chrome/chrome_cleaner/test/resources/grit/test_resources.h" #include "chrome/chrome_cleaner/test/resources/grit/test_resources.h"
...@@ -398,20 +399,47 @@ constexpr wchar_t kTestExpectArchiveName[] = ...@@ -398,20 +399,47 @@ constexpr wchar_t kTestExpectArchiveName[] =
L"temp_file.exe_" L"temp_file.exe_"
L"A591A6D40BF420404A011733CFB7B190D62C65BF0BCDA32B57B277D9AD9F146E.zip"; L"A591A6D40BF420404A011733CFB7B190D62C65BF0BCDA32B57B277D9AD9F146E.zip";
class LoggedZipArchiverSandboxSetupHooks : public ZipArchiverSandboxSetupHooks {
public:
explicit LoggedZipArchiverSandboxSetupHooks(
scoped_refptr<MojoTaskRunner> mojo_task_runner,
base::OnceClosure connection_error_handler,
chrome_cleaner::ChildProcessLogger* child_process_logger)
: ZipArchiverSandboxSetupHooks(std::move(mojo_task_runner),
std::move(connection_error_handler)),
child_process_logger_(child_process_logger) {}
ResultCode UpdateSandboxPolicy(sandbox::TargetPolicy* policy,
base::CommandLine* command_line) override {
child_process_logger_->UpdateSandboxPolicy(policy);
return ZipArchiverSandboxSetupHooks::UpdateSandboxPolicy(policy,
command_line);
}
private:
chrome_cleaner::ChildProcessLogger* child_process_logger_;
};
class FileRemoverQuarantineTest : public base::MultiProcessTest, class FileRemoverQuarantineTest : public base::MultiProcessTest,
public ::testing::WithParamInterface<bool> { public ::testing::WithParamInterface<bool> {
public: public:
void SetUp() override { void SetUp() override {
use_reboot_removal_ = GetParam(); use_reboot_removal_ = GetParam();
ASSERT_TRUE(child_process_logger_.Initialize());
scoped_refptr<MojoTaskRunner> mojo_task_runner = MojoTaskRunner::Create(); scoped_refptr<MojoTaskRunner> mojo_task_runner = MojoTaskRunner::Create();
ZipArchiverSandboxSetupHooks setup_hooks( LoggedZipArchiverSandboxSetupHooks setup_hooks(
mojo_task_runner.get(), base::BindOnce([] { mojo_task_runner.get(), base::BindOnce([] {
FAIL() << "ZipArchiver sandbox connection error"; FAIL() << "ZipArchiver sandbox connection error";
})); }),
ASSERT_EQ(RESULT_CODE_SUCCESS, &child_process_logger_);
ResultCode result_code =
StartSandboxTarget(MakeCmdLine("FileRemoverQuarantineTargetMain"), StartSandboxTarget(MakeCmdLine("FileRemoverQuarantineTargetMain"),
&setup_hooks, SandboxType::kTest)); &setup_hooks, SandboxType::kTest);
if (result_code != RESULT_CODE_SUCCESS)
child_process_logger_.DumpLogs();
ASSERT_EQ(RESULT_CODE_SUCCESS, result_code);
ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
...@@ -447,6 +475,7 @@ class FileRemoverQuarantineTest : public base::MultiProcessTest, ...@@ -447,6 +475,7 @@ class FileRemoverQuarantineTest : public base::MultiProcessTest,
base::test::SingleThreadTaskEnvironment task_environment_; base::test::SingleThreadTaskEnvironment task_environment_;
base::ScopedTempDir temp_dir_; base::ScopedTempDir temp_dir_;
std::unique_ptr<FileRemover> file_remover_; std::unique_ptr<FileRemover> file_remover_;
chrome_cleaner::ChildProcessLogger child_process_logger_;
}; };
} // namespace } // namespace
......
...@@ -67,6 +67,7 @@ source_set("unittest_sources") { ...@@ -67,6 +67,7 @@ source_set("unittest_sources") {
"//chrome/chrome_cleaner/parsers/shortcut_parser:sandboxed_lnk_parser_test_util", "//chrome/chrome_cleaner/parsers/shortcut_parser:sandboxed_lnk_parser_test_util",
"//chrome/chrome_cleaner/parsers/shortcut_parser/target:lnk_parser", "//chrome/chrome_cleaner/parsers/shortcut_parser/target:lnk_parser",
"//chrome/chrome_cleaner/parsers/target:parser_sandbox_target", "//chrome/chrome_cleaner/parsers/target:parser_sandbox_target",
"//chrome/chrome_cleaner/test:test_util",
"//mojo/public/cpp/bindings:bindings", "//mojo/public/cpp/bindings:bindings",
"//sandbox/win:sandbox", "//sandbox/win:sandbox",
"//testing/gtest", "//testing/gtest",
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "chrome/chrome_cleaner/parsers/broker/sandbox_setup_hooks.h" #include "chrome/chrome_cleaner/parsers/broker/sandbox_setup_hooks.h"
#include "chrome/chrome_cleaner/parsers/shortcut_parser/sandboxed_lnk_parser_test_util.h" #include "chrome/chrome_cleaner/parsers/shortcut_parser/sandboxed_lnk_parser_test_util.h"
#include "chrome/chrome_cleaner/parsers/target/sandbox_setup.h" #include "chrome/chrome_cleaner/parsers/target/sandbox_setup.h"
#include "chrome/chrome_cleaner/test/child_process_logger.h"
#include "mojo/public/cpp/bindings/interface_request.h" #include "mojo/public/cpp/bindings/interface_request.h"
#include "mojo/public/cpp/system/platform_handle.h" #include "mojo/public/cpp/system/platform_handle.h"
#include "sandbox/win/src/sandbox_factory.h" #include "sandbox/win/src/sandbox_factory.h"
...@@ -31,6 +32,26 @@ constexpr unsigned int kDirQuantity = 5; ...@@ -31,6 +32,26 @@ constexpr unsigned int kDirQuantity = 5;
const base::string16 kLnkArguments = L"-a -b -c -d GenericExample"; const base::string16 kLnkArguments = L"-a -b -c -d GenericExample";
class LoggedParserSandboxSetupHooks : public ParserSandboxSetupHooks {
public:
explicit LoggedParserSandboxSetupHooks(
scoped_refptr<MojoTaskRunner> mojo_task_runner,
base::OnceClosure connection_error_handler,
chrome_cleaner::ChildProcessLogger* child_process_logger)
: ParserSandboxSetupHooks(std::move(mojo_task_runner),
std::move(connection_error_handler)),
child_process_logger_(child_process_logger) {}
ResultCode UpdateSandboxPolicy(sandbox::TargetPolicy* policy,
base::CommandLine* command_line) override {
child_process_logger_->UpdateSandboxPolicy(policy);
return ParserSandboxSetupHooks::UpdateSandboxPolicy(policy, command_line);
}
private:
chrome_cleaner::ChildProcessLogger* child_process_logger_;
};
} // namespace } // namespace
class SandboxedShortcutParserTest : public base::MultiProcessTest { class SandboxedShortcutParserTest : public base::MultiProcessTest {
...@@ -40,14 +61,20 @@ class SandboxedShortcutParserTest : public base::MultiProcessTest { ...@@ -40,14 +61,20 @@ class SandboxedShortcutParserTest : public base::MultiProcessTest {
temp_dirs_with_chrome_lnk_(kDirQuantity) {} temp_dirs_with_chrome_lnk_(kDirQuantity) {}
void SetUp() override { void SetUp() override {
ASSERT_TRUE(child_process_logger_.Initialize());
mojo_task_runner_ = MojoTaskRunner::Create(); mojo_task_runner_ = MojoTaskRunner::Create();
ParserSandboxSetupHooks setup_hooks( ParserSandboxSetupHooks setup_hooks(
mojo_task_runner_.get(), mojo_task_runner_.get(),
base::BindOnce([] { FAIL() << "Parser sandbox connection error"; })); base::BindOnce([] { FAIL() << "Parser sandbox connection error"; }));
ASSERT_EQ(
RESULT_CODE_SUCCESS, ResultCode result_code =
StartSandboxTarget(MakeCmdLine("SandboxedShortcutParserTargetMain"), StartSandboxTarget(MakeCmdLine("SandboxedShortcutParserTargetMain"),
&setup_hooks, SandboxType::kTest)); &setup_hooks, SandboxType::kTest);
if (result_code != RESULT_CODE_SUCCESS)
child_process_logger_.DumpLogs();
ASSERT_EQ(RESULT_CODE_SUCCESS, result_code);
parser_ = setup_hooks.TakeParserRemote(); parser_ = setup_hooks.TakeParserRemote();
shortcut_parser_ = std::make_unique<SandboxedShortcutParser>( shortcut_parser_ = std::make_unique<SandboxedShortcutParser>(
mojo_task_runner_.get(), parser_.get()); mojo_task_runner_.get(), parser_.get());
...@@ -98,6 +125,8 @@ class SandboxedShortcutParserTest : public base::MultiProcessTest { ...@@ -98,6 +125,8 @@ class SandboxedShortcutParserTest : public base::MultiProcessTest {
base::FilePath not_lnk_file_path_; base::FilePath not_lnk_file_path_;
base::test::TaskEnvironment task_environment_; base::test::TaskEnvironment task_environment_;
chrome_cleaner::ChildProcessLogger child_process_logger_;
}; };
MULTIPROCESS_TEST_MAIN(SandboxedShortcutParserTargetMain) { MULTIPROCESS_TEST_MAIN(SandboxedShortcutParserTargetMain) {
......
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