dlp: reactivate component check for copy Due to missing cache the check was disabled. BUG: b/262223235 Change-Id: Ibdbb66458063a06378b3381b47e3e88d1739295e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4555461 Reviewed-by: Sergey Poromov <poromov@chromium.org> Commit-Queue: Daniel Brinkers <brinky@google.com> Reviewed-by: Aya Elsayed <ayaelattar@chromium.org> Cr-Commit-Position: refs/heads/main@{#1148530}
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_files_controller.cc b/chrome/browser/chromeos/policy/dlp/dlp_files_controller.cc index 9d27a025..4e6cc12 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_files_controller.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_files_controller.cc
@@ -158,7 +158,7 @@ ::dlp::RequestFileAccessRequest file_access_request; file_access_request.add_files_paths(source_file.path().value()); - file_access_request.set_destination_component(component_proto); + file_access_request.set_destination_url(destination.path().DirName().value()); if (component_proto == ::dlp::SYSTEM) { // We allow internal copy, we still have to get the scopedFS @@ -175,9 +175,6 @@ return; } - // TODO(http://b/262223235) check for the actual component. - file_access_request.set_destination_component(::dlp::SYSTEM); - chromeos::DlpClient::Get()->RequestFileAccess( file_access_request, base::BindOnce(
diff --git a/chrome/browser/chromeos/policy/dlp/dlp_files_controller_unittest.cc b/chrome/browser/chromeos/policy/dlp/dlp_files_controller_unittest.cc index e755064..fe369a4 100644 --- a/chrome/browser/chromeos/policy/dlp/dlp_files_controller_unittest.cc +++ b/chrome/browser/chromeos/policy/dlp/dlp_files_controller_unittest.cc
@@ -193,11 +193,11 @@ ::dlp::RequestFileAccessResponse access_response; access_response.set_allowed(true); - EXPECT_CALL(request_file_access_call, - Run(testing::Property( - &::dlp::RequestFileAccessRequest::destination_component, - ::dlp::DlpComponent::SYSTEM), - base::test::IsNotNullCallback())) + EXPECT_CALL( + request_file_access_call, + Run(testing::Property(&::dlp::RequestFileAccessRequest::destination_url, + my_files_dir_.value()), + base::test::IsNotNullCallback())) .WillOnce( base::test::RunOnceCallback<1>(access_response, base::ScopedFD())); chromeos::DlpClient::Get()->GetTestInterface()->SetRequestFileAccessMock( @@ -327,6 +327,10 @@ } TEST_F(DlpFilesControllerTest, FileCopyToExternalAllowTest) { + base::FilePath dest_file = my_files_dir_.Append(FILE_PATH_LITERAL("dest")); + auto destination = storage::FileSystemURL::CreateForTest( + kTestStorageKey, storage::kFileSystemTypeLocal, dest_file); + base::MockRepeatingCallback<void( ::dlp::RequestFileAccessRequest request, chromeos::DlpClient::RequestFileAccessCallback callback)> @@ -334,11 +338,11 @@ ::dlp::RequestFileAccessResponse access_response; access_response.set_allowed(true); - EXPECT_CALL(request_file_access_call, - Run(testing::Property( - &::dlp::RequestFileAccessRequest::destination_component, - ::dlp::DlpComponent::SYSTEM), - base::test::IsNotNullCallback())) + EXPECT_CALL( + request_file_access_call, + Run(testing::Property(&::dlp::RequestFileAccessRequest::destination_url, + destination.path().DirName().value()), + base::test::IsNotNullCallback())) .WillOnce( base::test::RunOnceCallback<1>(access_response, base::ScopedFD())); @@ -359,12 +363,16 @@ base::test::TestFuture<std::unique_ptr<file_access::ScopedFileAccess>> future; ASSERT_TRUE(files_controller_); - files_controller_->RequestCopyAccess( - storage::FileSystemURL(), storage::FileSystemURL(), future.GetCallback()); + files_controller_->RequestCopyAccess(storage::FileSystemURL(), destination, + future.GetCallback()); EXPECT_TRUE(future.Get()->is_allowed()); } TEST_F(DlpFilesControllerTest, FileCopyToExternalDenyTest) { + base::FilePath dest_file = my_files_dir_.Append(FILE_PATH_LITERAL("dest")); + auto destination = storage::FileSystemURL::CreateForTest( + kTestStorageKey, storage::kFileSystemTypeLocal, dest_file); + base::MockRepeatingCallback<void( ::dlp::RequestFileAccessRequest request, chromeos::DlpClient::RequestFileAccessCallback callback)> @@ -372,11 +380,11 @@ ::dlp::RequestFileAccessResponse access_response; access_response.set_allowed(false); - EXPECT_CALL(request_file_access_call, - Run(testing::Property( - &::dlp::RequestFileAccessRequest::destination_component, - ::dlp::DlpComponent::SYSTEM), - base::test::IsNotNullCallback())) + EXPECT_CALL( + request_file_access_call, + Run(testing::Property(&::dlp::RequestFileAccessRequest::destination_url, + destination.path().DirName().value()), + base::test::IsNotNullCallback())) .WillOnce( base::test::RunOnceCallback<1>(access_response, base::ScopedFD())); @@ -397,8 +405,8 @@ base::test::TestFuture<std::unique_ptr<file_access::ScopedFileAccess>> future; ASSERT_TRUE(files_controller_); - files_controller_->RequestCopyAccess( - storage::FileSystemURL(), storage::FileSystemURL(), future.GetCallback()); + files_controller_->RequestCopyAccess(storage::FileSystemURL(), destination, + future.GetCallback()); EXPECT_FALSE(future.Get()->is_allowed()); }