[NTP] Rename drive module to file suggestion for cleaner reuse of code

This change is helping to prepare for another source for file
suggestions to be added to the NTP. The other file suggestion source
will have the same UX; therefore, it would be best to reuse as much code
as possible.

Code that can be used across both sources for the module, are changed
to use the term "file_suggestion" instead of "drive". Code that is
specific to the Drive source keeps the name "drive". This shouldn't
change any functionality. It is just meant to make the reuse of this
code cleaner.

I left v1 of the module largely alone, since extra source support will
not be added for the older version of modules .

Bug: 329897261
Change-Id: Iea892bde0de6404055cfd818c2391206346190bf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5429052
Reviewed-by: Nicolas Ouellet-Payeur <nicolaso@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Riley Tatum <rtatum@google.com>
Reviewed-by: Roman Arora <romanarora@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1283992}
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index be90eef..dc5ce67 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4112,14 +4112,14 @@
       "new_tab_page/chrome_colors/chrome_colors_service.h",
       "new_tab_page/feature_promo_helper/new_tab_page_feature_promo_helper.cc",
       "new_tab_page/feature_promo_helper/new_tab_page_feature_promo_helper.h",
-      "new_tab_page/modules/drive/drive_handler.cc",
-      "new_tab_page/modules/drive/drive_handler.h",
-      "new_tab_page/modules/drive/drive_service.cc",
-      "new_tab_page/modules/drive/drive_service.h",
-      "new_tab_page/modules/drive/drive_service_factory.cc",
-      "new_tab_page/modules/drive/drive_service_factory.h",
       "new_tab_page/modules/feed/feed_handler.cc",
       "new_tab_page/modules/feed/feed_handler.h",
+      "new_tab_page/modules/file_suggestion/drive_service.cc",
+      "new_tab_page/modules/file_suggestion/drive_service.h",
+      "new_tab_page/modules/file_suggestion/drive_service_factory.cc",
+      "new_tab_page/modules/file_suggestion/drive_service_factory.h",
+      "new_tab_page/modules/file_suggestion/file_suggestion_handler.cc",
+      "new_tab_page/modules/file_suggestion/file_suggestion_handler.h",
       "new_tab_page/modules/history_clusters/cart/cart_processor.cc",
       "new_tab_page/modules/history_clusters/cart/cart_processor.h",
       "new_tab_page/modules/history_clusters/discount/discount_processor.cc",
@@ -4638,8 +4638,8 @@
       "//chrome/browser/media/router/discovery/access_code:access_code_sink_service",
       "//chrome/browser/new_tab_page/chrome_colors:generate_chrome_colors_info",
       "//chrome/browser/new_tab_page/chrome_colors:generate_colors_info",
-      "//chrome/browser/new_tab_page/modules/drive:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/feed:mojo_bindings",
+      "//chrome/browser/new_tab_page/modules/file_suggestion:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters/discount:mojo_bindings",
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
index c15b470..288a8ec 100644
--- a/chrome/browser/chrome_browser_interface_binders.cc
+++ b/chrome/browser/chrome_browser_interface_binders.cc
@@ -152,8 +152,8 @@
 #else
 #include "chrome/browser/badging/badge_manager.h"
 #include "chrome/browser/cart/chrome_cart.mojom.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive.mojom.h"
 #include "chrome/browser/new_tab_page/modules/feed/feed.mojom.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h"
 #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h"
 #include "chrome/browser/new_tab_page/modules/photos/photos.mojom.h"
 #include "chrome/browser/new_tab_page/modules/recipes/recipes.mojom.h"
