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());
 }