| // 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 |