File: drive_integration_service_browser_test_base.h

package info (click to toggle)
chromium 139.0.7258.127-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 6,122,068 kB
  • sloc: cpp: 35,100,771; ansic: 7,163,530; javascript: 4,103,002; python: 1,436,920; asm: 946,517; xml: 746,709; pascal: 187,653; perl: 88,691; sh: 88,436; objc: 79,953; sql: 51,488; cs: 44,583; fortran: 24,137; makefile: 22,147; tcl: 15,277; php: 13,980; yacc: 8,984; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (77 lines) | stat: -rw-r--r-- 3,355 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Copyright 2022 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_DRIVE_INTEGRATION_SERVICE_BROWSER_TEST_BASE_H_
#define CHROME_BROWSER_ASH_DRIVE_DRIVE_INTEGRATION_SERVICE_BROWSER_TEST_BASE_H_

#include "chrome/browser/ash/drive/drive_integration_service.h"
#include "chrome/browser/ash/drive/drive_integration_service_factory.h"
#include "chrome/test/base/mixin_based_in_process_browser_test.h"

namespace drivefs {
class FakeDriveFs;
}  // namespace drivefs

namespace drive {
class FakeDriveFsHelper;

// The test base that supports adding drive files.
class DriveIntegrationServiceBrowserTestBase
    : public MixinBasedInProcessBrowserTest {
 public:
  DriveIntegrationServiceBrowserTestBase();
  DriveIntegrationServiceBrowserTestBase(
      const DriveIntegrationServiceBrowserTestBase&) = delete;
  DriveIntegrationServiceBrowserTestBase& operator=(
      const DriveIntegrationServiceBrowserTestBase&) = delete;
  ~DriveIntegrationServiceBrowserTestBase() override;

 protected:
  drivefs::FakeDriveFs* GetFakeDriveFsForProfile(Profile* profile);
  virtual drive::DriveIntegrationService* CreateDriveIntegrationService(
      Profile* profile);

  // Initiates the test file mount root associated with `profile` . Only used
  // when preparing for `AddDriveFileWithRelativePath()`.
  void InitTestFileMountRoot(Profile* profile);

  // Adds a file to the drive file system associated with `profile`. Returns the
  // relative and the absolute paths to the generated file through params.
  // `directory_path` is a relative path from the test file mount directory
  // associated with `profile` to the parent directory where a new file is
  // added. For example, if `directory_path` is "foo/bar" and the test
  // file mount root of `profile` is "/fsdrive/xxx", then a new file will be
  // added to "/fsdrive/xxx/foo/bar/". NOTE:
  // 1. `directory_path` should not be absolute;
  // 2. `directory_path` could be empty. If so, a new file is added to the test
  // file mount directory;
  // 3. `InitTestFileMountRoot()` has to be called before using this function.
  void AddDriveFileWithRelativePath(Profile* profile,
                                    const std::string& drive_file_id,
                                    const base::FilePath& directory_path,
                                    base::FilePath* new_file_relative_path,
                                    base::FilePath* new_file_absolute_path);

  // InProcessBrowserTest:
  bool SetUpUserDataDirectory() override;
  void SetUpInProcessBrowserTestFixture() override;

 private:
  // In each element:
  // 1. The key is a profile pointer;
  // 2. The value is a temporary directory under the drive file system
  // associated with the profile. It hosts temporary drive files.
  std::map<Profile*, base::ScopedTempDir> test_file_mount_root_mappings_;

  drive::DriveIntegrationServiceFactory::FactoryCallback
      create_drive_integration_service_;
  std::unique_ptr<drive::DriveIntegrationServiceFactory::ScopedFactoryForTest>
      service_factory_for_test_;
  std::map<Profile*, std::unique_ptr<drive::FakeDriveFsHelper>>
      fake_drivefs_helpers_;
};

}  // namespace drive

#endif  // CHROME_BROWSER_ASH_DRIVE_DRIVE_INTEGRATION_SERVICE_BROWSER_TEST_BASE_H_