blob: 30e4ef92a2109a52d9ffb9642b469c71c4118faa [file] [log] [blame]
// Copyright 2015 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.
#include "core/frame/UseCounter.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
class UseCounterTest : public ::testing::Test {
protected:
bool hasRecordedMeasurement(const UseCounter& useCounter, UseCounter::Feature feature)
{
return useCounter.hasRecordedMeasurement(feature);
}
void recordMeasurement(UseCounter& useCounter, UseCounter::Feature feature)
{
useCounter.recordMeasurement(feature);
}
void setUseCounterMuted(UseCounter& useCounter, bool muteCount)
{
UseCounter::m_muteCount = muteCount;
}
};
TEST_F(UseCounterTest, RecordingMeasurements)
{
UseCounter useCounter;
for (unsigned feature = 0; feature < UseCounter::NumberOfFeatures; feature++) {
if (feature != UseCounter::Feature::PageDestruction) {
EXPECT_FALSE(hasRecordedMeasurement(useCounter, static_cast<UseCounter::Feature>(feature)));
recordMeasurement(useCounter, static_cast<UseCounter::Feature>(feature));
EXPECT_TRUE(hasRecordedMeasurement(useCounter, static_cast<UseCounter::Feature>(feature)));
}
}
}
TEST_F(UseCounterTest, MultipleMeasurements)
{
UseCounter useCounter;
for (unsigned feature = 0; feature < UseCounter::NumberOfFeatures; feature++) {
if (feature != UseCounter::Feature::PageDestruction) {
recordMeasurement(useCounter, static_cast<UseCounter::Feature>(feature));
recordMeasurement(useCounter, static_cast<UseCounter::Feature>(feature));
EXPECT_TRUE(hasRecordedMeasurement(useCounter, static_cast<UseCounter::Feature>(feature)));
}
}
}
TEST_F(UseCounterTest, InspectorDisablesMeasurement)
{
UseCounter useCounter;
// The specific feature we use here isn't important.
UseCounter::Feature feature = UseCounter::Feature::SVGSMILElementInDocument;
EXPECT_FALSE(hasRecordedMeasurement(useCounter, feature));
UseCounter::muteForInspector();
recordMeasurement(useCounter, feature);
EXPECT_FALSE(hasRecordedMeasurement(useCounter, feature));
UseCounter::muteForInspector();
recordMeasurement(useCounter, feature);
EXPECT_FALSE(hasRecordedMeasurement(useCounter, feature));
UseCounter::unmuteForInspector();
recordMeasurement(useCounter, feature);
EXPECT_FALSE(hasRecordedMeasurement(useCounter, feature));
UseCounter::unmuteForInspector();
recordMeasurement(useCounter, feature);
EXPECT_TRUE(hasRecordedMeasurement(useCounter, feature));
}
} // namespace blink