// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifdef UNSAFE_BUFFERS_BUILD // TODO(crbug.com/40284755): Remove this and spanify to fix the errors. #pragma allow_unsafe_buffers #endif #include "net/websockets/websocket_frame.h" #include <stdint.h> #include <string.h> #include <algorithm> #include <iterator> #include <string> #include <string_view> #include <vector> #include "base/containers/span.h" #include "base/memory/aligned_memory.h" #include "base/ranges/algorithm.h" #include "net/base/net_errors.h" #include "testing/gtest/include/gtest/gtest.h" namespace net { namespace { TEST(WebSocketFrameHeaderTest, FrameLengths) { … } TEST(WebSocketFrameHeaderTest, FrameLengthsWithMasking) { … } TEST(WebSocketFrameHeaderTest, FrameOpCodes) { … } TEST(WebSocketFrameHeaderTest, FinalBitAndReservedBits) { … } TEST(WebSocketFrameHeaderTest, InsufficientBufferSize) { … } TEST(WebSocketFrameTest, MaskPayload) { … } // Check that all combinations of alignment, frame offset and chunk size work // correctly for MaskWebSocketFramePayload(). This is mainly used to ensure that // vectorisation optimisations don't break anything. We could take a "white box" // approach and only test the edge cases, but since the exhaustive "black box" // approach runs in acceptable time, we don't have to take the risk of being // clever. // // This brute-force approach runs in O(N^3) time where N is the size of the // maximum vector size we want to test again. This might need reconsidering if // MaskWebSocketFramePayload() is ever optimised for a dedicated vector // architecture. TEST(WebSocketFrameTest, MaskPayloadAlignment) { … } // "IsKnownDataOpCode" is currently implemented in an "obviously correct" // manner, but we test is anyway in case it changes to a more complex // implementation in future. TEST(WebSocketFrameHeaderTest, IsKnownDataOpCode) { … } // "IsKnownControlOpCode" is implemented in an "obviously correct" manner but // might be optimised in future. TEST(WebSocketFrameHeaderTest, IsKnownControlOpCode) { … } } // namespace } // namespace net