Merge "Revert "Force package installation with FUSE unless the package stores on device"" into qt-qpr1-dev-plus-aosp
diff --git a/Android.bp b/Android.bp
index e7e1938..4032bcc 100644
--- a/Android.bp
+++ b/Android.bp
@@ -72,7 +72,6 @@
     ],
 
     static_libs: [
-        "libc++fs",
         "libinstall",
         "librecovery_fastboot",
         "libminui",
@@ -95,7 +94,6 @@
     ],
 
     shared_libs: [
-        "libfusesideload",
         "librecovery_ui",
     ],
 }
diff --git a/install/include/install/install.h b/install/include/install/install.h
index bef23e9..87d43ab 100644
--- a/install/include/install/install.h
+++ b/install/include/install/install.h
@@ -63,7 +63,3 @@
 // pre-device and serial number (if presents). A/B OTA specific checks: pre-build version,
 // fingerprint, timestamp.
 bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, OtaType ota_type);
-
-// Ensures the path to the update package is mounted. Also set the |should_use_fuse| to true if the
-// package stays on a removable media.
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse);
diff --git a/install/install.cpp b/install/install.cpp
index 1c9bf2f..4bb0903 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -30,7 +30,6 @@
 #include <atomic>
 #include <chrono>
 #include <condition_variable>
-#include <filesystem>
 #include <functional>
 #include <limits>
 #include <mutex>
@@ -642,49 +641,3 @@
   }
   return true;
 }
-
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse) {
-  CHECK(should_use_fuse != nullptr);
-
-  if (package_path.empty()) {
-    return false;
-  }
-
-  *should_use_fuse = true;
-  if (package_path[0] == '@') {
-    auto block_map_path = package_path.substr(1);
-    if (ensure_path_mounted(block_map_path) != 0) {
-      LOG(ERROR) << "Failed to mount " << block_map_path;
-      return false;
-    }
-    // uncrypt only produces block map only if the package stays on /data.
-    *should_use_fuse = false;
-    return true;
-  }
-
-  // Package is not a block map file.
-  if (ensure_path_mounted(package_path) != 0) {
-    LOG(ERROR) << "Failed to mount " << package_path;
-    return false;
-  }
-
-  // Reject the package if the input path doesn't equal the canonicalized path.
-  // e.g. /cache/../sdcard/update_package.
-  std::error_code ec;
-  auto canonical_path = std::filesystem::canonical(package_path, ec);
-  if (ec) {
-    LOG(ERROR) << "Failed to get canonical of " << package_path << ", " << ec.message();
-    return false;
-  }
-  if (canonical_path.string() != package_path) {
-    LOG(ERROR) << "Installation aborts. The canonical path " << canonical_path.string()
-               << " doesn't equal the original path " << package_path;
-    return false;
-  }
-
-  constexpr const char* CACHE_ROOT = "/cache";
-  if (android::base::StartsWith(package_path, CACHE_ROOT)) {
-    *should_use_fuse = false;
-  }
-  return true;
-}
diff --git a/recovery.cpp b/recovery.cpp
index 526e1a5..9ea616e 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -752,11 +752,7 @@
         ensure_path_mounted(update_package);
       }
 
-      bool should_use_fuse = false;
-      if (!SetupPackageMount(update_package, &should_use_fuse)) {
-        LOG(INFO) << "Failed to set up the package access, skipping installation";
-        status = INSTALL_ERROR;
-      } else if (install_with_fuse || should_use_fuse) {
+      if (install_with_fuse) {
         LOG(INFO) << "Installing package " << update_package << " with fuse";
         status = InstallWithFuseFromPath(update_package, ui);
       } else if (auto memory_package = Package::CreateMemoryPackage(
diff --git a/tests/Android.bp b/tests/Android.bp
index 4c23255..bde1bc5 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -92,7 +92,6 @@
     "libhidlbase",
     "liblp",
     "libtinyxml2",
-    "libc++fs",
 ]
 
 cc_test {
diff --git a/tests/unit/install_test.cpp b/tests/unit/install_test.cpp
index ecf1c9a..370fbdc 100644
--- a/tests/unit/install_test.cpp
+++ b/tests/unit/install_test.cpp
@@ -34,7 +34,6 @@
 #include "install/install.h"
 #include "install/wipe_device.h"
 #include "otautil/paths.h"
-#include "otautil/roots.h"
 #include "private/setup_commands.h"
 
 static void BuildZipArchive(const std::map<std::string, std::string>& file_map, int fd,
@@ -514,30 +513,3 @@
       "\n");
   TestCheckPackageMetadata(metadata, OtaType::AB, true);
 }
-
-TEST(InstallTest, SetupPackageMount_package_path) {
-  load_volume_table();
-  bool install_with_fuse;
-
-  // Setup should fail if the input path doesn't exist.
-  ASSERT_FALSE(SetupPackageMount("/does_not_exist", &install_with_fuse));
-
-  // Package should be installed with fuse if it's not in /cache.
-  TemporaryDir temp_dir;
-  TemporaryFile update_package(temp_dir.path);
-  ASSERT_TRUE(SetupPackageMount(update_package.path, &install_with_fuse));
-  ASSERT_TRUE(install_with_fuse);
-
-  // Setup should fail if the input path isn't canonicalized.
-  std::string uncanonical_package_path = android::base::Join(
-      std::vector<std::string>{
-          temp_dir.path,
-          "..",
-          android::base::Basename(temp_dir.path),
-          android::base::Basename(update_package.path),
-      },
-      '/');
-
-  ASSERT_EQ(0, access(uncanonical_package_path.c_str(), R_OK));
-  ASSERT_FALSE(SetupPackageMount(uncanonical_package_path, &install_with_fuse));
-}