File: startup_data.h

package info (click to toggle)
chromium 138.0.7204.157-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 6,071,864 kB
  • sloc: cpp: 34,936,859; ansic: 7,176,967; javascript: 4,110,704; python: 1,419,953; asm: 946,768; xml: 739,967; pascal: 187,324; sh: 89,623; perl: 88,663; objc: 79,944; sql: 50,304; cs: 41,786; fortran: 24,137; makefile: 21,806; php: 13,980; tcl: 13,166; yacc: 8,925; ruby: 7,485; awk: 3,720; lisp: 3,096; lex: 1,327; ada: 727; jsp: 228; sed: 36
file content (131 lines) | stat: -rw-r--r-- 4,215 bytes parent folder | download | duplicates (4)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
// Copyright 2019 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_STARTUP_DATA_H_
#define CHROME_BROWSER_STARTUP_DATA_H_

#include <memory>

#include "base/memory/scoped_refptr.h"
#include "build/build_config.h"
#include "components/leveldb_proto/public/proto_database_provider.h"
#include "extensions/buildflags/buildflags.h"

#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
namespace extensions {
class ExtensionsBrowserClient;
}
#endif

namespace user_prefs {
class PrefRegistrySyncable;
}

namespace policy {
class ProfilePolicyConnector;
class SchemaRegistryService;
class UserCloudPolicyManager;
}  // namespace policy

namespace sync_preferences {
class PrefServiceSyncable;
}

class PrefService;
class ProfileKey;
class ChromeFeatureListCreator;

// The StartupData owns any pre-created objects in //chrome before the full
// browser starts, including the ChromeFeatureListCreator and the Profile's
// PrefService. See doc:
// https://docs.google.com/document/d/1ybmGWRWXu0aYNxA99IcHFesDAslIaO1KFP6eGdHTJaE/edit#heading=h.7bk05syrcom
class StartupData {
 public:
  StartupData();

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

  ~StartupData();

  // Records core profile settings into the SystemProfileProto. It is important
  // when Chrome is running in the reduced mode, which doesn't start UMA
  // recording but persists all of the UMA data into a memory mapped file. The
  // file will be picked up by Chrome next time it is launched in the full
  // browser mode.
  void RecordCoreSystemProfile();

#if BUILDFLAG(IS_ANDROID)
  // Early initialization of the profile key for reduced mode startup.
  void InitProfileKey();

  // Initializes all necessary parameters to create the Profile's PrefService.
  void CreateProfilePrefService();

  // Returns whether a PrefService has been created.
  bool HasBuiltProfilePrefService();

  ProfileKey* GetProfileKey();

  // Passes ownership of the |key_| to the caller.
  std::unique_ptr<ProfileKey> TakeProfileKey();

  // Passes ownership of the |schema_registry_service_| to the caller.
  std::unique_ptr<policy::SchemaRegistryService> TakeSchemaRegistryService();

  // Passes ownership of the |user_cloud_policy_manager_| to the caller.
  std::unique_ptr<policy::UserCloudPolicyManager> TakeUserCloudPolicyManager();

  // Passes ownership of the |profile_policy_connector_| to the caller.
  std::unique_ptr<policy::ProfilePolicyConnector> TakeProfilePolicyConnector();

  // Passes ownership of the |pref_registry_| to the caller.
  scoped_refptr<user_prefs::PrefRegistrySyncable> TakePrefRegistrySyncable();

  // Passes ownership of the |prefs_| to the caller.
  std::unique_ptr<sync_preferences::PrefServiceSyncable>
  TakeProfilePrefService();

  // Passes ownership of the |proto_db_provider_| to the caller.
  std::unique_ptr<leveldb_proto::ProtoDatabaseProvider>
  TakeProtoDatabaseProvider();
#endif

#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
  // Passes ownership of the `extensions_browser_client_` to the caller.
  std::unique_ptr<extensions::ExtensionsBrowserClient>
  TakeExtensionsBrowserClient();
#endif

  ChromeFeatureListCreator* chrome_feature_list_creator() {
    return chrome_feature_list_creator_.get();
  }

 private:
#if BUILDFLAG(IS_ANDROID)
  void PreProfilePrefServiceInit();
  void CreateServicesInternal();

  std::unique_ptr<ProfileKey> key_;

  std::unique_ptr<policy::SchemaRegistryService> schema_registry_service_;
  std::unique_ptr<policy::UserCloudPolicyManager> user_cloud_policy_manager_;
  std::unique_ptr<policy::ProfilePolicyConnector> profile_policy_connector_;

  scoped_refptr<user_prefs::PrefRegistrySyncable> pref_registry_;

  std::unique_ptr<sync_preferences::PrefServiceSyncable> prefs_;

  std::unique_ptr<leveldb_proto::ProtoDatabaseProvider> proto_db_provider_;
#endif

#if BUILDFLAG(ENABLE_DESKTOP_ANDROID_EXTENSIONS)
  std::unique_ptr<extensions::ExtensionsBrowserClient>
      extensions_browser_client_;
#endif

  std::unique_ptr<ChromeFeatureListCreator> chrome_feature_list_creator_;
};

#endif  // CHROME_BROWSER_STARTUP_DATA_H_