1c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch// found in the LICENSE file. 4c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "media/blink/buffered_data_source_host_impl.h" 6c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace media { 9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 10c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochclass BufferedDataSourceHostImplTest : public testing::Test { 11c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch public: 12c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch BufferedDataSourceHostImplTest() {} 13c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 14c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch void Add() { 15c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedTimeRanges(&ranges_, base::TimeDelta::FromSeconds(10)); 16c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch } 17c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 18c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch protected: 19c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch BufferedDataSourceHostImpl host_; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci Ranges<base::TimeDelta> ranges_; 21c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 22c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch DISALLOW_COPY_AND_ASSIGN(BufferedDataSourceHostImplTest); 23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}; 24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, Empty) { 26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_FALSE(host_.DidLoadingProgress()); 27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(0u, ranges_.size()); 29c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 31c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, AddBufferedTimeRanges) { 32c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedByteRange(10, 20); 33c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.SetTotalBytes(100); 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 35c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(1u, ranges_.size()); 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(1), ranges_.start(0)); 37c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(2), ranges_.end(0)); 38c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 39c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 40c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, AddBufferedTimeRanges_Merges) { 41c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch ranges_.Add(base::TimeDelta::FromSeconds(0), base::TimeDelta::FromSeconds(1)); 42c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedByteRange(10, 20); 43c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.SetTotalBytes(100); 44c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(1u, ranges_.size()); 46c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(0), ranges_.start(0)); 47c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(2), ranges_.end(0)); 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, AddBufferedTimeRanges_Snaps) { 51c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedByteRange(5, 995); 52c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.SetTotalBytes(1000); 53c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 54c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(1u, ranges_.size()); 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(0), ranges_.start(0)); 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(base::TimeDelta::FromSeconds(10), ranges_.end(0)); 57c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 58c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 59c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, SetTotalBytes) { 60c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedByteRange(10, 20); 61c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 62c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(0u, ranges_.size()); 63c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.SetTotalBytes(100); 65c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch Add(); 66c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_EQ(1u, ranges_.size()); 67c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 68c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 69c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen MurdochTEST_F(BufferedDataSourceHostImplTest, DidLoadingProgress) { 70c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch host_.AddBufferedByteRange(10, 20); 71c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_TRUE(host_.DidLoadingProgress()); 72c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch EXPECT_FALSE(host_.DidLoadingProgress()); 73c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} 74c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace media 76