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

Side by Side Diff: sync/internal_api/debug_info_event_listener.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
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 #ifndef SYNC_INTERNAL_API_DEBUG_INFO_EVENT_LISTENER_H_
6 #define SYNC_INTERNAL_API_DEBUG_INFO_EVENT_LISTENER_H_
7
8 #include <deque>
9 #include <string>
10 #include <vector>
11
12 #include "base/compiler_specific.h"
13 #include "base/gtest_prod_util.h"
14 #include "base/macros.h"
15 #include "sync/base/sync_export.h"
16 #include "sync/internal_api/public/base/model_type.h"
17 #include "sync/internal_api/public/data_type_debug_info_listener.h"
18 #include "sync/internal_api/public/sessions/sync_session_snapshot.h"
19 #include "sync/internal_api/public/sync_encryption_handler.h"
20 #include "sync/internal_api/public/sync_manager.h"
21 #include "sync/internal_api/public/util/weak_handle.h"
22 #include "sync/js/js_backend.h"
23 #include "sync/protocol/sync.pb.h"
24 #include "sync/sessions/debug_info_getter.h"
25
26 namespace syncer {
27
28 // In order to track datatype association results, we need at least as many
29 // entries as datatypes. Reserve additional space for other kinds of events that
30 // are likely to happen during first sync or startup.
31 const unsigned int kMaxEntries = MODEL_TYPE_COUNT + 10;
32
33 // Listens to events and records them in a queue. And passes the events to
34 // syncer when requested.
35 // This class is not thread safe and should only be accessed on the sync thread.
36 class SYNC_EXPORT DebugInfoEventListener
37 : public SyncManager::Observer,
38 public SyncEncryptionHandler::Observer,
39 public sessions::DebugInfoGetter,
40 public DataTypeDebugInfoListener {
41 public:
42 DebugInfoEventListener();
43 ~DebugInfoEventListener() override;
44
45 // SyncManager::Observer implementation.
46 void OnSyncCycleCompleted(
47 const sessions::SyncSessionSnapshot& snapshot) override;
48 void OnInitializationComplete(
49 const WeakHandle<JsBackend>& js_backend,
50 const WeakHandle<DataTypeDebugInfoListener>& debug_listener,
51 bool success,
52 ModelTypeSet restored_types) override;
53 void OnConnectionStatusChange(ConnectionStatus connection_status) override;
54 void OnActionableError(const SyncProtocolError& sync_error) override;
55 void OnMigrationRequested(ModelTypeSet types) override;
56 void OnProtocolEvent(const ProtocolEvent& event) override;
57
58 // SyncEncryptionHandler::Observer implementation.
59 void OnPassphraseRequired(
60 PassphraseRequiredReason reason,
61 const sync_pb::EncryptedData& pending_keys) override;
62 void OnPassphraseAccepted() override;
63 void OnBootstrapTokenUpdated(const std::string& bootstrap_token,
64 BootstrapTokenType type) override;
65 void OnEncryptedTypesChanged(ModelTypeSet encrypted_types,
66 bool encrypt_everything) override;
67 void OnEncryptionComplete() override;
68 void OnCryptographerStateChanged(Cryptographer* cryptographer) override;
69 void OnPassphraseTypeChanged(PassphraseType type,
70 base::Time explicit_passphrase_time) override;
71 void OnLocalSetPassphraseEncryption(
72 const SyncEncryptionHandler::NigoriState& nigori_state) override;
73
74 // Sync manager events.
75 void OnNudgeFromDatatype(ModelType datatype);
76
77 // DebugInfoGetter implementation.
78 void GetDebugInfo(sync_pb::DebugInfo* debug_info) override;
79
80 // DebugInfoGetter implementation.
81 void ClearDebugInfo() override;
82
83 // DataTypeDebugInfoListener implementation.
84 void OnDataTypeConfigureComplete(
85 const std::vector<DataTypeConfigurationStats>& configuration_stats)
86 override;
87
88 // Returns a weak pointer to this object.
89 base::WeakPtr<DataTypeDebugInfoListener> GetWeakPtr();
90
91 private:
92 FRIEND_TEST_ALL_PREFIXES(DebugInfoEventListenerTest, VerifyEventsAdded);
93 FRIEND_TEST_ALL_PREFIXES(DebugInfoEventListenerTest, VerifyQueueSize);
94 FRIEND_TEST_ALL_PREFIXES(DebugInfoEventListenerTest, VerifyGetEvents);
95 FRIEND_TEST_ALL_PREFIXES(DebugInfoEventListenerTest, VerifyClearEvents);
96
97 void AddEventToQueue(const sync_pb::DebugEventInfo& event_info);
98 void CreateAndAddEvent(sync_pb::SyncEnums::SingletonDebugEventType type);
99
100 typedef std::deque<sync_pb::DebugEventInfo> DebugEventInfoQueue;
101 DebugEventInfoQueue events_;
102
103 // True indicates we had to drop one or more events to keep our limit of
104 // |kMaxEntries|.
105 bool events_dropped_;
106
107 // Cryptographer has keys that are not yet decrypted.
108 bool cryptographer_has_pending_keys_;
109
110 // Cryptographer is initialized and does not have pending keys.
111 bool cryptographer_ready_;
112
113 base::ThreadChecker thread_checker_;
114
115 base::WeakPtrFactory<DebugInfoEventListener> weak_ptr_factory_;
116
117 DISALLOW_COPY_AND_ASSIGN(DebugInfoEventListener);
118 };
119
120 } // namespace syncer
121
122 #endif // SYNC_INTERNAL_API_DEBUG_INFO_EVENT_LISTENER_H_
OLDNEW
« no previous file with comments | « sync/internal_api/change_reorder_buffer.cc ('k') | sync/internal_api/debug_info_event_listener.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698