chromium/chrome/browser/download/android/download_dialog_utils.h

// 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_DOWNLOAD_ANDROID_DOWNLOAD_DIALOG_UTILS_H_
#define CHROME_BROWSER_DOWNLOAD_ANDROID_DOWNLOAD_DIALOG_UTILS_H_

#include <string>
#include <vector>

#include "base/files/file_path.h"
#include "base/memory/raw_ptr.h"
#include "chrome/browser/download/download_target_determiner_delegate.h"
#include "components/download/public/common/download_item.h"
#include "url/gurl.h"

// Helper class for download dialogs.
class DownloadDialogUtils {
 public:
  // Helper method to find a download from a list of downloads based on its
  // GUID, and remove it from the list.
  static download::DownloadItem* FindAndRemoveDownload(
      std::vector<raw_ptr<download::DownloadItem, VectorExperimental>>*
          downloads,
      const std::string& download_guid);

  // Called when a new file was created and inform |callback| about
  // the result and the new path.
  static void CreateNewFileDone(
      DownloadTargetDeterminerDelegate::ConfirmationCallback callback,
      download::PathValidationResult result,
      const base::FilePath& target_path);

  // Called to get an elided URL for a page URL, so that it can be displayed
  // on duplicate inforbar or dialog.
  static std::string GetDisplayURLForPageURL(const GURL& page_url);
};

#endif  // CHROME_BROWSER_DOWNLOAD_ANDROID_DOWNLOAD_DIALOG_UTILS_H_