chromium/chrome/browser/ash/drive/drivefs_test_support.h

// Copyright 2018 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_ASH_DRIVE_DRIVEFS_TEST_SUPPORT_H_
#define CHROME_BROWSER_ASH_DRIVE_DRIVEFS_TEST_SUPPORT_H_

#include <memory>

#include "base/files/file_path.h"
#include "base/functional/callback_forward.h"
#include "chromeos/ash/components/drivefs/drivefs_host.h"
#include "chromeos/ash/components/drivefs/fake_drivefs.h"
#include "components/account_id/account_id.h"

class Profile;

namespace drive {

bool SetUpUserDataDirectoryForDriveFsTest();
bool SetUpUserDataDirectoryForDriveFsTest(const AccountId& account_id);

class FakeDriveFsHelper {
 public:
  static const char kPredefinedProfileSalt[];
  static const char kDefaultUserEmail[];
  static const char kDefaultGaiaId[];

  FakeDriveFsHelper(Profile* profile, const base::FilePath& mount_path);

  FakeDriveFsHelper(const FakeDriveFsHelper&) = delete;
  FakeDriveFsHelper& operator=(const FakeDriveFsHelper&) = delete;

  ~FakeDriveFsHelper();

  base::RepeatingCallback<std::unique_ptr<drivefs::DriveFsBootstrapListener>()>
  CreateFakeDriveFsListenerFactory();

  const base::FilePath& mount_path() { return mount_path_; }
  drivefs::FakeDriveFs& fake_drivefs() { return fake_drivefs_; }

 private:
  const base::FilePath mount_path_;
  drivefs::FakeDriveFs fake_drivefs_;
};

}  // namespace drive

#endif  // CHROME_BROWSER_ASH_DRIVE_DRIVEFS_TEST_SUPPORT_H_