blob: 80a7e77e6335139f14babd843a36989a569ee71f [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.content.browser.accessibility;
import android.content.ContentResolver;
import android.provider.Settings;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;
import org.chromium.base.ContextUtils;
import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.metrics.test.ShadowRecordHistogram;
import org.chromium.base.test.BaseRobolectricTestRunner;
/**
* Tests for {@link BrowserAccessibilityState}.
*/
@RunWith(BaseRobolectricTestRunner.class)
@Config(manifest = Config.NONE, shadows = {ShadowRecordHistogram.class})
public final class BrowserAccessibilityStateTest {
private ContentResolver mContentResolver;
@Before
public void setUp() {
ShadowRecordHistogram.reset();
mContentResolver = ContextUtils.getApplicationContext().getContentResolver();
}
@Test
public void recordAccessibilityHistograms_animationsDefaultValue() {
// By default in the test environment this flag shouldn't be set.
Assert.assertEquals(-1,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(1, 0, 0);
}
@Test
public void recordAccessibilityHistograms_animationsDisabled() {
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 0);
Assert.assertEquals(0,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 1, 0);
}
@Test
public void recordAccessibilityHistograms_animationsEnabled() {
// Enabled is any positive value, so try a few common ones to make sure.
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 0.1f);
Assert.assertEquals(0.1f,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 0, 1);
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 0.5f);
Assert.assertEquals(0.5f,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 0, 2);
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 1);
Assert.assertEquals(1,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 0, 3);
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 5);
Assert.assertEquals(5,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 0, 4);
Settings.Global.putFloat(mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 10);
Assert.assertEquals(10,
Settings.Global.getFloat(
mContentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, -1),
0.01);
BrowserAccessibilityState.recordAccessibilityHistograms();
assertUma(0, 0, 5);
}
private void assertUma(int defaultCount, int disabledCount, int enabledCount) {
Assert.assertEquals("default count", defaultCount,
RecordHistogram.getHistogramValueCountForTesting(
"Accessibility.Android.AnimationsEnabled2",
BrowserAccessibilityState.ANIMATIONS_STATE_DEFAULT_VALUE));
Assert.assertEquals("disabled count", disabledCount,
RecordHistogram.getHistogramValueCountForTesting(
"Accessibility.Android.AnimationsEnabled2",
BrowserAccessibilityState.ANIMATIONS_STATE_DISABLED));
Assert.assertEquals("enabled count", enabledCount,
RecordHistogram.getHistogramValueCountForTesting(
"Accessibility.Android.AnimationsEnabled2",
BrowserAccessibilityState.ANIMATIONS_STATE_ENABLED));
}
}