1 // Copyright 2018 The PDFium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "core/fpdfapi/parser/cpdf_stream_acc.h" 6 7 #include <utility> 8 9 #include "core/fpdfapi/parser/cpdf_dictionary.h" 10 #include "core/fpdfapi/parser/cpdf_stream.h" 11 #include "core/fxcrt/fx_stream.h" 12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/invalid_seekable_read_stream.h" 14 TEST(StreamAccTest,ReadRawDataFailed)15TEST(StreamAccTest, ReadRawDataFailed) { 16 auto stream = pdfium::MakeRetain<CPDF_Stream>(); 17 stream->InitStreamFromFile( 18 pdfium::MakeRetain<InvalidSeekableReadStream>(1024), 19 pdfium::MakeRetain<CPDF_Dictionary>()); 20 auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(std::move(stream)); 21 stream_acc->LoadAllDataRaw(); 22 EXPECT_TRUE(stream_acc->GetSpan().empty()); 23 } 24 25 // Regression test for crbug.com/1361849. Should not trigger 26 // ProbeForLowSeverityLifetimeIssue() failure. TEST(StreamAccTest,DataStreamLifeTime)27TEST(StreamAccTest, DataStreamLifeTime) { 28 constexpr uint8_t kData[] = {'a', 'b', 'c'}; 29 auto stream = pdfium::MakeRetain<CPDF_Stream>(); 30 stream->SetData(kData); 31 auto stream_acc = pdfium::MakeRetain<CPDF_StreamAcc>(stream); 32 stream_acc->LoadAllDataRaw(); 33 stream.Reset(); 34 EXPECT_EQ(pdfium::make_span(kData), stream_acc->GetSpan()); 35 } 36