Backed out changeset 015cb0829df5 (bug 1213517)

This commit is contained in:
Iris Hsiao 2016-07-18 15:41:47 +08:00
Родитель 725d265c2c
Коммит 3366ed3525
7 изменённых файлов: 57 добавлений и 85 удалений

Просмотреть файл

@ -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!"); }