# Copyright 2018 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.

from autotest_lib.client.common_lib import utils

AUTHOR = "Chrome OS Team, chromeos-video@google.com"
NAME = "camera_HAL3.still_capture"
PURPOSE = "Verify Chromium camera still capture function with HAL3 interface."
CRITERIA = """
This test will fail if any of the still capture tests in cros_camera_test
fails.
"""
ATTRIBUTES = "suite:bvt-perbuild"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "video"
TEST_TYPE = "client"
BUG_TEMPLATE = {
    'labels': ['OS-Chrome', 'VideoTestFailure'],
    'cc': ['chromeos-video-test-failures@google.com'],
}

DOC = """
This is a wrapper test for cros_camera_test.
For more information on HAL3 see:
https://source.android.com/devices/camera/camera3.html
https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h
"""

facing_options = [
    '--%s=%s' % kv
    for kv in utils.args_to_dict(args).items()
    if kv[0] == 'camera_facing'
]

job.run_test(
    'camera_HAL3',
    options=['--gtest_filter=Camera3StillCaptureTest/*'] + facing_options)
