diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml
index 188d66335f2..b6cf637c250 100644
--- a/b2g/config/dolphin/sources.xml
+++ b/b2g/config/dolphin/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml
index 1e27df02be8..46d753f8276 100644
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -19,11 +19,11 @@
-
+
-
+
diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml
index 8bc271c5271..dd5af9ee6ae 100644
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml
index 14d96ec60b1..bbb87c12eae 100644
--- a/b2g/config/emulator-kk/sources.xml
+++ b/b2g/config/emulator-kk/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/b2g/config/emulator-l/sources.xml b/b2g/config/emulator-l/sources.xml
index 92b2ad5ae70..52c4c5e3dbe 100644
--- a/b2g/config/emulator-l/sources.xml
+++ b/b2g/config/emulator-l/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml
index 1e27df02be8..46d753f8276 100644
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -19,11 +19,11 @@
-
+
-
+
diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml
index 361c4fd5880..b0ac2010b80 100644
--- a/b2g/config/flame-kk/sources.xml
+++ b/b2g/config/flame-kk/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml
index af075609220..99689d02f14 100644
--- a/b2g/config/flame/sources.xml
+++ b/b2g/config/flame/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json
index 47f1e550878..4c788ca5e83 100644
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
{
"git": {
- "git_revision": "1d14f4a6809de81ebd638117ed4ddd3b1b18f033",
+ "git_revision": "03164bd160809747e6a198e0dba1b7c3ee7789f5",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
- "revision": "f69a6e0dc3d86a13a8a0960a21e599c3fa9e7845",
+ "revision": "696e7b30b79f77008c68c3df0a5d501bb8718c0c",
"repo_path": "integration/gaia-central"
}
diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml
index e530f54d3fa..91faf774be0 100644
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/b2g/config/nexus-5-l/sources.xml b/b2g/config/nexus-5-l/sources.xml
index 7bec0e6e8b1..fc2e9191791 100644
--- a/b2g/config/nexus-5-l/sources.xml
+++ b/b2g/config/nexus-5-l/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/dom/bluetooth/BluetoothCommon.h b/dom/bluetooth/BluetoothCommon.h
index 63ca63b6ddf..81e28203b1c 100644
--- a/dom/bluetooth/BluetoothCommon.h
+++ b/dom/bluetooth/BluetoothCommon.h
@@ -433,6 +433,19 @@ enum BluetoothAvrcpPlayerAttribute {
AVRCP_PLAYER_ATTRIBUTE_SCAN
};
+enum BluetoothAvrcpPlayerRepeatValue {
+ AVRCP_PLAYER_VAL_OFF_REPEAT = 0x01,
+ AVRCP_PLAYER_VAL_SINGLE_REPEAT = 0x02,
+ AVRCP_PLAYER_VAL_ALL_REPEAT = 0x03,
+ AVRCP_PLAYER_VAL_GROUP_REPEAT = 0x04,
+};
+
+enum BluetoothAvrcpPlayerShuffleValue {
+ AVRCP_PLAYER_VAL_OFF_SHUFFLE = 0x01,
+ AVRCP_PLAYER_VAL_ALL_SHUFFLE = 0x02,
+ AVRCP_PLAYER_VAL_GROUP_SHUFFLE = 0x03,
+};
+
enum BluetoothAvrcpStatus {
AVRCP_STATUS_BAD_COMMAND,
AVRCP_STATUS_BAD_PARAMETER,
diff --git a/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp b/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
index 86a09ea8d11..8650b315ec1 100644
--- a/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
+++ b/dom/bluetooth/bluedroid/BluetoothA2dpManager.cpp
@@ -926,6 +926,14 @@ BluetoothA2dpManager::UpdateRegisterNotification(BluetoothAvrcpEvent aEvent,
}
mPlaybackInterval = aParam;
break;
+ case AVRCP_EVENT_APP_SETTINGS_CHANGED:
+ mAppSettingsChangedNotifyType = AVRCP_NTF_INTERIM;
+ param.mNumAttr = 2;
+ param.mIds[0] = AVRCP_PLAYER_ATTRIBUTE_REPEAT;
+ param.mValues[0] = AVRCP_PLAYER_VAL_OFF_REPEAT;
+ param.mIds[1] = AVRCP_PLAYER_ATTRIBUTE_SHUFFLE;
+ param.mValues[1] = AVRCP_PLAYER_VAL_OFF_SHUFFLE;
+ break;
default:
break;
}
diff --git a/dom/bluetooth/bluedroid/BluetoothA2dpManager.h b/dom/bluetooth/bluedroid/BluetoothA2dpManager.h
index f30f9ebd5e8..bcd314a6c5a 100644
--- a/dom/bluetooth/bluedroid/BluetoothA2dpManager.h
+++ b/dom/bluetooth/bluedroid/BluetoothA2dpManager.h
@@ -161,6 +161,7 @@ private:
BluetoothAvrcpNotification mPlayStatusChangedNotifyType;
BluetoothAvrcpNotification mTrackChangedNotifyType;
BluetoothAvrcpNotification mPlayPosChangedNotifyType;
+ BluetoothAvrcpNotification mAppSettingsChangedNotifyType;
};
END_BLUETOOTH_NAMESPACE
diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp
index 2c7cd6ce00e..0520545ca97 100644
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -1861,7 +1861,8 @@ NS_IMETHODIMP HTMLMediaElement::SetMuted(bool aMuted)
}
already_AddRefed
-HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
+HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded,
+ MediaStreamGraph* aGraph)
{
nsIDOMWindow* window = OwnerDoc()->GetInnerWindow();
if (!window) {
@@ -1873,7 +1874,7 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
}
#endif
OutputMediaStream* out = mOutputStreams.AppendElement();
- out->mStream = DOMMediaStream::CreateTrackUnionStream(window);
+ out->mStream = DOMMediaStream::CreateTrackUnionStream(window, aGraph);
nsRefPtr principal = GetCurrentPrincipal();
out->mStream->CombineWithPrincipal(principal);
out->mStream->SetCORSMode(mCORSMode);
@@ -1885,8 +1886,8 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
// back into the output stream.
out->mStream->GetStream()->ChangeExplicitBlockerCount(1);
if (mDecoder) {
- mDecoder->AddOutputStream(
- out->mStream->GetStream()->AsProcessedStream(), aFinishWhenEnded);
+ mDecoder->AddOutputStream(out->mStream->GetStream()->AsProcessedStream(),
+ aFinishWhenEnded);
if (mReadyState >= HAVE_METADATA) {
// Expose the tracks to JS directly.
if (HasAudio()) {
@@ -1904,9 +1905,10 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
}
already_AddRefed
-HTMLMediaElement::MozCaptureStream(ErrorResult& aRv)
+HTMLMediaElement::MozCaptureStream(ErrorResult& aRv,
+ MediaStreamGraph* aGraph)
{
- nsRefPtr stream = CaptureStreamInternal(false);
+ nsRefPtr stream = CaptureStreamInternal(false, aGraph);
if (!stream) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
@@ -1916,9 +1918,10 @@ HTMLMediaElement::MozCaptureStream(ErrorResult& aRv)
}
already_AddRefed
-HTMLMediaElement::MozCaptureStreamUntilEnded(ErrorResult& aRv)
+HTMLMediaElement::MozCaptureStreamUntilEnded(ErrorResult& aRv,
+ MediaStreamGraph* aGraph)
{
- nsRefPtr stream = CaptureStreamInternal(true);
+ nsRefPtr stream = CaptureStreamInternal(true, aGraph);
if (!stream) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
@@ -2790,7 +2793,7 @@ nsresult HTMLMediaElement::FinishDecoderSetup(MediaDecoder* aDecoder,
for (uint32_t i = 0; i < mOutputStreams.Length(); ++i) {
OutputMediaStream* ms = &mOutputStreams[i];
aDecoder->AddOutputStream(ms->mStream->GetStream()->AsProcessedStream(),
- ms->mFinishWhenEnded);
+ ms->mFinishWhenEnded);
}
// Update decoder principal before we start decoding, since it
diff --git a/dom/html/HTMLMediaElement.h b/dom/html/HTMLMediaElement.h
index c50d91f1efd..2120e3c77bf 100644
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -576,9 +576,11 @@ public:
return mAutoplayEnabled;
}
- already_AddRefed MozCaptureStream(ErrorResult& aRv);
+ already_AddRefed MozCaptureStream(ErrorResult& aRv,
+ MediaStreamGraph* aGraph = nullptr);
- already_AddRefed MozCaptureStreamUntilEnded(ErrorResult& aRv);
+ already_AddRefed MozCaptureStreamUntilEnded(ErrorResult& aRv,
+ MediaStreamGraph* aGraph = nullptr);
bool MozAudioCaptured() const
{
@@ -724,7 +726,8 @@ protected:
* When aFinishWhenEnded is false, ending playback does not finish the stream.
* The stream will never finish.
*/
- already_AddRefed CaptureStreamInternal(bool aFinishWhenEnded);
+ already_AddRefed CaptureStreamInternal(bool aFinishWhenEnded,
+ MediaStreamGraph* aGraph = nullptr);
/**
* Initialize a decoder as a clone of an existing decoder in another
diff --git a/dom/media/DOMMediaStream.cpp b/dom/media/DOMMediaStream.cpp
index de651547b73..8b3da2eeb35 100644
--- a/dom/media/DOMMediaStream.cpp
+++ b/dom/media/DOMMediaStream.cpp
@@ -274,19 +274,26 @@ DOMMediaStream::IsFinished()
}
void
-DOMMediaStream::InitSourceStream(nsIDOMWindow* aWindow)
+DOMMediaStream::InitSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
mWindow = aWindow;
- MediaStreamGraph* gm = MediaStreamGraph::GetInstance();
- InitStreamCommon(gm->CreateSourceStream(this));
+ if (!aGraph) {
+ aGraph = MediaStreamGraph::GetInstance();
+ }
+ InitStreamCommon(aGraph->CreateSourceStream(this));
}
void
-DOMMediaStream::InitTrackUnionStream(nsIDOMWindow* aWindow)
+DOMMediaStream::InitTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
mWindow = aWindow;
- MediaStreamGraph* gm = MediaStreamGraph::GetInstance();
- InitStreamCommon(gm->CreateTrackUnionStream(this));
+
+ if (!aGraph) {
+ aGraph = MediaStreamGraph::GetInstance();
+ }
+ InitStreamCommon(aGraph->CreateTrackUnionStream(this));
}
void
@@ -300,18 +307,20 @@ DOMMediaStream::InitStreamCommon(MediaStream* aStream)
}
already_AddRefed
-DOMMediaStream::CreateSourceStream(nsIDOMWindow* aWindow)
+DOMMediaStream::CreateSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
nsRefPtr stream = new DOMMediaStream();
- stream->InitSourceStream(aWindow);
+ stream->InitSourceStream(aWindow, aGraph);
return stream.forget();
}
already_AddRefed
-DOMMediaStream::CreateTrackUnionStream(nsIDOMWindow* aWindow)
+DOMMediaStream::CreateTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
nsRefPtr stream = new DOMMediaStream();
- stream->InitTrackUnionStream(aWindow);
+ stream->InitTrackUnionStream(aWindow, aGraph);
return stream.forget();
}
@@ -623,18 +632,20 @@ DOMLocalMediaStream::Stop()
}
already_AddRefed
-DOMLocalMediaStream::CreateSourceStream(nsIDOMWindow* aWindow)
+DOMLocalMediaStream::CreateSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
nsRefPtr stream = new DOMLocalMediaStream();
- stream->InitSourceStream(aWindow);
+ stream->InitSourceStream(aWindow, aGraph);
return stream.forget();
}
already_AddRefed
-DOMLocalMediaStream::CreateTrackUnionStream(nsIDOMWindow* aWindow)
+DOMLocalMediaStream::CreateTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph)
{
nsRefPtr stream = new DOMLocalMediaStream();
- stream->InitTrackUnionStream(aWindow);
+ stream->InitTrackUnionStream(aWindow, aGraph);
return stream.forget();
}
@@ -649,9 +660,10 @@ DOMAudioNodeMediaStream::~DOMAudioNodeMediaStream()
already_AddRefed
DOMAudioNodeMediaStream::CreateTrackUnionStream(nsIDOMWindow* aWindow,
- AudioNode* aNode)
+ AudioNode* aNode,
+ MediaStreamGraph* aGraph)
{
nsRefPtr stream = new DOMAudioNodeMediaStream(aNode);
- stream->InitTrackUnionStream(aWindow);
+ stream->InitTrackUnionStream(aWindow, aGraph);
return stream.forget();
}
diff --git a/dom/media/DOMMediaStream.h b/dom/media/DOMMediaStream.h
index 5f64cd5d0eb..eed38839238 100644
--- a/dom/media/DOMMediaStream.h
+++ b/dom/media/DOMMediaStream.h
@@ -34,6 +34,7 @@ namespace mozilla {
class DOMLocalMediaStream;
class MediaStream;
class MediaEngineSource;
+class MediaStreamGraph;
namespace dom {
class AudioNode;
@@ -180,14 +181,14 @@ public:
/**
* Create an nsDOMMediaStream whose underlying stream is a SourceMediaStream.
*/
- static already_AddRefed
- CreateSourceStream(nsIDOMWindow* aWindow);
+ static already_AddRefed CreateSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
/**
* Create an nsDOMMediaStream whose underlying stream is a TrackUnionStream.
*/
- static already_AddRefed
- CreateTrackUnionStream(nsIDOMWindow* aWindow);
+ static already_AddRefed CreateTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
void SetLogicalStreamStartTime(StreamTime aTime)
{
@@ -249,8 +250,10 @@ protected:
virtual ~DOMMediaStream();
void Destroy();
- void InitSourceStream(nsIDOMWindow* aWindow);
- void InitTrackUnionStream(nsIDOMWindow* aWindow);
+ void InitSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
+ void InitTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
void InitStreamCommon(MediaStream* aStream);
already_AddRefed CreateAudioTrack(AudioStreamTrack* aStreamTrack);
already_AddRefed CreateVideoTrack(VideoStreamTrack* aStreamTrack);
@@ -331,13 +334,15 @@ public:
* Create an nsDOMLocalMediaStream whose underlying stream is a SourceMediaStream.
*/
static already_AddRefed
- CreateSourceStream(nsIDOMWindow* aWindow);
+ CreateSourceStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
/**
* Create an nsDOMLocalMediaStream whose underlying stream is a TrackUnionStream.
*/
static already_AddRefed
- CreateTrackUnionStream(nsIDOMWindow* aWindow);
+ CreateTrackUnionStream(nsIDOMWindow* aWindow,
+ MediaStreamGraph* aGraph = nullptr);
protected:
virtual ~DOMLocalMediaStream();
@@ -360,7 +365,8 @@ public:
*/
static already_AddRefed
CreateTrackUnionStream(nsIDOMWindow* aWindow,
- AudioNode* aNode);
+ AudioNode* aNode,
+ MediaStreamGraph* aGraph = nullptr);
protected:
~DOMAudioNodeMediaStream();
diff --git a/dom/media/MediaDecoder.cpp b/dom/media/MediaDecoder.cpp
index 43fad14148d..757705b3b00 100644
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -480,16 +480,21 @@ void MediaDecoder::UpdateStreamBlockingForStateMachinePlaying()
}
}
-void MediaDecoder::RecreateDecodedStream(int64_t aStartTimeUSecs)
+void MediaDecoder::RecreateDecodedStream(int64_t aStartTimeUSecs,
+ MediaStreamGraph* aGraph)
{
MOZ_ASSERT(NS_IsMainThread());
ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
DECODER_LOG("RecreateDecodedStream aStartTimeUSecs=%lld!", aStartTimeUSecs);
+ if (!aGraph) {
+ aGraph = mDecodedStream->mStream->Graph();
+ }
DestroyDecodedStream();
- mDecodedStream = new DecodedStreamData(this, aStartTimeUSecs,
- MediaStreamGraph::GetInstance()->CreateSourceStream(nullptr));
+ mDecodedStream = new DecodedStreamData(this,
+ aStartTimeUSecs,
+ aGraph->CreateSourceStream(nullptr));
// Note that the delay between removing ports in DestroyDecodedStream
// and adding new ones won't cause a glitch since all graph operations
@@ -522,7 +527,7 @@ void MediaDecoder::AddOutputStream(ProcessedMediaStream* aStream,
if (!GetDecodedStream()) {
int64_t t = mDecoderStateMachine ?
mDecoderStateMachine->GetCurrentTimeUs() : 0;
- RecreateDecodedStream(t);
+ RecreateDecodedStream(t, aStream->Graph());
}
OutputStreamData* os = mOutputStreams.AppendElement();
os->Init(this, aStream);
diff --git a/dom/media/MediaDecoder.h b/dom/media/MediaDecoder.h
index 45f2ce23f6b..cff5b625bd7 100644
--- a/dom/media/MediaDecoder.h
+++ b/dom/media/MediaDecoder.h
@@ -519,7 +519,8 @@ public:
* aStartTimeUSecs is relative to the state machine's mStartTime.
* Decoder monitor must be held.
*/
- void RecreateDecodedStream(int64_t aStartTimeUSecs);
+ void RecreateDecodedStream(int64_t aStartTimeUSecs,
+ MediaStreamGraph* aGraph = nullptr);
/**
* Call this when mDecoderStateMachine or mDecoderStateMachine->IsPlaying() changes.
* Decoder monitor must be held.
diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp
index a98ae55139e..b3ca057a93c 100644
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -1823,8 +1823,10 @@ MediaDecoderStateMachine::InitiateSeek()
// as far as fast-seek is concerned. It also fix the problem where stream
// clock seems to go backwards during seeking.
nsCOMPtr event =
- NS_NewRunnableMethodWithArg(mDecoder, &MediaDecoder::RecreateDecodedStream,
- seekTime - mStartTime);
+ NS_NewRunnableMethodWithArgs(mDecoder,
+ &MediaDecoder::RecreateDecodedStream,
+ seekTime - mStartTime,
+ nullptr);
NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
}
diff --git a/dom/media/MediaStreamGraph.cpp b/dom/media/MediaStreamGraph.cpp
index 972151c342d..aa2dcb90b73 100644
--- a/dom/media/MediaStreamGraph.cpp
+++ b/dom/media/MediaStreamGraph.cpp
@@ -1910,6 +1910,7 @@ MediaStream::SetGraphImpl(MediaStreamGraphImpl* aGraph)
{
MOZ_ASSERT(!mGraph, "Should only be called once");
mGraph = aGraph;
+ mAudioChannelType = static_cast(aGraph->AudioChannel());
mBuffer.InitGraphRate(aGraph->GraphRate());
}
diff --git a/dom/media/webaudio/AudioContext.cpp b/dom/media/webaudio/AudioContext.cpp
index 352a45f3e52..81033d1cec0 100644
--- a/dom/media/webaudio/AudioContext.cpp
+++ b/dom/media/webaudio/AudioContext.cpp
@@ -300,7 +300,8 @@ AudioContext::CreateMediaElementSource(HTMLMediaElement& aMediaElement,
return nullptr;
}
#endif
- nsRefPtr stream = aMediaElement.MozCaptureStream(aRv);
+ nsRefPtr stream = aMediaElement.MozCaptureStream(aRv,
+ mDestination->Stream()->Graph());
if (aRv.Failed()) {
return nullptr;
}
diff --git a/dom/secureelement/gonk/UiccConnector.js b/dom/secureelement/gonk/UiccConnector.js
index 059e63da02e..b1a38af26a8 100644
--- a/dom/secureelement/gonk/UiccConnector.js
+++ b/dom/secureelement/gonk/UiccConnector.js
@@ -18,7 +18,7 @@
"use strict";
/* globals Components, XPCOMUtils, SE, dump, libcutils, Services,
- iccProvider, SEUtils */
+ iccProvider, iccService, SEUtils */
const { interfaces: Ci, utils: Cu } = Components;
@@ -47,6 +47,10 @@ XPCOMUtils.defineLazyServiceGetter(this, "iccProvider",
"@mozilla.org/ril/content-helper;1",
"nsIIccProvider");
+XPCOMUtils.defineLazyServiceGetter(this, "iccService",
+ "@mozilla.org/icc/iccservice;1",
+ "nsIIccService");
+
const UICCCONNECTOR_CONTRACTID =
"@mozilla.org/secureelement/connector/uicc;1";
const UICCCONNECTOR_CID =
@@ -84,7 +88,8 @@ UiccConnector.prototype = {
_init: function() {
Services.obs.addObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false);
- iccProvider.registerIccMsg(PREFERRED_UICC_CLIENTID, this);
+ let icc = iccService.getIccByServiceId(PREFERRED_UICC_CLIENTID);
+ icc.registerListener(this);
// Update the state in order to avoid race condition.
// By this time, 'notifyCardStateChanged (with proper card state)'
@@ -94,21 +99,22 @@ UiccConnector.prototype = {
_shutdown: function() {
Services.obs.removeObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID);
- iccProvider.unregisterIccMsg(PREFERRED_UICC_CLIENTID, this);
+ let icc = iccService.getIccByServiceId(PREFERRED_UICC_CLIENTID);
+ icc.unregisterListener(this);
},
_updatePresenceState: function() {
- // Consider following Card states as not quite ready for performing
- // IccChannel* related commands
- let notReadyStates = [
- "unknown",
- "illegal",
- "personalizationInProgress",
- "permanentBlocked",
+ let uiccNotReadyStates = [
+ Ci.nsIIcc.CARD_STATE_UNKNOWN,
+ Ci.nsIIcc.CARD_STATE_ILLEGAL,
+ Ci.nsIIcc.CARD_STATE_PERSONALIZATION_IN_PROGRESS,
+ Ci.nsIIcc.CARD_STATE_PERMANENT_BLOCKED,
+ Ci.nsIIcc.CARD_STATE_UNDETECTED
];
- let cardState = iccProvider.getCardState(PREFERRED_UICC_CLIENTID);
+
+ let cardState = iccService.getIccByServiceId(PREFERRED_UICC_CLIENTID).cardState;
this._isPresent = cardState !== null &&
- notReadyStates.indexOf(cardState) == -1;
+ uiccNotReadyStates.indexOf(cardState) == -1;
},
// See GP Spec, 11.1.4 Class Byte Coding
diff --git a/testing/taskcluster/mach_commands.py b/testing/taskcluster/mach_commands.py
index 86e33655883..43de912d2ff 100644
--- a/testing/taskcluster/mach_commands.py
+++ b/testing/taskcluster/mach_commands.py
@@ -221,6 +221,10 @@ class Graph(object):
@CommandArgument('--project',
required=True,
help='Project to use for creating task graph. Example: --project=try')
+ @CommandArgument('--pushlog-id',
+ dest='pushlog_id',
+ required=False,
+ default=0)
@CommandArgument('--owner',
required=True,
help='email address of who owns this graph')
@@ -247,6 +251,8 @@ class Graph(object):
job_graph = parse_commit(message, jobs)
# Template parameters used when expanding the graph
parameters = dict(gaia_info().items() + {
+ 'project': project,
+ 'pushlog_id': params.get('pushlog_id', 0),
'docker_image': docker_image,
'base_repository': params['base_repository'] or \
params['head_repository'],
diff --git a/testing/taskcluster/tasks/build.yml b/testing/taskcluster/tasks/build.yml
index f3973f9a3a2..09006f239ef 100644
--- a/testing/taskcluster/tasks/build.yml
+++ b/testing/taskcluster/tasks/build.yml
@@ -17,6 +17,9 @@ task:
provisionerId: aws-provisioner
schedulerId: task-graph-scheduler
+ routes:
+ - 'index.gecko.v1.{{project}}.revision.{{head_rev}}.{{build_name}}.{{build_type}}'
+ - 'index.gecko.v1.{{project}}.latest.{{build_name}}.{{build_type}}'
scopes:
# Nearly all of our build tasks use tc-vcs so just include the scope across
# the board.
@@ -54,6 +57,8 @@ task:
MOZHARNESS_REF: '{{mozharness_ref}}'
extra:
+ index:
+ rank: {{pushlog_id}}
treeherder:
groupSymbol: tc
groupName: Submitted by taskcluster
diff --git a/testing/taskcluster/tasks/builds/b2g_desktop_debug.yml b/testing/taskcluster/tasks/builds/b2g_desktop_debug.yml
index 46a6d3e3c02..4ac570bad47 100644
--- a/testing/taskcluster/tasks/builds/b2g_desktop_debug.yml
+++ b/testing/taskcluster/tasks/builds/b2g_desktop_debug.yml
@@ -1,6 +1,7 @@
$inherits:
from: 'tasks/builds/b2g_desktop_base.yml'
variables:
+ build_name: 'b2g-desktop'
build_type: 'debug'
task:
diff --git a/testing/taskcluster/tasks/builds/b2g_desktop_opt.yml b/testing/taskcluster/tasks/builds/b2g_desktop_opt.yml
index ffd715035cb..b1ac478c982 100644
--- a/testing/taskcluster/tasks/builds/b2g_desktop_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_desktop_opt.yml
@@ -1,8 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_desktop_base.yml'
variables:
+ build_name: 'b2g-desktop'
build_type: 'opt'
-
task:
scopes:
- 'docker-worker:cache:workspace-b2g-desktop-objects-opt'
diff --git a/testing/taskcluster/tasks/builds/b2g_dolphin_eng.yml b/testing/taskcluster/tasks/builds/b2g_dolphin_eng.yml
index 3b0f3475089..c7b9228a295 100644
--- a/testing/taskcluster/tasks/builds/b2g_dolphin_eng.yml
+++ b/testing/taskcluster/tasks/builds/b2g_dolphin_eng.yml
@@ -15,4 +15,3 @@ task:
extra:
locations:
img: 'private/build/dolphin.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_ics_debug.yml b/testing/taskcluster/tasks/builds/b2g_emulator_ics_debug.yml
index 79922c6a2c5..d9cd3628c01 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_ics_debug.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_ics_debug.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emulator-ics'
+ build_type: 'debug'
task:
workerType: emulator-ics-debug
scopes:
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_ics_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_ics_opt.yml
index 2a7b848bb68..38add4cd8e8 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_ics_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_ics_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_type: 'opt'
+ build_name: 'emulator-ics'
task:
workerType: emulator-ics
scopes:
@@ -18,4 +21,3 @@ task:
env:
TARGET: 'emulator'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_jb_debug.yml b/testing/taskcluster/tasks/builds/b2g_emulator_jb_debug.yml
index b2552df0b02..a6c255a9c8a 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_jb_debug.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_jb_debug.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-jb'
+ build_type: 'debug'
task:
workerType: emulator-jb-debug
scopes:
@@ -22,4 +25,3 @@ task:
env:
TARGET: 'emulator-jb'
B2G_DEBUG: 1
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_jb_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_jb_opt.yml
index 8fa8b1c2a58..675d5044262 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_jb_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_jb_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-jb'
+ build_type: 'opt'
task:
workerType: emulator-jb
scopes:
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_kk_debug.yml b/testing/taskcluster/tasks/builds/b2g_emulator_kk_debug.yml
index 7a4373b237d..3e38ba31173 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_kk_debug.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_kk_debug.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-kk'
+ build_type: 'debug'
task:
workerType: emulator-kk-debug
scopes:
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_kk_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_kk_opt.yml
index e9fca4c86ff..037e86842ef 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_kk_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_kk_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-kk'
+ build_type: 'opt'
task:
workerType: emulator-kk
scopes:
@@ -22,4 +25,3 @@ task:
workspace-emulator-kk-opt: /home/worker/workspace
env:
TARGET: 'emulator-kk'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_l_debug.yml b/testing/taskcluster/tasks/builds/b2g_emulator_l_debug.yml
index b2809d0c5ad..277aed3aacd 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_l_debug.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_l_debug.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-l'
+ build_type: 'opt'
task:
workerType: emulator-l-debug
scopes:
@@ -25,4 +28,3 @@ task:
env:
TARGET: 'emulator-l'
B2G_DEBUG: 1
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_l_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_l_opt.yml
index ca9e480e5ce..03214fb0eb4 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_l_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_l_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-l'
+ build_type: 'opt'
task:
workerType: emulator-l
scopes:
@@ -22,5 +25,3 @@ task:
workspace-emulator-l-opt: /home/worker/workspace
env:
TARGET: 'emulator-l'
-
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_x86_base.yml b/testing/taskcluster/tasks/builds/b2g_emulator_x86_base.yml
index a02597a1c87..b67f55fe9a3 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_x86_base.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_x86_base.yml
@@ -31,4 +31,3 @@ task:
tests: 'public/build/b2g-tests.zip'
symbols: 'public/build/b2g-crashreporter-symbols.zip'
sources: 'public/build/sources.xml'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_x86_kk_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_x86_kk_opt.yml
index 77a5ddc1143..45bfd64a068 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_x86_kk_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_x86_kk_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_x86_base.yml'
+ variables:
+ build_name: 'emualtor-x86-kk'
+ build_type: 'opt'
task:
workerType: emualtor-x86-kk
scopes:
diff --git a/testing/taskcluster/tasks/builds/b2g_emulator_x86_l_opt.yml b/testing/taskcluster/tasks/builds/b2g_emulator_x86_l_opt.yml
index 01efe5c6b4f..4c928124431 100644
--- a/testing/taskcluster/tasks/builds/b2g_emulator_x86_l_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_emulator_x86_l_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_emulator_base.yml'
+ variables:
+ build_name: 'emualtor-x86-l'
+ build_type: 'opt'
task:
workerType: emulator-l
scopes:
@@ -29,6 +32,3 @@ task:
workspace-emulator-l-x86-opt: /home/worker/workspace
env:
TARGET: 'emulator-x86-l'
-
-
-
diff --git a/testing/taskcluster/tasks/builds/b2g_flame_kk_eng.yml b/testing/taskcluster/tasks/builds/b2g_flame_kk_eng.yml
index 166ea5d74ca..d8f52a507ee 100644
--- a/testing/taskcluster/tasks/builds/b2g_flame_kk_eng.yml
+++ b/testing/taskcluster/tasks/builds/b2g_flame_kk_eng.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'flame-kk-eng'
+ build_type: 'opt'
task:
workerType: flame-kk
scopes:
diff --git a/testing/taskcluster/tasks/builds/b2g_flame_kk_nightly.yml b/testing/taskcluster/tasks/builds/b2g_flame_kk_nightly.yml
index 63b4559e70e..40451b85d97 100644
--- a/testing/taskcluster/tasks/builds/b2g_flame_kk_nightly.yml
+++ b/testing/taskcluster/tasks/builds/b2g_flame_kk_nightly.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'flame-kk-nightly'
+ build_type: 'opt'
task:
workerType: flame-kk
scopes:
@@ -29,4 +32,3 @@ task:
locations:
img: 'private/build/flame-kk.zip'
mar: 'public/build/b2g-flame-gecko-update.mar'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_flame_kk_opt.yml b/testing/taskcluster/tasks/builds/b2g_flame_kk_opt.yml
index b9ad6fd1343..a93f3b0c583 100644
--- a/testing/taskcluster/tasks/builds/b2g_flame_kk_opt.yml
+++ b/testing/taskcluster/tasks/builds/b2g_flame_kk_opt.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'flame-kk'
+ build_type: 'opt'
task:
workerType: flame-kk
scopes:
@@ -27,4 +30,3 @@ task:
platform: b2g-device-image
locations:
img: 'private/build/flame-kk.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_hamachi_eng.yml b/testing/taskcluster/tasks/builds/b2g_hamachi_eng.yml
index 5971e9bcff3..b205ac0fce7 100644
--- a/testing/taskcluster/tasks/builds/b2g_hamachi_eng.yml
+++ b/testing/taskcluster/tasks/builds/b2g_hamachi_eng.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'hamachi-eng'
+ build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:build-hamachi-eng'
@@ -15,4 +18,3 @@ task:
extra:
locations:
img: 'private/build/hamachi.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_hamachi_user.yml b/testing/taskcluster/tasks/builds/b2g_hamachi_user.yml
index b41b91ddb21..08502e99d94 100644
--- a/testing/taskcluster/tasks/builds/b2g_hamachi_user.yml
+++ b/testing/taskcluster/tasks/builds/b2g_hamachi_user.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'hamachi'
+ build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:build-hamachi-user'
@@ -14,4 +17,3 @@ task:
extra:
locations:
img: 'private/build/hamachi.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_helix_user.yml b/testing/taskcluster/tasks/builds/b2g_helix_user.yml
index 8841fd2d236..89f698af331 100644
--- a/testing/taskcluster/tasks/builds/b2g_helix_user.yml
+++ b/testing/taskcluster/tasks/builds/b2g_helix_user.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'helix'
+ build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:build-helix-user'
@@ -14,4 +17,3 @@ task:
extra:
locations:
img: 'private/build/helix.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_nexus4_eng.yml b/testing/taskcluster/tasks/builds/b2g_nexus4_eng.yml
index 494d4c587d7..21d7fe2bf31 100644
--- a/testing/taskcluster/tasks/builds/b2g_nexus4_eng.yml
+++ b/testing/taskcluster/tasks/builds/b2g_nexus4_eng.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'nexus-4-eng'
+ build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:build-nexus-4-eng'
@@ -14,4 +17,3 @@ task:
extra:
locations:
img: 'private/build/nexus-4.zip'
-
diff --git a/testing/taskcluster/tasks/builds/b2g_nexus4_user.yml b/testing/taskcluster/tasks/builds/b2g_nexus4_user.yml
index 2f13f39c8e8..b2a00d5fb4a 100644
--- a/testing/taskcluster/tasks/builds/b2g_nexus4_user.yml
+++ b/testing/taskcluster/tasks/builds/b2g_nexus4_user.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
+ variables:
+ build_name: 'nexus-4-user'
+ build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:build-nexus-4-user'
@@ -21,4 +24,3 @@ task:
platform: b2g-device-image
locations:
img: 'private/build/nexus-4.zip'
-
diff --git a/testing/taskcluster/tasks/builds/mulet_linux.yml b/testing/taskcluster/tasks/builds/mulet_linux.yml
index c753568c753..b62cbdd867e 100644
--- a/testing/taskcluster/tasks/builds/mulet_linux.yml
+++ b/testing/taskcluster/tasks/builds/mulet_linux.yml
@@ -1,5 +1,8 @@
$inherits:
from: 'tasks/build.yml'
+ variables:
+ build_name: 'mulet'
+ build_type: 'opt'
task:
metadata:
name: '[TC] Mulet Linux'
diff --git a/testing/taskcluster/tasks/decision/branch.yml b/testing/taskcluster/tasks/decision/branch.yml
index cf2227d709b..c83ec4c7a87 100644
--- a/testing/taskcluster/tasks/decision/branch.yml
+++ b/testing/taskcluster/tasks/decision/branch.yml
@@ -67,6 +67,7 @@ tasks:
- >
source ./bin/decision.sh &&
./mach taskcluster-graph
+ --pushlog-id='{{pushlog_id}}'
--message='{{comment}}'
--project='{{project}}'
--owner='{{owner}}'
@@ -78,4 +79,3 @@ tasks:
extra:
treeherder:
symbol: D
-
diff --git a/testing/taskcluster/tasks/decision/try.yml b/testing/taskcluster/tasks/decision/try.yml
index fc310c3e34b..241e6c51532 100644
--- a/testing/taskcluster/tasks/decision/try.yml
+++ b/testing/taskcluster/tasks/decision/try.yml
@@ -73,6 +73,7 @@ tasks:
checkout-gecko workspace &&
cd workspace/gecko &&
./mach taskcluster-graph
+ --pushlog-id='{{pushlog_id}}'
--project='{{project}}'
--message='{{comment}}'
--owner='{{owner}}'
@@ -84,4 +85,3 @@ tasks:
extra:
treeherder:
symbol: D
-
diff --git a/widget/gonk/GeckoTouchDispatcher.cpp b/widget/gonk/GeckoTouchDispatcher.cpp
index 3caabd7c9e2..24053ef7623 100644
--- a/widget/gonk/GeckoTouchDispatcher.cpp
+++ b/widget/gonk/GeckoTouchDispatcher.cpp
@@ -169,7 +169,6 @@ GeckoTouchDispatcher::DispatchTouchMoveEvents(TimeStamp aVsyncTime)
{
MutexAutoLock lock(mTouchQueueLock);
if (!mHavePendingTouchMoves) {
- MOZ_ASSERT(mTouchMoveEvents.empty());
return;
}
mHavePendingTouchMoves = false;