зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 015cb0829df5 (bug 1213517)
This commit is contained in:
Родитель
725d265c2c
Коммит
3366ed3525
|
@ -74,7 +74,6 @@
|
|||
#include "AudioStreamTrack.h"
|
||||
#include "VideoStreamTrack.h"
|
||||
#include "MediaTrackList.h"
|
||||
#include "MediaStreamError.h"
|
||||
|
||||
#include "AudioChannelService.h"
|
||||
|
||||
|
@ -2122,15 +2121,13 @@ public:
|
|||
return mElement->GetCORSMode();
|
||||
}
|
||||
|
||||
already_AddRefed<PledgeVoid>
|
||||
already_AddRefed<Promise>
|
||||
ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) override
|
||||
const dom::MediaTrackConstraints& aConstraints,
|
||||
ErrorResult &aRv) override
|
||||
{
|
||||
RefPtr<PledgeVoid> p = new PledgeVoid();
|
||||
p->Reject(new dom::MediaStreamError(aWindow,
|
||||
NS_LITERAL_STRING("OverconstrainedError"),
|
||||
NS_LITERAL_STRING("")));
|
||||
return p.forget();
|
||||
NS_ERROR("ApplyConstraints not implemented for media element capture");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Stop() override
|
||||
|
|
|
@ -1110,18 +1110,32 @@ public:
|
|||
return mPeerIdentity;
|
||||
}
|
||||
|
||||
already_AddRefed<PledgeVoid>
|
||||
already_AddRefed<Promise>
|
||||
ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const MediaTrackConstraints& aConstraints) override
|
||||
const MediaTrackConstraints& aConstraints,
|
||||
ErrorResult &aRv) override
|
||||
{
|
||||
nsCOMPtr<nsIGlobalObject> go = do_QueryInterface(aWindow);
|
||||
RefPtr<Promise> promise = Promise::Create(go, aRv);
|
||||
|
||||
if (sInShutdown) {
|
||||
RefPtr<PledgeVoid> p = new PledgeVoid();
|
||||
p->Reject(new MediaStreamError(aWindow,
|
||||
NS_LITERAL_STRING("AbortError"),
|
||||
NS_LITERAL_STRING("In shutdown")));
|
||||
return p.forget();
|
||||
RefPtr<MediaStreamError> error = new MediaStreamError(aWindow,
|
||||
NS_LITERAL_STRING("AbortError"),
|
||||
NS_LITERAL_STRING("In shutdown"));
|
||||
promise->MaybeReject(error);
|
||||
return promise.forget();
|
||||
}
|
||||
return mListener->ApplyConstraintsToTrack(aWindow, mTrackID, aConstraints);
|
||||
|
||||
typedef media::Pledge<bool, MediaStreamError*> PledgeVoid;
|
||||
|
||||
RefPtr<PledgeVoid> p =
|
||||
mListener->ApplyConstraintsToTrack(aWindow, mTrackID, aConstraints);
|
||||
p->Then([promise](bool& aDummy) mutable {
|
||||
promise->MaybeResolve(false);
|
||||
}, [promise](MediaStreamError*& reason) mutable {
|
||||
promise->MaybeReject(reason);
|
||||
});
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
|
||||
|
@ -3369,14 +3383,14 @@ GetUserMediaCallbackMediaStreamListener::StopSharing()
|
|||
|
||||
// ApplyConstraints for track
|
||||
|
||||
auto
|
||||
already_AddRefed<media::Pledge<bool, dom::MediaStreamError*>>
|
||||
GetUserMediaCallbackMediaStreamListener::ApplyConstraintsToTrack(
|
||||
nsPIDOMWindowInner* aWindow,
|
||||
TrackID aTrackID,
|
||||
const MediaTrackConstraints& aConstraints) -> already_AddRefed<PledgeVoid>
|
||||
const MediaTrackConstraints& aConstraints)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
RefPtr<PledgeVoid> p = new PledgeVoid();
|
||||
RefPtr<media::Pledge<bool, dom::MediaStreamError*>> p = new media::Pledge<bool, dom::MediaStreamError*>();
|
||||
|
||||
// XXX to support multiple tracks of a type in a stream, this should key off
|
||||
// the TrackID and not just the type
|
||||
|
@ -3429,7 +3443,7 @@ GetUserMediaCallbackMediaStreamListener::ApplyConstraintsToTrack(
|
|||
if (!mgr) {
|
||||
return NS_OK;
|
||||
}
|
||||
RefPtr<PledgeVoid> p = mgr->mOutstandingVoidPledges.Remove(id);
|
||||
RefPtr<media::Pledge<bool, dom::MediaStreamError*>> p = mgr->mOutstandingVoidPledges.Remove(id);
|
||||
if (p) {
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
p->Resolve(false);
|
||||
|
|
|
@ -256,7 +256,6 @@ public:
|
|||
private:
|
||||
typedef media::Pledge<SourceSet*, dom::MediaStreamError*> PledgeSourceSet;
|
||||
typedef media::Pledge<const char*, dom::MediaStreamError*> PledgeChar;
|
||||
typedef media::Pledge<bool, dom::MediaStreamError*> PledgeVoid;
|
||||
|
||||
static bool IsPrivileged();
|
||||
static bool IsLoop(nsIURI* aDocURI);
|
||||
|
@ -322,7 +321,7 @@ private:
|
|||
|
||||
media::CoatCheck<PledgeSourceSet> mOutstandingPledges;
|
||||
media::CoatCheck<PledgeChar> mOutstandingCharPledges;
|
||||
media::CoatCheck<PledgeVoid> mOutstandingVoidPledges;
|
||||
media::CoatCheck<media::Pledge<bool, dom::MediaStreamError*>> mOutstandingVoidPledges;
|
||||
#if defined(MOZ_B2G_CAMERA) && defined(MOZ_WIDGET_GONK)
|
||||
RefPtr<nsDOMCameraManager> mCameraManager;
|
||||
#endif
|
||||
|
|
|
@ -10,9 +10,6 @@
|
|||
#include "nsIUUIDGenerator.h"
|
||||
#include "nsServiceManagerUtils.h"
|
||||
#include "MediaStreamListener.h"
|
||||
#include "systemservices/MediaUtils.h"
|
||||
|
||||
#include "mozilla/dom/Promise.h"
|
||||
|
||||
#ifdef LOG
|
||||
#undef LOG
|
||||
|
@ -41,16 +38,21 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(MediaStreamTrackSource)
|
|||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPrincipal)
|
||||
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
|
||||
|
||||
auto
|
||||
MediaStreamTrackSource::ApplyConstraints(
|
||||
nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) -> already_AddRefed<PledgeVoid>
|
||||
already_AddRefed<Promise>
|
||||
MediaStreamTrackSource::ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints,
|
||||
ErrorResult &aRv)
|
||||
{
|
||||
RefPtr<PledgeVoid> p = new PledgeVoid();
|
||||
p->Reject(new MediaStreamError(aWindow,
|
||||
NS_LITERAL_STRING("OverconstrainedError"),
|
||||
NS_LITERAL_STRING("")));
|
||||
return p.forget();
|
||||
nsCOMPtr<nsIGlobalObject> go = do_QueryInterface(aWindow);
|
||||
RefPtr<Promise> promise = Promise::Create(go, aRv);
|
||||
MOZ_RELEASE_ASSERT(!aRv.Failed());
|
||||
|
||||
promise->MaybeReject(new MediaStreamError(
|
||||
aWindow,
|
||||
NS_LITERAL_STRING("OverconstrainedError"),
|
||||
NS_LITERAL_STRING(""),
|
||||
NS_LITERAL_STRING("")));
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -270,28 +272,8 @@ MediaStreamTrack::ApplyConstraints(const MediaTrackConstraints& aConstraints,
|
|||
"constraints %s", this, NS_ConvertUTF16toUTF8(str).get()));
|
||||
}
|
||||
|
||||
typedef media::Pledge<bool, MediaStreamError*> PledgeVoid;
|
||||
|
||||
nsPIDOMWindowInner* window = mOwningStream->GetParentObject();
|
||||
|
||||
nsCOMPtr<nsIGlobalObject> go = do_QueryInterface(window);
|
||||
RefPtr<Promise> promise = Promise::Create(go, aRv);
|
||||
|
||||
// Forward constraints to the source.
|
||||
//
|
||||
// After GetSource().ApplyConstraints succeeds (after it's been to media-thread
|
||||
// and back), and no sooner, do we set mConstraints to the newly applied values.
|
||||
|
||||
// Keep a reference to this, to make sure it's still here when we get back.
|
||||
RefPtr<MediaStreamTrack> that = this;
|
||||
RefPtr<PledgeVoid> p = GetSource().ApplyConstraints(window, aConstraints);
|
||||
p->Then([this, that, promise, aConstraints](bool& aDummy) mutable {
|
||||
mConstraints = aConstraints;
|
||||
promise->MaybeResolve(false);
|
||||
}, [promise](MediaStreamError*& reason) mutable {
|
||||
promise->MaybeReject(reason);
|
||||
});
|
||||
return promise.forget();
|
||||
return GetSource().ApplyConstraints(window, aConstraints, aRv);
|
||||
}
|
||||
|
||||
MediaStreamGraph*
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include "PrincipalChangeObserver.h"
|
||||
#include "mozilla/dom/MediaStreamTrackBinding.h"
|
||||
#include "mozilla/dom/MediaTrackSettingsBinding.h"
|
||||
#include "mozilla/media/MediaUtils.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
@ -39,7 +38,6 @@ namespace dom {
|
|||
|
||||
class AudioStreamTrack;
|
||||
class VideoStreamTrack;
|
||||
class MediaStreamError;
|
||||
|
||||
/**
|
||||
* Common interface through which a MediaStreamTrack can communicate with its
|
||||
|
@ -124,15 +122,14 @@ public:
|
|||
*/
|
||||
virtual nsresult TakePhoto(MediaEnginePhotoCallback*) const { return NS_ERROR_NOT_IMPLEMENTED; }
|
||||
|
||||
typedef media::Pledge<bool, dom::MediaStreamError*> PledgeVoid;
|
||||
|
||||
/**
|
||||
* We provide a fallback solution to ApplyConstraints() here.
|
||||
* Sources that support ApplyConstraints() will have to override it.
|
||||
*/
|
||||
virtual already_AddRefed<PledgeVoid>
|
||||
virtual already_AddRefed<Promise>
|
||||
ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) = 0;
|
||||
const dom::MediaTrackConstraints& aConstraints,
|
||||
ErrorResult &aRv);
|
||||
|
||||
/**
|
||||
* Called by the source interface when all registered sinks have unregistered.
|
||||
|
@ -213,13 +210,6 @@ public:
|
|||
|
||||
MediaSourceEnum GetMediaSource() const override { return mMediaSource; }
|
||||
|
||||
already_AddRefed<PledgeVoid>
|
||||
ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) override
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Stop() override {}
|
||||
|
||||
protected:
|
||||
|
|
|
@ -57,7 +57,6 @@
|
|||
#include "mozilla/dom/RTCStatsReportBinding.h"
|
||||
#include "MediaStreamTrack.h"
|
||||
#include "VideoStreamTrack.h"
|
||||
#include "MediaStreamError.h"
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -1637,18 +1636,4 @@ LocalSourceStreamInfo::ForgetPipelineByTrackId_m(const std::string& trackId)
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
#if !defined(MOZILLA_EXTERNAL_LINKAGE)
|
||||
auto
|
||||
RemoteTrackSource::ApplyConstraints(
|
||||
nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) -> already_AddRefed<PledgeVoid>
|
||||
{
|
||||
RefPtr<PledgeVoid> p = new PledgeVoid();
|
||||
p->Reject(new dom::MediaStreamError(aWindow,
|
||||
NS_LITERAL_STRING("OverconstrainedError"),
|
||||
NS_LITERAL_STRING("")));
|
||||
return p.forget();
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -168,9 +168,14 @@ public:
|
|||
return dom::MediaSourceEnum::Other;
|
||||
}
|
||||
|
||||
already_AddRefed<PledgeVoid>
|
||||
already_AddRefed<dom::Promise>
|
||||
ApplyConstraints(nsPIDOMWindowInner* aWindow,
|
||||
const dom::MediaTrackConstraints& aConstraints) override;
|
||||
const dom::MediaTrackConstraints& aConstraints,
|
||||
ErrorResult &aRv) override
|
||||
{
|
||||
NS_ERROR("Can't ApplyConstraints() a remote source!");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void Stop() override { NS_ERROR("Can't stop a remote source!"); }
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче