blob: 3ba81756fa45def043052172cad897ec36f49404 [file] [log] [blame]
/*
* Copyright (C) 2021 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;
import android.app.Instrumentation;
import android.platform.helpers.exceptions.UnknownUiException;
import androidx.test.uiautomator.BySelector;
import androidx.test.uiautomator.UiObject2;
import java.util.ArrayList;
import java.util.List;
public class HomeHelperImpl extends AbstractStandardAppHelper implements IAutoHomeHelper {
private static final int WAIT_TIME_MS = 30000;
public HomeHelperImpl(Instrumentation instr) {
super(instr);
}
/** {@inheritDoc} */
@Override
public String getPackage() {
return getPackageFromConfig(AutomotiveConfigConstants.HOME_PACKAGE);
}
/** {@inheritDoc} */
@Override
public String getLauncherName() {
throw new UnsupportedOperationException("Operation not supported.");
}
/** {@inheritDoc} */
@Override
public void dismissInitialDialogs() {
// Nothing to dismiss
}
/** {@inheritDoc} */
@Override
public boolean hasBluetoothButton() {
BySelector bluetoothWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_BLUETOOTH_BUTTON);
return getSpectatioUiUtil().hasUiElement(bluetoothWidgetSelector);
}
/** {@inheritDoc} */
@Override
public boolean hasNetworkButton() {
BySelector networkWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_NETWORK_BUTTON);
return getSpectatioUiUtil().hasUiElement(networkWidgetSelector);
}
/** {@inheritDoc} */
@Override
public boolean hasDisplayBrightness() {
BySelector displayBrightnessWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_DISPLAY_BRIGHTNESS_BUTTON);
return getSpectatioUiUtil().hasUiElement(displayBrightnessWidgetSelector);
}
public boolean hasAssistantWidget() {
BySelector assistantWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_TOP_CARD);
return (getSpectatioUiUtil().hasUiElement(assistantWidgetSelector));
}
public boolean hasMediaWidget() {
BySelector mediaWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_BOTTOM_CARD);
return (getSpectatioUiUtil().hasUiElement(mediaWidgetSelector));
}
/** {@inheritDoc} */
@Override
public void openBrightnessPalette() {
BySelector brightnesButtonSelector =
getUiElementFromConfig(AutomotiveConfigConstants.STATUS_BAR_BRIGHTNESS_BUTTON);
UiObject2 brightnessButton = getSpectatioUiUtil().findUiObject(brightnesButtonSelector);
validateUiObject(brightnessButton, AutomotiveConfigConstants.STATUS_BAR_BRIGHTNESS_BUTTON);
getSpectatioUiUtil().clickAndWait(brightnessButton);
}
/** {@inheritDoc} */
@Override
public boolean hasDisplayBrightessPalette() {
BySelector displaybrightnessPaletteSelector =
getUiElementFromConfig(
AutomotiveConfigConstants.STATUS_BAR_DISPLAY_BRIGHTNESS_PALETTE);
return (getSpectatioUiUtil().hasUiElement(displaybrightnessPaletteSelector));
}
/** {@inheritDoc} */
@Override
public boolean hasAdaptiveBrightness() {
BySelector adaptiveBrightnessSelector =
getUiElementFromConfig(AutomotiveConfigConstants.STATUS_BAR_ADAPTIVE_BRIGHTNESS);
return (getSpectatioUiUtil().hasUiElement(adaptiveBrightnessSelector));
}
@Override
public void openMediaWidget() {
getSpectatioUiUtil().pressHome();
getSpectatioUiUtil().waitForIdle();
BySelector mediaWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_BOTTOM_CARD);
UiObject2 mediaWidget = getSpectatioUiUtil().findUiObject(mediaWidgetSelector);
validateUiObject(mediaWidget, AutomotiveConfigConstants.HOME_BOTTOM_CARD);
getSpectatioUiUtil().clickAndWait(mediaWidget);
}
/** {@inheritDoc} */
@Override
public String getUserProfileName() {
getSpectatioUiUtil().waitForIdle();
getSpectatioUiUtil().waitNSeconds(WAIT_TIME_MS);
BySelector profileGuestIconWidgetSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_PROFILE_GUEST_ICON);
UiObject2 guestIconButtonLink =
getSpectatioUiUtil().findUiObject(profileGuestIconWidgetSelector);
validateUiObject(guestIconButtonLink, AutomotiveConfigConstants.HOME_PROFILE_GUEST_ICON);
String profileText = guestIconButtonLink.getText();
return profileText;
}
/** {@inheritDoc} */
@Override
public void open() {
getSpectatioUiUtil().pressHome();
getSpectatioUiUtil().waitForIdle();
}
private void validateUiObject(UiObject2 uiObject, String action) {
if (uiObject == null) {
throw new UnknownUiException(
String.format("Unable to find UI Element for %s.", action));
}
}
@Override
public List<String> getTemperature() {
getSpectatioUiUtil().pressHome();
getSpectatioUiUtil().waitForIdle();
BySelector temperatureSelector =
getUiElementFromConfig(AutomotiveConfigConstants.HOME_TEMPERATURE_BUTTON);
List<UiObject2> temperature = getSpectatioUiUtil().findUiObjects(temperatureSelector);
validateUiObject(temperature.get(0), AutomotiveConfigConstants.HOME_TEMPERATURE_BUTTON);
validateUiObject(temperature.get(1), AutomotiveConfigConstants.HOME_TEMPERATURE_BUTTON);
List<String> temperatureText = new ArrayList<>();
for (UiObject2 uiObject : temperature) {
temperatureText.add(getSpectatioUiUtil().getTextForUiElement(uiObject));
}
return temperatureText;
}
}