1package com.xtremelabs.robolectric.shadows;
2
3import android.graphics.Rect;
4import android.text.method.PasswordTransformationMethod;
5import android.text.method.TransformationMethod;
6import android.view.View;
7import com.xtremelabs.robolectric.internal.Implementation;
8import com.xtremelabs.robolectric.internal.Implements;
9
10@Implements(PasswordTransformationMethod.class)
11public class ShadowPasswordTransformationMethod implements TransformationMethod {
12
13    private static ShadowPasswordTransformationMethod transformationMethod;
14
15    @Implementation
16    public CharSequence getTransformation(CharSequence charSequence, View view) {
17        if(isEmpty(charSequence)) {
18            return "";
19        }
20        return String.format(String.format("%%0%dd", charSequence.length()), 0).replace("0", "\u2022");
21    }
22
23    @Implementation
24    public static ShadowPasswordTransformationMethod getInstance() {
25        if(transformationMethod == null){
26            transformationMethod = new ShadowPasswordTransformationMethod();
27        }
28        return transformationMethod;
29    }
30
31    @Implementation @Override
32    public void onFocusChanged(View view, CharSequence charSequence, boolean b, int i, Rect rect) { }
33
34    private boolean isEmpty(CharSequence value) {
35        return (value == null || value.length() == 0);
36    }
37}
38