blob: b12269c16110e4fdd2837b70d18ed9d649a86eb7 [file] [log] [blame]
/*
* Copyright (C) 2020 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.
*/
package android.platform.helpers;
/** An App Helper interface for Camera2 */
public interface ICamera2Helper extends IAppHelper {
/**
* Setup expectations: Camera2 app is open and skipped the initial dialogs.
*
* <p>Opens a stream preview of the specified camera and mode combination.
*
* @param mode - Enum value for the requested stream mode.
* @param camera - Enum value for the requested camera.
*/
public void goToPreview(ModeType mode, CameraType camera);
/** Available modes for the stream set up. */
public enum ModeType {
VIDEO("video"),
STILL_CAPTURE("still-capture");
private String name;
/** Stores the provided name as an enum field. */
ModeType(String name) {
this.name = name;
}
/** Returns a programmer-friendly name for the {@code ModeType}. */
@Override
public String toString() {
return name;
}
/**
* Searches for a {@code ModeType} matching the provided name.
*
* @param name The name to search for.
*/
public static ModeType fromString(String name) {
for (ModeType mode : values()) {
if (mode.toString().equals(name)) return mode;
}
throw new IllegalArgumentException();
}
};
/** Available cameras for the stream set up. */
public enum CameraType {
FRONT("front"),
BACK("back");
private String name;
/** Stores the provided name as an enum field. */
CameraType(String name) {
this.name = name;
}
/** Returns a programmer-friendly name for the {@CameraType}. */
@Override
public String toString() {
return name;
}
/**
* Searches for a {@CameraType} matching the provided name.
*
* @param name The name to search for.
*/
public static CameraType fromString(String name) {
for (CameraType camera : values()) {
if (camera.toString().equals(name)) return camera;
}
throw new IllegalArgumentException();
}
};
/** Names for option keys that can be re-used between tests */
public enum TestOptionKey {
CAMERA_FACING("camera-facing"),
STREAM_DURATION("stream-duration"),
CAPTURE_MODE("capture-mode"),
RECORD_VIDEO("record-video");
private String name;
/** Stores the provided name as an enum field. */
TestOptionKey(String name) {
this.name = name;
}
/** Returns a more programmer-friendly name for the {@TestOptionKey}. */
@Override
public String toString() {
return name;
}
}
/**
* Setup expectations: On any video preview page and not recording a video.
*
* <p>Start recording a video
*/
public void startRecording();
/**
* Setup expectations: Recording a video.
*
* <p>Stop recording a video
*/
public void stopRecording();
}