| // 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. | 
 |  | 
 | #ifndef COMPONENTS_NTP_SNIPPETS_STATUS_H_ | 
 | #define COMPONENTS_NTP_SNIPPETS_STATUS_H_ | 
 |  | 
 | #include <string> | 
 |  | 
 | namespace ntp_snippets { | 
 |  | 
 | // This enum indicates how an operation was completed. These values are written | 
 | // to logs.  New enum values can be added, but existing enums must never be | 
 | // renumbered or deleted and reused. | 
 | enum class StatusCode { | 
 |   // The operation has been completed successfully. | 
 |   SUCCESS = 0, | 
 |   // The operation failed but retrying might solve the error. | 
 |   TEMPORARY_ERROR = 1, | 
 |   // The operation failed and would fail again if retried. | 
 |   PERMANENT_ERROR = 2, | 
 |  | 
 |   STATUS_CODE_COUNT | 
 | }; | 
 |  | 
 | // This struct provides the status code of a request and an optional message | 
 | // describing the status (esp. failures) in detail. | 
 | struct Status { | 
 |   Status(StatusCode status_code, const std::string& message); | 
 |   ~Status(); | 
 |  | 
 |   // Errors always need a message but a success does not. | 
 |   static Status Success(); | 
 |  | 
 |   bool IsSuccess() const { return code == StatusCode::SUCCESS; } | 
 |  | 
 |   StatusCode code; | 
 |   // The message is not meant to be displayed to the user. | 
 |   std::string message; | 
 |  | 
 |   // Copy and assignment allowed. | 
 | }; | 
 |  | 
 | }  // namespace ntp_snippets | 
 |  | 
 | #endif  // COMPONENTS_NTP_SNIPPETS_STATUS_H_ |