// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_WEBSHARE_PREPARE_SUBDIRECTORY_TASK_H_
#define CHROME_BROWSER_WEBSHARE_PREPARE_SUBDIRECTORY_TASK_H_

#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/memory/weak_ptr.h"
#include "third_party/blink/public/mojom/webshare/webshare.mojom.h"

namespace webshare {

class PrepareSubDirectoryTask {
 public:
  PrepareSubDirectoryTask(std::vector<base::FilePath> subdirectories,
                          blink::mojom::ShareService::ShareCallback callback);
  PrepareSubDirectoryTask(const PrepareSubDirectoryTask&) = delete;
  PrepareSubDirectoryTask& operator=(const PrepareSubDirectoryTask) = delete;
  ~PrepareSubDirectoryTask();

  void Start();

 private:
  static base::File::Error PrepareSubDirectories(
      std::vector<base::FilePath> subdirectories);

  void OnPrepareSubDirectories(base::File::Error result);

  std::vector<base::FilePath> subdirectories_;
  blink::mojom::ShareService::ShareCallback callback_;
  base::WeakPtrFactory<PrepareSubDirectoryTask> weak_ptr_factory_{this};
};

}  // namespace webshare

#endif  // CHROME_BROWSER_WEBSHARE_PREPARE_SUBDIRECTORY_TASK_H_
