1 package com.google.android.apps.common.testing.accessibility.framework.uielement; 2 3 import static com.google.common.base.Preconditions.checkNotNull; 4 5 import com.google.android.apps.common.testing.accessibility.framework.uielement.proto.AccessibilityHierarchyProtos.AccessibilityHierarchyOriginProto; 6 import com.google.common.collect.EnumBiMap; 7 import com.google.common.collect.ImmutableMap; 8 9 /** Represents a type of data source from which an AccessibilityHierarchy may be constructed. */ 10 public enum AccessibilityHierarchyOrigin { 11 UNKNOWN, 12 VIEWS, 13 ACCESSIBILITY_NODE_INFOS, 14 ACCESSIBILITY_NODE_INFOS_AND_VIEWS, 15 WINDOW_LIST; 16 17 /** Mapping between Java and proto values. */ 18 private static final EnumBiMap<AccessibilityHierarchyOrigin, AccessibilityHierarchyOriginProto> 19 ORIGIN_MAP = 20 EnumBiMap.create( 21 ImmutableMap 22 .<AccessibilityHierarchyOrigin, AccessibilityHierarchyOriginProto>builder() 23 .put( 24 AccessibilityHierarchyOrigin.UNKNOWN, 25 AccessibilityHierarchyOriginProto.ORIGIN_UNSPECIFIED) 26 .put( 27 AccessibilityHierarchyOrigin.VIEWS, 28 AccessibilityHierarchyOriginProto.ORIGIN_VIEWS) 29 .put( 30 AccessibilityHierarchyOrigin.ACCESSIBILITY_NODE_INFOS, 31 AccessibilityHierarchyOriginProto.ORIGIN_ACCESSIBILITY_NODE_INFOS) 32 .put( 33 AccessibilityHierarchyOrigin.ACCESSIBILITY_NODE_INFOS_AND_VIEWS, 34 AccessibilityHierarchyOriginProto.ORIGIN_ACCESSIBILITY_NODE_INFOS_AND_VIEWS) 35 .put( 36 AccessibilityHierarchyOrigin.WINDOW_LIST, 37 AccessibilityHierarchyOriginProto.ORIGIN_WINDOW_LIST) 38 .buildOrThrow()); 39 fromProto(AccessibilityHierarchyOriginProto proto)40 public static AccessibilityHierarchyOrigin fromProto(AccessibilityHierarchyOriginProto proto) { 41 return checkNotNull(ORIGIN_MAP.inverse().get(proto)); 42 } 43 toProto()44 public AccessibilityHierarchyOriginProto toProto() { 45 return checkNotNull(ORIGIN_MAP.get(this)); 46 } 47 } 48