[go: nahoru, domu]

blob: ddd33c0df9ad825456aa3d47e0033a6a262902df [file] [log] [blame]
// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.android_webview.test;
import static org.chromium.android_webview.test.OnlyRunIn.ProcessMode.MULTI_PROCESS;
import static org.chromium.android_webview.test.OnlyRunIn.ProcessMode.SINGLE_PROCESS;
import androidx.test.filters.SmallTest;
import org.jni_zero.JNINamespace;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.UseParametersRunnerFactory;
import org.chromium.android_webview.test.util.MemoryMetricsLoggerUtilsJni;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.HistogramWatcher;
/** Tests for memory_metrics_logger.cc. */
@JNINamespace("android_webview")
@RunWith(Parameterized.class)
@UseParametersRunnerFactory(AwJUnit4ClassRunnerWithParameters.Factory.class)
public class MemoryMetricsLoggerTest extends AwParameterizedTest {
@Rule public AwActivityTestRule mActivityTestRule;
private HistogramWatcher mHistogramExpectationBrowser;
private HistogramWatcher mHistogramExpectationRendererMulti;
private HistogramWatcher mHistogramExpectationRendererSingle;
private HistogramWatcher mHistogramExpectationTotal;
public MemoryMetricsLoggerTest(AwSettingsMutation param) {
this.mActivityTestRule = new AwActivityTestRule(param.getMutation());
}
@Before
public void setUp() throws Exception {
mHistogramExpectationBrowser =
HistogramWatcher.newBuilder()
.expectAnyRecordTimes("Memory.Browser.PrivateMemoryFootprint", 1)
.allowExtraRecordsForHistogramsAbove()
.build();
mHistogramExpectationRendererMulti =
HistogramWatcher.newBuilder()
.expectAnyRecordTimes("Memory.Renderer.PrivateMemoryFootprint", 1)
.allowExtraRecordsForHistogramsAbove()
.build();
mHistogramExpectationRendererSingle =
HistogramWatcher.newBuilder()
.expectNoRecords("Memory.Renderer.PrivateMemoryFootprint")
.build();
mHistogramExpectationTotal =
HistogramWatcher.newBuilder()
.expectAnyRecordTimes("Memory.Total.PrivateMemoryFootprint", 1)
.allowExtraRecordsForHistogramsAbove()
.build();
TestAwContentsClient contentsClient = new TestAwContentsClient();
AwTestContainerView testContainerView =
mActivityTestRule.createAwTestContainerViewOnMainSync(contentsClient);
mActivityTestRule.loadUrlSync(
testContainerView.getAwContents(),
contentsClient.getOnPageFinishedHelper(),
"about:blank");
Assert.assertTrue(MemoryMetricsLoggerUtilsJni.get().forceRecordHistograms());
}
@After
public void tearDown() {}
@Test
@Feature({"AndroidWebView"})
@OnlyRunIn(MULTI_PROCESS)
@SmallTest
public void testMultiProcessHistograms() {
mHistogramExpectationBrowser.assertExpected();
mHistogramExpectationRendererMulti.assertExpected();
mHistogramExpectationTotal.assertExpected();
}
@Test
@Feature({"AndroidWebView"})
@OnlyRunIn(SINGLE_PROCESS)
@SmallTest
public void testSingleProcessHistograms() {
mHistogramExpectationBrowser.assertExpected();
// Verify no renderer record in single process mode.
mHistogramExpectationRendererSingle.assertExpected();
mHistogramExpectationTotal.assertExpected();
}
}