Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: sync/sessions/sync_session_context.h

Issue 2130453004: [Sync] Move //sync to //components/sync. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sync/sessions/sync_session.cc ('k') | sync/sessions/sync_session_context.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // SyncSessionContext encapsulates the contextual information and engine
6 // components specific to a SyncSession. Unlike the SyncSession, the context
7 // can be reused across several sync cycles.
8 //
9 // The context does not take ownership of its pointer members. It's up to
10 // the surrounding classes to ensure those members remain valid while the
11 // context is in use.
12 //
13 // It can only be used from the SyncerThread.
14
15 #ifndef SYNC_SESSIONS_SYNC_SESSION_CONTEXT_H_
16 #define SYNC_SESSIONS_SYNC_SESSION_CONTEXT_H_
17
18 #include <stdint.h>
19
20 #include <string>
21 #include <vector>
22
23 #include "base/macros.h"
24 #include "sync/base/sync_export.h"
25 #include "sync/engine/sync_engine_event_listener.h"
26 #include "sync/sessions/debug_info_getter.h"
27 #include "sync/sessions/model_type_registry.h"
28
29 namespace syncer {
30
31 class ExtensionsActivity;
32 class ModelTypeRegistry;
33 class ServerConnectionManager;
34
35 namespace syncable {
36 class Directory;
37 }
38
39 // Default number of items a client can commit in a single message.
40 static const int kDefaultMaxCommitBatchSize = 25;
41
42 namespace sessions {
43 class TestScopedSessionEventListener;
44
45 class SYNC_EXPORT SyncSessionContext {
46 public:
47 SyncSessionContext(
48 ServerConnectionManager* connection_manager,
49 syncable::Directory* directory,
50 ExtensionsActivity* extensions_activity,
51 const std::vector<SyncEngineEventListener*>& listeners,
52 DebugInfoGetter* debug_info_getter,
53 ModelTypeRegistry* model_type_registry,
54 bool keystore_encryption_enabled,
55 bool client_enabled_pre_commit_update_avoidance,
56 const std::string& invalidator_client_id);
57
58 ~SyncSessionContext();
59
60 ServerConnectionManager* connection_manager() {
61 return connection_manager_;
62 }
63 syncable::Directory* directory() {
64 return directory_;
65 }
66
67 ModelTypeSet GetEnabledTypes() const;
68
69 void SetRoutingInfo(const ModelSafeRoutingInfo& routing_info);
70
71 ExtensionsActivity* extensions_activity() {
72 return extensions_activity_.get();
73 }
74
75 DebugInfoGetter* debug_info_getter() {
76 return debug_info_getter_;
77 }
78
79 // Talk notification status.
80 void set_notifications_enabled(bool enabled) {
81 notifications_enabled_ = enabled;
82 }
83 bool notifications_enabled() { return notifications_enabled_; }
84
85 // Account name, set once a directory has been opened.
86 void set_account_name(const std::string& name) {
87 account_name_ = name;
88 }
89 const std::string& account_name() const { return account_name_; }
90
91 void set_max_commit_batch_size(int batch_size) {
92 max_commit_batch_size_ = batch_size;
93 }
94 int32_t max_commit_batch_size() const { return max_commit_batch_size_; }
95
96 base::ObserverList<SyncEngineEventListener>* listeners() {
97 return &listeners_;
98 }
99
100 bool keystore_encryption_enabled() const {
101 return keystore_encryption_enabled_;
102 }
103
104 void set_hierarchy_conflict_detected(bool value) {
105 client_status_.set_hierarchy_conflict_detected(value);
106 }
107
108 const sync_pb::ClientStatus& client_status() const {
109 return client_status_;
110 }
111
112 const std::string& invalidator_client_id() const {
113 return invalidator_client_id_;
114 }
115
116 bool ShouldFetchUpdatesBeforeCommit() const {
117 return !(server_enabled_pre_commit_update_avoidance_ ||
118 client_enabled_pre_commit_update_avoidance_);
119 }
120
121 void set_server_enabled_pre_commit_update_avoidance(bool value) {
122 server_enabled_pre_commit_update_avoidance_ = value;
123 }
124
125 ModelTypeRegistry* model_type_registry() {
126 return model_type_registry_;
127 }
128
129 bool cookie_jar_mismatch() const {
130 return cookie_jar_mismatch_;
131 }
132
133 void set_cookie_jar_mismatch(bool cookie_jar_mismatch) {
134 cookie_jar_mismatch_ = cookie_jar_mismatch;
135 }
136
137 bool cookie_jar_empty() const { return cookie_jar_empty_; }
138
139 void set_cookie_jar_empty(bool empty_jar) { cookie_jar_empty_ = empty_jar; }
140
141 private:
142 // Rather than force clients to set and null-out various context members, we
143 // extend our encapsulation boundary to scoped helpers that take care of this
144 // once they are allocated. See definitions of these below.
145 friend class TestScopedSessionEventListener;
146
147 base::ObserverList<SyncEngineEventListener> listeners_;
148
149 ServerConnectionManager* const connection_manager_;
150 syncable::Directory* const directory_;
151
152 // We use this to stuff extensions activity into CommitMessages so the server
153 // can correlate commit traffic with extension-related bookmark mutations.
154 scoped_refptr<ExtensionsActivity> extensions_activity_;
155
156 // Kept up to date with talk events to determine whether notifications are
157 // enabled. True only if the notification channel is authorized and open.
158 bool notifications_enabled_;
159
160 // The name of the account being synced.
161 std::string account_name_;
162
163 // The server limits the number of items a client can commit in one batch.
164 int max_commit_batch_size_;
165
166 // We use this to get debug info to send to the server for debugging
167 // client behavior on server side.
168 DebugInfoGetter* const debug_info_getter_;
169
170 ModelTypeRegistry* model_type_registry_;
171
172 // Satus information to be sent up to the server.
173 sync_pb::ClientStatus client_status_;
174
175 // Temporary variable while keystore encryption is behind a flag. True if
176 // we should attempt performing keystore encryption related work, false if
177 // the experiment is not enabled.
178 bool keystore_encryption_enabled_;
179
180 // This is a copy of the identifier the that the invalidations client used to
181 // register itself with the invalidations server during startup. We need to
182 // provide this to the sync server when we make changes to enable it to
183 // prevent us from receiving notifications of changes we make ourselves.
184 const std::string invalidator_client_id_;
185
186 // Flag to enable or disable the no pre-commit GetUpdates experiment. When
187 // this flag is set to false, the syncer has the option of not performing at
188 // GetUpdates request when there is nothing to fetch.
189 bool server_enabled_pre_commit_update_avoidance_;
190
191 // If true, indicates that we've been passed a command-line flag to force
192 // enable the pre-commit update avoidance experiment described above.
193 const bool client_enabled_pre_commit_update_avoidance_;
194
195 // Whether the account(s) present in the content area's cookie jar match the
196 // chrome account. If multiple accounts are present in the cookie jar, a
197 // mismatch implies all of them are different from the chrome account.
198 bool cookie_jar_mismatch_;
199
200 // If there's a cookie jar mismatch, whether the cookie jar was empty or not.
201 bool cookie_jar_empty_;
202
203 DISALLOW_COPY_AND_ASSIGN(SyncSessionContext);
204 };
205
206 } // namespace sessions
207 } // namespace syncer
208
209 #endif // SYNC_SESSIONS_SYNC_SESSION_CONTEXT_H_
OLDNEW
« no previous file with comments | « sync/sessions/sync_session.cc ('k') | sync/sessions/sync_session_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698