You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.5 KiB
119 lines
3.5 KiB
/*
|
|
* Copyright (C) 2012 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
|
|
* use this file except in compliance with the License. You may obtain a copy of
|
|
* the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
*/
|
|
|
|
|
|
#ifndef CTSAUDIO_TASKGENERIC_H
|
|
#define CTSAUDIO_TASKGENERIC_H
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
#include <list>
|
|
#include <map>
|
|
#include <set>
|
|
#include <utils/String8.h>
|
|
|
|
|
|
class TaskCase;
|
|
|
|
class TaskGeneric {
|
|
public:
|
|
// internal model for xml tags
|
|
enum TaskType {
|
|
ETaskInvalid = 0,
|
|
ETaskBatch = 1,
|
|
ETaskCase = 2,
|
|
ETaskSetup = 3,
|
|
ETaskAction = 4,
|
|
ETaskSequential = 5,
|
|
ETaskProcess = 6,
|
|
ETaskInput = 7,
|
|
ETaskOutput = 8,
|
|
ETaskSound = 9,
|
|
ETaskSave = 10,
|
|
ETaskMessage = 11,
|
|
ETaskDownload = 12,
|
|
ETaskInvalidLast = 13,
|
|
//no ETaskInclude include does not involve any action.
|
|
};
|
|
|
|
explicit TaskGeneric(TaskType type);
|
|
|
|
virtual ~TaskGeneric();
|
|
|
|
inline TaskType getType() {
|
|
return mType;
|
|
}
|
|
|
|
enum ExecutionResult {
|
|
EResultOK = 0,
|
|
// continue in the current loop. will result in skipping all subsequent steps
|
|
EResultContinue = 1,
|
|
// get out of the current loop
|
|
EResultBreakOneLoop = 2,
|
|
// error which cannot be continued. effect is the same as fail. stops everything.
|
|
EResultError = 3,
|
|
// test failed. stops everything.
|
|
EResultFail = 4,
|
|
// test passed.
|
|
EResultPass = 5
|
|
};
|
|
|
|
/**
|
|
* default implementation for adding child action
|
|
* Ownership of the child is passed to this instance, and child will be destroyed in parent's
|
|
* destructor.
|
|
* @return false on error
|
|
*/
|
|
virtual bool addChild(TaskGeneric* child);
|
|
|
|
virtual ExecutionResult run();
|
|
|
|
/// can be NULL if parent does not exist
|
|
TaskGeneric* getParent();
|
|
/// can be NULL if TestCase does not exist (unit testing?)
|
|
TaskCase* getTestCase();
|
|
|
|
void setParent(TaskGeneric* parent);
|
|
|
|
/**
|
|
* parse attribute from XML DOM. name/value pair will be passed for all attributes.
|
|
*/
|
|
virtual bool parseAttribute(const android::String8& name, const android::String8& value);
|
|
|
|
bool forEachChild(bool (*runForEachChild)(TaskGeneric* child, void* data), void* data);
|
|
|
|
protected:
|
|
/// used by child instance to register allowed attributes
|
|
/// keys array should end with NULL
|
|
void registerSupportedStringAttributes(const android::String8* keys[]);
|
|
bool addStringAttribute(const android::String8& key, const android::String8& value);
|
|
bool findStringAttribute(const android::String8& key, android::String8& value) const;
|
|
inline std::list<TaskGeneric*>& getChildren() {
|
|
return mChildren;
|
|
};
|
|
|
|
private:
|
|
TaskType mType;
|
|
TaskGeneric* mParent;
|
|
std::list<TaskGeneric*> mChildren;
|
|
|
|
std::set<android::String8> mAllowedStringAttributes;
|
|
std::map<android::String8, android::String8> mStringAttributes;
|
|
|
|
};
|
|
|
|
|
|
#endif // CTSAUDIO_TASKGENERIC_H
|