| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package androidx.test.espresso.flutter.internal.protocol.impl; |
| |
| import static com.google.common.base.Preconditions.checkNotNull; |
| |
| import androidx.test.espresso.flutter.api.SyntheticAction; |
| import com.google.common.base.Ascii; |
| import com.google.gson.annotations.Expose; |
| |
| /** An action that retrieves the widget offset coordinates to the outer Flutter view. */ |
| final class GetOffsetAction extends SyntheticAction { |
| |
| /** The position of the offset coordinates. */ |
| public enum OffsetType { |
| TOP_LEFT("topLeft"), |
| TOP_RIGHT("topRight"), |
| BOTTOM_LEFT("bottomLeft"), |
| BOTTOM_RIGHT("bottomRight"); |
| |
| private OffsetType(String type) { |
| this.type = type; |
| } |
| |
| private final String type; |
| |
| @Override |
| public String toString() { |
| return type; |
| } |
| |
| public static OffsetType fromString(String typeString) { |
| if (typeString == null) { |
| return null; |
| } |
| for (OffsetType offsetType : OffsetType.values()) { |
| if (Ascii.equalsIgnoreCase(offsetType.type, typeString)) { |
| return offsetType; |
| } |
| } |
| return null; |
| } |
| } |
| |
| @Expose private final String offsetType; |
| |
| /** |
| * Constructor. |
| * |
| * @param type the vertex position. |
| */ |
| public GetOffsetAction(OffsetType type) { |
| super("get_offset"); |
| this.offsetType = checkNotNull(type).toString(); |
| } |
| |
| /** |
| * Constructor. |
| * |
| * @param type the vertex position. |
| * @param timeOutInMillis action's timeout setting in milliseconds. |
| */ |
| public GetOffsetAction(OffsetType type, long timeOutInMillis) { |
| super("get_offset", timeOutInMillis); |
| this.offsetType = checkNotNull(type).toString(); |
| } |
| } |