@@ -1273,8 +1273,8 @@
   }
 
   if (IsDriveModuleEnabled()) {
-    RegisterWebUIControllerInterfaceBinder<drive::mojom::DriveHandler,
-                                           NewTabPageUI>(map);
+    RegisterWebUIControllerInterfaceBinder<
+        file_suggestion::mojom::FileSuggestionHandler, NewTabPageUI>(map);
   }
 
   if (base::FeatureList::IsEnabled(ntp_features::kNtpPhotosModule)) {
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_handler.cc b/chrome/browser/new_tab_page/modules/drive/drive_handler.cc
deleted file mode 100644
index c9206c78..0000000
--- a/chrome/browser/new_tab_page/modules/drive/drive_handler.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/new_tab_page/modules/drive/drive_handler.h"
-
-#include "chrome/browser/new_tab_page/modules/drive/drive_service.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive_service_factory.h"
-
-DriveHandler::DriveHandler(
-    mojo::PendingReceiver<drive::mojom::DriveHandler> handler,
-    Profile* profile)
-    : handler_(this, std::move(handler)), profile_(profile) {}
-
-DriveHandler::~DriveHandler() = default;
-
-void DriveHandler::GetFiles(GetFilesCallback callback) {
-  DriveServiceFactory::GetForProfile(profile_)->GetDriveFiles(
-      std::move(callback));
-}
-
-void DriveHandler::DismissModule() {
-  DriveServiceFactory::GetForProfile(profile_)->DismissModule();
-}
-
-void DriveHandler::RestoreModule() {
-  DriveServiceFactory::GetForProfile(profile_)->RestoreModule();
-}
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_handler.h b/chrome/browser/new_tab_page/modules/drive/drive_handler.h
deleted file mode 100644
index a0fdb72..0000000
--- a/chrome/browser/new_tab_page/modules/drive/drive_handler.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_HANDLER_H_
-#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_HANDLER_H_
-
-#include "base/memory/raw_ptr.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive.mojom.h"
-#include "mojo/public/cpp/bindings/pending_receiver.h"
-#include "mojo/public/cpp/bindings/receiver.h"
-
-class Profile;
-
-// Handles requests of drive modules sent from JS.
-class DriveHandler : public drive::mojom::DriveHandler {
- public:
-  DriveHandler(mojo::PendingReceiver<drive::mojom::DriveHandler> handler,
-               Profile* profile);
-  ~DriveHandler() override;
-
-  // drive::mojom::DriveHandler:
-  void GetFiles(GetFilesCallback callback) override;
-  void DismissModule() override;
-  void RestoreModule() override;
-
- private:
-  mojo::Receiver<drive::mojom::DriveHandler> handler_;
-  raw_ptr<Profile> profile_;
-};
-
-#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_HANDLER_H_
diff --git a/chrome/browser/new_tab_page/modules/drive/BUILD.gn b/chrome/browser/new_tab_page/modules/file_suggestion/BUILD.gn
similarity index 88%
rename from chrome/browser/new_tab_page/modules/drive/BUILD.gn
rename to chrome/browser/new_tab_page/modules/file_suggestion/BUILD.gn
index c0d942a..e5eda65 100644
--- a/chrome/browser/new_tab_page/modules/drive/BUILD.gn
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/BUILD.gn
@@ -7,7 +7,7 @@
 assert(!is_android)
 
 mojom("mojo_bindings") {
-  sources = [ "drive.mojom" ]
+  sources = [ "file_suggestion.mojom" ]
   webui_module_path = "/"
   public_deps = [ "//url/mojom:url_mojom_gurl" ]
 }
diff --git a/chrome/browser/new_tab_page/modules/drive/OWNERS b/chrome/browser/new_tab_page/modules/file_suggestion/OWNERS
similarity index 100%
rename from chrome/browser/new_tab_page/modules/drive/OWNERS
rename to chrome/browser/new_tab_page/modules/file_suggestion/OWNERS
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service.cc b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc
similarity index 96%
rename from chrome/browser/new_tab_page/modules/drive/drive_service.cc
rename to chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc
index 5327309..f9db58ea9 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive_service.cc
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/new_tab_page/modules/drive/drive_service.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h"
 
 #include <algorithm>
 #include <cstdint>
@@ -283,7 +283,7 @@
       base::Time::Now() - pref_service_->GetTime(kLastDismissedTimePrefName) <
           kDismissDuration) {
     for (auto& callback : callbacks_) {
-      std::move(callback).Run(std::vector<drive::mojom::FilePtr>());
+      std::move(callback).Run(std::vector<file_suggestion::mojom::FilePtr>());
     }
     callbacks_.clear();
     return;
@@ -328,7 +328,7 @@
   token_fetcher_.reset();
   if (error.state() != GoogleServiceAuthError::NONE) {
     for (auto& callback : callbacks_) {
-      std::move(callback).Run(std::vector<drive::mojom::FilePtr>());
+      std::move(callback).Run(std::vector<file_suggestion::mojom::FilePtr>());
     }
     callbacks_.clear();
     return;
@@ -400,7 +400,7 @@
     base::UmaHistogramEnumeration("NewTabPage.Drive.ItemSuggestRequestResult",
                                   ItemSuggestRequestResult::kNetworkError);
     for (auto& callback : callbacks_) {
-      std::move(callback).Run(std::vector<drive::mojom::FilePtr>());
+      std::move(callback).Run(std::vector<file_suggestion::mojom::FilePtr>());
     }
     callbacks_.clear();
     return;
@@ -419,7 +419,7 @@
     base::UmaHistogramEnumeration("NewTabPage.Drive.ItemSuggestRequestResult",
                                   ItemSuggestRequestResult::kJsonParseError);
     for (auto& callback : callbacks_) {
-      std::move(callback).Run(std::vector<drive::mojom::FilePtr>());
+      std::move(callback).Run(std::vector<file_suggestion::mojom::FilePtr>());
     }
     callbacks_.clear();
     return;
@@ -429,13 +429,13 @@
     base::UmaHistogramEnumeration("NewTabPage.Drive.ItemSuggestRequestResult",
                                   ItemSuggestRequestResult::kContentError);
     for (auto& callback : callbacks_) {
-      std::move(callback).Run(std::vector<drive::mojom::FilePtr>());
+      std::move(callback).Run(std::vector<file_suggestion::mojom::FilePtr>());
     }
     callbacks_.clear();
     return;
   }
   ItemSuggestRequestResult request_result = ItemSuggestRequestResult::kSuccess;
-  std::vector<drive::mojom::FilePtr> document_list;
+  std::vector<file_suggestion::mojom::FilePtr> document_list;
   for (const auto& item : *items) {
     const auto& item_dict = item.GetDict();
     auto* title = item_dict.FindStringByDottedPath("driveItem.title");
@@ -463,7 +463,7 @@
       request_result = ItemSuggestRequestResult::kContentError;
       continue;
     }
-    auto mojo_drive_doc = drive::mojom::File::New();
+    auto mojo_drive_doc = file_suggestion::mojom::File::New();
     mojo_drive_doc->title = *title;
     mojo_drive_doc->mime_type = *mime_type;
     mojo_drive_doc->justification_text = justification_text;
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service.h b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h
similarity index 89%
rename from chrome/browser/new_tab_page/modules/drive/drive_service.h
rename to chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h
index 60d12eef..a24ee4c 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive_service.h
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_H_
-#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_H_
+#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_H_
+#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_H_
 
 #include <memory>
 #include <string>
@@ -11,7 +11,7 @@
 #include "base/memory/raw_ptr.h"
 #include "base/sequence_checker.h"
 #include "base/time/time.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive.mojom.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h"
 #include "chrome/browser/profiles/profile.h"
 #include "components/keyed_service/core/keyed_service.h"
 #include "components/segmentation_platform/public/result.h"
@@ -58,7 +58,7 @@
 
   static void RegisterProfilePrefs(PrefRegistrySimple* registry);
 
-  using GetFilesCallback = drive::mojom::DriveHandler::GetFilesCallback;
+  using GetFilesCallback = file_suggestion::mojom::FileSuggestionHandler::GetFilesCallback;
   // Retrieves Google Drive document suggestions from ItemSuggest API.
   void GetDriveFiles(GetFilesCallback get_files_callback);
   // Retrieves classification result from segmentation platform before
@@ -97,4 +97,4 @@
   base::WeakPtrFactory<DriveService> weak_factory_{this};
 };
 
-#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_H_
+#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_H_
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service_factory.cc b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.cc
similarity index 92%
rename from chrome/browser/new_tab_page/modules/drive/drive_service_factory.cc
rename to chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.cc
index c04be9f..07f2565 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive_service_factory.cc
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.cc
@@ -2,11 +2,11 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/new_tab_page/modules/drive/drive_service_factory.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h"
 
 #include "chrome/browser/browser_process.h"
 #include "chrome/browser/content_settings/cookie_settings_factory.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive_service.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h"
 #include "chrome/browser/profiles/profile.h"
 #include "chrome/browser/segmentation_platform/segmentation_platform_service_factory.h"
 #include "chrome/browser/signin/identity_manager_factory.h"
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service_factory.h b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h
similarity index 76%
rename from chrome/browser/new_tab_page/modules/drive/drive_service_factory.h
rename to chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h
index 565fed4f..751c6bb3f 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive_service_factory.h
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_FACTORY_H_
-#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_FACTORY_H_
+#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_FACTORY_H_
+#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_FACTORY_H_
 
 #include "base/no_destructor.h"
 #include "chrome/browser/profiles/profile_keyed_service_factory.h"
@@ -27,4 +27,4 @@
       content::BrowserContext* context) const override;
 };
 
-#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_DRIVE_DRIVE_SERVICE_FACTORY_H_
+#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_DRIVE_SERVICE_FACTORY_H_
diff --git a/chrome/browser/new_tab_page/modules/drive/drive_service_unittest.cc b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc
similarity index 93%
rename from chrome/browser/new_tab_page/modules/drive/drive_service_unittest.cc
rename to chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc
index 0c4148a..73c4835 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive_service_unittest.cc
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include "chrome/browser/new_tab_page/modules/drive/drive_service.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h"
+
 #include "base/barrier_closure.h"
 #include "base/hash/hash.h"
 #include "base/json/json_reader.h"
@@ -59,14 +60,14 @@
 };
 
 TEST_F(DriveServiceTest, PassesDataOnSuccess) {
-  std::vector<drive::mojom::FilePtr> actual_documents;
+  std::vector<file_suggestion::mojom::FilePtr> actual_documents;
   auto quit_closure = task_environment_.QuitClosure();
   base::MockCallback<DriveService::GetFilesCallback> callback;
 
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             actual_documents = std::move(documents);
             quit_closure.Run();
           }));
@@ -170,10 +171,10 @@
   auto quit_closure = task_environment_.QuitClosure();
   auto barrier_closure = base::BarrierClosure(4, quit_closure);
 
