#include "chrome/updater/app/app_uninstall.h"
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "base/command_line.h"
#include "base/files/file_enumerator.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/logging.h"
#include "base/memory/scoped_refptr.h"
#include "base/process/launch.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "build/build_config.h"
#include "chrome/updater/app/app.h"
#include "chrome/updater/app/app_utils.h"
#include "chrome/updater/configurator.h"
#include "chrome/updater/constants.h"
#include "chrome/updater/external_constants.h"
#include "chrome/updater/lock.h"
#include "chrome/updater/persisted_data.h"
#include "chrome/updater/prefs.h"
#include "chrome/updater/updater_scope.h"
#include "chrome/updater/updater_version.h"
#include "chrome/updater/util/util.h"
#include "components/update_client/protocol_definition.h"
#include "components/update_client/update_client.h"
#if BUILDFLAG(IS_WIN)
#include "chrome/updater/win/setup/uninstall.h"
#elif BUILDFLAG(IS_POSIX)
#include "chrome/updater/posix/setup.h"
#endif
namespace updater {
std::vector<base::FilePath> GetVersionExecutablePaths(UpdaterScope scope) { … }
base::CommandLine GetUninstallSelfCommandLine(
UpdaterScope scope,
const base::FilePath& executable_path) { … }
namespace {
void UninstallOtherVersions(UpdaterScope scope) { … }
void UninstallInThreadPool(UpdaterScope scope,
base::OnceCallback<void(int)> shutdown) { … }
}
class AppUninstall : public App { … };
int AppUninstall::Initialize() { … }
void AppUninstall::UninstallAll(int reason) { … }
void AppUninstall::FirstTaskRun() { … }
scoped_refptr<App> MakeAppUninstall() { … }
}