| // Copyright 2014 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 CC_SCHEDULER_COMMIT_EARLYOUT_REASON_H_ | 
 | #define CC_SCHEDULER_COMMIT_EARLYOUT_REASON_H_ | 
 |  | 
 | #include "base/logging.h" | 
 | #include "cc/base/cc_export.h" | 
 |  | 
 | namespace cc { | 
 |  | 
 | namespace proto { | 
 | class CommitEarlyOutReason; | 
 | } | 
 |  | 
 | enum class CommitEarlyOutReason { | 
 |   ABORTED_OUTPUT_SURFACE_LOST, | 
 |   ABORTED_NOT_VISIBLE, | 
 |   ABORTED_DEFERRED_COMMIT, | 
 |   FINISHED_NO_UPDATES, | 
 | }; | 
 |  | 
 | // Please update the To/From Protobuf methods for any updates made to | 
 | // CommitEarlyOutReason enum. | 
 | CC_EXPORT CommitEarlyOutReason | 
 | CommitEarlyOutReasonFromProtobuf(const proto::CommitEarlyOutReason& proto); | 
 | CC_EXPORT void CommitEarlyOutReasonToProtobuf( | 
 |     CommitEarlyOutReason reason, | 
 |     proto::CommitEarlyOutReason* proto); | 
 |  | 
 | inline const char* CommitEarlyOutReasonToString(CommitEarlyOutReason reason) { | 
 |   switch (reason) { | 
 |     case CommitEarlyOutReason::ABORTED_OUTPUT_SURFACE_LOST: | 
 |       return "CommitEarlyOutReason::ABORTED_OUTPUT_SURFACE_LOST"; | 
 |     case CommitEarlyOutReason::ABORTED_NOT_VISIBLE: | 
 |       return "CommitEarlyOutReason::ABORTED_NOT_VISIBLE"; | 
 |     case CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT: | 
 |       return "CommitEarlyOutReason::ABORTED_DEFERRED_COMMIT"; | 
 |     case CommitEarlyOutReason::FINISHED_NO_UPDATES: | 
 |       return "CommitEarlyOutReason::FINISHED_NO_UPDATES"; | 
 |   } | 
 |   NOTREACHED(); | 
 |   return "???"; | 
 | } | 
 |  | 
 | inline bool CommitEarlyOutHandledCommit(CommitEarlyOutReason reason) { | 
 |   return reason == CommitEarlyOutReason::FINISHED_NO_UPDATES; | 
 | } | 
 |  | 
 | }  // namespace cc | 
 |  | 
 | #endif  // CC_SCHEDULER_COMMIT_EARLYOUT_REASON_H_ |