-  std::vector<drive::mojom::FilePtr> response1;
-  std::vector<drive::mojom::FilePtr> response2;
-  std::vector<drive::mojom::FilePtr> response3;
-  std::vector<drive::mojom::FilePtr> response4;
+  std::vector<file_suggestion::mojom::FilePtr> response1;
+  std::vector<file_suggestion::mojom::FilePtr> response2;
+  std::vector<file_suggestion::mojom::FilePtr> response3;
+  std::vector<file_suggestion::mojom::FilePtr> response4;
 
   base::MockCallback<DriveService::GetFilesCallback> callback1;
   base::MockCallback<DriveService::GetFilesCallback> callback2;
@@ -182,28 +183,28 @@
   EXPECT_CALL(callback1, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             response1 = std::move(documents);
             barrier_closure.Run();
           }));
   EXPECT_CALL(callback2, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             response2 = std::move(documents);
             barrier_closure.Run();
           }));
   EXPECT_CALL(callback3, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             response3 = std::move(documents);
             barrier_closure.Run();
           }));
   EXPECT_CALL(callback4, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             response4 = std::move(documents);
             barrier_closure.Run();
           }));
@@ -302,13 +303,13 @@
           ]
         }
       )";
-  std::vector<drive::mojom::FilePtr> response;
+  std::vector<file_suggestion::mojom::FilePtr> response;
   base::MockCallback<DriveService::GetFilesCallback> callback;
 
   auto quit_closure = task_environment_.QuitClosure();
   EXPECT_CALL(callback, Run(testing::_))
       .WillRepeatedly(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             response = std::move(documents);
             quit_closure.Run();
           }));
@@ -405,14 +406,14 @@
       GetClassificationResult(testing::_, testing::_, testing::_, testing::_))
       .WillOnce(base::test::RunOnceCallback<3>(result));
 
-  std::vector<drive::mojom::FilePtr> actual_documents;
+  std::vector<file_suggestion::mojom::FilePtr> actual_documents;
   auto quit_closure = task_environment_.QuitClosure();
   base::MockCallback<DriveService::GetFilesCallback> callback;
 
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             actual_documents = std::move(documents);
             quit_closure.Run();
           }));
@@ -499,7 +500,7 @@
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(testing::Invoke(
-          [&passed_no_data](std::vector<drive::mojom::FilePtr> suggestions) {
+          [&passed_no_data](std::vector<file_suggestion::mojom::FilePtr> suggestions) {
             passed_no_data = suggestions.empty();
           }));
 
@@ -517,7 +518,7 @@
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(testing::Invoke(
-          [&token_is_valid](std::vector<drive::mojom::FilePtr> suggestions) {
+          [&token_is_valid](std::vector<file_suggestion::mojom::FilePtr> suggestions) {
             token_is_valid = !suggestions.empty();
           }));
 
@@ -540,7 +541,7 @@
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> suggestions) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> suggestions) {
             empty_response = suggestions.empty();
             quit_closure.Run();
           }));
@@ -581,7 +582,7 @@
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> suggestions) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> suggestions) {
             empty_response = suggestions.empty();
             quit_closure.Run();
           }));
@@ -607,13 +608,13 @@
 
 TEST_F(DriveServiceTest, PassesNoDataOnMissingItemKey) {
   auto quit_closure = task_environment_.QuitClosure();
-  std::vector<drive::mojom::FilePtr> actual_documents;
+  std::vector<file_suggestion::mojom::FilePtr> actual_documents;
   base::MockCallback<DriveService::GetFilesCallback> callback;
 
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             actual_documents = std::move(documents);
             quit_closure.Run();
           }));
