1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #define LOG_NDEBUG 0
18 #define LOG_TAG "SimpleMethodState"
19 #include <log/log.h>
20 
21 #include "SimpleMethodState.h"
22 
23 namespace android {
24 
Injecter(SimpleMethodState * thiz)25 SimpleMethodState::Injecter::Injecter(SimpleMethodState *thiz) : mThiz(thiz) {}
26 
hang()27 void SimpleMethodState::Injecter::hang() {
28     mThiz->mMode = HANG;
29 }
30 
fail(c2_status_t err,bool execute)31 void SimpleMethodState::Injecter::fail(c2_status_t err, bool execute) {
32     mThiz->mMode = execute ? EXECUTE : NO_OP;
33     mThiz->mOverride = true;
34     mThiz->mResultOverride = err;
35 }
36 
SimpleMethodState()37 SimpleMethodState::SimpleMethodState()
38     : mMode(EXECUTE), mOverride(false), mResultOverride(C2_OK) {}
39 
getMode() const40 SimpleMethodState::Mode SimpleMethodState::getMode() const {
41     return mMode;
42 }
43 
overrideResult(c2_status_t * result) const44 bool SimpleMethodState::overrideResult(c2_status_t *result) const {
45     if (!mOverride) {
46         return false;
47     }
48     *result = mResultOverride;
49     return true;
50 }
51 
52 }  // namespace android
53