1/* 2 * Copyright (C) 2013 DroidDriver committers 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.google.android.droiddriver.finders; 18 19import android.graphics.Rect; 20 21import com.google.android.droiddriver.UiElement; 22 23public enum Attribute { 24 CHECKABLE("checkable") { 25 @SuppressWarnings("unchecked") 26 @Override 27 public Boolean getValue(UiElement element) { 28 return element.isCheckable(); 29 } 30 }, 31 CHECKED("checked") { 32 @SuppressWarnings("unchecked") 33 @Override 34 public Boolean getValue(UiElement element) { 35 return element.isChecked(); 36 } 37 }, 38 CLASS("class") { 39 @SuppressWarnings("unchecked") 40 @Override 41 public String getValue(UiElement element) { 42 return element.getClassName(); 43 } 44 }, 45 CLICKABLE("clickable") { 46 @SuppressWarnings("unchecked") 47 @Override 48 public Boolean getValue(UiElement element) { 49 return element.isClickable(); 50 } 51 }, 52 CONTENT_DESC("content-desc") { 53 @SuppressWarnings("unchecked") 54 @Override 55 public String getValue(UiElement element) { 56 return element.getContentDescription(); 57 } 58 }, 59 ENABLED("enabled") { 60 @SuppressWarnings("unchecked") 61 @Override 62 public Boolean getValue(UiElement element) { 63 return element.isEnabled(); 64 } 65 }, 66 FOCUSABLE("focusable") { 67 @SuppressWarnings("unchecked") 68 @Override 69 public Boolean getValue(UiElement element) { 70 return element.isFocusable(); 71 } 72 }, 73 FOCUSED("focused") { 74 @SuppressWarnings("unchecked") 75 @Override 76 public Boolean getValue(UiElement element) { 77 return element.isFocused(); 78 } 79 }, 80 LONG_CLICKABLE("long-clickable") { 81 @SuppressWarnings("unchecked") 82 @Override 83 public Boolean getValue(UiElement element) { 84 return element.isLongClickable(); 85 } 86 }, 87 PACKAGE("package") { 88 @SuppressWarnings("unchecked") 89 @Override 90 public String getValue(UiElement element) { 91 return element.getPackageName(); 92 } 93 }, 94 PASSWORD("password") { 95 @SuppressWarnings("unchecked") 96 @Override 97 public Boolean getValue(UiElement element) { 98 return element.isPassword(); 99 } 100 }, 101 RESOURCE_ID("resource-id") { 102 @SuppressWarnings("unchecked") 103 @Override 104 public String getValue(UiElement element) { 105 return element.getResourceId(); 106 } 107 }, 108 SCROLLABLE("scrollable") { 109 @SuppressWarnings("unchecked") 110 @Override 111 public Boolean getValue(UiElement element) { 112 return element.isScrollable(); 113 } 114 }, 115 SELECTED("selected") { 116 @SuppressWarnings("unchecked") 117 @Override 118 public Boolean getValue(UiElement element) { 119 return element.isSelected(); 120 } 121 }, 122 TEXT("text") { 123 @SuppressWarnings("unchecked") 124 @Override 125 public String getValue(UiElement element) { 126 return element.getText(); 127 } 128 }, 129 BOUNDS("bounds") { 130 @SuppressWarnings("unchecked") 131 @Override 132 public Rect getValue(UiElement element) { 133 // TODO: clip by boundsInParent? 134 return element.getBounds(); 135 } 136 }; 137 138 private final String name; 139 140 private Attribute(String name) { 141 this.name = name; 142 } 143 144 public String getName() { 145 return name; 146 } 147 148 public abstract <T> T getValue(UiElement element); 149 150 @Override 151 public String toString() { 152 return name; 153 } 154} 155