1/* 2 * Copyright (C) 2017 The Android Open Source Project 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 */ 16package android.support.design.testutils; 17 18import android.graphics.Matrix; 19import android.graphics.Rect; 20import android.os.Bundle; 21import android.os.LocaleList; 22import android.view.ViewStructure; 23import android.view.ViewStructure.HtmlInfo.Builder; 24import android.view.autofill.AutofillId; 25import android.view.autofill.AutofillValue; 26 27/** 28 * Simple implementation of {@link ViewStructure} that's easier to use than a Mockito mock. 29 * 30 * <p>Currently supports only {@code hint}, {@code className}, and child-related methods. 31 */ 32public class ViewStructureImpl extends ViewStructure { 33 34 private CharSequence mHint; 35 private String mClassName; 36 private ViewStructureImpl[] mChildren; 37 38 @Override 39 public void setHint(CharSequence hint) { 40 mHint = hint; 41 } 42 43 // Supported methods 44 @Override 45 public CharSequence getHint() { 46 return mHint; 47 } 48 49 @Override 50 public void setChildCount(int num) { 51 mChildren = new ViewStructureImpl[num]; 52 } 53 54 @Override 55 public void setClassName(String className) { 56 mClassName = className; 57 } 58 59 public String getClassName() { 60 return mClassName; 61 } 62 63 @Override 64 public int addChildCount(int num) { 65 if (mChildren == null) { 66 setChildCount(num); 67 return 0; 68 } 69 final int start = mChildren.length; 70 ViewStructureImpl[] newArray = new ViewStructureImpl[start + num]; 71 System.arraycopy(mChildren, 0, newArray, 0, start); 72 mChildren = newArray; 73 return start; 74 } 75 76 @Override 77 public int getChildCount() { 78 if (mChildren == null) { 79 return 0; 80 } 81 return mChildren.length; 82 } 83 84 public ViewStructureImpl getChildAt(int index) { 85 return mChildren[index]; 86 } 87 88 @Override 89 public ViewStructure newChild(int index) { 90 final ViewStructureImpl child = new ViewStructureImpl(); 91 mChildren[index] = child; 92 return child; 93 } 94 95 @Override 96 public ViewStructure asyncNewChild(int index) { 97 return newChild(index); 98 } 99 100 101 // Unsupported methods 102 @Override 103 public void setId(int id, String packageName, String typeName, String entryName) { 104 } 105 106 @Override 107 public void setDimens(int left, int top, int scrollX, int scrollY, int width, int height) { 108 } 109 110 @Override 111 public void setTransformation(Matrix matrix) { 112 } 113 114 @Override 115 public void setElevation(float elevation) { 116 } 117 118 @Override 119 public void setAlpha(float alpha) { 120 } 121 122 @Override 123 public void setVisibility(int visibility) { 124 } 125 126 public void setAssistBlocked(boolean state) { 127 } 128 129 @Override 130 public void setEnabled(boolean state) { 131 } 132 133 @Override 134 public void setClickable(boolean state) { 135 } 136 137 @Override 138 public void setLongClickable(boolean state) { 139 } 140 141 @Override 142 public void setContextClickable(boolean state) { 143 } 144 145 @Override 146 public void setFocusable(boolean state) { 147 } 148 149 @Override 150 public void setFocused(boolean state) { 151 } 152 153 @Override 154 public void setAccessibilityFocused(boolean state) { 155 } 156 157 @Override 158 public void setCheckable(boolean state) { 159 } 160 161 @Override 162 public void setChecked(boolean state) { 163 } 164 165 @Override 166 public void setSelected(boolean state) { 167 } 168 169 @Override 170 public void setActivated(boolean state) { 171 } 172 173 @Override 174 public void setOpaque(boolean opaque) { 175 } 176 177 @Override 178 public void setContentDescription(CharSequence contentDescription) { 179 } 180 181 @Override 182 public void setText(CharSequence text) { 183 } 184 185 @Override 186 public void setText(CharSequence text, int selectionStart, int selectionEnd) { 187 } 188 189 @Override 190 public void setTextStyle(float size, int fgColor, int bgColor, int style) { 191 } 192 193 @Override 194 public void setTextLines(int[] charOffsets, int[] baselines) { 195 } 196 197 @Override 198 public CharSequence getText() { 199 return null; 200 } 201 202 @Override 203 public int getTextSelectionStart() { 204 return 0; 205 } 206 207 @Override 208 public int getTextSelectionEnd() { 209 return 0; 210 } 211 212 @Override 213 public Bundle getExtras() { 214 return null; 215 } 216 217 @Override 218 public boolean hasExtras() { 219 return false; 220 } 221 222 @Override 223 public AutofillId getAutofillId() { 224 return null; 225 } 226 227 @Override 228 public void setAutofillId(AutofillId id) { 229 } 230 231 public void setAutofillId(ViewStructure parent, int virtualId) { 232 } 233 234 @Override 235 public void setAutofillId(AutofillId parentId, int virtualId) { 236 } 237 238 @Override 239 public void setAutofillType(int type) { 240 } 241 242 @Override 243 public void setAutofillHints(String[] hint) { 244 } 245 246 @Override 247 public void setAutofillValue(AutofillValue value) { 248 } 249 250 @Override 251 public void setAutofillOptions(CharSequence[] options) { 252 } 253 254 @Override 255 public void setInputType(int inputType) { 256 } 257 258 @Override 259 public void setDataIsSensitive(boolean sensitive) { 260 } 261 262 @Override 263 public void asyncCommit() { 264 } 265 266 public Rect getTempRect() { 267 return null; 268 } 269 270 @Override 271 public void setWebDomain(String domain) { 272 } 273 274 @Override 275 public void setLocaleList(LocaleList localeList) { 276 } 277 278 @Override 279 public Builder newHtmlInfoBuilder(String tagName) { 280 return null; 281 } 282 283 @Override 284 public void setHtmlInfo(HtmlInfo htmlInfo) { 285 } 286} 287