mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-27 20:25:44 +00:00
c6e43291cb
Note we remove the call to mChannel->SetContentType() from RecreateChannel(). The hint never works as expected for [1] is the only caller to nsIChannel::GetContentType() and MediaResource::Create() always happens before any reads from the resource. [1] http://searchfox.org/mozilla-central/rev/b425854d9bbd49d5caf9baef3686e49ec91c17ec/dom/media/MediaResource.cpp#1500 MozReview-Commit-ID: 1n4yHEouCjC --HG-- extra : rebase_source : 9a7345c29b985ddee7a90a94191e9d526e2a0a67 extra : source : 054d9ffaf21eb937a6349df76228269ad2d7dc2c
74 lines
2.2 KiB
C++
74 lines
2.2 KiB
C++
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef MOCK_MEDIA_RESOURCE_H_
|
|
#define MOCK_MEDIA_RESOURCE_H_
|
|
|
|
#include "MediaResource.h"
|
|
#include "nsTArray.h"
|
|
#include "mozilla/Atomics.h"
|
|
|
|
namespace mozilla
|
|
{
|
|
|
|
class MockMediaResource : public MediaResource
|
|
{
|
|
public:
|
|
explicit MockMediaResource(const char* aFileName);
|
|
nsresult Close() override { return NS_OK; }
|
|
void Suspend(bool aCloseImmediately) override {}
|
|
void Resume() override {}
|
|
already_AddRefed<nsIPrincipal> GetCurrentPrincipal() override
|
|
{
|
|
return nullptr;
|
|
}
|
|
void SetReadMode(MediaCacheStream::ReadMode aMode) override {}
|
|
void SetPlaybackRate(uint32_t aBytesPerSecond) override {}
|
|
nsresult ReadAt(int64_t aOffset, char* aBuffer, uint32_t aCount,
|
|
uint32_t* aBytes) override;
|
|
// Data stored in file, caching recommended.
|
|
bool ShouldCacheReads() override { return true; }
|
|
int64_t Tell() override { return 0; }
|
|
void Pin() override {}
|
|
void Unpin() override {}
|
|
double GetDownloadRate(bool* aIsReliable) override { return 0; }
|
|
int64_t GetLength() override;
|
|
int64_t GetNextCachedData(int64_t aOffset) override;
|
|
int64_t GetCachedDataEnd(int64_t aOffset) override;
|
|
bool IsDataCachedToEndOfResource(int64_t aOffset) override
|
|
{
|
|
return false;
|
|
}
|
|
bool IsSuspendedByCache() override { return false; }
|
|
bool IsSuspended() override { return false; }
|
|
nsresult ReadFromCache(char* aBuffer, int64_t aOffset,
|
|
uint32_t aCount) override
|
|
{
|
|
uint32_t bytesRead = 0;
|
|
nsresult rv = ReadAt(aOffset, aBuffer, aCount, &bytesRead);
|
|
NS_ENSURE_SUCCESS(rv, rv);
|
|
return bytesRead == aCount ? NS_OK : NS_ERROR_FAILURE;
|
|
}
|
|
|
|
bool IsTransportSeekable() override { return true; }
|
|
nsresult Open(nsIStreamListener** aStreamListener) override;
|
|
nsresult GetCachedRanges(MediaByteRangeSet& aRanges) override;
|
|
|
|
void MockClearBufferedRanges();
|
|
void MockAddBufferedRange(int64_t aStart, int64_t aEnd);
|
|
|
|
protected:
|
|
virtual ~MockMediaResource();
|
|
|
|
private:
|
|
FILE* mFileHandle;
|
|
const char* mFileName;
|
|
MediaByteRangeSet mRanges;
|
|
Atomic<int> mEntry;
|
|
};
|
|
|
|
} // namespace mozilla
|
|
|
|
#endif
|