@Override
  public void onDraw(Canvas canvas) {
    final boolean keyboardChanged = mKeyboardChanged;
    super.onDraw(canvas);
    // switching animation
    if (mAnimationLevel != AnimationsLevel.None && keyboardChanged && (mInAnimation != null)) {
      startAnimation(mInAnimation);
      mInAnimation = null;
    }

    if (mGestureTypingPathShouldBeDrawn) {
      mGestureDrawingHelper.draw(canvas);
    }

    // showing any requested watermark
    float watermarkX = mWatermarkEdgeX;
    final float watermarkY = getHeight() - mWatermarkDimen - mWatermarkMargin;
    for (Drawable watermark : mWatermarks) {
      watermarkX -= (mWatermarkDimen + mWatermarkMargin);
      canvas.translate(watermarkX, watermarkY);
      watermark.draw(canvas);
      canvas.translate(-watermarkX, -watermarkY);
    }
  }
@Test
  public void testDoesNotAddExtraDrawIfAnimationsAreOff() {
    SharedPrefsHelper.setPrefsValue(R.string.settings_key_tweak_animations_level, "none");
    ExtraDraw mockDraw1 = Mockito.mock(ExtraDraw.class);
    Mockito.doReturn(true).when(mockDraw1).onDraw(any(), any(), same(mViewUnderTest));

    Robolectric.getForegroundThreadScheduler().pause();
    Assert.assertFalse(Robolectric.getForegroundThreadScheduler().areAnyRunnable());
    mViewUnderTest.addExtraDraw(mockDraw1);

    Mockito.verify(mockDraw1, Mockito.never()).onDraw(any(), any(), any());

    Assert.assertEquals(0, Robolectric.getForegroundThreadScheduler().size());
  }