+ mPlacementParameters.cardDateSeparation; updateSpaceSizes(false);
@Override protected void onRestoreInstanceState(Parcelable state) { if (state instanceof Bundle) { Bundle bundleState = (Bundle) state; mCardNumberIsViewed = bundleState.getBoolean(EXTRA_CARD_VIEWED, true); updateSpaceSizes(mCardNumberIsViewed); mTotalLengthInPixels = getFrameWidth(); int cardMargin, dateMargin, cvcMargin; if (mCardNumberIsViewed) { cardMargin = 0; dateMargin = mPlacementParameters.cardWidth + mPlacementParameters.cardDateSeparation; cvcMargin = mTotalLengthInPixels; } else { cardMargin = -1 * mPlacementParameters.hiddenCardWidth; dateMargin = mPlacementParameters.peekCardWidth + mPlacementParameters.cardDateSeparation; cvcMargin = dateMargin + mPlacementParameters.dateWidth + mPlacementParameters.dateCvcSeparation; } setLayoutValues(mPlacementParameters.cardWidth, cardMargin, mCardNumberEditText); setLayoutValues(mPlacementParameters.dateWidth, dateMargin, mExpiryDateEditText); setLayoutValues(mPlacementParameters.cvcWidth, cvcMargin, mCvcNumberEditText); super.onRestoreInstanceState(bundleState.getParcelable(EXTRA_SUPER_STATE)); } else { super.onRestoreInstanceState(state); } }
+ mPlacementParameters.dateWidth + mPlacementParameters.dateCvcSeparation; updateSpaceSizes(true);
@Override protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); if (!mInitFlag && getWidth() != 0) { mInitFlag = true; mTotalLengthInPixels = getFrameWidth(); updateSpaceSizes(mCardNumberIsViewed); int cardLeftMargin = mCardNumberIsViewed ? 0 : -1 * mPlacementParameters.hiddenCardWidth; setLayoutValues(mPlacementParameters.cardWidth, cardLeftMargin, mCardNumberEditText); int dateMargin = mCardNumberIsViewed ? mPlacementParameters.cardWidth + mPlacementParameters.cardDateSeparation : mPlacementParameters.peekCardWidth + mPlacementParameters.cardDateSeparation; setLayoutValues(mPlacementParameters.dateWidth, dateMargin, mExpiryDateEditText); int cvcMargin = mCardNumberIsViewed ? mTotalLengthInPixels : mPlacementParameters.peekCardWidth + mPlacementParameters.cardDateSeparation + mPlacementParameters.dateWidth + mPlacementParameters.dateCvcSeparation; setLayoutValues(mPlacementParameters.cvcWidth, cvcMargin, mCvcNumberEditText); } }
@Test public void getFocusRequestOnTouch_whenInCvcAfterShift_returnsNull() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch over 530 does nothing mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); assertNull(mCardInputWidget.getFocusRequestOnTouch(545)); }
@Test public void getFocusRequestOnTouch_whenInPeekAfterShift_returnsNull() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 60 and 100 does nothing mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); assertNull(mCardInputWidget.getFocusRequestOnTouch(75)); }
@Test public void getFocusRequestOnTouch_whenInDateAfterShift_returnsNull() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 285 and 335 does nothing mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); assertNull(mCardInputWidget.getFocusRequestOnTouch(300)); }
@Test public void getFocusRequestOnTouch_whenInCvcSlopAfterShift_returnsCvcEditor() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 432 and 530 returns the date editor mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); StripeEditText focusRequester = mCardInputWidget.getFocusRequestOnTouch(485); assertNotNull(focusRequester); assertEquals(mCvcEditText, focusRequester); }
@Test public void getFocusRequestOnTouch_whenInPeekSlopAfterShift_returnsCardEditor() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 100 and 192 returns the card editor mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); StripeEditText focusRequester = mCardInputWidget.getFocusRequestOnTouch(150); assertNotNull(focusRequester); assertEquals(mCardNumberEditText, focusRequester); }
@Test public void getFocusRequestOnTouch_whenInDateLeftSlopAfterShift_returnsDateEditor() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 192 and 285 returns the date editor mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); StripeEditText focusRequester = mCardInputWidget.getFocusRequestOnTouch(200); assertNotNull(focusRequester); assertEquals(mExpiryEditText, focusRequester); }
@Test public void getFocusRequestOnTouch_whenInDateRightSlopAfterShift_returnsDateEditor() { // |img==60||---total == 500--------| // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| // So any touch between 335 and 432 returns the date editor mCardInputWidget.setCardNumberIsViewed(false); mCardInputWidget.updateSpaceSizes(false); StripeEditText focusRequester = mCardInputWidget.getFocusRequestOnTouch(400); assertNotNull(focusRequester); assertEquals(mExpiryEditText, focusRequester); }
@Test public void updateToPeekSize_withNoData_returnsExpectedValuesForCommonCardLength() { // Moving left uses Visa-style ("common") defaults // |(peek==40)--(space==185)--(date==50)--(space==195)--(cvc==30)| // |img=60|cardTouchLimit==192|dateStart==285|dateTouchLim==432|cvcStart==530| mCardInputWidget.updateSpaceSizes(false); CardInputWidget.PlacementParameters shiftedParameters = mCardInputWidget.getPlacementParameters(); assertEquals(40, shiftedParameters.peekCardWidth); assertEquals(185, shiftedParameters.cardDateSeparation); assertEquals(50, shiftedParameters.dateWidth); assertEquals(195, shiftedParameters.dateCvcSeparation); assertEquals(30, shiftedParameters.cvcWidth); assertEquals(192, shiftedParameters.cardTouchBufferLimit); assertEquals(285, shiftedParameters.dateStartPosition); assertEquals(432, shiftedParameters.dateRightTouchBufferLimit); assertEquals(530, shiftedParameters.cvcStartPosition); }