// 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(feature))); recordMeasurement(useCounter, static_cast(feature)); EXPECT_TRUE(hasRecordedMeasurement(useCounter, static_cast(feature))); } } } TEST_F(UseCounterTest, MultipleMeasurements) { UseCounter useCounter; for (unsigned feature = 0; feature < UseCounter::NumberOfFeatures; feature++) { if (feature != UseCounter::Feature::PageDestruction) { recordMeasurement(useCounter, static_cast(feature)); recordMeasurement(useCounter, static_cast(feature)); EXPECT_TRUE(hasRecordedMeasurement(useCounter, static_cast(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