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_PUBLIC_SESSIONS_SYNC_SESSION_SNAPSHOT_H_ 6 #define SYNC_INTERNAL_API_PUBLIC_SESSIONS_SYNC_SESSION_SNAPSHOT_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/time/time.h" 12 #include "sync/base/sync_export.h" 13 #include "sync/internal_api/public/base/model_type.h" 14 #include "sync/internal_api/public/base/progress_marker_map.h" 15 #include "sync/internal_api/public/sessions/model_neutral_state.h" 16 17 namespace base { 18 class DictionaryValue; 19 } 20 21 namespace syncer { 22 namespace sessions { 23 24 // An immutable snapshot of state from a SyncSession. Convenient to use as 25 // part of notifications as it is inherently thread-safe. 26 // TODO(zea): if copying this all over the place starts getting expensive, 27 // consider passing around immutable references instead of values. 28 // Default copy and assign welcome. 29 class SYNC_EXPORT SyncSessionSnapshot { 30 public: 31 SyncSessionSnapshot(); 32 SyncSessionSnapshot( 33 const ModelNeutralState& model_neutral_state, 34 const ProgressMarkerMap& download_progress_markers, 35 bool is_silenced, 36 int num_encryption_conflicts, 37 int num_hierarchy_conflicts, 38 int num_server_conflicts, 39 bool notifications_enabled, 40 size_t num_entries, 41 base::Time sync_start_time, 42 const std::vector<int>& num_entries_by_type, 43 const std::vector<int>& num_to_delete_entries_by_type, 44 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource legacy_updates_source); 45 ~SyncSessionSnapshot(); 46 47 // Caller takes ownership of the returned dictionary. 48 base::DictionaryValue* ToValue() const; 49 50 std::string ToString() const; 51 model_neutral_state()52 ModelNeutralState model_neutral_state() const { 53 return model_neutral_state_; 54 } 55 const ProgressMarkerMap& download_progress_markers() const; 56 bool is_silenced() const; 57 int num_encryption_conflicts() const; 58 int num_hierarchy_conflicts() const; 59 int num_server_conflicts() const; 60 bool notifications_enabled() const; 61 size_t num_entries() const; 62 base::Time sync_start_time() const; 63 const std::vector<int>& num_entries_by_type() const; 64 const std::vector<int>& num_to_delete_entries_by_type() const; 65 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource legacy_updates_source() const; 66 67 // Set iff this snapshot was not built using the default constructor. 68 bool is_initialized() const; 69 70 private: 71 ModelNeutralState model_neutral_state_; 72 ProgressMarkerMap download_progress_markers_; 73 bool is_silenced_; 74 int num_encryption_conflicts_; 75 int num_hierarchy_conflicts_; 76 int num_server_conflicts_; 77 bool notifications_enabled_; 78 size_t num_entries_; 79 base::Time sync_start_time_; 80 81 std::vector<int> num_entries_by_type_; 82 std::vector<int> num_to_delete_entries_by_type_; 83 84 // This enum value used to be an important part of the sync protocol, but is 85 // now deprecated. We continue to use it in the snapshot because there is 86 // still some value in displaying it on the about:sync page. 87 sync_pb::GetUpdatesCallerInfo::GetUpdatesSource legacy_updates_source_; 88 89 bool is_initialized_; 90 }; 91 92 } // namespace sessions 93 } // namespace syncer 94 95 #endif // SYNC_INTERNAL_API_PUBLIC_SESSIONS_SYNC_SESSION_SNAPSHOT_H_ 96