// Copyright 2023 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_FILE_MANAGER_FILE_MANAGER_BROWSERTEST_UTILS_H_
#define CHROME_BROWSER_ASH_FILE_MANAGER_FILE_MANAGER_BROWSERTEST_UTILS_H_
#include "chrome/browser/ash/file_manager/file_manager_browsertest_base.h"
// INSTANTIATE_TEST_SUITE_P expands to code that stringizes the arguments. Thus
// macro parameters such as |prefix| and |test_class| won't be expanded by the
// macro pre-processor. To work around this, indirect INSTANTIATE_TEST_SUITE_P,
// as WRAPPED_INSTANTIATE_TEST_SUITE_P here, so the pre-processor expands macro
// defines used to disable tests, MAYBE_prefix for example.
#ifndef WRAPPED_INSTANTIATE_TEST_SUITE_P
#define WRAPPED_INSTANTIATE_TEST_SUITE_P(prefix, test_class, generator) \
INSTANTIATE_TEST_SUITE_P(prefix, test_class, generator, \
&file_manager::test::PostTestCaseName)
#endif // WRAPPED_INSTANTIATE_TEST_SUITE_P
namespace file_manager {
namespace test {
// Holds the testcase name and FileManagerBrowserTestBase options.
struct TestCase {
explicit TestCase(const char* const name);
TestCase& InGuestMode();
TestCase& InIncognito();
TestCase& TabletMode();
TestCase& SetLocale(const std::string& locale);
TestCase& SetCountry(const std::string& country);
TestCase& EnableGenericDocumentsProvider();
TestCase& DisableGenericDocumentsProvider();
TestCase& EnablePhotosDocumentsProvider();
TestCase& DisablePhotosDocumentsProvider();
TestCase& EnableArc();
TestCase& Offline();
TestCase& EnableConflictDialog();
TestCase& DisableNativeSmb();
TestCase& FakeFileSystemProvider();
TestCase& DontMountVolumes();
TestCase& DontObserveFileTasks();
TestCase& EnableSinglePartitionFormat();
TestCase& EnableMaterializedViews();
// Show the startup browser. Some tests invoke the file picker dialog during
// the test. Requesting a file picker from a background page is forbidden by
// the apps platform, and it's a bug that these tests do so.
// FindRuntimeContext() in select_file_dialog_extension.cc will use the last
// active browser in this case, which requires a Browser to be present. See
// https://crbug.com/736930.
TestCase& WithBrowser();
TestCase& EnableDlp();
TestCase& EnableFilesPolicyNewUX();
TestCase& EnableDriveTrash();
TestCase& EnableUploadOfficeToCloud();
TestCase& EnableArcVm();
TestCase& EnableMirrorSync();
TestCase& EnableFileTransferConnector();
TestCase& EnableFileTransferConnectorNewUX();
TestCase& FileTransferConnectorReportOnlyMode();
TestCase& BypassRequiresJustification();
TestCase& EnableSearchV2();
TestCase& EnableLocalImageSearch();
TestCase& EnableOsFeedback();
TestCase& DisableGoogleOneOfferFilesBanner();
TestCase& DisableGoogleOneOfferFilesBannerWithG1Nudge();
TestCase& FeatureIds(const std::vector<std::string>& ids);
TestCase& EnableBulkPinning();
TestCase& EnableDriveShortcuts();
TestCase& SetDeviceMode(DeviceMode device_mode);
TestCase& SetTestAccountType(TestAccountType test_account_type);
TestCase& EnableCrosComponents();
TestCase& EnableSkyVault();
std::string GetFullName() const;
const char* const name;
FileManagerBrowserTestBase::Options options;
};
std::ostream& operator<<(std::ostream& out, const TestCase& test_case);
// Returns testcase full name.
std::string PostTestCaseName(const ::testing::TestParamInfo<TestCase>& test);
} // namespace test
} // namespace file_manager
#endif // CHROME_BROWSER_ASH_FILE_MANAGER_FILE_MANAGER_BROWSERTEST_UTILS_H_