1 // Copyright 2014 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 #include "extensions/browser/value_store/value_store.h"
6 
7 #include <utility>
8 
9 #include "base/logging.h"
10 
11 // Implementation of Status.
12 
Status()13 ValueStore::Status::Status() : code(OK), restore_status(RESTORE_NONE) {}
14 
Status(StatusCode code,const std::string & message)15 ValueStore::Status::Status(StatusCode code, const std::string& message)
16     : Status(code, RESTORE_NONE, message) {}
17 
Status(StatusCode code,BackingStoreRestoreStatus restore_status,const std::string & message)18 ValueStore::Status::Status(StatusCode code,
19                            BackingStoreRestoreStatus restore_status,
20                            const std::string& message)
21     : code(code), restore_status(restore_status), message(message) {}
22 
23 ValueStore::Status::Status(Status&& other) = default;
24 
25 ValueStore::Status::~Status() = default;
26 
27 ValueStore::Status& ValueStore::Status::operator=(Status&& rhs) = default;
28 
Merge(const Status & status)29 void ValueStore::Status::Merge(const Status& status) {
30   if (code == OK)
31     code = status.code;
32   if (message.empty() && !status.message.empty())
33     message = status.message;
34   if (restore_status == RESTORE_NONE)
35     restore_status = status.restore_status;
36 }
37 
38 // Implementation of ReadResult.
39 
ReadResult(std::unique_ptr<base::DictionaryValue> settings,Status status)40 ValueStore::ReadResult::ReadResult(
41     std::unique_ptr<base::DictionaryValue> settings,
42     Status status)
43     : settings_(std::move(settings)), status_(std::move(status)) {
44   CHECK(settings_);
45 }
46 
ReadResult(Status status)47 ValueStore::ReadResult::ReadResult(Status status)
48     : status_(std::move(status)) {}
49 
50 ValueStore::ReadResult::ReadResult(ReadResult&& other) = default;
51 
52 ValueStore::ReadResult::~ReadResult() = default;
53 
54 ValueStore::ReadResult& ValueStore::ReadResult::operator=(ReadResult&& rhs) =
55     default;
56 
57 // Implementation of WriteResult.
58 
WriteResult(std::unique_ptr<ValueStoreChangeList> changes,Status status)59 ValueStore::WriteResult::WriteResult(
60     std::unique_ptr<ValueStoreChangeList> changes,
61     Status status)
62     : changes_(std::move(changes)), status_(std::move(status)) {
63   CHECK(changes_);
64 }
65 
WriteResult(Status status)66 ValueStore::WriteResult::WriteResult(Status status)
67     : status_(std::move(status)) {}
68 
69 ValueStore::WriteResult::WriteResult(WriteResult&& other) = default;
70 
71 ValueStore::WriteResult::~WriteResult() = default;
72 
73 ValueStore::WriteResult& ValueStore::WriteResult::operator=(WriteResult&& rhs) =
74     default;
75