| Index: chrome/browser/sync/sessions/sync_session.h
|
| diff --git a/chrome/browser/sync/sessions/sync_session.h b/chrome/browser/sync/sessions/sync_session.h
|
| deleted file mode 100644
|
| index 6b21ea1d5e4b37e262baf0c742a4afccfcc664ac..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/sync/sessions/sync_session.h
|
| +++ /dev/null
|
| @@ -1,240 +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.
|
| -
|
| -// A class representing an attempt to synchronize the local syncable data
|
| -// store with a sync server. A SyncSession instance is passed as a stateful
|
| -// bundle to and from various SyncerCommands with the goal of converging the
|
| -// client view of data with that of the server. The commands twiddle with
|
| -// session status in response to events and hiccups along the way, set and
|
| -// query session progress with regards to conflict resolution and applying
|
| -// server updates, and access the SyncSessionContext for the current session
|
| -// via SyncSession instances.
|
| -
|
| -#ifndef CHROME_BROWSER_SYNC_SESSIONS_SYNC_SESSION_H_
|
| -#define CHROME_BROWSER_SYNC_SESSIONS_SYNC_SESSION_H_
|
| -#pragma once
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <string>
|
| -#include <utility>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/time.h"
|
| -#include "chrome/browser/sync/engine/model_safe_worker.h"
|
| -#include "chrome/browser/sync/sessions/ordered_commit_set.h"
|
| -#include "chrome/browser/sync/sessions/session_state.h"
|
| -#include "chrome/browser/sync/sessions/status_controller.h"
|
| -#include "chrome/browser/sync/sessions/sync_session_context.h"
|
| -#include "chrome/browser/sync/syncable/model_type.h"
|
| -#include "chrome/browser/sync/util/extensions_activity_monitor.h"
|
| -
|
| -namespace syncable {
|
| -class WriteTransaction;
|
| -}
|
| -
|
| -namespace browser_sync {
|
| -class ModelSafeWorker;
|
| -
|
| -namespace sessions {
|
| -
|
| -class SyncSession {
|
| - public:
|
| - // The Delegate services events that occur during the session requiring an
|
| - // explicit (and session-global) action, as opposed to events that are simply
|
| - // recorded in per-session state.
|
| - class Delegate {
|
| - public:
|
| - // The client was throttled and should cease-and-desist syncing activity
|
| - // until the specified time.
|
| - virtual void OnSilencedUntil(const base::TimeTicks& silenced_until) = 0;
|
| -
|
| - // Silenced intervals can be out of phase with individual sessions, so the
|
| - // delegate is the only thing that can give an authoritative answer for
|
| - // "is syncing silenced right now". This shouldn't be necessary very often
|
| - // as the delegate ensures no session is started if syncing is silenced.
|
| - // ** Note ** This will return true if silencing commenced during this
|
| - // session and the interval has not yet elapsed, but the contract here is
|
| - // solely based on absolute time values. So, this cannot be used to infer
|
| - // that any given session _instance_ is silenced. An example of reasonable
|
| - // use is for UI reporting.
|
| - virtual bool IsSyncingCurrentlySilenced() = 0;
|
| -
|
| - // The client has been instructed to change its short poll interval.
|
| - virtual void OnReceivedShortPollIntervalUpdate(
|
| - const base::TimeDelta& new_interval) = 0;
|
| -
|
| - // The client has been instructed to change its long poll interval.
|
| - virtual void OnReceivedLongPollIntervalUpdate(
|
| - const base::TimeDelta& new_interval) = 0;
|
| -
|
| - // The client has been instructed to change its sessions commit
|
| - // delay.
|
| - virtual void OnReceivedSessionsCommitDelay(
|
| - const base::TimeDelta& new_delay) = 0;
|
| -
|
| - // The client needs to cease and desist syncing at once. This occurs when
|
| - // the Syncer detects that the backend store has fundamentally changed or
|
| - // is a different instance altogether (e.g. swapping from a test instance
|
| - // to production, or a global stop syncing operation has wiped the store).
|
| - // TODO(lipalani) : Replace this function with the one below. This function
|
| - // stops the current sync cycle and purges the client. In the new model
|
| - // the former would be done by the |SyncProtocolError| and
|
| - // the latter(which is an action) would be done in ProfileSyncService
|
| - // along with the rest of the actions.
|
| - virtual void OnShouldStopSyncingPermanently() = 0;
|
| -
|
| - // Called for the syncer to respond to the error sent by the server.
|
| - virtual void OnSyncProtocolError(
|
| - const sessions::SyncSessionSnapshot& snapshot) = 0;
|
| -
|
| - protected:
|
| - virtual ~Delegate() {}
|
| - };
|
| -
|
| - SyncSession(SyncSessionContext* context,
|
| - Delegate* delegate,
|
| - const SyncSourceInfo& source,
|
| - const ModelSafeRoutingInfo& routing_info,
|
| - const std::vector<ModelSafeWorker*>& workers);
|
| - ~SyncSession();
|
| -
|
| - // Builds a thread-safe and read-only copy of the current session state.
|
| - SyncSessionSnapshot TakeSnapshot() const;
|
| -
|
| - // Builds and sends a snapshot to the session context's listeners.
|
| - void SendEventNotification(SyncEngineEvent::EventCause cause);
|
| -
|
| - // Returns true if this session contains data that should go through the sync
|
| - // engine again.
|
| - bool HasMoreToSync() const;
|
| -
|
| - // Returns true if there we did not detect any errors in this session.
|
| - //
|
| - // There are many errors that could prevent a sync cycle from succeeding.
|
| - // These include invalid local state, inability to contact the server,
|
| - // inability to authenticate with the server, and server errors. What they
|
| - // have in common is that the we either need to take some action and then
|
| - // retry the sync cycle or, in the case of transient errors, retry after some
|
| - // backoff timer has expired. Most importantly, the SyncScheduler should not
|
| - // assume that the original action that triggered the sync cycle (ie. a nudge
|
| - // or a notification) has been properly serviced.
|
| - //
|
| - // This function also returns false if SyncShare has not been called on this
|
| - // session yet, or if ResetTransientState() has been called on this session
|
| - // since the last call to SyncShare.
|
| - bool Succeeded() const;
|
| -
|
| - // Collects all state pertaining to how and why |s| originated and unions it
|
| - // with corresponding state in |this|, leaving |s| unchanged. Allows |this|
|
| - // to take on the responsibilities |s| had (e.g. certain data types) in the
|
| - // next SyncShare operation using |this|, rather than needed two separate
|
| - // sessions.
|
| - void Coalesce(const SyncSession& session);
|
| -
|
| - // Compares the routing_info_, workers and payload map with the passed in
|
| - // session. Purges types from the above 3 which are not in session. Useful
|
| - // to update the sync session when the user has disabled some types from
|
| - // syncing.
|
| - void RebaseRoutingInfoWithLatest(const SyncSession& session);
|
| -
|
| - // Should be called any time |this| is being re-used in a new call to
|
| - // SyncShare (e.g., HasMoreToSync returned true).
|
| - void PrepareForAnotherSyncCycle();
|
| -
|
| - // TODO(akalin): Split this into context() and mutable_context().
|
| - SyncSessionContext* context() const { return context_; }
|
| - Delegate* delegate() const { return delegate_; }
|
| - syncable::WriteTransaction* write_transaction() { return write_transaction_; }
|
| - const StatusController& status_controller() const {
|
| - return *status_controller_.get();
|
| - }
|
| - StatusController* mutable_status_controller() {
|
| - return status_controller_.get();
|
| - }
|
| -
|
| - const ExtensionsActivityMonitor::Records& extensions_activity() const {
|
| - return extensions_activity_;
|
| - }
|
| - ExtensionsActivityMonitor::Records* mutable_extensions_activity() {
|
| - return &extensions_activity_;
|
| - }
|
| -
|
| - const std::vector<ModelSafeWorker*>& workers() const { return workers_; }
|
| - const ModelSafeRoutingInfo& routing_info() const { return routing_info_; }
|
| - const SyncSourceInfo& source() const { return source_; }
|
| -
|
| - // Returns the set of groups which have enabled types.
|
| - const std::set<ModelSafeGroup>& GetEnabledGroups() const;
|
| -
|
| - // Returns the set of enabled groups that have conflicts.
|
| - std::set<ModelSafeGroup> GetEnabledGroupsWithConflicts() const;
|
| -
|
| - // Returns the set of enabled groups that have verified updates.
|
| - std::set<ModelSafeGroup> GetEnabledGroupsWithVerifiedUpdates() const;
|
| -
|
| - private:
|
| - // Extend the encapsulation boundary to utilities for internal member
|
| - // assignments. This way, the scope of these actions is explicit, they can't
|
| - // be overridden, and assigning is always accompanied by unassigning.
|
| - friend class ScopedSetSessionWriteTransaction;
|
| -
|
| - // The context for this session, guaranteed to outlive |this|.
|
| - SyncSessionContext* const context_;
|
| -
|
| - // The source for initiating this sync session.
|
| - SyncSourceInfo source_;
|
| -
|
| - // Information about extensions activity since the last successful commit.
|
| - ExtensionsActivityMonitor::Records extensions_activity_;
|
| -
|
| - // Used to allow various steps to share a transaction. Can be NULL.
|
| - syncable::WriteTransaction* write_transaction_;
|
| -
|
| - // The delegate for this session, must never be NULL.
|
| - Delegate* const delegate_;
|
| -
|
| - // Our controller for various status and error counters.
|
| - scoped_ptr<StatusController> status_controller_;
|
| -
|
| - // The set of active ModelSafeWorkers for the duration of this session.
|
| - // This can change if this session is Coalesce()'d with another.
|
| - std::vector<ModelSafeWorker*> workers_;
|
| -
|
| - // The routing info for the duration of this session, dictating which
|
| - // datatypes should be synced and which workers should be used when working
|
| - // on those datatypes.
|
| - ModelSafeRoutingInfo routing_info_;
|
| -
|
| - // The set of groups with enabled types. Computed from
|
| - // |routing_info_|.
|
| - std::set<ModelSafeGroup> enabled_groups_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SyncSession);
|
| -};
|
| -
|
| -// Installs a WriteTransaction to a given session and later clears it when the
|
| -// utility falls out of scope. Transactions are not nestable, so it is an error
|
| -// to try and use one of these if the session already has a transaction.
|
| -class ScopedSetSessionWriteTransaction {
|
| - public:
|
| - ScopedSetSessionWriteTransaction(SyncSession* session,
|
| - syncable::WriteTransaction* trans)
|
| - : session_(session) {
|
| - DCHECK(!session_->write_transaction_);
|
| - session_->write_transaction_ = trans;
|
| - }
|
| - ~ScopedSetSessionWriteTransaction() { session_->write_transaction_ = NULL; }
|
| -
|
| - private:
|
| - SyncSession* session_;
|
| - DISALLOW_COPY_AND_ASSIGN(ScopedSetSessionWriteTransaction);
|
| -};
|
| -
|
| -} // namespace sessions
|
| -} // namespace browser_sync
|
| -
|
| -#endif // CHROME_BROWSER_SYNC_SESSIONS_SYNC_SESSION_H_
|
|
|