Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/media/mp4/ResourceStream.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim:set ts=2 sw=2 sts=2 et cindent: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "ResourceStream.h"
8
9
namespace mozilla {
10
11
ResourceStream::ResourceStream(mozilla::MediaResource* aResource)
12
  : mResource(aResource)
13
  , mPinCount(0)
14
0
{
15
0
  MOZ_ASSERT(aResource);
16
0
  DDLINKCHILD("resource", &mResource);
17
0
}
18
19
ResourceStream::~ResourceStream()
20
0
{
21
0
  MOZ_ASSERT(mPinCount == 0);
22
0
}
23
24
bool
25
ResourceStream::ReadAt(int64_t aOffset, void* aBuffer, size_t aCount,
26
                       size_t* aBytesRead)
27
0
{
28
0
  uint32_t sum = 0;
29
0
  uint32_t bytesRead = 0;
30
0
  do {
31
0
    uint64_t offset = aOffset + sum;
32
0
    char* buffer = reinterpret_cast<char*>(aBuffer) + sum;
33
0
    uint32_t toRead = aCount - sum;
34
0
    nsresult rv = mResource.ReadAt(offset, buffer, toRead, &bytesRead);
35
0
    if (NS_FAILED(rv)) {
36
0
      return false;
37
0
    }
38
0
    sum += bytesRead;
39
0
  } while (sum < aCount && bytesRead > 0);
40
0
41
0
  *aBytesRead = sum;
42
0
  return true;
43
0
}
44
45
bool
46
ResourceStream::CachedReadAt(int64_t aOffset, void* aBuffer, size_t aCount,
47
                        size_t* aBytesRead)
48
0
{
49
0
  nsresult rv = mResource.GetResource()->ReadFromCache(
50
0
    reinterpret_cast<char*>(aBuffer), aOffset, aCount);
51
0
  if (NS_FAILED(rv)) {
52
0
    *aBytesRead = 0;
53
0
    return false;
54
0
  }
55
0
  *aBytesRead = aCount;
56
0
  return true;
57
0
}
58
59
bool
60
ResourceStream::Length(int64_t* aSize)
61
0
{
62
0
  if (mResource.GetLength() < 0)
63
0
    return false;
64
0
  *aSize = mResource.GetLength();
65
0
  return true;
66
0
}
67
68
} // namespace mozilla