blob: eb1da2d2a7e50638b0eb46d1ef78e0289e24b104 [file] [log] [blame]
// Copyright 2016 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.
#include "sync/api/conflict_resolution.h"
namespace syncer_v2 {
// static
ConflictResolution ConflictResolution::UseLocal() {
return ConflictResolution(USE_LOCAL, nullptr);
}
// static
ConflictResolution ConflictResolution::UseRemote() {
return ConflictResolution(USE_REMOTE, nullptr);
}
// static
ConflictResolution ConflictResolution::UseNew(
std::unique_ptr<EntityData> data) {
DCHECK(data);
return ConflictResolution(USE_NEW, std::move(data));
}
ConflictResolution::ConflictResolution(ConflictResolution&& other)
: ConflictResolution(other.type(), other.ExtractData()) {}
ConflictResolution::~ConflictResolution() {}
std::unique_ptr<EntityData> ConflictResolution::ExtractData() {
// Has data if and only if type is USE_NEW.
DCHECK((type_ == USE_NEW) == !!data_);
return std::move(data_);
};
ConflictResolution::ConflictResolution(Type type,
std::unique_ptr<EntityData> data)
: type_(type), data_(std::move(data)) {}
} // namespace syncer_v2