blob: ee04f6b4a30a3994eee9e0212f33f7ec401dc4ad [file] [log] [blame]
// Copyright 2017 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 "third_party/blink/renderer/core/timing/performance_resource_timing.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
class PerformanceResourceTimingTest : public testing::Test {
protected:
AtomicString GetNextHopProtocol(const AtomicString& alpn_negotiated_protocol,
const AtomicString& connection_info) {
mojom::blink::ResourceTimingInfo info;
info.allow_timing_details = true;
PerformanceResourceTiming timing(
info, base::TimeTicks(), /*initiator_type=*/"",
mojo::PendingReceiver<mojom::blink::WorkerTimingContainer>());
return timing.GetNextHopProtocol(alpn_negotiated_protocol, connection_info);
}
};
TEST_F(PerformanceResourceTimingTest,
TestFallbackToConnectionInfoWhenALPNUnknown) {
AtomicString connection_info = "http/1.1";
AtomicString alpn_negotiated_protocol = "unknown";
EXPECT_EQ(GetNextHopProtocol(alpn_negotiated_protocol, connection_info),
connection_info);
}
TEST_F(PerformanceResourceTimingTest,
TestFallbackToHTTPInfoWhenALPNAndConnectionInfoUnknown) {
AtomicString connection_info = "unknown";
AtomicString alpn_negotiated_protocol = "unknown";
EXPECT_EQ(GetNextHopProtocol(alpn_negotiated_protocol, connection_info), "");
}
TEST_F(PerformanceResourceTimingTest, TestNoChangeWhenContainsQuic) {
AtomicString connection_info = "http/1.1";
AtomicString alpn_negotiated_protocol = "http/2+quic/39";
EXPECT_EQ(GetNextHopProtocol(alpn_negotiated_protocol, connection_info),
alpn_negotiated_protocol);
}
TEST_F(PerformanceResourceTimingTest, TestNoChangeWhenOtherwise) {
AtomicString connection_info = "http/1.1";
AtomicString alpn_negotiated_protocol = "RandomProtocol";
EXPECT_EQ(GetNextHopProtocol(alpn_negotiated_protocol, connection_info),
alpn_negotiated_protocol);
}
} // namespace blink