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

Unified Diff: chrome/browser/sync/sessions/session_state.h

Issue 9699057: [Sync] Move 'sync' target to sync/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address Tim's comments Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/sessions/session_state.h
diff --git a/chrome/browser/sync/sessions/session_state.h b/chrome/browser/sync/sessions/session_state.h
deleted file mode 100644
index 994e983c82d1c265c61ba9bfa13bf8ce7f7d589f..0000000000000000000000000000000000000000
--- a/chrome/browser/sync/sessions/session_state.h
+++ /dev/null
@@ -1,329 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// The 'sessions' namespace comprises all the pieces of state that are
-// combined to form a SyncSession instance. In that way, it can be thought of
-// as an extension of the SyncSession type itself. Session scoping gives
-// context to things like "conflict progress", "update progress", etc, and the
-// separation this file provides allows clients to only include the parts they
-// need rather than the entire session stack.
-
-#ifndef CHROME_BROWSER_SYNC_SESSIONS_SESSION_STATE_H_
-#define CHROME_BROWSER_SYNC_SESSIONS_SESSION_STATE_H_
-#pragma once
-
-#include <map>
-#include <set>
-#include <string>
-#include <utility>
-#include <vector>
-
-#include "base/basictypes.h"
-#include "chrome/browser/sync/engine/syncer_types.h"
-#include "chrome/browser/sync/engine/syncproto.h"
-#include "chrome/browser/sync/sessions/ordered_commit_set.h"
-#include "chrome/browser/sync/protocol/sync_protocol_error.h"
-#include "chrome/browser/sync/syncable/model_type.h"
-#include "chrome/browser/sync/syncable/model_type_payload_map.h"
-#include "chrome/browser/sync/syncable/syncable.h"
-
-namespace base {
-class DictionaryValue;
-}
-
-namespace browser_sync {
-namespace sessions {
-
-class UpdateProgress;
-
-// A container for the source of a sync session. This includes the update
-// source, the datatypes triggering the sync session, and possible session
-// specific payloads which should be sent to the server.
-struct SyncSourceInfo {
- SyncSourceInfo();
- explicit SyncSourceInfo(const syncable::ModelTypePayloadMap& t);
- SyncSourceInfo(
- const sync_pb::GetUpdatesCallerInfo::GetUpdatesSource& u,
- const syncable::ModelTypePayloadMap& t);
- ~SyncSourceInfo();
-
- // Caller takes ownership of the returned dictionary.
- base::DictionaryValue* ToValue() const;
-
- sync_pb::GetUpdatesCallerInfo::GetUpdatesSource updates_source;
- syncable::ModelTypePayloadMap types;
-};
-
-// Data pertaining to the status of an active Syncer object.
-struct SyncerStatus {
- SyncerStatus();
- ~SyncerStatus();
-
- // Caller takes ownership of the returned dictionary.
- base::DictionaryValue* ToValue() const;
-
- // True when we get such an INVALID_STORE error from the server.
- bool invalid_store;
- int num_successful_commits;
- // This is needed for monitoring extensions activity.
- int num_successful_bookmark_commits;
-
- // Download event counters.
- int num_updates_downloaded_total;
- int num_tombstone_updates_downloaded_total;
-
- // If the syncer encountered a MIGRATION_DONE code, these are the types that
- // the client must now "migrate", by purging and re-downloading all updates.
- syncable::ModelTypeSet types_needing_local_migration;
-
- // Overwrites due to conflict resolution counters.
- int num_local_overwrites;
- int num_server_overwrites;
-};
-
-// Counters for various errors that can occur repeatedly during a sync session.
-// TODO(lipalani) : Rename this structure to Error.
-struct ErrorCounters {
- ErrorCounters();
-
- // Any protocol errors that we received during this sync session.
- SyncProtocolError sync_protocol_error;
-
- // Records the most recent results of PostCommit and GetUpdates commands.
- SyncerError last_download_updates_result;
- SyncerError last_post_commit_result;
- SyncerError last_process_commit_response_result;
-};
-
-// Caller takes ownership of the returned dictionary.
-base::DictionaryValue* DownloadProgressMarkersToValue(
- const std::string
- (&download_progress_markers)[syncable::MODEL_TYPE_COUNT]);
-
-// An immutable snapshot of state from a SyncSession. Convenient to use as
-// part of notifications as it is inherently thread-safe.
-struct SyncSessionSnapshot {
- SyncSessionSnapshot(
- const SyncerStatus& syncer_status,
- const ErrorCounters& errors,
- int64 num_server_changes_remaining,
- bool is_share_usable,
- syncable::ModelTypeSet initial_sync_ended,
- const std::string
- (&download_progress_markers)[syncable::MODEL_TYPE_COUNT],
- bool more_to_sync,
- bool is_silenced,
- int64 unsynced_count,
- int num_encryption_conflicts,
- int num_hierarchy_conflicts,
- int num_simple_conflicts,
- int num_server_conflicts,
- bool did_commit_items,
- const SyncSourceInfo& source,
- size_t num_entries,
- base::Time sync_start_time,
- bool retry_scheduled);
- ~SyncSessionSnapshot();
-
- // Caller takes ownership of the returned dictionary.
- base::DictionaryValue* ToValue() const;
-
- std::string ToString() const;
-
- const SyncerStatus syncer_status;
- const ErrorCounters errors;
- const int64 num_server_changes_remaining;
- const bool is_share_usable;
- const syncable::ModelTypeSet initial_sync_ended;
- const std::string download_progress_markers[syncable::MODEL_TYPE_COUNT];
- const bool has_more_to_sync;
- const bool is_silenced;
- const int64 unsynced_count;
- const int num_encryption_conflicts;
- const int num_hierarchy_conflicts;
- const int num_simple_conflicts;
- const int num_server_conflicts;
- const bool did_commit_items;
- const SyncSourceInfo source;
- const size_t num_entries;
- base::Time sync_start_time;
- const bool retry_scheduled;
-};
-
-// Tracks progress of conflicts and their resolutions.
-class ConflictProgress {
- public:
- explicit ConflictProgress(bool* dirty_flag);
- ~ConflictProgress();
-
- bool HasSimpleConflictItem(const syncable::Id &id) const;
-
- // Various mutators for tracking commit conflicts.
- void AddSimpleConflictingItemById(const syncable::Id& the_id);
- void EraseSimpleConflictingItemById(const syncable::Id& the_id);
- std::set<syncable::Id>::const_iterator SimpleConflictingItemsBegin() const;
- std::set<syncable::Id>::const_iterator SimpleConflictingItemsEnd() const;
- int SimpleConflictingItemsSize() const {
- return simple_conflicting_item_ids_.size();
- }
-
- // Mutators for unresolvable conflicting items (see description below).
- void AddEncryptionConflictingItemById(const syncable::Id& the_id);
- int EncryptionConflictingItemsSize() const {
- return num_encryption_conflicting_items;
- }
-
- void AddHierarchyConflictingItemById(const syncable::Id& id);
- int HierarchyConflictingItemsSize() const {
- return num_hierarchy_conflicting_items;
- }
-
- void AddServerConflictingItemById(const syncable::Id& id);
- int ServerConflictingItemsSize() const {
- return num_server_conflicting_items;
- }
-
- private:
- // Conflicts that occur when local and server changes collide and can be
- // resolved locally.
- std::set<syncable::Id> simple_conflicting_item_ids_;
-
- // Unresolvable conflicts are not processed by the conflict resolver. We wait
- // and hope the server will provide us with an update that resolves these
- // conflicts.
- std::set<syncable::Id> unresolvable_conflicting_item_ids_;
-
- size_t num_server_conflicting_items;
- size_t num_hierarchy_conflicting_items;
- size_t num_encryption_conflicting_items;
-
- // Whether a conflicting item was added or removed since
- // the last call to reset_progress_changed(), if any. In practice this
- // points to StatusController::is_dirty_.
- bool* dirty_;
-};
-
-typedef std::pair<VerifyResult, sync_pb::SyncEntity> VerifiedUpdate;
-typedef std::pair<UpdateAttemptResponse, syncable::Id> AppliedUpdate;
-
-// Tracks update application and verification.
-class UpdateProgress {
- public:
- UpdateProgress();
- ~UpdateProgress();
-
- void AddVerifyResult(const VerifyResult& verify_result,
- const sync_pb::SyncEntity& entity);
-
- // Log a successful or failing update attempt.
- void AddAppliedUpdate(const UpdateAttemptResponse& response,
- const syncable::Id& id);
-
- // Various iterators.
- std::vector<AppliedUpdate>::iterator AppliedUpdatesBegin();
- std::vector<VerifiedUpdate>::const_iterator VerifiedUpdatesBegin() const;
- std::vector<AppliedUpdate>::const_iterator AppliedUpdatesEnd() const;
- std::vector<VerifiedUpdate>::const_iterator VerifiedUpdatesEnd() const;
-
- // Returns the number of update application attempts. This includes both
- // failures and successes.
- int AppliedUpdatesSize() const { return applied_updates_.size(); }
- int VerifiedUpdatesSize() const { return verified_updates_.size(); }
- bool HasVerifiedUpdates() const { return !verified_updates_.empty(); }
- bool HasAppliedUpdates() const { return !applied_updates_.empty(); }
- void ClearVerifiedUpdates() { verified_updates_.clear(); }
-
- // Count the number of successful update applications that have happend this
- // cycle. Note that if an item is successfully applied twice, it will be
- // double counted here.
- int SuccessfullyAppliedUpdateCount() const;
-
- // Returns true if at least one update application failed due to a conflict
- // during this sync cycle.
- bool HasConflictingUpdates() const;
-
- private:
- // Container for updates that passed verification.
- std::vector<VerifiedUpdate> verified_updates_;
-
- // Stores the result of the various ApplyUpdate attempts we've made.
- // May contain duplicate entries.
- std::vector<AppliedUpdate> applied_updates_;
-};
-
-struct SyncCycleControlParameters {
- SyncCycleControlParameters() : conflicts_resolved(false),
- items_committed(false),
- debug_info_sent(false) {}
- // Set to true by ResolveConflictsCommand if any forward progress was made.
- bool conflicts_resolved;
-
- // Set to true by PostCommitMessageCommand if any commits were successful.
- bool items_committed;
-
- // True indicates debug info has been sent once this session.
- bool debug_info_sent;
-};
-
-// DirtyOnWrite wraps a value such that any write operation will update a
-// specified dirty bit, which can be used to determine if a notification should
-// be sent due to state change.
-template <typename T>
-class DirtyOnWrite {
- public:
- explicit DirtyOnWrite(bool* dirty) : dirty_(dirty) {}
- DirtyOnWrite(bool* dirty, const T& t) : t_(t), dirty_(dirty) {}
- T* mutate() {
- *dirty_ = true;
- return &t_;
- }
- const T& value() const { return t_; }
- private:
- T t_;
- bool* dirty_;
-};
-
-// The next 3 structures declare how all the state involved in running a sync
-// cycle is divided between global scope (applies to all model types),
-// ModelSafeGroup scope (applies to all data types in a group), and single
-// model type scope. Within this breakdown, each struct declares which bits
-// of state are dirty-on-write and should incur dirty bit updates if changed.
-
-// Grouping of all state that applies to all model types. Note that some
-// components of the global grouping can internally implement finer grained
-// scope control (such as OrderedCommitSet), but the top level entity is still
-// a singleton with respect to model types.
-struct AllModelTypeState {
- explicit AllModelTypeState(bool* dirty_flag);
- ~AllModelTypeState();
-
- // Commits for all model types are bundled together into a single message.
- ClientToServerMessage commit_message;
- ClientToServerResponse commit_response;
- // We GetUpdates for some combination of types at once.
- // requested_update_types stores the set of types which were requested.
- syncable::ModelTypeSet updates_request_types;
- ClientToServerResponse updates_response;
- // Used to build the shared commit message.
- DirtyOnWrite<std::vector<int64> > unsynced_handles;
- DirtyOnWrite<SyncerStatus> syncer_status;
- DirtyOnWrite<ErrorCounters> error;
- SyncCycleControlParameters control_params;
- DirtyOnWrite<int64> num_server_changes_remaining;
- OrderedCommitSet commit_set;
-};
-
-// Grouping of all state that applies to a single ModelSafeGroup.
-struct PerModelSafeGroupState {
- explicit PerModelSafeGroupState(bool* dirty_flag);
- ~PerModelSafeGroupState();
-
- UpdateProgress update_progress;
- ConflictProgress conflict_progress;
-};
-
-} // namespace sessions
-} // namespace browser_sync
-
-#endif // CHROME_BROWSER_SYNC_SESSIONS_SESSION_STATE_H_
« no previous file with comments | « chrome/browser/sync/sessions/ordered_commit_set_unittest.cc ('k') | chrome/browser/sync/sessions/session_state.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698