Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/media/gmp/widevine-adapter/WidevineFileIO.cpp
Line
Count
Source (jump to first uncovered line)
1
#include "WidevineFileIO.h"
2
#include "GMPLog.h"
3
#include "WidevineUtils.h"
4
5
#include "gmp-api/gmp-platform.h"
6
7
using namespace cdm;
8
9
// Declared in ChromiumCDMAdapter.cpp.
10
extern const GMPPlatformAPI* sPlatform;
11
12
namespace mozilla {
13
14
void
15
WidevineFileIO::Open(const char* aFilename, uint32_t aFilenameLength)
16
0
{
17
0
  mName = std::string(aFilename, aFilename + aFilenameLength);
18
0
  GMPRecord* record = nullptr;
19
0
  GMPErr err = sPlatform->createrecord(aFilename, aFilenameLength, &record, static_cast<GMPRecordClient*>(this));
20
0
  if (GMP_FAILED(err)) {
21
0
    GMP_LOG("WidevineFileIO::Open() '%s' GMPCreateRecord failed",
22
0
            mName.c_str());
23
0
    mClient->OnOpenComplete(FileIOClient::kError);
24
0
    return;
25
0
  }
26
0
  if (GMP_FAILED(record->Open())) {
27
0
    GMP_LOG("WidevineFileIO::Open() '%s' record open failed", mName.c_str());
28
0
    mClient->OnOpenComplete(FileIOClient::kError);
29
0
    return;
30
0
  }
31
0
32
0
  GMP_LOG("WidevineFileIO::Open() '%s'", mName.c_str());
33
0
  mRecord = record;
34
0
}
35
36
void
37
WidevineFileIO::Read()
38
0
{
39
0
  if (!mRecord) {
40
0
    GMP_LOG("WidevineFileIO::Read() '%s' used uninitialized!", mName.c_str());
41
0
    mClient->OnReadComplete(FileIOClient::kError, nullptr, 0);
42
0
    return;
43
0
  }
44
0
  GMP_LOG("WidevineFileIO::Read() '%s'", mName.c_str());
45
0
  mRecord->Read();
46
0
}
47
48
void
49
WidevineFileIO::Write(const uint8_t* aData, uint32_t aDataSize)
50
0
{
51
0
  if (!mRecord) {
52
0
    GMP_LOG("WidevineFileIO::Write() '%s' used uninitialized!", mName.c_str());
53
0
    mClient->OnWriteComplete(FileIOClient::kError);
54
0
    return;
55
0
  }
56
0
  mRecord->Write(aData, aDataSize);
57
0
}
58
59
void
60
WidevineFileIO::Close()
61
0
{
62
0
  GMP_LOG("WidevineFileIO::Close() '%s'", mName.c_str());
63
0
  if (mRecord) {
64
0
    mRecord->Close();
65
0
    mRecord = nullptr;
66
0
  }
67
0
  delete this;
68
0
}
69
70
static FileIOClient::Status
71
GMPToWidevineFileStatus(GMPErr aStatus)
72
{
73
  switch (aStatus) {
74
    case GMPRecordInUse: return FileIOClient::kInUse;
75
    case GMPNoErr: return FileIOClient::kSuccess;
76
    default: return FileIOClient::kError;
77
  }
78
}
79
80
void
81
WidevineFileIO::OpenComplete(GMPErr aStatus)
82
0
{
83
0
  GMP_LOG(
84
0
    "WidevineFileIO::OpenComplete() '%s' status=%d", mName.c_str(), aStatus);
85
0
  mClient->OnOpenComplete(GMPToWidevineFileStatus(aStatus));
86
0
}
87
88
void
89
WidevineFileIO::ReadComplete(GMPErr aStatus,
90
                             const uint8_t* aData,
91
                             uint32_t aDataSize)
92
0
{
93
0
  GMP_LOG(
94
0
    "WidevineFileIO::OnReadComplete() '%s' status=%d", mName.c_str(), aStatus);
95
0
  mClient->OnReadComplete(GMPToWidevineFileStatus(aStatus), aData, aDataSize);
96
0
}
97
98
void
99
WidevineFileIO::WriteComplete(GMPErr aStatus)
100
0
{
101
0
  GMP_LOG(
102
0
    "WidevineFileIO::WriteComplete() '%s' status=%d", mName.c_str(), aStatus);
103
0
  mClient->OnWriteComplete(GMPToWidevineFileStatus(aStatus));
104
0
}
105
106
} // namespace mozilla