@@ -665,12 +666,12 @@
 };
 
 TEST_F(DriveServiceFakeDataTest, ReturnsFakeData) {
-  std::vector<drive::mojom::FilePtr> fake_documents;
+  std::vector<file_suggestion::mojom::FilePtr> fake_documents;
   base::MockCallback<DriveService::GetFilesCallback> callback;
   EXPECT_CALL(callback, Run(testing::_))
       .Times(1)
       .WillOnce(
-          testing::Invoke([&](std::vector<drive::mojom::FilePtr> documents) {
+          testing::Invoke([&](std::vector<file_suggestion::mojom::FilePtr> documents) {
             fake_documents = std::move(documents);
           }));
 
diff --git a/chrome/browser/new_tab_page/modules/drive/drive.mojom b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom
similarity index 64%
rename from chrome/browser/new_tab_page/modules/drive/drive.mojom
rename to chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom
index ccfff1d9..55468e72 100644
--- a/chrome/browser/new_tab_page/modules/drive/drive.mojom
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom
@@ -2,26 +2,26 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-module drive.mojom;
+module file_suggestion.mojom;
 
 import "url/mojom/url.mojom";
 
-// A Google Drive File.
+// A Google Drive or Microsoft Sharepoint File.
 struct File {
-  // The ID of the Drive Item.
+  // The ID of the File Item.
   string id;
-  // Information on why the Drive Item was returned.
+  // Information on why the File Item was returned.
   string justification_text;
-  // The mime type of the Drive Item.
+  // The mime type of the File Item.
   string mime_type;
-  // The name of the Drive Item.
+  // The name of the File Item.
   string title;
-  // The URL to navigate to the Drive Item.
+  // The URL to navigate to the File Item.
   url.mojom.Url item_url;
 };
 
 // Browser-side handler for requests from NTP Module UI.
-interface DriveHandler {
+interface FileSuggestionHandler {
   // Fetches document suggestions from ItemSuggest API.
   GetFiles() => (array<File> files);
   // Dismissed module for fixed amount of time.
diff --git a/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.cc b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.cc
new file mode 100644
index 0000000..e0267253
--- /dev/null
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.cc
@@ -0,0 +1,29 @@
+// Copyright 2021 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.h"
+
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h"
+
+FileSuggestionHandler::FileSuggestionHandler(
+    mojo::PendingReceiver<file_suggestion::mojom::FileSuggestionHandler>
+        handler,
+    Profile* profile)
+    : handler_(this, std::move(handler)), profile_(profile) {}
+
+FileSuggestionHandler::~FileSuggestionHandler() = default;
+
+void FileSuggestionHandler::GetFiles(GetFilesCallback callback) {
+  DriveServiceFactory::GetForProfile(profile_)->GetDriveFiles(
+      std::move(callback));
+}
+
+void FileSuggestionHandler::DismissModule() {
+  DriveServiceFactory::GetForProfile(profile_)->DismissModule();
+}
+
+void FileSuggestionHandler::RestoreModule() {
+  DriveServiceFactory::GetForProfile(profile_)->RestoreModule();
+}
diff --git a/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.h b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.h
new file mode 100644
index 0000000..c83d49d
--- /dev/null
+++ b/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.h
@@ -0,0 +1,35 @@
+// Copyright 2021 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_FILE_SUGGESTION_HANDLER_H_
+#define CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_FILE_SUGGESTION_HANDLER_H_
+
+#include "base/memory/raw_ptr.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h"
+#include "mojo/public/cpp/bindings/pending_receiver.h"
+#include "mojo/public/cpp/bindings/receiver.h"
+
+class Profile;
+
+// Handles requests of drive modules sent from JS.
+class FileSuggestionHandler
+    : public file_suggestion::mojom::FileSuggestionHandler {
+ public:
+  FileSuggestionHandler(
+      mojo::PendingReceiver<file_suggestion::mojom::FileSuggestionHandler>
+          handler,
+      Profile* profile);
+  ~FileSuggestionHandler() override;
+
+  // file_suggestion::mojom::FileSuggestionHandler:
+  void GetFiles(GetFilesCallback callback) override;
+  void DismissModule() override;
+  void RestoreModule() override;
+
+ private:
+  mojo::Receiver<file_suggestion::mojom::FileSuggestionHandler> handler_;
+  raw_ptr<Profile> profile_;
+};
+
+#endif  // CHROME_BROWSER_NEW_TAB_PAGE_MODULES_FILE_SUGGESTION_FILE_SUGGESTION_HANDLER_H_
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index b2c5316..485c39a 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -273,7 +273,7 @@
 #include "chrome/browser/media/unified_autoplay_config.h"
 #include "chrome/browser/metrics/tab_stats/tab_stats_tracker.h"
 #include "chrome/browser/nearby_sharing/common/nearby_share_prefs.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive_service.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service.h"
 #include "chrome/browser/new_tab_page/modules/photos/photos_service.h"
 #include "chrome/browser/new_tab_page/modules/recipes/recipes_service.h"
 #include "chrome/browser/new_tab_page/modules/safe_browsing/safe_browsing_handler.h"
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
index 3335cd32..2bed9b6d 100644
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -276,7 +276,7 @@
 #include "chrome/browser/media/router/discovery/access_code/access_code_cast_sink_service_factory.h"
 #include "chrome/browser/media_galleries/gallery_watch_manager.h"
 #include "chrome/browser/metrics/desktop_session_duration/desktop_profile_session_durations_service_factory.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive_service_factory.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/drive_service_factory.h"
 #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters_module_service_factory.h"
 #include "chrome/browser/new_tab_page/modules/recipes/recipes_service_factory.h"
 #include "chrome/browser/performance_manager/persistence/site_data/site_data_cache_facade_factory.h"
diff --git a/chrome/browser/resources/new_tab_page/BUILD.gn b/chrome/browser/resources/new_tab_page/BUILD.gn
index ac66158..9b395215 100644
--- a/chrome/browser/resources/new_tab_page/BUILD.gn
+++ b/chrome/browser/resources/new_tab_page/BUILD.gn
@@ -53,8 +53,8 @@
 
   mojo_files_deps = [
     "//chrome/browser/cart:mojo_bindings_ts__generator",
-    "//chrome/browser/new_tab_page/modules/drive:mojo_bindings_ts__generator",
     "//chrome/browser/new_tab_page/modules/feed:mojo_bindings_ts__generator",
+    "//chrome/browser/new_tab_page/modules/file_suggestion:mojo_bindings_ts__generator",
     "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings_ts__generator",
     "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings_ts__generator",
     "//chrome/browser/new_tab_page/modules/history_clusters/discount:mojo_bindings_ts__generator",
@@ -68,7 +68,7 @@
   ]
   mojo_files = [
     "$root_gen_dir/chrome/browser/cart/chrome_cart.mojom-webui.ts",
-    "$root_gen_dir/chrome/browser/new_tab_page/modules/drive/drive.mojom-webui.ts",
+    "$root_gen_dir/chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom-webui.ts",
     "$root_gen_dir/chrome/browser/new_tab_page/modules/feed/feed.mojom-webui.ts",
     "$root_gen_dir/chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom-webui.ts",
     "$root_gen_dir/chrome/browser/new_tab_page/modules/history_clusters/history_clusters_layout_type.mojom-webui.ts",
diff --git a/chrome/browser/resources/new_tab_page/lazy_load.ts b/chrome/browser/resources/new_tab_page/lazy_load.ts
index c297c4ef..d1c3c27 100644
--- a/chrome/browser/resources/new_tab_page/lazy_load.ts
+++ b/chrome/browser/resources/new_tab_page/lazy_load.ts
@@ -28,7 +28,7 @@
 export {DiscountConsentCard, DiscountConsentVariation} from './modules/cart/discount_consent_card.js';
 export {DiscountConsentDialog} from './modules/cart/discount_consent_dialog.js';
 export {chromeCartDescriptor, ChromeCartModuleElement} from './modules/cart/module.js';
-export {DriveProxy} from './modules/drive/drive_module_proxy.js';
+export {FileProxy} from './modules/drive/file_module_proxy.js';
 export {driveDescriptor, DriveModuleElement} from './modules/drive/module.js';
 export {FeedProxy} from './modules/feed/feed_module_proxy.js';
 export {feedDescriptor, FeedModuleElement} from './modules/feed/module.js';
@@ -48,11 +48,11 @@
 export {PhotosProxy} from './modules/photos/photos_module_proxy.js';
 export {RecipesModuleElement, recipeTasksDescriptor} from './modules/recipes/module.js';
 export {RecipesHandlerProxy} from './modules/recipes/recipes_handler_proxy.js';
-export {driveDescriptor as driveV2Descriptor, DriveModuleElement as DriveV2ModuleElement} from './modules/v2/drive/module.js';
 // <if expr="not is_official_build">
 export {FooProxy} from './modules/v2/dummy/foo_proxy.js';
 export {DummyModuleElement, dummyV2Descriptor} from './modules/v2/dummy/module.js';
 // </if>
+export {fileSuggestionDescriptor, FileSuggestionModuleElement} from './modules/v2/file_suggestion/module.js';
 export {CartTileModuleElementV2} from './modules/v2/history_clusters/cart/cart_tile.js';
 export {HistoryClustersProxyImpl as HistoryClustersProxyImplV2} from './modules/v2/history_clusters/history_clusters_proxy.js';
 export {HistoryClusterImageDisplayState as HistoryClusterV2ImageDisplayState, historyClustersDescriptor as historyClustersV2Descriptor, HistoryClustersModuleElement as HistoryClustersV2ModuleElement} from './modules/v2/history_clusters/module.js';
diff --git a/chrome/browser/resources/new_tab_page/modules/drive/drive.gni b/chrome/browser/resources/new_tab_page/modules/drive/drive.gni
index 3dd734ed..f94978db 100644
--- a/chrome/browser/resources/new_tab_page/modules/drive/drive.gni
+++ b/chrome/browser/resources/new_tab_page/modules/drive/drive.gni
@@ -3,7 +3,7 @@
 # found in the LICENSE file.
 
 # List of files that don't need to be passed to html_to_wrapper().
-drive_non_web_component_files = [ "modules/drive/drive_module_proxy.ts" ]
+drive_non_web_component_files = [ "modules/drive/file_module_proxy.ts" ]
 
 # List of files that should be passed to html_to_wrapper().
 drive_web_component_files = [ "modules/drive/module.ts" ]
diff --git a/chrome/browser/resources/new_tab_page/modules/drive/drive_module_proxy.ts b/chrome/browser/resources/new_tab_page/modules/drive/drive_module_proxy.ts
deleted file mode 100644
index 6c750d1..0000000
--- a/chrome/browser/resources/new_tab_page/modules/drive/drive_module_proxy.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2021 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import type {DriveHandlerRemote} from '../../drive.mojom-webui.js';
-import {DriveHandler} from '../../drive.mojom-webui.js';
-
-/**
- * @fileoverview This file provides a class that exposes the Mojo handler
- * interface used for sending requests from NTP dummy module JS to the browser
- * and receiving the browser response.
- */
-
-let handler: DriveHandlerRemote|null = null;
-
-export class DriveProxy {
-  static getHandler(): DriveHandlerRemote {
-    return handler || (handler = DriveHandler.getRemote());
-  }
-
-  static setHandler(newHandler: DriveHandlerRemote) {
-    handler = newHandler;
-  }
-
-  private constructor() {}
-}
diff --git a/chrome/browser/resources/new_tab_page/modules/drive/file_module_proxy.ts b/chrome/browser/resources/new_tab_page/modules/drive/file_module_proxy.ts
new file mode 100644
index 0000000..a1f029b
--- /dev/null
+++ b/chrome/browser/resources/new_tab_page/modules/drive/file_module_proxy.ts
@@ -0,0 +1,26 @@
+// Copyright 2021 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import type {FileSuggestionHandlerRemote} from '../../file_suggestion.mojom-webui.js';
+import {FileSuggestionHandler} from '../../file_suggestion.mojom-webui.js';
+
+/**
+ * @fileoverview This file provides a class that exposes the Mojo handler
+ * interface used for sending requests from NTP dummy module JS to the browser
+ * and receiving the browser response.
+ */
+
+let handler: FileSuggestionHandlerRemote|null = null;
+
+export class FileProxy {
+  static getHandler(): FileSuggestionHandlerRemote {
+    return handler || (handler = FileSuggestionHandler.getRemote());
+  }
+
+  static setHandler(newHandler: FileSuggestionHandlerRemote) {
+    handler = newHandler;
+  }
+
+  private constructor() {}
+}
diff --git a/chrome/browser/resources/new_tab_page/modules/drive/module.ts b/chrome/browser/resources/new_tab_page/modules/drive/module.ts
index 556db891..bd2b78c8 100644
--- a/chrome/browser/resources/new_tab_page/modules/drive/module.ts
+++ b/chrome/browser/resources/new_tab_page/modules/drive/module.ts
@@ -10,12 +10,12 @@
 import type {DomRepeat, DomRepeatEvent} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-import type {File} from '../../drive.mojom-webui.js';
+import type {File} from '../../file_suggestion.mojom-webui.js';
 import {I18nMixin, loadTimeData} from '../../i18n_setup.js';
 import type {InfoDialogElement} from '../info_dialog.js';
 import {ModuleDescriptor} from '../module_descriptor.js';
 
-import {DriveProxy} from './drive_module_proxy.js';
+import {FileProxy} from './file_module_proxy.js';
 import {getTemplate} from './module.html.js';
 
 export interface DriveModuleElement {
@@ -53,7 +53,7 @@
   }
 
   private onDismissButtonClick_() {
-    DriveProxy.getHandler().dismissModule();
+    FileProxy.getHandler().dismissModule();
     this.dispatchEvent(new CustomEvent('dismiss-module', {
       bubbles: true,
       composed: true,
@@ -61,7 +61,7 @@
         message: loadTimeData.getStringF(
             'dismissModuleToastMessage',
             loadTimeData.getString('modulesDriveFilesSentence')),
-        restoreCallback: () => DriveProxy.getHandler().restoreModule(),
+        restoreCallback: () => FileProxy.getHandler().restoreModule(),
       },
     }));
   }
@@ -93,7 +93,7 @@
 customElements.define(DriveModuleElement.is, DriveModuleElement);
 
 async function createDriveElement(): Promise<DriveModuleElement|null> {
-  const {files} = await DriveProxy.getHandler().getFiles();
+  const {files} = await FileProxy.getHandler().getFiles();
   if (files.length === 0) {
     return null;
   }
diff --git a/chrome/browser/resources/new_tab_page/modules/module_descriptors.ts b/chrome/browser/resources/new_tab_page/modules/module_descriptors.ts
index c90533c6..9b7b93884 100644
--- a/chrome/browser/resources/new_tab_page/modules/module_descriptors.ts
+++ b/chrome/browser/resources/new_tab_page/modules/module_descriptors.ts
@@ -18,10 +18,10 @@
 import {ModuleRegistry} from './module_registry.js';
 import {photosDescriptor} from './photos/module.js';
 import {recipeTasksDescriptor} from './recipes/module.js';
-import {driveDescriptor as driveV2Descriptor} from './v2/drive/module.js';
 // <if expr="not is_official_build">
 import {dummyV2Descriptor} from './v2/dummy/module.js';
 // </if>
+import {fileSuggestionDescriptor} from './v2/file_suggestion/module.js';
 import {historyClustersDescriptor as historyClustersV2Descriptor} from './v2/history_clusters/module.js';
 import {tabResumptionDescriptor} from './v2/tab_resumption/module.js';
 
@@ -31,7 +31,7 @@
 descriptors.push(recipeTasksDescriptor);
 descriptors.push(chromeCartDescriptor);
 descriptors.push(
-    modulesRedesignedEnabled ? driveV2Descriptor : driveDescriptor);
+    modulesRedesignedEnabled ? fileSuggestionDescriptor : driveDescriptor);
 descriptors.push(photosDescriptor);
 descriptors.push(feedDescriptor);
 descriptors.push(
diff --git a/chrome/browser/resources/new_tab_page/modules/modules.gni b/chrome/browser/resources/new_tab_page/modules/modules.gni
index 3009e23..ca25779 100644
--- a/chrome/browser/resources/new_tab_page/modules/modules.gni
+++ b/chrome/browser/resources/new_tab_page/modules/modules.gni
@@ -8,7 +8,7 @@
 import("./history_clusters/history_clusters.gni")
 import("./photos/photos.gni")
 import("./recipes/recipes.gni")
-import("./v2/drive/drive.gni")
+import("./v2/file_suggestion/file_suggestion.gni")
 import("./v2/history_clusters/history_clusters.gni")
 import("./v2/tab_resumption/tab_resumption.gni")
 
@@ -42,7 +42,7 @@
       "modules/v2/module_header.ts",
       "modules/v2/modules.ts",
     ] + cart_web_component_files + drive_web_component_files +
-    drive_v2_web_component_files + feed_web_component_files +
+    file_suggestion_v2_web_component_files + feed_web_component_files +
     photos_web_component_files + recipes_web_component_files +
     history_clusters_web_component_files +
     history_clusters_v2_web_component_files +
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/drive/drive.gni b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
similarity index 70%
rename from chrome/browser/resources/new_tab_page/modules/v2/drive/drive.gni
rename to chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
index b2591dd..101133e 100644
--- a/chrome/browser/resources/new_tab_page/modules/v2/drive/drive.gni
+++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
@@ -3,4 +3,4 @@
 # found in the LICENSE file.
 
 # List of files that should be passed to html_to_wrapper().
-drive_v2_web_component_files = [ "modules/v2/drive/module.ts" ]
+file_suggestion_v2_web_component_files = [ "modules/v2/file_suggestion/module.ts" ]
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/drive/module.html b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/module.html
similarity index 100%
rename from chrome/browser/resources/new_tab_page/modules/v2/drive/module.html
rename to chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/module.html
diff --git a/chrome/browser/resources/new_tab_page/modules/v2/drive/module.ts b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/module.ts
similarity index 77%
rename from chrome/browser/resources/new_tab_page/modules/v2/drive/module.ts
rename to chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/module.ts
index d62db4d..928bf17 100644
--- a/chrome/browser/resources/new_tab_page/modules/v2/drive/module.ts
+++ b/chrome/browser/resources/new_tab_page/modules/v2/file_suggestion/module.ts
@@ -9,16 +9,16 @@
 import type {DomRepeat, DomRepeatEvent} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
 
-import type {File} from '../../../drive.mojom-webui.js';
+import type {File} from '../../../file_suggestion.mojom-webui.js';
 import {I18nMixin, loadTimeData} from '../../../i18n_setup.js';
-import {DriveProxy} from '../../drive/drive_module_proxy.js';
+import {FileProxy} from '../../drive/file_module_proxy.js';
 import type {InfoDialogElement} from '../../info_dialog.js';
 import {ModuleDescriptor} from '../../module_descriptor.js';
 import type {MenuItem, ModuleHeaderElementV2} from '../module_header.js';
 
 import {getTemplate} from './module.html.js';
 
-export interface DriveModuleElement {
+export interface FileSuggestionModuleElement {
   $: {
     fileRepeat: DomRepeat,
     files: HTMLElement,
@@ -28,13 +28,13 @@
 }
 
 /**
- * The Drive module, which serves as an inside look in to recent activity within
- * a user's Google Drive.
+ * The File module, which serves as an inside look in to recent activity within
+ * a user's Google Drive or Microsoft Sharepoint.
  */
-export class DriveModuleElement extends I18nMixin
+export class FileSuggestionModuleElement extends I18nMixin
 (PolymerElement) {
   static get is() {
-    return 'ntp-drive-module-redesigned';
+    return 'ntp-file-module-redesigned';
   }
 
   static get template() {
@@ -96,7 +96,7 @@
   }
 
   private onDismissButtonClick_() {
-    DriveProxy.getHandler().dismissModule();
+    FileProxy.getHandler().dismissModule();
     this.dispatchEvent(new CustomEvent('dismiss-module-instance', {
       bubbles: true,
       composed: true,
@@ -104,7 +104,7 @@
         message: loadTimeData.getStringF(
             'dismissModuleToastMessage',
             loadTimeData.getString('modulesDriveFilesSentence')),
-        restoreCallback: () => DriveProxy.getHandler().restoreModule(),
+        restoreCallback: () => FileProxy.getHandler().restoreModule(),
       },
     }));
   }
@@ -125,17 +125,17 @@
   }
 }
 
-customElements.define(DriveModuleElement.is, DriveModuleElement);
+customElements.define(FileSuggestionModuleElement.is, FileSuggestionModuleElement);
 
-async function createDriveElement(): Promise<DriveModuleElement|null> {
-  const {files} = await DriveProxy.getHandler().getFiles();
+async function createFileElement(): Promise<FileSuggestionModuleElement|null> {
+  const {files} = await FileProxy.getHandler().getFiles();
   if (files.length === 0) {
     return null;
   }
-  const element = new DriveModuleElement();
+  const element = new FileSuggestionModuleElement();
   element.files = files;
   return element;
 }
 
-export const driveDescriptor: ModuleDescriptor = new ModuleDescriptor(
-    /*id*/ 'drive', createDriveElement);
+export const fileSuggestionDescriptor: ModuleDescriptor = new ModuleDescriptor(
+    /*id*/ 'file_suggestion', createFileElement);
diff --git a/chrome/browser/resources/new_tab_page/new_tab_page.gni b/chrome/browser/resources/new_tab_page/new_tab_page.gni
index 2db8c41..e941b7a4 100644
--- a/chrome/browser/resources/new_tab_page/new_tab_page.gni
+++ b/chrome/browser/resources/new_tab_page/new_tab_page.gni
@@ -43,8 +43,8 @@
     "cart.mojom-webui.js",
     "discount.mojom-webui.js",
     "chrome_cart.mojom-webui.js",
-    "drive.mojom-webui.js",
     "feed.mojom-webui.js",
+    "file_suggestion.mojom-webui.js",
     "history_cluster_types.mojom-webui.js",
     "history_clusters.mojom-webui.js",
     "history_clusters_v2.mojom-webui.js",
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index ff21efa..cf1af26 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -2051,8 +2051,8 @@
       "//chrome/browser/media/router/discovery/access_code:access_code_sink_service",
       "//chrome/browser/new_tab_page/chrome_colors:generate_chrome_colors_info",
       "//chrome/browser/new_tab_page/chrome_colors:generate_colors_info",
-      "//chrome/browser/new_tab_page/modules/drive:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/feed:mojo_bindings",
+      "//chrome/browser/new_tab_page/modules/file_suggestion:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters/cart:mojo_bindings",
       "//chrome/browser/new_tab_page/modules/history_clusters/discount:mojo_bindings",
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
index b47f013f..4412908 100644
--- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
+++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.cc
@@ -22,8 +22,8 @@
 #include "chrome/browser/cart/cart_handler.h"
 #include "chrome/browser/image_service/image_service_factory.h"
 #include "chrome/browser/new_tab_page/feature_promo_helper/new_tab_page_feature_promo_helper.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive_handler.h"
 #include "chrome/browser/new_tab_page/modules/feed/feed_handler.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion_handler.h"
 #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h"
 #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters_page_handler.h"
 #include "chrome/browser/new_tab_page/modules/new_tab_page_modules.h"
@@ -881,9 +881,10 @@
 }
 
 void NewTabPageUI::BindInterface(
-    mojo::PendingReceiver<drive::mojom::DriveHandler> pending_receiver) {
-  drive_handler_ =
-      std::make_unique<DriveHandler>(std::move(pending_receiver), profile_);
+    mojo::PendingReceiver<file_suggestion::mojom::FileSuggestionHandler>
+        pending_receiver) {
+  file_handler_ = std::make_unique<FileSuggestionHandler>(
+      std::move(pending_receiver), profile_);
 }
 
 void NewTabPageUI::BindInterface(
diff --git a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h
index 71841453..4a927dd 100644
--- a/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h
+++ b/chrome/browser/ui/webui/new_tab_page/new_tab_page_ui.h
@@ -12,8 +12,8 @@
 #include "base/memory/raw_ptr.h"
 #include "base/time/time.h"
 #include "chrome/browser/cart/chrome_cart.mojom.h"
-#include "chrome/browser/new_tab_page/modules/drive/drive.mojom.h"
 #include "chrome/browser/new_tab_page/modules/feed/feed.mojom.h"
+#include "chrome/browser/new_tab_page/modules/file_suggestion/file_suggestion.mojom.h"
 #include "chrome/browser/new_tab_page/modules/history_clusters/history_clusters.mojom.h"
 #include "chrome/browser/new_tab_page/modules/photos/photos.mojom.h"
 #include "chrome/browser/new_tab_page/modules/recipes/recipes.mojom.h"
@@ -80,7 +80,7 @@
 class RealboxHandler;
 class RecipesHandler;
 class CartHandler;
-class DriveHandler;
+class FileSuggestionHandler;
 class PhotosHandler;
 namespace ntp {
 class FeedHandler;
@@ -162,10 +162,12 @@
   void BindInterface(
       mojo::PendingReceiver<recipes::mojom::RecipesHandler> pending_receiver);
 
-  // Instantiates the implementor of drive::mojom::DriveHandler mojo interface
-  // passing the pending receiver that will be internally bound.
+  // Instantiates the implementor of
+  // file_suggestion::mojom::FileSuggestionHandler mojo interface passing the
+  // pending receiver that will be internally bound.
   void BindInterface(
-      mojo::PendingReceiver<drive::mojom::DriveHandler> pending_receiver);
+      mojo::PendingReceiver<file_suggestion::mojom::FileSuggestionHandler>
+          pending_receiver);
 
   // Instantiates the implementor of photos::mojom::PhotosHandler mojo interface
   // passing the pending receiver that will be internally bound.
@@ -309,7 +311,7 @@
 
   // Mojo implementations for modules:
   std::unique_ptr<RecipesHandler> recipes_handler_;
-  std::unique_ptr<DriveHandler> drive_handler_;
+  std::unique_ptr<FileSuggestionHandler> file_handler_;
   std::unique_ptr<PhotosHandler> photos_handler_;
   std::unique_ptr<ntp::FeedHandler> feed_handler_;
 
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 28dfd08..f251f5b 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -8206,8 +8206,8 @@
       # NTP is in native code on Android.
       "../browser/new_tab_page/chrome_colors/chrome_colors_service_unittest.cc",
       "../browser/new_tab_page/feature_promo_helper/new_tab_page_feature_promo_helper_unittest.cc",
-      "../browser/new_tab_page/modules/drive/drive_service_unittest.cc",
       "../browser/new_tab_page/modules/feed/feed_handler_unittest.cc",
+      "../browser/new_tab_page/modules/file_suggestion/drive_service_unittest.cc",
       "../browser/new_tab_page/modules/history_clusters/cart/cart_processor_unittest.cc",
       "../browser/new_tab_page/modules/history_clusters/discount/discount_processor_unittest.cc",
       "../browser/new_tab_page/modules/history_clusters/history_clusters_module_service_unittest.cc",
diff --git a/chrome/test/data/webui/new_tab_page/modules/drive/module_test.ts b/chrome/test/data/webui/new_tab_page/modules/drive/module_test.ts
index 674bd2a..da2196d 100644
--- a/chrome/test/data/webui/new_tab_page/modules/drive/module_test.ts
+++ b/chrome/test/data/webui/new_tab_page/modules/drive/module_test.ts
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {DriveHandlerRemote} from 'chrome://new-tab-page/drive.mojom-webui.js';
+import {FileSuggestionHandlerRemote} from 'chrome://new-tab-page/file_suggestion.mojom-webui.js';
 import type {DismissModuleEvent, DriveModuleElement} from 'chrome://new-tab-page/lazy_load.js';
-import {driveDescriptor, DriveProxy} from 'chrome://new-tab-page/lazy_load.js';
+import {driveDescriptor, FileProxy} from 'chrome://new-tab-page/lazy_load.js';
 import type {CrAutoImgElement} from 'chrome://new-tab-page/new_tab_page.js';
 import {$$} from 'chrome://new-tab-page/new_tab_page.js';
 import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
@@ -14,11 +14,11 @@
 import {installMock} from '../../test_support.js';
 
 suite('NewTabPageModulesDriveModuleTest', () => {
-  let handler: TestMock<DriveHandlerRemote>;
+  let handler: TestMock<FileSuggestionHandlerRemote>;
 
   setup(() => {
     document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    handler = installMock(DriveHandlerRemote, DriveProxy.setHandler);
+    handler = installMock(FileSuggestionHandlerRemote, FileProxy.setHandler);
   });
 
   test('module appears on render', async () => {
diff --git a/chrome/test/data/webui/new_tab_page/modules/modules.gni b/chrome/test/data/webui/new_tab_page/modules/modules.gni
index faf0635..2d75fca7 100644
--- a/chrome/test/data/webui/new_tab_page/modules/modules.gni
+++ b/chrome/test/data/webui/new_tab_page/modules/modules.gni
@@ -8,7 +8,7 @@
 import("./history_clusters/history_clusters.gni")
 import("./photos/photos.gni")
 import("./recipes/recipes.gni")
-import("./v2/drive/drive.gni")
+import("./v2/file_suggestion/file_suggestion.gni")
 import("./v2/history_clusters/history_clusters.gni")
 import("./v2/tab_resumption/tab_resumption.gni")
 
@@ -16,19 +16,20 @@
   import("./v2/dummy/dummy.gni")
 }
 
-modules_test_files = [
-                       "modules/info_dialog_test.ts",
-                       "modules/module_descriptor_test.ts",
-                       "modules/module_header_test.ts",
-                       "modules/module_registry_test.ts",
-                       "modules/module_wrapper_test.ts",
-                       "modules/modules_test.ts",
-                       "modules/v2/modules_test.ts",
-                       "modules/v2/module_header_test.ts",
-                     ] + cart_test_files + drive_test_files +
-                     drive_v2_test_files + feed_test_files + photos_test_files +
-                     recipes_test_files + history_clusters_test_files +
-                     history_clusters_v2_test_files + tab_resumption_test_files
+modules_test_files =
+    [
+      "modules/info_dialog_test.ts",
+      "modules/module_descriptor_test.ts",
+      "modules/module_header_test.ts",
+      "modules/module_registry_test.ts",
+      "modules/module_wrapper_test.ts",
+      "modules/modules_test.ts",
+      "modules/v2/modules_test.ts",
+      "modules/v2/module_header_test.ts",
+    ] + cart_test_files + drive_test_files + file_suggestion_v2_test_files +
+    feed_test_files + photos_test_files + recipes_test_files +
+    history_clusters_test_files + history_clusters_v2_test_files +
+    tab_resumption_test_files
 
 if (!is_official_build) {
   modules_test_files += dummy_v2_test_files
diff --git a/chrome/test/data/webui/new_tab_page/modules/v2/drive/drive.gni b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
similarity index 63%
rename from chrome/test/data/webui/new_tab_page/modules/v2/drive/drive.gni
rename to chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
index fa09605d..5847022 100644
--- a/chrome/test/data/webui/new_tab_page/modules/v2/drive/drive.gni
+++ b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/file_suggestion.gni
@@ -2,4 +2,4 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-drive_v2_test_files = [ "modules/v2/drive/module_test.ts" ]
+file_suggestion_v2_test_files = [ "modules/v2/file_suggestion/module_test.ts" ]
diff --git a/chrome/test/data/webui/new_tab_page/modules/v2/drive/module_test.ts b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/module_test.ts
similarity index 87%
rename from chrome/test/data/webui/new_tab_page/modules/v2/drive/module_test.ts
rename to chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/module_test.ts
index 9f2105a..7e80ba8 100644
--- a/chrome/test/data/webui/new_tab_page/modules/v2/drive/module_test.ts
+++ b/chrome/test/data/webui/new_tab_page/modules/v2/file_suggestion/module_test.ts
@@ -2,9 +2,9 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-import {DriveHandlerRemote} from 'chrome://new-tab-page/drive.mojom-webui.js';
-import type {DisableModuleEvent, DismissModuleEvent, DriveV2ModuleElement} from 'chrome://new-tab-page/lazy_load.js';
-import {DriveProxy, driveV2Descriptor} from 'chrome://new-tab-page/lazy_load.js';
+import {FileSuggestionHandlerRemote} from 'chrome://new-tab-page/file_suggestion.mojom-webui.js';
+import type {DisableModuleEvent, DismissModuleEvent, FileSuggestionModuleElement} from 'chrome://new-tab-page/lazy_load.js';
+import {FileProxy, fileSuggestionDescriptor} from 'chrome://new-tab-page/lazy_load.js';
 import type {CrAutoImgElement} from 'chrome://new-tab-page/new_tab_page.js';
 import {$$} from 'chrome://new-tab-page/new_tab_page.js';
 import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
@@ -13,12 +13,12 @@
 
 import {installMock} from '../../../test_support.js';
 
-suite('DriveV2Module', () => {
-  let handler: TestMock<DriveHandlerRemote>;
+suite('FileSuggestionV2Module', () => {
+  let handler: TestMock<FileSuggestionHandlerRemote>;
 
   setup(() => {
     document.body.innerHTML = window.trustedTypes!.emptyHTML;
-    handler = installMock(DriveHandlerRemote, DriveProxy.setHandler);
+    handler = installMock(FileSuggestionHandlerRemote, FileProxy.setHandler);
   });
 
   test('shows all retrieved files on render', async () => {
@@ -71,7 +71,7 @@
     handler.setResultFor('getFiles', Promise.resolve(data));
 
     const module =
-        await driveV2Descriptor.initialize(0) as DriveV2ModuleElement;
+        await fileSuggestionDescriptor.initialize(0) as FileSuggestionModuleElement;
     assertTrue(!!module);
     document.body.append(module);
     await handler.whenCalled('getFiles');
@@ -104,7 +104,7 @@
     handler.setResultFor('getFiles', Promise.resolve(data));
 
     const module =
-        await driveV2Descriptor.initialize(0) as DriveV2ModuleElement;
+        await fileSuggestionDescriptor.initialize(0) as FileSuggestionModuleElement;
     assertTrue(!!module);
     document.body.append(module);
     await handler.whenCalled('getFiles');
@@ -134,7 +134,7 @@
   test('module does not render if there are no files', async () => {
     handler.setResultFor('getFiles', Promise.resolve({files: []}));
 
-    const module = await driveV2Descriptor.initialize(0);
+    const module = await fileSuggestionDescriptor.initialize(0);
     await handler.whenCalled('getFiles');
     assertFalse(!!module);
   });
@@ -154,7 +154,7 @@
     };
     handler.setResultFor('getFiles', Promise.resolve(data));
     const driveModule =
-        await driveV2Descriptor.initialize(0) as DriveV2ModuleElement;
+        await fileSuggestionDescriptor.initialize(0) as FileSuggestionModuleElement;
     assertTrue(!!driveModule);
     document.body.append(driveModule);
 
@@ -183,7 +183,7 @@
         };
         handler.setResultFor('getFiles', Promise.resolve(data));
         const driveModule =
-            await driveV2Descriptor.initialize(0) as DriveV2ModuleElement;
+            await fileSuggestionDescriptor.initialize(0) as FileSuggestionModuleElement;
         document.body.append(driveModule);
 
         // Act.
@@ -213,7 +213,7 @@
     };
     handler.setResultFor('getFiles', Promise.resolve(data));
     const moduleElement =
-        await driveV2Descriptor.initialize(0) as DriveV2ModuleElement;
+        await fileSuggestionDescriptor.initialize(0) as FileSuggestionModuleElement;
     assertTrue(!!moduleElement);
     document.body.append(moduleElement);
 
diff --git a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.cc b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.cc
index 23b4cc5..9429954e 100644
--- a/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.cc
+++ b/chrome/test/data/webui/new_tab_page/new_tab_page_browsertest.cc
@@ -130,8 +130,9 @@
   RunTest("new_tab_page/modules/drive/module_test.js", "mocha.run()");
 }
 
-IN_PROC_BROWSER_TEST_F(NewTabPageModulesTest, DriveV2Module) {
-  RunTest("new_tab_page/modules/v2/drive/module_test.js", "mocha.run()");
+IN_PROC_BROWSER_TEST_F(NewTabPageModulesTest, FileSuggestionModule) {
+  RunTest("new_tab_page/modules/v2/file_suggestion/module_test.js",
+          "mocha.run()");
 }
 
 IN_PROC_BROWSER_TEST_F(NewTabPageModulesTest, RecipesModule) {
diff --git a/tools/traffic_annotation/safe_list.txt b/tools/traffic_annotation/safe_list.txt
index 0c321bb..30e370d 100644
--- a/tools/traffic_annotation/safe_list.txt
+++ b/tools/traffic_annotation/safe_list.txt
@@ -123,7 +123,7 @@
 missing_new_fields,chrome/browser/nearby_sharing/instantmessaging/send_message_express.cc
 missing_new_fields,chrome/browser/nearby_sharing/network_traversal_ice_config_fetcher.cc
 missing_new_fields,chrome/browser/nearby_sharing/tachyon_ice_config_fetcher.cc
-missing_new_fields,chrome/browser/new_tab_page/modules/drive/drive_service.cc
+missing_new_fields,chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc
 missing_new_fields,chrome/browser/new_tab_page/modules/photos/photos_service.cc
 missing_new_fields,chrome/browser/new_tab_page/modules/recipes/recipes_service.cc
 missing_new_fields,chrome/browser/new_tab_page/one_google_bar/one_google_bar_loader_impl.cc
diff --git a/tools/traffic_annotation/summary/annotations.xml b/tools/traffic_annotation/summary/annotations.xml
index aa052df..d4036e1b 100644
--- a/tools/traffic_annotation/summary/annotations.xml
+++ b/tools/traffic_annotation/summary/annotations.xml
@@ -69,7 +69,7 @@
  <item id="downloads_api_run_async" added_in_milestone="62" content_hash_code="008d9d92" os_list="linux,windows,chromeos" file_path="chrome/browser/extensions/api/downloads/downloads_api.cc" />
  <item id="downloads_dom_handler" added_in_milestone="73" content_hash_code="082cc10b" os_list="linux,windows,chromeos" file_path="chrome/browser/ui/webui/downloads/downloads_dom_handler.cc" />
  <item id="drag_download_file" added_in_milestone="62" content_hash_code="078a20ba" os_list="linux,windows,chromeos,android" file_path="content/browser/download/drag_download_file.cc" />
- <item id="drive_service" added_in_milestone="90" content_hash_code="059e2023" os_list="linux,windows,chromeos" file_path="chrome/browser/new_tab_page/modules/drive/drive_service.cc" />
+ <item id="drive_service" added_in_milestone="90" content_hash_code="059e2023" os_list="linux,windows,chromeos" file_path="chrome/browser/new_tab_page/modules/file_suggestion/drive_service.cc" />
  <item id="early_hints_preload" added_in_milestone="91" content_hash_code="028fe27a" os_list="linux,windows,chromeos,android" file_path="content/browser/loader/navigation_early_hints_manager.cc" />
  <item id="enterprise_safe_browsing_realtime_url_lookup" added_in_milestone="86" content_hash_code="00d66dca" os_list="linux,windows,chromeos" file_path="chrome/browser/safe_browsing/chrome_enterprise_url_lookup_service.cc" />
  <item id="extension_blacklist" added_in_milestone="62" content_hash_code="06f7911b" os_list="linux,windows,chromeos" file_path="chrome/browser/extensions/blocklist_state_fetcher.cc" />