From be76c082e010689ad929b715de3fd093e94fc6e1 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 21 Dec 2016 12:02:24 +1100 Subject: [PATCH 01/94] Bug 1323983 part 1 - Ensure to release the pointer even if the document has been detached. r=smaug MozReview-Commit-ID: FY5lDQBYl6U --HG-- extra : rebase_source : 47159f623c46549b48c786b28b5c00c246288076 --- dom/base/nsDocument.cpp | 9 ++++++++- dom/events/EventStateManager.cpp | 10 +++++----- dom/events/EventStateManager.h | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index ceddff0edf41..c928e6067d07 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -11703,6 +11703,13 @@ nsDocument::SetPointerLock(Element* aElement, int aCursorStyle) nsIPresShell* shell = GetShell(); if (!shell) { NS_WARNING("SetPointerLock(): No PresShell"); + if (!aElement) { + // If we are unlocking pointer lock, but for some reason the doc + // has already detached from the presshell, just ask the event + // state manager to release the pointer. + EventStateManager::SetPointerLock(nullptr, nullptr); + return true; + } return false; } nsPresContext* presContext = shell->GetPresContext(); @@ -11728,7 +11735,7 @@ nsDocument::SetPointerLock(Element* aElement, int aCursorStyle) RefPtr esm = presContext->EventStateManager(); esm->SetCursor(aCursorStyle, nullptr, false, 0.0f, 0.0f, widget, true); - esm->SetPointerLock(widget, aElement); + EventStateManager::SetPointerLock(widget, aElement); return true; } diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp index 7ba904ab8eaa..ad55b20b900a 100644 --- a/dom/events/EventStateManager.cpp +++ b/dom/events/EventStateManager.cpp @@ -268,6 +268,7 @@ bool EventStateManager::sNormalLMouseEventInProcess = false; EventStateManager* EventStateManager::sActiveESM = nullptr; nsIDocument* EventStateManager::sMouseOverDocument = nullptr; nsWeakFrame EventStateManager::sLastDragOverFrame = nullptr; +LayoutDeviceIntPoint EventStateManager::sPreLockPoint = LayoutDeviceIntPoint(0, 0); LayoutDeviceIntPoint EventStateManager::sLastRefPoint = kInvalidRefPoint; CSSIntPoint EventStateManager::sLastScreenPoint = CSSIntPoint(0, 0); LayoutDeviceIntPoint EventStateManager::sSynthCenteringPoint = kInvalidRefPoint; @@ -290,7 +291,6 @@ EventStateManager::DeltaAccumulator* EventStateManager::EventStateManager() : mLockCursor(0) , mLastFrameConsumedSetCursor(false) - , mPreLockPoint(0,0) , mCurrentTarget(nullptr) // init d&d gesture state machine variables , mGestureDownPoint(0,0) @@ -4357,7 +4357,7 @@ EventStateManager::GetWrapperByEventID(WidgetMouseEvent* aEvent) return helper; } -void +/* static */ void EventStateManager::SetPointerLock(nsIWidget* aWidget, nsIContent* aElement) { @@ -4375,7 +4375,7 @@ EventStateManager::SetPointerLock(nsIWidget* aWidget, MOZ_ASSERT(aWidget, "Locking pointer requires a widget"); // Store the last known ref point so we can reposition the pointer after unlock. - mPreLockPoint = sLastRefPoint; + sPreLockPoint = sLastRefPoint; // Fire a synthetic mouse move to ensure event state is updated. We first // set the mouse to the center of the window, so that the mouse event @@ -4393,13 +4393,13 @@ EventStateManager::SetPointerLock(nsIWidget* aWidget, // synthetic mouse event. We first reset sLastRefPoint to its // pre-pointerlock position, so that the synthetic mouse event reports // no movement. - sLastRefPoint = mPreLockPoint; + sLastRefPoint = sPreLockPoint; // Reset SynthCenteringPoint to invalid so that next time we start // locking pointer, it has its initial value. sSynthCenteringPoint = kInvalidRefPoint; if (aWidget) { aWidget->SynthesizeNativeMouseMove( - mPreLockPoint + aWidget->WidgetToScreenOffset(), nullptr); + sPreLockPoint + aWidget->WidgetToScreenOffset(), nullptr); } // Unsuppress DnD diff --git a/dom/events/EventStateManager.h b/dom/events/EventStateManager.h index 3908c2d7e19d..54fd061e5699 100644 --- a/dom/events/EventStateManager.h +++ b/dom/events/EventStateManager.h @@ -921,7 +921,7 @@ private: // Last mouse event mRefPoint (the offset from the widget's origin in // device pixels) when mouse was locked, used to restore mouse position // after unlocking. - LayoutDeviceIntPoint mPreLockPoint; + static LayoutDeviceIntPoint sPreLockPoint; // Stores the mRefPoint of the last synthetic mouse move we dispatched // to re-center the mouse when we were pointer locked. If this is (-1,-1) it @@ -1015,7 +1015,7 @@ public: void KillClickHoldTimer(); void FireContextClick(); - void SetPointerLock(nsIWidget* aWidget, nsIContent* aElement) ; + static void SetPointerLock(nsIWidget* aWidget, nsIContent* aElement) ; static void sClickHoldCallback ( nsITimer* aTimer, void* aESM ) ; }; From bd41ce75cfd5fbd3b5be0c9777760a48200961c1 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Mon, 19 Dec 2016 17:29:48 +1100 Subject: [PATCH 02/94] Bug 1323983 part 2 - Avoid sending response for native synthesis if there is no observer. r=smaug MozReview-Commit-ID: 4skR41IaOs7 --HG-- extra : rebase_source : 4bc50c6f6723114c417471e27b4d5d35bb0e0c75 --- dom/ipc/TabParent.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp index 03a8aac15f23..f477a233bd9c 100644 --- a/dom/ipc/TabParent.cpp +++ b/dom/ipc/TabParent.cpp @@ -1248,8 +1248,9 @@ public: const char* aTopic, const char16_t* aData) override { - if (!mTabParent) { - // We already sent the notification + if (!mTabParent || !mObserverId) { + // We already sent the notification, or we don't actually need to + // send any notification at all. return NS_OK; } From 5e43077df6e47e7125267f0213748b39e77eacd6 Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Mon, 19 Dec 2016 18:18:21 +1100 Subject: [PATCH 03/94] Bug 1323983 part 3 - Add test for closing window while holding pointerlock. r=smaug MozReview-Commit-ID: 7f1su4afmnd --HG-- extra : rebase_source : 473b95205b23b9cf555a333048a1e5c45a9ba92c --- dom/tests/mochitest/pointerlock/mochitest.ini | 10 ++-- .../test_closewindow-with-pointerlock.html | 51 +++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 dom/tests/mochitest/pointerlock/test_closewindow-with-pointerlock.html diff --git a/dom/tests/mochitest/pointerlock/mochitest.ini b/dom/tests/mochitest/pointerlock/mochitest.ini index 106120dcb4c8..1d9e92cbcfaf 100644 --- a/dom/tests/mochitest/pointerlock/mochitest.ini +++ b/dom/tests/mochitest/pointerlock/mochitest.ini @@ -1,4 +1,10 @@ [DEFAULT] +skip-if = toolkit == 'android' + +[test_closewindow-with-pointerlock.html] + +[test_pointerlock-api.html] +tags = fullscreen support-files = pointerlock_utils.js file_pointerlock-api.html @@ -20,7 +26,3 @@ support-files = file_allowPointerLockSandboxFlag.html file_changeLockElement.html iframe_differentDOM.html - -[test_pointerlock-api.html] -tags = fullscreen -skip-if = toolkit == 'android' diff --git a/dom/tests/mochitest/pointerlock/test_closewindow-with-pointerlock.html b/dom/tests/mochitest/pointerlock/test_closewindow-with-pointerlock.html new file mode 100644 index 000000000000..797228c3e04d --- /dev/null +++ b/dom/tests/mochitest/pointerlock/test_closewindow-with-pointerlock.html @@ -0,0 +1,51 @@ + + + + + Bug 1323983 - Auto-close window after holding pointerlock + + + + + + + + From 428eb34b95e6e7463c4a39ed639ea016807e3d1b Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Tue, 20 Dec 2016 15:41:42 +0100 Subject: [PATCH 04/94] Bug 1323952 - Add compact tabs experiment. r=ahunt,nechen MozReview-Commit-ID: DSoEm62tLRW --HG-- extra : rebase_source : 9e986517eeeaf95d0b4eb3b2ed0b393e11534eaf --- mobile/android/base/java/org/mozilla/gecko/Experiments.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mobile/android/base/java/org/mozilla/gecko/Experiments.java b/mobile/android/base/java/org/mozilla/gecko/Experiments.java index e71bb4c52f76..99b2222a0bd2 100644 --- a/mobile/android/base/java/org/mozilla/gecko/Experiments.java +++ b/mobile/android/base/java/org/mozilla/gecko/Experiments.java @@ -59,6 +59,9 @@ public class Experiments { // Make new activity stream panel available (to replace top sites) (Bug 1313316) public static final String ACTIVITY_STREAM = "activity-stream"; + // Tabs tray: Arrange tabs in two columns in portrait mode + public static final String COMPACT_TABS = "compact-tabs"; + /** * Returns if a user is in certain local experiment. * @param experiment Name of experiment to look up From b03a7aaf91ff59ee46f6eb663c4ce6fa82b857e1 Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Tue, 20 Dec 2016 15:43:12 +0100 Subject: [PATCH 05/94] Bug 1323952 - Tabs panel: Update default based on compact tabs experiment. r=ahunt,nechen MozReview-Commit-ID: GTJ3YMLvHup --HG-- extra : rebase_source : 6a20a286d230e363989e79d2d10b96268b06770a --- .../base/java/org/mozilla/gecko/tabs/TabsPanel.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/tabs/TabsPanel.java b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsPanel.java index 8cdc743a1714..fdab37ff04c8 100644 --- a/mobile/android/base/java/org/mozilla/gecko/tabs/TabsPanel.java +++ b/mobile/android/base/java/org/mozilla/gecko/tabs/TabsPanel.java @@ -7,6 +7,7 @@ package org.mozilla.gecko.tabs; import android.support.v4.content.ContextCompat; import org.mozilla.gecko.AppConstants.Versions; +import org.mozilla.gecko.Experiments; import org.mozilla.gecko.GeckoApp; import org.mozilla.gecko.GeckoApplication; import org.mozilla.gecko.GeckoSharedPrefs; @@ -42,6 +43,9 @@ import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.RelativeLayout; + +import com.keepsafe.switchboard.SwitchBoard; + import org.mozilla.gecko.widget.themed.ThemedImageButton; public class TabsPanel extends LinearLayout @@ -85,7 +89,8 @@ public class TabsPanel extends LinearLayout return new AutoFitTabsGridLayout(context, attrs); } else { // Phone in portrait mode. - if (GeckoSharedPrefs.forApp(context).getBoolean(GeckoPreferences.PREFS_COMPACT_TABS, false)) { + if (GeckoSharedPrefs.forApp(context).getBoolean(GeckoPreferences.PREFS_COMPACT_TABS, + SwitchBoard.isInExperiment(context, Experiments.COMPACT_TABS))) { return new CompactTabsGridLayout(context, attrs); } else { return new TabsListLayout(context, attrs); From 950d0c704a3b2c638f9b0b54b20a96682c68f90f Mon Sep 17 00:00:00 2001 From: Sebastian Kaspari Date: Tue, 20 Dec 2016 19:28:08 +0100 Subject: [PATCH 06/94] Bug 1323952 - Preferences: Set default 'compact tabs' value based on experiment. r=ahunt,nechen MozReview-Commit-ID: EbE1Lrk90bc --HG-- extra : rebase_source : 6f9511ec1dc24abba3222cf95370e46141e3994e --- .../gecko/preferences/GeckoPreferences.java | 19 +++++++++++++++---- .../resources/xml/preferences_general.xml | 4 +--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/preferences/GeckoPreferences.java b/mobile/android/base/java/org/mozilla/gecko/preferences/GeckoPreferences.java index f477c5eb6aa9..e56903c52a99 100644 --- a/mobile/android/base/java/org/mozilla/gecko/preferences/GeckoPreferences.java +++ b/mobile/android/base/java/org/mozilla/gecko/preferences/GeckoPreferences.java @@ -15,6 +15,7 @@ import org.mozilla.gecko.BrowserLocaleManager; import org.mozilla.gecko.DataReportingNotification; import org.mozilla.gecko.DynamicToolbar; import org.mozilla.gecko.EventDispatcher; +import org.mozilla.gecko.Experiments; import org.mozilla.gecko.GeckoActivityStatus; import org.mozilla.gecko.GeckoApp; import org.mozilla.gecko.GeckoAppShell; @@ -93,6 +94,8 @@ import android.widget.LinearLayout; import android.widget.ListAdapter; import android.widget.ListView; +import com.keepsafe.switchboard.SwitchBoard; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -884,10 +887,18 @@ public class GeckoPreferences preferences.removePreference(pref); i--; continue; - } else if (PREFS_COMPACT_TABS.equals(key) && HardwareUtils.isTablet()) { - preferences.removePreference(pref); - i--; - continue; + } else if (PREFS_COMPACT_TABS.equals(key)) { + if (HardwareUtils.isTablet()) { + preferences.removePreference(pref); + i--; + continue; + } else { + final boolean value = GeckoSharedPrefs.forApp(this).getBoolean(GeckoPreferences.PREFS_COMPACT_TABS, + SwitchBoard.isInExperiment(this, Experiments.COMPACT_TABS)); + + pref.setDefaultValue(value); + ((SwitchPreference) pref).setChecked(value); + } } // Some Preference UI elements are not actually preferences, diff --git a/mobile/android/base/resources/xml/preferences_general.xml b/mobile/android/base/resources/xml/preferences_general.xml index e8f566aaa2a9..3dc1f4d33010 100644 --- a/mobile/android/base/resources/xml/preferences_general.xml +++ b/mobile/android/base/resources/xml/preferences_general.xml @@ -35,9 +35,7 @@ + android:summary="@string/pref_compact_tabs_summary" /> From d25e2f154e331c6e22d03d8d82f9e284796e2e1e Mon Sep 17 00:00:00 2001 From: cku Date: Wed, 21 Dec 2016 16:21:23 +0800 Subject: [PATCH 07/94] Bug 1324809 - Part 1. Fix wrong clip region while painting filter. r=mstange MozReview-Commit-ID: Cqjo7VwtnlK --HG-- extra : rebase_source : 0473eb6a9297d0cf0dee3e2e7b1e5f1ac8740bb1 --- layout/svg/nsSVGIntegrationUtils.cpp | 29 +++++++++------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/layout/svg/nsSVGIntegrationUtils.cpp b/layout/svg/nsSVGIntegrationUtils.cpp index 70e1c8acdd6b..f90a9c2a0a51 100644 --- a/layout/svg/nsSVGIntegrationUtils.cpp +++ b/layout/svg/nsSVGIntegrationUtils.cpp @@ -665,13 +665,10 @@ ValidateSVGFrame(nsIFrame* aFrame) * and the bounding box of aFrame. * @oaram aOffsetToUserSpace returns the offset between the reference frame and * the user space coordinate of aFrame. - * @param aClipCtx indicate whether clip aParams.ctx by visual overflow rect of - * aFrame or not. */ static void SetupContextMatrix(nsIFrame* aFrame, const PaintFramesParams& aParams, - nsPoint& aOffsetToBoundingBox, nsPoint& aOffsetToUserSpace, - bool aClipCtx) + nsPoint& aOffsetToBoundingBox, nsPoint& aOffsetToUserSpace) { aOffsetToBoundingBox = aParams.builder->ToReferenceFrame(aFrame) - nsSVGIntegrationUtils::GetOffsetToBoundingBox(aFrame); @@ -691,7 +688,7 @@ SetupContextMatrix(nsIFrame* aFrame, const PaintFramesParams& aParams, // frame's BBox lives. // SVG geometry frames and foreignObject frames apply their own offsets, so // their position is relative to their user space. So for these frame types, - // if we want aCtx to be in user space, we first need to subtract the + // if we want aParams.ctx to be in user space, we first need to subtract the // frame's position so that SVG painting can later add it again and the // frame is painted in the right place. @@ -713,14 +710,6 @@ SetupContextMatrix(nsIFrame* aFrame, const PaintFramesParams& aParams, aFrame->PresContext()->AppUnitsPerDevPixel()); gfxContext& context = aParams.ctx; context.SetMatrix(context.CurrentMatrix().Translate(devPixelOffsetToUserSpace)); - - if (aClipCtx) { - nsRect clipRect = - aParams.frame->GetVisualOverflowRectRelativeToSelf() + toUserSpace; - context.Clip(NSRectToSnappedRect(clipRect, - aFrame->PresContext()->AppUnitsPerDevPixel(), - *context.GetDrawTarget())); - } } bool @@ -797,7 +786,7 @@ nsSVGIntegrationUtils::PaintMask(const PaintFramesParams& aParams) matSR.SetContext(&ctx); SetupContextMatrix(frame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); nsTArray maskFrames = effectProperties.GetMaskFrames(); bool opacityApplied = !HasNonSVGMask(maskFrames); result = PaintMaskSurface(aParams, maskTarget, @@ -815,7 +804,7 @@ nsSVGIntegrationUtils::PaintMask(const PaintFramesParams& aParams) matSR.SetContext(&ctx); SetupContextMatrix(firstFrame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); Matrix clipMaskTransform; gfxMatrix cssPxToDevPxMatrix = GetCSSPxToDevPxMatrix(frame); @@ -904,7 +893,7 @@ nsSVGIntegrationUtils::PaintMaskAndClipPath(const PaintFramesParams& aParams) // so we setup context matrix by the position of the current frame, // instead of the first continuation frame. SetupContextMatrix(frame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); MaskPaintResult paintResult = CreateAndPaintMaskSurface(aParams, maskUsage.opacity, firstFrame->StyleContext(), @@ -929,7 +918,7 @@ nsSVGIntegrationUtils::PaintMaskAndClipPath(const PaintFramesParams& aParams) matSR.SetContext(&context); SetupContextMatrix(firstFrame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); Matrix clipMaskTransform; DrawResult clipMaskResult; RefPtr clipMaskSurface; @@ -957,7 +946,7 @@ nsSVGIntegrationUtils::PaintMaskAndClipPath(const PaintFramesParams& aParams) matSR.SetContext(&context); SetupContextMatrix(firstFrame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); shouldPushMask = true; } @@ -984,7 +973,7 @@ nsSVGIntegrationUtils::PaintMaskAndClipPath(const PaintFramesParams& aParams) gfxContextMatrixAutoSaveRestore matSR(&context); SetupContextMatrix(firstFrame, aParams, offsetToBoundingBox, - offsetToUserSpace, false); + offsetToUserSpace); MOZ_ASSERT(!maskUsage.shouldApplyClipPath || !maskUsage.shouldApplyBasicShape); @@ -1062,7 +1051,7 @@ nsSVGIntegrationUtils::PaintFilter(const PaintFramesParams& aParams) gfxContextAutoSaveRestore autoSR(&context); SetupContextMatrix(firstFrame, aParams, offsetToBoundingBox, - offsetToUserSpace, true); + offsetToUserSpace); if (opacity != 1.0f) { context.PushGroupForBlendBack(gfxContentType::COLOR_ALPHA, opacity, From 2a9fd5cd2a325480f46316a87879332eaad9040a Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Wed, 14 Dec 2016 09:41:33 -0800 Subject: [PATCH 08/94] Bug 1323468, part 1 - Remove some unused variables from genTransitionFunc. r=kanru MozReview-Commit-ID: 7aoV1jcO5Sn --HG-- extra : rebase_source : f184797c0408890f0360651e8c233cef89896515 --- ipc/ipdl/ipdl/lower.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/ipc/ipdl/ipdl/lower.py b/ipc/ipdl/ipdl/lower.py index ee5b3a5021e6..780dc5f80909 100644 --- a/ipc/ipdl/ipdl/lower.py +++ b/ipc/ipdl/ipdl/lower.py @@ -1662,8 +1662,6 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): def genTransitionFunc(self): ptype = self.protocol.decl.type - usesend, sendvar = set(), ExprVar('Send__') - userecv, recvvar = set(), ExprVar('Recv__') # bool Transition(Trigger trigger, State* next) # The state we are transitioning from is stored in *next. @@ -1719,17 +1717,6 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): StmtReturn(ExprLiteral.FALSE) ]) fromswitch.addcase(DefaultLabel(), unreachedblock) - if usesend: - transitionfunc.addstmt( - StmtDecl(Decl(Type('int32_t', const=1), sendvar.name), - init=ExprVar('mozilla::ipc::Trigger::Send'))) - if userecv: - transitionfunc.addstmt( - StmtDecl(Decl(Type('int32_t', const=1), recvvar.name), - init=ExprVar('mozilla::ipc::Trigger::Recv'))) - if usesend or userecv: - transitionfunc.addstmt(Whitespace.NL) - transitionfunc.addstmt(StmtDecl(Decl(Type('State'), fromvar.name), init=ExprDeref(nextvar))) transitionfunc.addstmt(fromswitch) From 888e432b17eaa65db64e4f2040f1d6ff2682a759 Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Wed, 14 Dec 2016 10:09:47 -0800 Subject: [PATCH 09/94] Bug 1323468, part 2 - Pass the message id directly to Transition and eliminate Trigger. r=kanru MozReview-Commit-ID: GU3lXP3eRh6 --HG-- extra : rebase_source : c01247a988cc80cf2739c10a44dc0a971495e528 --- ipc/glue/ProtocolUtils.h | 20 -------------------- ipc/ipdl/ipdl/lower.py | 37 +++++++++++++------------------------ 2 files changed, 13 insertions(+), 44 deletions(-) diff --git a/ipc/glue/ProtocolUtils.h b/ipc/glue/ProtocolUtils.h index 3e5c2c6d195e..1fbee0a4d6e3 100644 --- a/ipc/glue/ProtocolUtils.h +++ b/ipc/glue/ProtocolUtils.h @@ -117,26 +117,6 @@ struct ActorHandle int mId; }; -// Used internally to represent a "trigger" that might cause a state -// transition. Triggers are normalized across parent+child to Send -// and Recv (instead of child-in, child-out, parent-in, parent-out) so -// that they can share the same state machine implementation. To -// further normalize, |Send| is used for 'call', |Recv| for 'answer'. -struct Trigger -{ - enum Action { Send, Recv }; - - Trigger(Action action, int32_t msg) : - mAction(action), - mMessage(msg) - { - MOZ_ASSERT(0 <= msg && msg < INT32_MAX); - } - - uint32_t mAction : 1; - uint32_t mMessage : 31; -}; - // What happens if Interrupt calls race? enum RacyInterruptPolicy { RIPError, diff --git a/ipc/ipdl/ipdl/lower.py b/ipc/ipdl/ipdl/lower.py index 780dc5f80909..86757ac43ceb 100644 --- a/ipc/ipdl/ipdl/lower.py +++ b/ipc/ipdl/ipdl/lower.py @@ -1663,16 +1663,15 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): def genTransitionFunc(self): ptype = self.protocol.decl.type - # bool Transition(Trigger trigger, State* next) + # bool Transition(MessageType msg, State* next) # The state we are transitioning from is stored in *next. fromvar = ExprVar('from') - triggervar = ExprVar('trigger') + msgtypevar = ExprVar('msg') nextvar = ExprVar('next') - msgexpr = ExprSelect(triggervar, '.', 'mMessage') transitionfunc = FunctionDefn(FunctionDecl( 'Transition', - params=[ Decl(Type('mozilla::ipc::Trigger'), triggervar.name), + params=[ Decl(Type('MessageType'), msgtypevar.name), Decl(Type('State', ptr=1), nextvar.name) ], ret=Type.BOOL)) @@ -1681,7 +1680,7 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): # special cases for Null and Error nullerrorblock = Block() if ptype.hasDelete: - ifdelete = StmtIf(ExprBinary(_deleteId(), '==', msgexpr)) + ifdelete = StmtIf(ExprBinary(_deleteId(), '==', msgtypevar)) if ptype.hasReentrantDelete: nextState = _dyingState() else: @@ -1703,7 +1702,7 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): # special case for Dying if ptype.hasReentrantDelete: dyingblock = Block() - ifdelete = StmtIf(ExprBinary(_deleteReplyId(), '==', msgexpr)) + ifdelete = StmtIf(ExprBinary(_deleteReplyId(), '==', msgtypevar)) ifdelete.addifstmt( StmtExpr(ExprAssn(ExprDeref(nextvar), _deadState()))) dyingblock.addstmt(ifdelete) @@ -2429,7 +2428,6 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): Typedef(Type('base::ProcessHandle'), 'ProcessHandle'), Typedef(Type('mozilla::ipc::MessageChannel'), 'MessageChannel'), Typedef(Type('mozilla::ipc::SharedMemory'), 'SharedMemory'), - Typedef(Type('mozilla::ipc::Trigger'), 'Trigger'), ] @@ -4110,7 +4108,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): method.addstmt(ifsendok) if self.protocol.decl.type.hasReentrantDelete: - method.addstmts(self.transition(md, 'in', actor.var(), reply=True)) + method.addstmts(self.transition(md, actor.var(), reply=True)) method.addstmts( self.dtorEpilogue(md, actor.var()) @@ -4192,7 +4190,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): idvar, saveIdStmts = self.saveActorId(md) case.addstmts( stmts - + self.transition(md, 'in') + + self.transition(md) + [ StmtDecl(Decl(r.bareType(self.side), r.var().name)) for r in md.returns ] # alloc the actor, register it under the foreign ID @@ -4222,7 +4220,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): idvar, saveIdStmts = self.saveActorId(md) case.addstmts( stmts - + self.transition(md, 'in') + + self.transition(md) + [ StmtDecl(Decl(r.bareType(self.side), r.var().name)) for r in md.returns ] + self.invokeRecvHandler(md, implicit=0) @@ -4248,7 +4246,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): idvar, saveIdStmts = self.saveActorId(md) case.addstmts( stmts - + self.transition(md, 'in') + + self.transition(md) + [ StmtDecl(Decl(r.bareType(self.side), r.var().name)) for r in md.returns ] + saveIdStmts @@ -4445,7 +4443,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): ([ Whitespace.NL, self.logMessage(md, msgexpr, 'Sending ', actor), self.profilerLabel(md) ] - + self.transition(md, 'out', actor) + + self.transition(md, actor) + [ Whitespace.NL, StmtDecl(Decl(Type.BOOL, sendok.name), init=ExprCall( @@ -4462,7 +4460,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): ([ Whitespace.NL, self.logMessage(md, msgexpr, 'Sending ', actor), self.profilerLabel(md) ] - + self.transition(md, 'out', actor) + + self.transition(md, actor) + [ Whitespace.NL, StmtDecl( Decl(Type.BOOL, sendok.name), @@ -4561,24 +4559,15 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): saveIdStmts = [ ] return idvar, saveIdStmts - def transition(self, md, direction, actor=None, reply=False): + def transition(self, md, actor=None, reply=False): if actor is not None: stateexpr = _actorState(actor) else: stateexpr = self.protocol.stateVar() - if (self.side is 'parent' and direction is 'out' - or self.side is 'child' and direction is 'in'): - action = ExprVar('Trigger::Send') - elif (self.side is 'parent' and direction is 'in' - or self.side is 'child' and direction is 'out'): - action = ExprVar('Trigger::Recv') - else: assert 0 and 'unknown combo %s/%s'% (self.side, direction) - msgid = md.pqMsgId() if not reply else md.pqReplyId() ifbad = StmtIf(ExprNot( ExprCall( ExprVar(self.protocol.name +'::Transition'), - args=[ ExprCall(ExprVar('Trigger'), - args=[ action, ExprVar(msgid) ]), + args=[ ExprVar(msgid), ExprAddrOf(stateexpr) ]))) ifbad.addifstmts(_badTransition()) return [ ifbad ] From d0dc5ef0a47f09bc2817e976fe4de781f35e139e Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Wed, 14 Dec 2016 10:27:22 -0800 Subject: [PATCH 10/94] Bug 1323468, part 3 - Change the return type of Transition to void. r=kanru This function either crashes or returns true. MozReview-Commit-ID: IX2MPbgLal0 --HG-- extra : rebase_source : f199280e2670c2d28357ea67523ae0336c160551 --- ipc/ipdl/ipdl/lower.py | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/ipc/ipdl/ipdl/lower.py b/ipc/ipdl/ipdl/lower.py index 86757ac43ceb..bce3d6fda4ed 100644 --- a/ipc/ipdl/ipdl/lower.py +++ b/ipc/ipdl/ipdl/lower.py @@ -1673,11 +1673,11 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): 'Transition', params=[ Decl(Type('MessageType'), msgtypevar.name), Decl(Type('State', ptr=1), nextvar.name) ], - ret=Type.BOOL)) + ret=Type.VOID)) fromswitch = StmtSwitch(fromvar) - # special cases for Null and Error + # special case for Null nullerrorblock = Block() if ptype.hasDelete: ifdelete = StmtIf(ExprBinary(_deleteId(), '==', msgtypevar)) @@ -1688,15 +1688,14 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): ifdelete.addifstmt( StmtExpr(ExprAssn(ExprDeref(nextvar), nextState))) nullerrorblock.addstmt(ifdelete) - nullerrorblock.addstmt( - StmtReturn(ExprLiteral.TRUE)) + nullerrorblock.addstmt(StmtBreak()) fromswitch.addcase(CaseLabel(_nullState().name), nullerrorblock) # special case for Dead deadblock = Block() deadblock.addstmts([ _logicError('__delete__()d actor'), - StmtReturn(ExprLiteral.FALSE) ]) + StmtBreak() ]) fromswitch.addcase(CaseLabel(_deadState().name), deadblock) # special case for Dying @@ -1706,14 +1705,13 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): ifdelete.addifstmt( StmtExpr(ExprAssn(ExprDeref(nextvar), _deadState()))) dyingblock.addstmt(ifdelete) - dyingblock.addstmt( - StmtReturn(ExprLiteral.TRUE)) + dyingblock.addstmt(StmtBreak()) fromswitch.addcase(CaseLabel(_dyingState().name), dyingblock) unreachedblock = Block() unreachedblock.addstmts([ _logicError('corrupted actor state'), - StmtReturn(ExprLiteral.FALSE) ]) + StmtBreak() ]) fromswitch.addcase(DefaultLabel(), unreachedblock) transitionfunc.addstmt(StmtDecl(Decl(Type('State'), fromvar.name), @@ -4564,13 +4562,9 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor): else: stateexpr = self.protocol.stateVar() msgid = md.pqMsgId() if not reply else md.pqReplyId() - ifbad = StmtIf(ExprNot( - ExprCall( - ExprVar(self.protocol.name +'::Transition'), - args=[ ExprVar(msgid), - ExprAddrOf(stateexpr) ]))) - ifbad.addifstmts(_badTransition()) - return [ ifbad ] + return [ StmtExpr(ExprCall(ExprVar(self.protocol.name +'::Transition'), + args=[ ExprVar(msgid), + ExprAddrOf(stateexpr) ])) ] def checkedRead(self, ipdltype, expr, msgexpr, iterexpr, errfn, paramtype, sentinelKey, sentinel=True): ifbad = StmtIf(ExprNot(self.read(ipdltype, expr, msgexpr, iterexpr))) From f27d72c33d32d5520d84aa7de9c165c2d81a566e Mon Sep 17 00:00:00 2001 From: Andrew McCreight Date: Wed, 14 Dec 2016 11:15:05 -0800 Subject: [PATCH 11/94] Bug 1323468, part 4 - inline |from| in Transition. r=kanru MozReview-Commit-ID: LwcpNikbe2b --HG-- extra : rebase_source : 25ace3d2f3e408ca48c72f6e8ea11217990a6f12 --- ipc/ipdl/ipdl/lower.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ipc/ipdl/ipdl/lower.py b/ipc/ipdl/ipdl/lower.py index bce3d6fda4ed..71d35a8d2d77 100644 --- a/ipc/ipdl/ipdl/lower.py +++ b/ipc/ipdl/ipdl/lower.py @@ -1665,7 +1665,6 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): # bool Transition(MessageType msg, State* next) # The state we are transitioning from is stored in *next. - fromvar = ExprVar('from') msgtypevar = ExprVar('msg') nextvar = ExprVar('next') @@ -1675,7 +1674,7 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): Decl(Type('State', ptr=1), nextvar.name) ], ret=Type.VOID)) - fromswitch = StmtSwitch(fromvar) + fromswitch = StmtSwitch(ExprDeref(nextvar)) # special case for Null nullerrorblock = Block() @@ -1714,8 +1713,6 @@ class _GenerateProtocolCode(ipdl.ast.Visitor): StmtBreak() ]) fromswitch.addcase(DefaultLabel(), unreachedblock) - transitionfunc.addstmt(StmtDecl(Decl(Type('State'), fromvar.name), - init=ExprDeref(nextvar))) transitionfunc.addstmt(fromswitch) return transitionfunc From 2ef7e2e6e84c6917db7daf003e9cd894c2fb9f23 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Mon, 19 Dec 2016 12:09:10 -0500 Subject: [PATCH 12/94] Bug 1324047 - Update testing/runtimes/writeruntimes.py for new e10s schema in ActiveData, r=jgriffin At some point ActiveData stopped considering 'e10s' as a separate suite and instead stored this information in the "run.type" field. This updates the writeruntimes.py script and mochitest runtime file resolving accordingly. MozReview-Commit-ID: LSk2q0hafcm --HG-- extra : rebase_source : 935942fb02f72d790464a30734ab153c2d56d5a9 --- testing/mochitest/runtests.py | 2 +- testing/runtimes/writeruntimes.py | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 586a1f17a6b9..f2268e9cd196 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -2083,7 +2083,7 @@ toolbar#nav-bar { Return a path to the runtimes file for a given flavor and subsuite. """ - template = "mochitest{e10s}-{suite_slug}.runtimes.json" + template = "mochitest-{suite_slug}{e10s}.runtimes.json" data_dir = os.path.join(SCRIPT_DIR, 'runtimes') # Determine the suite slug in the runtimes file name diff --git a/testing/runtimes/writeruntimes.py b/testing/runtimes/writeruntimes.py index 24424466471a..d67d5b00556f 100644 --- a/testing/runtimes/writeruntimes.py +++ b/testing/runtimes/writeruntimes.py @@ -11,9 +11,13 @@ here = os.path.abspath(os.path.dirname(__file__)) ACTIVE_DATA_URL = "http://activedata.allizom.org/query" PERCENTILE = 0.5 # ignore the bottom PERCENTILE*100% of numbers -def query_activedata(suite, platforms=None): +def query_activedata(suite, e10s, platforms=None): platforms = ', "build.platform":%s' % json.dumps(platforms) if platforms else '' + e10s_clause = '"eq":{"run.type":"e10s"}' + if not e10s: + e10s_clause = '"not":{%s}' % e10s_clause + query = """ { "from":"unittest", @@ -21,11 +25,12 @@ def query_activedata(suite, platforms=None): "groupby":["result.test"], "select":{"value":"result.duration","aggregate":"average"}, "where":{"and":[ - {"eq":{"suite":"%s"%s}}, + {"eq":{"run.suite":"%s"%s}}, + {%s}, {"gt":{"run.timestamp":"{{today-week}}"}} ]} } -""" % (suite, platforms) +""" % (suite, platforms, e10s_clause) response = requests.post(ACTIVE_DATA_URL, data=query, @@ -105,6 +110,9 @@ def cli(args=sys.argv[1:]): parser.add_argument('-s', '--suite', dest='suite', default=None, help="Suite for which to generate data.") + parser.add_argument('--disable-e10s', dest='e10s', default=True, + action='store_false', help="Generate runtimes for non-e10s tests.") + args = parser.parse_args(args) if not args.suite: @@ -115,8 +123,12 @@ def cli(args=sys.argv[1:]): if args.platforms: args.platforms = args.platforms.split(',') - data = query_activedata(args.suite, args.platforms) - write_runtimes(data, args.suite, indir=args.indir, outdir=args.outdir) + data = query_activedata(args.suite, args.e10s, args.platforms) + + suite = args.suite + if args.e10s: + suite = '%s-e10s' % suite + write_runtimes(data, suite, indir=args.indir, outdir=args.outdir) if __name__ == "__main__": sys.exit(cli()) From d93619e0ad058441a18237fa209425a2c01ce137 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Mon, 19 Dec 2016 12:10:39 -0500 Subject: [PATCH 13/94] Bug 1324047 - Update test runtimes data files, r=jgriffin MozReview-Commit-ID: HuDOVFDQOmk --HG-- extra : rebase_source : 80661fceed7ab19f67b70b039824db02c3842f8e --- ...ochitest-browser-chrome-e10s.runtimes.json | 858 ++++++++ .../mochitest-browser-chrome.runtimes.json | 1538 +++++++------ ...chitest-devtools-chrome-e10s.runtimes.json | 828 +++++++ .../mochitest-devtools-chrome.runtimes.json | 1910 ++++++++++------- ...ochitest-e10s-browser-chrome.runtimes.json | 477 ---- ...chitest-e10s-devtools-chrome.runtimes.json | 677 ------ .../mochitest-media-e10s.runtimes.json | 318 +++ .../runtimes/mochitest-media.runtimes.json | 581 ++--- 8 files changed, 4266 insertions(+), 2921 deletions(-) create mode 100644 testing/runtimes/mochitest-browser-chrome-e10s.runtimes.json create mode 100644 testing/runtimes/mochitest-devtools-chrome-e10s.runtimes.json delete mode 100644 testing/runtimes/mochitest-e10s-browser-chrome.runtimes.json delete mode 100644 testing/runtimes/mochitest-e10s-devtools-chrome.runtimes.json create mode 100644 testing/runtimes/mochitest-media-e10s.runtimes.json diff --git a/testing/runtimes/mochitest-browser-chrome-e10s.runtimes.json b/testing/runtimes/mochitest-browser-chrome-e10s.runtimes.json new file mode 100644 index 000000000000..5c97d58f0796 --- /dev/null +++ b/testing/runtimes/mochitest-browser-chrome-e10s.runtimes.json @@ -0,0 +1,858 @@ +{ + "excluded_test_average": 1310, + "runtimes": { + "Main app process exited normally": 2031025, + "accessible/tests/browser/browser_caching_attributes.js": 2753, + "accessible/tests/browser/browser_shutdown_acc_reference.js": 3187, + "accessible/tests/browser/browser_shutdown_doc_acc_reference.js": 2817, + "accessible/tests/browser/browser_shutdown_multi_acc_reference_doc.js": 4118, + "accessible/tests/browser/browser_shutdown_multi_acc_reference_obj.js": 4032, + "accessible/tests/browser/browser_shutdown_multi_proxy_acc_reference_doc.js": 4807, + "accessible/tests/browser/browser_shutdown_multi_proxy_acc_reference_obj.js": 4805, + "accessible/tests/browser/browser_shutdown_multi_reference.js": 2720, + "accessible/tests/browser/browser_shutdown_proxy_acc_reference.js": 3799, + "accessible/tests/browser/browser_shutdown_proxy_doc_acc_reference.js": 3746, + "accessible/tests/browser/browser_shutdown_start_restart.js": 2701, + "accessible/tests/browser/e10s/browser_caching_name.js": 9803, + "browser/base/content/test/alerts/browser_notification_open_settings.js": 2814, + "browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js": 3183, + "browser/base/content/test/chat/browser_chatwindow.js": 5602, + "browser/base/content/test/chat/browser_focus.js": 4750, + "browser/base/content/test/chat/browser_tearoff.js": 3032, + "browser/base/content/test/general/browser_aboutAccounts.js": 4700, + "browser/base/content/test/general/browser_aboutCertError.js": 11629, + "browser/base/content/test/general/browser_aboutHome.js": 24998, + "browser/base/content/test/general/browser_aboutHome_wrapsCorrectly.js": 3959, + "browser/base/content/test/general/browser_aboutTabCrashed.js": 14550, + "browser/base/content/test/general/browser_aboutTabCrashed_clearEmail.js": 2776, + "browser/base/content/test/general/browser_addCertException.js": 3849, + "browser/base/content/test/general/browser_addKeywordSearch.js": 2907, + "browser/base/content/test/general/browser_alltabslistener.js": 3702, + "browser/base/content/test/general/browser_audioTabIcon.js": 41909, + "browser/base/content/test/general/browser_beforeunload_duplicate_dialogs.js": 7882, + "browser/base/content/test/general/browser_blockHPKP.js": 3461, + "browser/base/content/test/general/browser_bookmark_popup.js": 14200, + "browser/base/content/test/general/browser_bookmark_titles.js": 2930, + "browser/base/content/test/general/browser_bug1299667.js": 9269, + "browser/base/content/test/general/browser_bug386835.js": 5032, + "browser/base/content/test/general/browser_bug406216.js": 4791, + "browser/base/content/test/general/browser_bug422590.js": 9050, + "browser/base/content/test/general/browser_bug460146.js": 4439, + "browser/base/content/test/general/browser_bug462673.js": 5101, + "browser/base/content/test/general/browser_bug491431.js": 2670, + "browser/base/content/test/general/browser_bug495058.js": 6831, + "browser/base/content/test/general/browser_bug550565.js": 3997, + "browser/base/content/test/general/browser_bug553455.js": 37176, + "browser/base/content/test/general/browser_bug575561.js": 13472, + "browser/base/content/test/general/browser_bug585558.js": 3058, + "browser/base/content/test/general/browser_bug590206.js": 13742, + "browser/base/content/test/general/browser_bug592338.js": 5715, + "browser/base/content/test/general/browser_bug609700.js": 3600, + "browser/base/content/test/general/browser_bug623893.js": 4495, + "browser/base/content/test/general/browser_bug676619.js": 12005, + "browser/base/content/test/general/browser_bug719271.js": 5308, + "browser/base/content/test/general/browser_bug734076.js": 4225, + "browser/base/content/test/general/browser_bug763468_perwindowpb.js": 8245, + "browser/base/content/test/general/browser_bug767836_perwindowpb.js": 8317, + "browser/base/content/test/general/browser_bug817947.js": 4167, + "browser/base/content/test/general/browser_bug822367.js": 9554, + "browser/base/content/test/general/browser_bug902156.js": 5042, + "browser/base/content/test/general/browser_bug906190.js": 28243, + "browser/base/content/test/general/browser_bug963945.js": 3613, + "browser/base/content/test/general/browser_close_dependent_tabs.js": 2877, + "browser/base/content/test/general/browser_contentAltClick.js": 3557, + "browser/base/content/test/general/browser_contentSearchUI.js": 20488, + "browser/base/content/test/general/browser_contextmenu.js": 4785, + "browser/base/content/test/general/browser_contextmenu_childprocess.js": 5501, + "browser/base/content/test/general/browser_ctrlTab.js": 5609, + "browser/base/content/test/general/browser_datachoices_notification.js": 6696, + "browser/base/content/test/general/browser_decoderDoctor.js": 4428, + "browser/base/content/test/general/browser_devices_get_user_media.js": 14991, + "browser/base/content/test/general/browser_devices_get_user_media_in_frame.js": 4616, + "browser/base/content/test/general/browser_documentnavigation.js": 6759, + "browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js": 5545, + "browser/base/content/test/general/browser_e10s_chrome_process.js": 8580, + "browser/base/content/test/general/browser_e10s_switchbrowser.js": 12757, + "browser/base/content/test/general/browser_fullscreen-window-open.js": 4312, + "browser/base/content/test/general/browser_fxa_oauth.js": 5410, + "browser/base/content/test/general/browser_fxa_web_channel.js": 4727, + "browser/base/content/test/general/browser_fxaccounts.js": 2909, + "browser/base/content/test/general/browser_getshortcutoruri.js": 3083, + "browser/base/content/test/general/browser_identity_UI.js": 20930, + "browser/base/content/test/general/browser_insecureLoginForms.js": 4482, + "browser/base/content/test/general/browser_mcb_redirect.js": 9425, + "browser/base/content/test/general/browser_misused_characters_in_strings.js": 5746, + "browser/base/content/test/general/browser_mixedContentFromOnunload.js": 2915, + "browser/base/content/test/general/browser_mixed_content_cert_override.js": 4893, + "browser/base/content/test/general/browser_mixedcontent_securityflags.js": 3358, + "browser/base/content/test/general/browser_newTabDrop.js": 6573, + "browser/base/content/test/general/browser_newWindowDrop.js": 26213, + "browser/base/content/test/general/browser_newwindow_focus.js": 6189, + "browser/base/content/test/general/browser_no_mcb_on_http_site.js": 3587, + "browser/base/content/test/general/browser_offlineQuotaNotification.js": 3595, + "browser/base/content/test/general/browser_overflowScroll.js": 13531, + "browser/base/content/test/general/browser_pageInfo.js": 2735, + "browser/base/content/test/general/browser_parsable_css.js": 2783, + "browser/base/content/test/general/browser_parsable_script.js": 8620, + "browser/base/content/test/general/browser_permissions.js": 7325, + "browser/base/content/test/general/browser_plainTextLinks.js": 3173, + "browser/base/content/test/general/browser_popupUI.js": 2907, + "browser/base/content/test/general/browser_printpreview.js": 6858, + "browser/base/content/test/general/browser_private_browsing_window.js": 3954, + "browser/base/content/test/general/browser_readerMode.js": 3992, + "browser/base/content/test/general/browser_refreshBlocker.js": 11983, + "browser/base/content/test/general/browser_relatedTabs.js": 9815, + "browser/base/content/test/general/browser_remoteTroubleshoot.js": 4239, + "browser/base/content/test/general/browser_restore_isAppTab.js": 6238, + "browser/base/content/test/general/browser_sanitize-timespans.js": 6091, + "browser/base/content/test/general/browser_sanitizeDialog.js": 21552, + "browser/base/content/test/general/browser_save_link-perwindowpb.js": 4886, + "browser/base/content/test/general/browser_save_link_when_window_navigates.js": 6001, + "browser/base/content/test/general/browser_save_private_link_perwindowpb.js": 3473, + "browser/base/content/test/general/browser_selectpopup.js": 25885, + "browser/base/content/test/general/browser_ssl_error_reports.js": 10048, + "browser/base/content/test/general/browser_syncui.js": 5116, + "browser/base/content/test/general/browser_tabDrop.js": 5665, + "browser/base/content/test/general/browser_tab_close_dependent_window.js": 3872, + "browser/base/content/test/general/browser_tab_detach_restore.js": 4869, + "browser/base/content/test/general/browser_tab_drag_drop_perwindow.js": 22451, + "browser/base/content/test/general/browser_tab_dragdrop.js": 3603, + "browser/base/content/test/general/browser_tab_dragdrop2.js": 6579, + "browser/base/content/test/general/browser_tabfocus.js": 5898, + "browser/base/content/test/general/browser_tabkeynavigation.js": 3751, + "browser/base/content/test/general/browser_tabs_isActive.js": 3883, + "browser/base/content/test/general/browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js": 18627, + "browser/base/content/test/general/browser_trackingUI_1.js": 10728, + "browser/base/content/test/general/browser_trackingUI_2.js": 8000, + "browser/base/content/test/general/browser_trackingUI_4.js": 10177, + "browser/base/content/test/general/browser_trackingUI_5.js": 10282, + "browser/base/content/test/general/browser_trackingUI_telemetry.js": 14193, + "browser/base/content/test/general/browser_typeAheadFind.js": 2889, + "browser/base/content/test/general/browser_unloaddialogs.js": 2918, + "browser/base/content/test/general/browser_utilityOverlay.js": 3089, + "browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js": 3445, + "browser/base/content/test/general/browser_web_channel.js": 15741, + "browser/base/content/test/general/browser_windowactivation.js": 4655, + "browser/base/content/test/newtab/browser_newtab_block.js": 4959, + "browser/base/content/test/newtab/browser_newtab_bug1194895.js": 7308, + "browser/base/content/test/newtab/browser_newtab_drag_drop.js": 4697, + "browser/base/content/test/newtab/browser_newtab_drag_drop_ext.js": 6606, + "browser/base/content/test/newtab/browser_newtab_enhanced.js": 4411, + "browser/base/content/test/newtab/browser_newtab_perwindow_private_browsing.js": 2913, + "browser/base/content/test/newtab/browser_newtab_unpin.js": 3032, + "browser/base/content/test/plugins/browser_CTP_crashreporting.js": 4878, + "browser/base/content/test/plugins/browser_CTP_data_urls.js": 4053, + "browser/base/content/test/plugins/browser_CTP_drag_drop.js": 5737, + "browser/base/content/test/plugins/browser_CTP_notificationBar.js": 4802, + "browser/base/content/test/plugins/browser_CTP_remove_navigate.js": 3322, + "browser/base/content/test/plugins/browser_blocking.js": 9383, + "browser/base/content/test/plugins/browser_blocklist_content.js": 3661, + "browser/base/content/test/plugins/browser_iterate_hidden_plugins.js": 5033, + "browser/base/content/test/plugins/browser_pageInfo_plugins.js": 4977, + "browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js": 4166, + "browser/base/content/test/plugins/browser_pluginnotification.js": 13366, + "browser/base/content/test/plugins/browser_plugins_added_dynamically.js": 2827, + "browser/base/content/test/plugins/browser_private_clicktoplay.js": 8632, + "browser/base/content/test/popupNotifications/browser_popupNotification_2.js": 4734, + "browser/base/content/test/popupNotifications/browser_popupNotification_3.js": 3791, + "browser/base/content/test/popupNotifications/browser_popupNotification_4.js": 3407, + "browser/base/content/test/popupNotifications/browser_popupNotification_5.js": 4197, + "browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js": 3514, + "browser/base/content/test/referrer/browser_referrer_middle_click.js": 22708, + "browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js": 21681, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js": 4029, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js": 3993, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js": 4107, + "browser/base/content/test/referrer/browser_referrer_open_link_in_private.js": 6835, + "browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js": 4075, + "browser/base/content/test/referrer/browser_referrer_open_link_in_window.js": 7014, + "browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js": 7292, + "browser/base/content/test/referrer/browser_referrer_simple_click.js": 15480, + "browser/base/content/test/social/browser_aboutHome_activation.js": 6065, + "browser/base/content/test/social/browser_blocklist.js": 4105, + "browser/base/content/test/social/browser_share.js": 12077, + "browser/base/content/test/social/browser_social_activation.js": 10299, + "browser/base/content/test/social/browser_social_chatwindow_resize.js": 2879, + "browser/base/content/test/social/browser_social_marks.js": 2931, + "browser/base/content/test/social/browser_social_marks_context.js": 3212, + "browser/base/content/test/social/browser_social_window.js": 8012, + "browser/base/content/test/tabcrashed/browser_autoSubmitRequest.js": 10853, + "browser/base/content/test/tabcrashed/browser_clearEmail.js": 6353, + "browser/base/content/test/tabcrashed/browser_showForm.js": 3905, + "browser/base/content/test/tabcrashed/browser_shown.js": 25688, + "browser/base/content/test/tabcrashed/browser_withoutDump.js": 3481, + "browser/base/content/test/tabs/browser_navigatePinnedTab.js": 4864, + "browser/base/content/test/tabs/browser_tabSpinnerProbe.js": 5417, + "browser/base/content/test/tabs/browser_tabSwitchPrintPreview.js": 2875, + "browser/base/content/test/urlbar/browser_URLBarSetURI.js": 5330, + "browser/base/content/test/urlbar/browser_action_searchengine_alias.js": 2728, + "browser/base/content/test/urlbar/browser_autocomplete_enter_race.js": 7424, + "browser/base/content/test/urlbar/browser_autocomplete_tag_star_visibility.js": 3225, + "browser/base/content/test/urlbar/browser_bug1025195_switchToTabHavingURI_aOpenParams.js": 12054, + "browser/base/content/test/urlbar/browser_bug304198.js": 4204, + "browser/base/content/test/urlbar/browser_canonizeURL.js": 3722, + "browser/base/content/test/urlbar/browser_moz_action_link.js": 4514, + "browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar.js": 11900, + "browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js": 4119, + "browser/base/content/test/urlbar/browser_urlbarAboutHomeLoading.js": 12974, + "browser/base/content/test/urlbar/browser_urlbarDecode.js": 2975, + "browser/base/content/test/urlbar/browser_urlbarEnter.js": 2959, + "browser/base/content/test/urlbar/browser_urlbarHashChangeProxyState.js": 4051, + "browser/base/content/test/urlbar/browser_urlbarKeepStateAcrossTabSwitches.js": 5226, + "browser/base/content/test/urlbar/browser_urlbarOneOffs.js": 8093, + "browser/base/content/test/urlbar/browser_urlbarRaceWithTabs.js": 2691, + "browser/base/content/test/urlbar/browser_urlbarSearchSingleWordNotification.js": 19159, + "browser/base/content/test/urlbar/browser_urlbarSearchSuggestions.js": 2764, + "browser/base/content/test/urlbar/browser_urlbarSearchSuggestionsNotification.js": 12217, + "browser/base/content/test/urlbar/browser_urlbarSearchTelemetry.js": 7549, + "browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js": 7083, + "browser/base/content/test/urlbar/browser_urlbar_blanking.js": 4755, + "browser/base/content/test/urlbar/browser_urlbar_remoteness_switch.js": 3145, + "browser/base/content/test/webrtc/browser_devices_get_user_media.js": 15015, + "browser/base/content/test/webrtc/browser_devices_get_user_media_anim.js": 6437, + "browser/base/content/test/webrtc/browser_devices_get_user_media_in_frame.js": 9186, + "browser/base/content/test/webrtc/browser_devices_get_user_media_tear_off_tab.js": 4002, + "browser/components/contextualidentity/test/browser/browser_aboutURLs.js": 20655, + "browser/components/contextualidentity/test/browser/browser_favicon.js": 8811, + "browser/components/contextualidentity/test/browser/browser_forgetAPI_EME_forgetThisSite.js": 5468, + "browser/components/contextualidentity/test/browser/browser_forgetAPI_quota_clearStoragesForPrincipal.js": 4645, + "browser/components/contextualidentity/test/browser/browser_forgetaboutsite.js": 15613, + "browser/components/contextualidentity/test/browser/browser_imageCache.js": 5556, + "browser/components/contextualidentity/test/browser/browser_newtabButton.js": 5962, + "browser/components/contextualidentity/test/browser/browser_serviceworkers.js": 3328, + "browser/components/contextualidentity/test/browser/browser_usercontext.js": 5298, + "browser/components/contextualidentity/test/browser/browser_usercontextid_tabdrop.js": 6384, + "browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js": 4117, + "browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js": 2698, + "browser/components/customizableui/test/browser_1008559_anchor_undo_restore.js": 10158, + "browser/components/customizableui/test/browser_1089591_still_customizable_after_reset.js": 5476, + "browser/components/customizableui/test/browser_876926_customize_mode_wrapping.js": 9557, + "browser/components/customizableui/test/browser_878452_drag_to_panel.js": 3840, + "browser/components/customizableui/test/browser_880164_customization_context_menus.js": 16584, + "browser/components/customizableui/test/browser_880382_drag_wide_widgets_in_panel.js": 8933, + "browser/components/customizableui/test/browser_885052_customize_mode_observers_disabed.js": 2964, + "browser/components/customizableui/test/browser_885530_showInPrivateBrowsing.js": 13156, + "browser/components/customizableui/test/browser_890140_orphaned_placeholders.js": 16100, + "browser/components/customizableui/test/browser_918049_skipintoolbarset_dnd.js": 2884, + "browser/components/customizableui/test/browser_923857_customize_mode_event_wrapping_during_reset.js": 4475, + "browser/components/customizableui/test/browser_927717_customize_drag_empty_toolbar.js": 2696, + "browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js": 3110, + "browser/components/customizableui/test/browser_938980_navbar_collapsed.js": 18610, + "browser/components/customizableui/test/browser_956602_remove_special_widget.js": 2754, + "browser/components/customizableui/test/browser_962884_opt_in_disable_hyphens.js": 2843, + "browser/components/customizableui/test/browser_963639_customizing_attribute_non_customizable_toolbar.js": 2665, + "browser/components/customizableui/test/browser_967000_button_sync.js": 21565, + "browser/components/customizableui/test/browser_968565_insert_before_hidden_items.js": 3967, + "browser/components/customizableui/test/browser_969661_character_encoding_navbar_disabled.js": 2788, + "browser/components/customizableui/test/browser_970511_undo_restore_default.js": 16172, + "browser/components/customizableui/test/browser_973932_addonbar_currentset.js": 4063, + "browser/components/customizableui/test/browser_975719_customtoolbars_behaviour.js": 12717, + "browser/components/customizableui/test/browser_978084_dragEnd_after_move.js": 5406, + "browser/components/customizableui/test/browser_985815_propagate_setToolbarVisibility.js": 6881, + "browser/components/customizableui/test/browser_987640_charEncoding.js": 2958, + "browser/components/customizableui/test/browser_988072_sidebar_events.js": 5655, + "browser/components/customizableui/test/browser_993322_widget_notoolbar.js": 2659, + "browser/components/customizableui/test/browser_995164_registerArea_during_customize_mode.js": 9798, + "browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js": 9780, + "browser/components/customizableui/test/browser_customizemode_contextmenu_menubuttonstate.js": 2711, + "browser/components/customizableui/test/browser_switch_to_customize_mode.js": 6446, + "browser/components/downloads/test/browser/browser_confirm_unblock_download.js": 5673, + "browser/components/downloads/test/browser/browser_downloads_panel_block.js": 22665, + "browser/components/downloads/test/browser/browser_iframe_gone_mid_download.js": 10126, + "browser/components/downloads/test/browser/browser_indicatorDrop.js": 5207, + "browser/components/downloads/test/browser/browser_libraryDrop.js": 6573, + "browser/components/extensions/test/browser/browser_ext_browserAction_context.js": 6300, + "browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js": 14329, + "browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon_permissions.js": 4795, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup.js": 13629, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js": 5212, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup_resize.js": 12029, + "browser/components/extensions/test/browser/browser_ext_browserAction_simple.js": 2864, + "browser/components/extensions/test/browser/browser_ext_commands_execute_browser_action.js": 4052, + "browser/components/extensions/test/browser/browser_ext_commands_onCommand.js": 5729, + "browser/components/extensions/test/browser/browser_ext_contentscript_connect.js": 2752, + "browser/components/extensions/test/browser/browser_ext_contextMenus.js": 8163, + "browser/components/extensions/test/browser/browser_ext_contextMenus_onclick.js": 20234, + "browser/components/extensions/test/browser/browser_ext_currentWindow.js": 10238, + "browser/components/extensions/test/browser/browser_ext_getViews.js": 10194, + "browser/components/extensions/test/browser/browser_ext_history.js": 2761, + "browser/components/extensions/test/browser/browser_ext_incognito_popup.js": 5523, + "browser/components/extensions/test/browser/browser_ext_incognito_views.js": 4503, + "browser/components/extensions/test/browser/browser_ext_legacy_extension_context_contentscript.js": 3826, + "browser/components/extensions/test/browser/browser_ext_omnibox.js": 8347, + "browser/components/extensions/test/browser/browser_ext_optionsPage_privileges.js": 5250, + "browser/components/extensions/test/browser/browser_ext_pageAction_context.js": 8940, + "browser/components/extensions/test/browser/browser_ext_pageAction_popup.js": 6095, + "browser/components/extensions/test/browser/browser_ext_pageAction_title.js": 9914, + "browser/components/extensions/test/browser/browser_ext_popup_api_injection.js": 3388, + "browser/components/extensions/test/browser/browser_ext_popup_background.js": 3376, + "browser/components/extensions/test/browser/browser_ext_popup_corners.js": 2832, + "browser/components/extensions/test/browser/browser_ext_popup_shutdown.js": 4009, + "browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage.js": 25951, + "browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage_uninstall.js": 5089, + "browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js": 4242, + "browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed.js": 16179, + "browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js": 4967, + "browser/components/extensions/test/browser/browser_ext_sessions_restore.js": 13155, + "browser/components/extensions/test/browser/browser_ext_tab_runtimeConnect.js": 2778, + "browser/components/extensions/test/browser/browser_ext_tabs_audio.js": 3403, + "browser/components/extensions/test/browser/browser_ext_tabs_captureVisibleTab.js": 8268, + "browser/components/extensions/test/browser/browser_ext_tabs_cookieStoreId.js": 12419, + "browser/components/extensions/test/browser/browser_ext_tabs_create.js": 9721, + "browser/components/extensions/test/browser/browser_ext_tabs_detectLanguage.js": 3805, + "browser/components/extensions/test/browser/browser_ext_tabs_duplicate.js": 8420, + "browser/components/extensions/test/browser/browser_ext_tabs_events.js": 13310, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript.js": 4795, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js": 7985, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js": 9270, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_runAt.js": 3031, + "browser/components/extensions/test/browser/browser_ext_tabs_move.js": 4072, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window.js": 8759, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window_multiple.js": 7095, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window_pinned.js": 5873, + "browser/components/extensions/test/browser/browser_ext_tabs_onHighlighted.js": 3548, + "browser/components/extensions/test/browser/browser_ext_tabs_onUpdated.js": 17361, + "browser/components/extensions/test/browser/browser_ext_tabs_query.js": 10703, + "browser/components/extensions/test/browser/browser_ext_tabs_sendMessage.js": 5331, + "browser/components/extensions/test/browser/browser_ext_tabs_update.js": 2635, + "browser/components/extensions/test/browser/browser_ext_tabs_update_url.js": 6590, + "browser/components/extensions/test/browser/browser_ext_tabs_zoom.js": 6108, + "browser/components/extensions/test/browser/browser_ext_webNavigation_urlbar_transitions.js": 8815, + "browser/components/extensions/test/browser/browser_ext_webRequest.js": 5725, + "browser/components/extensions/test/browser/browser_ext_windows_allowScriptsToClose.js": 7452, + "browser/components/extensions/test/browser/browser_ext_windows_create.js": 12038, + "browser/components/extensions/test/browser/browser_ext_windows_create_tabId.js": 11520, + "browser/components/extensions/test/browser/browser_ext_windows_create_url.js": 10253, + "browser/components/extensions/test/browser/browser_ext_windows_events.js": 4538, + "browser/components/extensions/test/browser/browser_ext_windows_size.js": 3534, + "browser/components/extensions/test/browser/browser_ext_windows_update.js": 8075, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_context.js": 8695, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_pageAction_icon.js": 14635, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_pageAction_icon_permissions.js": 8121, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_popup.js": 15769, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_popup_preload.js": 5990, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_popup_resize.js": 12165, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_browserAction_simple.js": 3453, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_commands_execute_browser_action.js": 6277, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_commands_execute_page_action.js": 2762, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_commands_onCommand.js": 6624, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus.js": 10290, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_actionMenus.js": 3063, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_checkboxes.js": 3168, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_chrome.js": 5107, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_onclick.js": 21945, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_radioGroups.js": 2916, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_uninstall.js": 3330, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_contextMenus_urlPatterns.js": 3045, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_currentWindow.js": 11330, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_getViews.js": 11257, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_incognito_popup.js": 6068, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_incognito_views.js": 5153, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_lastError.js": 3287, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_omnibox.js": 9337, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_optionsPage_privileges.js": 5639, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_pageAction_context.js": 9585, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_pageAction_popup.js": 6144, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_pageAction_popup_resize.js": 3622, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_pageAction_title.js": 11366, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_popup_api_injection.js": 3817, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_popup_background.js": 3841, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_popup_corners.js": 3373, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_popup_sendMessage.js": 3224, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_popup_shutdown.js": 5734, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_runtime_openOptionsPage.js": 29757, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_runtime_openOptionsPage_uninstall.js": 6092, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_runtime_setUninstallURL.js": 5937, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_sessions_getRecentlyClosed.js": 16618, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_sessions_getRecentlyClosed_private.js": 5558, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_sessions_restore.js": 13634, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tab_runtimeConnect.js": 3585, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_audio.js": 4175, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_captureVisibleTab.js": 11402, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_cookieStoreId.js": 12035, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_create.js": 10233, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_create_invalid_url.js": 3392, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_detectLanguage.js": 4729, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_duplicate.js": 10649, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_events.js": 15209, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_executeScript.js": 5652, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_executeScript_bad.js": 11694, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_executeScript_good.js": 13878, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_executeScript_runAt.js": 3664, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_getCurrent.js": 3280, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_insertCSS.js": 2850, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_move.js": 6226, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_move_window.js": 10003, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_move_window_multiple.js": 8105, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_move_window_pinned.js": 6474, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_onHighlighted.js": 3136, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_onUpdated.js": 19503, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_query.js": 14949, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_reload.js": 2811, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_reload_bypass_cache.js": 2932, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_removeCSS.js": 3081, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_sendMessage.js": 6988, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_update.js": 3288, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_update_url.js": 9245, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_tabs_zoom.js": 7363, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_theme_extreme.js": 2812, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_theme_icons.js": 2792, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_theme_lwtsupport.js": 3092, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_webNavigation_getFrames.js": 3528, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_webNavigation_urlbar_transitions.js": 11560, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_webRequest.js": 6269, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows.js": 3597, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_create.js": 12054, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_create_tabId.js": 12150, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_create_url.js": 9935, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_events.js": 5159, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_size.js": 4025, + "browser/components/extensions/test/browser/test-oop-extensions/browser_ext_windows_update.js": 9662, + "browser/components/newtab/tests/browser/browser_newtab_overrides.js": 6212, + "browser/components/newtab/tests/browser/browser_newtabwebchannel.js": 6703, + "browser/components/originattributes/test/browser/browser_blobURLIsolation.js": 12696, + "browser/components/originattributes/test/browser/browser_broadcastChannel.js": 11739, + "browser/components/originattributes/test/browser/browser_cache.js": 23362, + "browser/components/originattributes/test/browser/browser_cacheAPI.js": 16149, + "browser/components/originattributes/test/browser/browser_clientAuth.js": 17197, + "browser/components/originattributes/test/browser/browser_cookieIsolation.js": 9713, + "browser/components/originattributes/test/browser/browser_favicon_firstParty.js": 11267, + "browser/components/originattributes/test/browser/browser_favicon_userContextId.js": 7680, + "browser/components/originattributes/test/browser/browser_firstPartyIsolation.js": 17088, + "browser/components/originattributes/test/browser/browser_httpauth.js": 22120, + "browser/components/originattributes/test/browser/browser_imageCacheIsolation.js": 19931, + "browser/components/originattributes/test/browser/browser_localStorageIsolation.js": 9519, + "browser/components/originattributes/test/browser/browser_permissions.js": 10375, + "browser/components/originattributes/test/browser/browser_sanitize.js": 10658, + "browser/components/originattributes/test/browser/browser_sharedworker.js": 10557, + "browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js": 6689, + "browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js": 2668, + "browser/components/places/tests/browser/browser_bookmarklet_windowOpen.js": 2811, + "browser/components/places/tests/browser/browser_bookmarksProperties.js": 4908, + "browser/components/places/tests/browser/browser_forgetthissite_single.js": 2712, + "browser/components/places/tests/browser/browser_library_commands.js": 6259, + "browser/components/places/tests/browser/browser_library_middleclick.js": 4930, + "browser/components/places/tests/browser/browser_library_views_liveupdate.js": 9129, + "browser/components/places/tests/browser/browser_sort_in_library.js": 2771, + "browser/components/places/tests/browser/browser_views_liveupdate.js": 4735, + "browser/components/preferences/in-content/tests/browser_advanced_siteData.js": 5809, + "browser/components/preferences/in-content/tests/browser_advanced_update.js": 4994, + "browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js": 3402, + "browser/components/preferences/in-content/tests/browser_bug1020245_openPreferences_to_paneContent.js": 8840, + "browser/components/preferences/in-content/tests/browser_bug1184989_prevent_scrolling_when_preferences_flipped.js": 3776, + "browser/components/preferences/in-content/tests/browser_bug731866.js": 4124, + "browser/components/preferences/in-content/tests/browser_connection_bug388287.js": 5029, + "browser/components/preferences/in-content/tests/browser_cookies_exceptions.js": 32201, + "browser/components/preferences/in-content/tests/browser_defaultbrowser_alwayscheck.js": 3689, + "browser/components/preferences/in-content/tests/browser_homepages_filter_aboutpreferences.js": 3358, + "browser/components/preferences/in-content/tests/browser_permissions_urlFieldHidden.js": 4320, + "browser/components/preferences/in-content/tests/browser_privacypane_1.js": 13262, + "browser/components/preferences/in-content/tests/browser_privacypane_3.js": 12449, + "browser/components/preferences/in-content/tests/browser_privacypane_4.js": 21002, + "browser/components/preferences/in-content/tests/browser_privacypane_5.js": 12584, + "browser/components/preferences/in-content/tests/browser_privacypane_8.js": 12359, + "browser/components/preferences/in-content/tests/browser_sanitizeOnShutdown_prefLocked.js": 4144, + "browser/components/preferences/in-content/tests/browser_searchsuggestions.js": 3473, + "browser/components/preferences/in-content/tests/browser_security.js": 16398, + "browser/components/preferences/in-content/tests/browser_subdialogs.js": 9718, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_DownloadLastDirWithCPS.js": 6766, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js": 5869, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutHomeButtonAfterWindowClose.js": 4184, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutSessionRestore.js": 4488, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_blobUrl.js": 4308, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cache.js": 3564, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_certexceptionsui.js": 2834, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_concurrent.js": 8634, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_context_and_chromeFlags.js": 3429, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_crh.js": 4396, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir.js": 5198, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_c.js": 5365, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_toggle.js": 10849, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_favicon.js": 10071, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_geoprompt.js": 6547, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_lastpbcontextexited.js": 6603, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage.js": 3786, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage_before_after.js": 5353, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_newtab_from_popup.js": 5469, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_noSessionRestoreMenuOption.js": 3943, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js": 2977, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_opendir.js": 3419, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js": 3645, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js": 7026, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_popupblocker.js": 6747, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js": 5606, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_sidebar.js": 14661, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_ui.js": 3892, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js": 3978, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js": 33528, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoom.js": 4290, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoomrestore.js": 3805, + "browser/components/search/test/browser_426329.js": 9526, + "browser/components/search/test/browser_aboutSearchReset.js": 5717, + "browser/components/search/test/browser_amazon_behavior.js": 2653, + "browser/components/search/test/browser_contextmenu.js": 3521, + "browser/components/search/test/browser_google_behavior.js": 2646, + "browser/components/search/test/browser_private_search_perwindowpb.js": 7022, + "browser/components/search/test/browser_searchbar_keyboard_navigation.js": 2877, + "browser/components/search/test/browser_webapi.js": 7355, + "browser/components/search/test/browser_yahoo_behavior.js": 2951, + "browser/components/sessionstore/test/browser_339445.js": 2878, + "browser/components/sessionstore/test/browser_354894_perwindowpb.js": 38482, + "browser/components/sessionstore/test/browser_393716.js": 3037, + "browser/components/sessionstore/test/browser_394759_behavior.js": 23801, + "browser/components/sessionstore/test/browser_394759_perwindowpb.js": 8814, + "browser/components/sessionstore/test/browser_423132.js": 2951, + "browser/components/sessionstore/test/browser_477657.js": 2742, + "browser/components/sessionstore/test/browser_480893.js": 2844, + "browser/components/sessionstore/test/browser_490040.js": 8565, + "browser/components/sessionstore/test/browser_491168.js": 3299, + "browser/components/sessionstore/test/browser_495495.js": 7224, + "browser/components/sessionstore/test/browser_500328.js": 2931, + "browser/components/sessionstore/test/browser_522545.js": 32199, + "browser/components/sessionstore/test/browser_524745.js": 2799, + "browser/components/sessionstore/test/browser_586068-apptabs.js": 6714, + "browser/components/sessionstore/test/browser_586068-apptabs_ondemand.js": 9566, + "browser/components/sessionstore/test/browser_586068-browser_state_interrupted.js": 14276, + "browser/components/sessionstore/test/browser_586068-cascade.js": 8020, + "browser/components/sessionstore/test/browser_586068-multi_window.js": 10010, + "browser/components/sessionstore/test/browser_586068-reload.js": 11933, + "browser/components/sessionstore/test/browser_586068-select.js": 8171, + "browser/components/sessionstore/test/browser_586068-window_state.js": 12011, + "browser/components/sessionstore/test/browser_586068-window_state_override.js": 8031, + "browser/components/sessionstore/test/browser_588426.js": 3153, + "browser/components/sessionstore/test/browser_590268.js": 15053, + "browser/components/sessionstore/test/browser_590563.js": 4510, + "browser/components/sessionstore/test/browser_595601-restore_hidden.js": 18914, + "browser/components/sessionstore/test/browser_600545.js": 12385, + "browser/components/sessionstore/test/browser_601955.js": 5227, + "browser/components/sessionstore/test/browser_607016.js": 3238, + "browser/components/sessionstore/test/browser_615394-SSWindowState_events.js": 40936, + "browser/components/sessionstore/test/browser_618151.js": 2796, + "browser/components/sessionstore/test/browser_625016.js": 3721, + "browser/components/sessionstore/test/browser_635418.js": 4968, + "browser/components/sessionstore/test/browser_636279.js": 4428, + "browser/components/sessionstore/test/browser_637020.js": 7404, + "browser/components/sessionstore/test/browser_644409-scratchpads.js": 5537, + "browser/components/sessionstore/test/browser_659591.js": 2763, + "browser/components/sessionstore/test/browser_662743.js": 4945, + "browser/components/sessionstore/test/browser_701377.js": 5796, + "browser/components/sessionstore/test/browser_819510_perwindowpb.js": 30564, + "browser/components/sessionstore/test/browser_911547.js": 2917, + "browser/components/sessionstore/test/browser_aboutSessionRestore.js": 3512, + "browser/components/sessionstore/test/browser_async_duplicate_tab.js": 3388, + "browser/components/sessionstore/test/browser_async_flushes.js": 4768, + "browser/components/sessionstore/test/browser_async_remove_tab.js": 9518, + "browser/components/sessionstore/test/browser_async_window_flushing.js": 8162, + "browser/components/sessionstore/test/browser_background_tab_crash.js": 32355, + "browser/components/sessionstore/test/browser_backup_recovery.js": 12682, + "browser/components/sessionstore/test/browser_broadcast.js": 9539, + "browser/components/sessionstore/test/browser_cleaner.js": 12624, + "browser/components/sessionstore/test/browser_closed_objects_changed_notifications_tabs.js": 12485, + "browser/components/sessionstore/test/browser_closed_objects_changed_notifications_windows.js": 19432, + "browser/components/sessionstore/test/browser_cookies.js": 25064, + "browser/components/sessionstore/test/browser_crashedTabs.js": 45302, + "browser/components/sessionstore/test/browser_docshell_uuid_consistency.js": 4298, + "browser/components/sessionstore/test/browser_dying_cache.js": 4078, + "browser/components/sessionstore/test/browser_forget_async_closings.js": 8652, + "browser/components/sessionstore/test/browser_formdata.js": 9252, + "browser/components/sessionstore/test/browser_formdata_cc.js": 28234, + "browser/components/sessionstore/test/browser_formdata_format.js": 14684, + "browser/components/sessionstore/test/browser_formdata_xpath.js": 3662, + "browser/components/sessionstore/test/browser_frame_history.js": 8320, + "browser/components/sessionstore/test/browser_frametree.js": 4303, + "browser/components/sessionstore/test/browser_grouped_session_store.js": 8304, + "browser/components/sessionstore/test/browser_history_persist.js": 3533, + "browser/components/sessionstore/test/browser_merge_closed_tabs.js": 3484, + "browser/components/sessionstore/test/browser_newtab_userTypedValue.js": 33336, + "browser/components/sessionstore/test/browser_pageStyle.js": 9837, + "browser/components/sessionstore/test/browser_privatetabs.js": 9934, + "browser/components/sessionstore/test/browser_remoteness_flip_on_restore.js": 31140, + "browser/components/sessionstore/test/browser_replace_load.js": 3307, + "browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js": 4540, + "browser/components/sessionstore/test/browser_revive_crashed_bg_tabs.js": 5862, + "browser/components/sessionstore/test/browser_scrollPositions.js": 22895, + "browser/components/sessionstore/test/browser_scrollPositionsReaderMode.js": 9633, + "browser/components/sessionstore/test/browser_sessionHistory.js": 10252, + "browser/components/sessionstore/test/browser_sessionStorage.js": 8711, + "browser/components/sessionstore/test/browser_sessionStoreContainer.js": 15636, + "browser/components/sessionstore/test/browser_swapDocShells.js": 4691, + "browser/components/sessionstore/test/browser_switch_remoteness.js": 8180, + "browser/components/sessionstore/test/browser_undoCloseById.js": 6570, + "browser/components/sessionstore/test/browser_unrestored_crashedTabs.js": 5777, + "browser/components/sessionstore/test/browser_windowRestore_perwindowpb.js": 3309, + "browser/components/sessionstore/test/browser_windowStateContainer.js": 27550, + "browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js": 3056, + "browser/components/tests/browser/browser_bug538331.js": 2826, + "browser/components/translation/test/browser_translation_exceptions.js": 5142, + "browser/components/translation/test/browser_translation_telemetry.js": 14685, + "browser/components/translation/test/browser_translation_yandex.js": 3797, + "browser/components/uitour/test/browser_UITour.js": 4388, + "browser/components/uitour/test/browser_UITour2.js": 5610, + "browser/components/uitour/test/browser_UITour_annotation_size_attributes.js": 2687, + "browser/components/uitour/test/browser_UITour_availableTargets.js": 2729, + "browser/components/uitour/test/browser_UITour_detach_tab.js": 3863, + "browser/components/uitour/test/browser_UITour_heartbeat.js": 34288, + "browser/components/uitour/test/browser_UITour_observe.js": 5301, + "browser/components/uitour/test/browser_UITour_registerPageID.js": 3315, + "browser/components/uitour/test/browser_UITour_sync.js": 19210, + "browser/components/uitour/test/browser_backgroundTab.js": 8346, + "browser/components/uitour/test/browser_openPreferences.js": 6981, + "browser/components/uitour/test/browser_showMenu_controlCenter.js": 3441, + "browser/components/uitour/test/browser_trackingProtection.js": 3331, + "browser/components/uitour/test/browser_trackingProtection_tour.js": 5364, + "browser/extensions/pdfjs/test/browser_pdfjs_main.js": 6849, + "browser/extensions/pdfjs/test/browser_pdfjs_navigation.js": 9323, + "browser/extensions/pdfjs/test/browser_pdfjs_views.js": 5701, + "browser/extensions/pdfjs/test/browser_pdfjs_zoom.js": 10608, + "browser/extensions/shield-recipe-client/test/browser_Heartbeat.js": 8542, + "browser/modules/test/browser_BrowserUITelemetry_buckets.js": 4394, + "browser/modules/test/browser_CaptivePortalWatcher.js": 17780, + "browser/modules/test/browser_ContentSearch.js": 6354, + "browser/modules/test/browser_NetworkPrioritizer.js": 10398, + "browser/modules/test/browser_PermissionUI.js": 6192, + "browser/modules/test/browser_SelfSupportBackend.js": 5739, + "browser/modules/test/browser_UnsubmittedCrashHandler.js": 3787, + "browser/modules/test/browser_UsageTelemetry.js": 16257, + "browser/modules/test/browser_UsageTelemetry_content.js": 4343, + "browser/modules/test/browser_UsageTelemetry_content_aboutHome.js": 2857, + "browser/modules/test/browser_UsageTelemetry_private_and_restore.js": 3264, + "browser/modules/test/browser_UsageTelemetry_searchbar.js": 5439, + "browser/modules/test/browser_UsageTelemetry_urlbar.js": 8094, + "docshell/test/browser/browser_bug1309900_crossProcessHistoryNavigation.js": 3678, + "docshell/test/browser/browser_bug388121-2.js": 3125, + "docshell/test/browser/browser_bug422543.js": 3630, + "docshell/test/browser/browser_bug852909.js": 2710, + "docshell/test/browser/browser_bug92473.js": 3676, + "docshell/test/browser/browser_grouped_shistory_bfcache_cleaning.js": 3003, + "docshell/test/browser/browser_onbeforeunload_navigation.js": 6741, + "docshell/test/browser/browser_timelineMarkers-03.js": 6428, + "docshell/test/browser/browser_uriFixupIntegration.js": 2851, + "docshell/test/navigation/browser_bug343515.js": 4657, + "dom/base/test/browser_bug1058164.js": 4112, + "dom/base/test/browser_bug1307747.js": 3267, + "dom/base/test/browser_bug593387.js": 2717, + "dom/base/test/browser_messagemanager_loadprocessscript.js": 3636, + "dom/base/test/browser_use_counters.js": 30338, + "dom/broadcastchannel/tests/browser_private_browsing.js": 5734, + "dom/html/test/browser_bug1108547.js": 17434, + "dom/html/test/browser_fullscreen-contextmenu-esc.js": 2742, + "dom/indexedDB/test/browser_forgetThisSite.js": 5385, + "dom/indexedDB/test/browser_permissionsPromptDeny.js": 4758, + "dom/indexedDB/test/browser_permissionsPromptWorker.js": 2634, + "dom/indexedDB/test/browser_perwindow_privateBrowsing.js": 3983, + "dom/ipc/tests/browser_domainPolicy.js": 11725, + "dom/manifest/test/browser_ManifestFinder_browserHasManifestLink.js": 3021, + "dom/manifest/test/browser_ManifestObtainer_obtain.js": 23387, + "dom/media/webaudio/test/browser_bug1181073.js": 4703, + "dom/notification/test/browser/browser_permission_dismiss.js": 2646, + "dom/security/test/contentverifier/browser_verify_content_about_newtab.js": 14195, + "dom/security/test/contentverifier/browser_verify_content_about_newtab2.js": 12159, + "dom/security/test/csp/browser_test_web_manifest.js": 6022, + "dom/security/test/hsts/browser_hsts-priming_allow_active.js": 2840, + "dom/security/test/hsts/browser_hsts-priming_block_active.js": 3459, + "dom/security/test/hsts/browser_hsts-priming_block_active_with_redir_same.js": 3233, + "dom/security/test/hsts/browser_hsts-priming_cache-timeout.js": 3469, + "dom/security/test/hsts/browser_hsts-priming_hsts_after_mixed.js": 2658, + "dom/security/test/hsts/browser_hsts-priming_no-duplicates.js": 3793, + "dom/security/test/hsts/browser_hsts-priming_timeout.js": 4040, + "dom/tests/browser/browser_ConsoleStoragePBTest_perwindowpb.js": 3659, + "dom/tests/browser/browser_bug396843.js": 6574, + "dom/tests/browser/browser_focus_steal_from_chrome.js": 25508, + "dom/tests/browser/browser_largeAllocation.js": 16126, + "dom/tests/browser/browser_localStorage_privatestorageevent.js": 5312, + "dom/tests/browser/browser_prerendering.js": 2938, + "dom/tests/browser/browser_test_new_window_from_content.js": 34364, + "dom/tests/browser/browser_test_toolbars_visibility.js": 9886, + "dom/workers/test/serviceworkers/browser_download.js": 2983, + "editor/libeditor/tests/browser_bug527935.js": 2758, + "embedding/components/windowwatcher/test/browser_new_content_window_chromeflags.js": 4855, + "embedding/components/windowwatcher/test/browser_new_remote_window_flags.js": 6497, + "embedding/components/windowwatcher/test/browser_new_sized_window.js": 6044, + "embedding/test/browser_bug1204626.js": 6998, + "layout/base/tests/browser_bug617076.js": 3093, + "layout/base/tests/browser_disableDialogs_onbeforeunload.js": 4037, + "layout/base/tests/browser_onbeforeunload_only_after_interaction.js": 3215, + "layout/base/tests/browser_onbeforeunload_only_after_interaction_in_frame.js": 3325, + "netwerk/cookie/test/browser/browser_originattributes.js": 6540, + "netwerk/test/browser/browser_child_resource.js": 12411, + "netwerk/test/browser/browser_post_file.js": 4241, + "security/manager/ssl/tests/mochitest/browser/browser_bug627234_perwindowpb.js": 5670, + "security/manager/ssl/tests/mochitest/browser/browser_certViewer.js": 7173, + "security/manager/ssl/tests/mochitest/browser/browser_clientAuth_connection.js": 3739, + "security/manager/ssl/tests/mochitest/browser/browser_deleteCert_ui.js": 3388, + "testing/mochitest/tests/browser/browser_async.js": 10091, + "testing/mochitest/tests/browser/browser_browserLoaded_content_loaded.js": 3364, + "toolkit/components/aboutperformance/tests/browser/browser_aboutperformance.js": 8789, + "toolkit/components/addoncompat/tests/browser/browser_addonShims.js": 9473, + "toolkit/components/narrate/test/browser_narrate.js": 7247, + "toolkit/components/narrate/test/browser_narrate_disable.js": 3577, + "toolkit/components/narrate/test/browser_narrate_language.js": 2765, + "toolkit/components/narrate/test/browser_voiceselect.js": 4199, + "toolkit/components/narrate/test/browser_word_highlight.js": 4310, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js": 36259, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger_httpsUpgrade.js": 5705, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger_window_open.js": 11188, + "toolkit/components/passwordmgr/test/browser/browser_formless_submit_chrome.js": 7185, + "toolkit/components/passwordmgr/test/browser/browser_hasInsecureLoginForms.js": 3532, + "toolkit/components/passwordmgr/test/browser/browser_http_autofill.js": 5749, + "toolkit/components/passwordmgr/test/browser/browser_insecurePasswordWarning.js": 12930, + "toolkit/components/passwordmgr/test/browser/browser_notifications.js": 5286, + "toolkit/components/passwordmgr/test/browser/browser_notifications_password.js": 6651, + "toolkit/components/passwordmgr/test/browser/browser_notifications_username.js": 10188, + "toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js": 8993, + "toolkit/components/passwordmgr/test/browser/browser_username_select_dialog.js": 3961, + "toolkit/components/perfmonitoring/tests/browser/browser_AddonWatcher.js": 12083, + "toolkit/components/perfmonitoring/tests/browser/browser_addonPerformanceAlerts.js": 25867, + "toolkit/components/perfmonitoring/tests/browser/browser_addonPerformanceAlerts_2.js": 6786, + "toolkit/components/perfmonitoring/tests/browser/browser_webpagePerformanceAlerts.js": 32808, + "toolkit/components/places/tests/browser/browser_bug248970.js": 6832, + "toolkit/components/places/tests/browser/browser_bug399606.js": 12353, + "toolkit/components/places/tests/browser/browser_bug461710.js": 4764, + "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js": 6593, + "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js": 11993, + "toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js": 4136, + "toolkit/components/reader/test/browser_readerMode.js": 6766, + "toolkit/components/reader/test/browser_readerMode_readingTime.js": 3200, + "toolkit/components/remotebrowserutils/tests/browser/browser_RemoteWebNavigation.js": 4608, + "toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js": 5319, + "toolkit/components/startup/tests/browser/browser_bug511456.js": 3606, + "toolkit/components/startup/tests/browser/browser_crash_detection.js": 35078, + "toolkit/components/thumbnails/test/browser_thumbnails_bg_destroy_browser.js": 2825, + "toolkit/components/thumbnails/test/browser_thumbnails_privacy.js": 10033, + "toolkit/components/thumbnails/test/browser_thumbnails_storage.js": 4779, + "toolkit/components/thumbnails/test/browser_thumbnails_update.js": 5801, + "toolkit/components/tooltiptext/tests/browser_input_file_tooltips.js": 6114, + "toolkit/components/viewsource/test/browser/browser_bug464222.js": 3341, + "toolkit/components/viewsource/test/browser/browser_bug713810.js": 3131, + "toolkit/components/viewsource/test/browser/browser_viewsourceprefs.js": 3150, + "toolkit/content/tests/browser/browser_audioCompeting.js": 4693, + "toolkit/content/tests/browser/browser_bug1170531.js": 2687, + "toolkit/content/tests/browser/browser_bug295977_autoscroll_overflow.js": 7231, + "toolkit/content/tests/browser/browser_content_url_annotation.js": 2753, + "toolkit/content/tests/browser/browser_crash_previous_frameloader.js": 3003, + "toolkit/content/tests/browser/browser_f7_caret_browsing.js": 5261, + "toolkit/content/tests/browser/browser_findbar.js": 12430, + "toolkit/content/tests/browser/browser_label_textlink.js": 3976, + "toolkit/content/tests/browser/browser_mediaPlayback.js": 6889, + "toolkit/content/tests/browser/browser_mediaPlayback_mute.js": 9990, + "toolkit/content/tests/browser/browser_mediaPlayback_suspended.js": 5188, + "toolkit/content/tests/browser/browser_mediaPlayback_suspended_multipleAudio.js": 9034, + "toolkit/content/tests/browser/browser_quickfind_editable.js": 4005, + "toolkit/forgetaboutsite/test/browser/browser_clearplugindata.js": 2879, + "toolkit/modules/tests/browser/browser_RemotePageManager.js": 9725, + "toolkit/modules/tests/browser/browser_WebRequest.js": 5284, + "toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js": 13838, + "toolkit/mozapps/extensions/test/browser/browser_bug557943.js": 2647, + "toolkit/mozapps/extensions/test/browser/browser_bug557956.js": 30736, + "toolkit/mozapps/extensions/test/browser/browser_bug562797.js": 69412, + "toolkit/mozapps/extensions/test/browser/browser_bug562854.js": 7206, + "toolkit/mozapps/extensions/test/browser/browser_bug562890.js": 3000, + "toolkit/mozapps/extensions/test/browser/browser_bug562899.js": 4375, + "toolkit/mozapps/extensions/test/browser/browser_bug562992.js": 3076, + "toolkit/mozapps/extensions/test/browser/browser_bug567127.js": 2900, + "toolkit/mozapps/extensions/test/browser/browser_bug567137.js": 7355, + "toolkit/mozapps/extensions/test/browser/browser_bug572561.js": 6580, + "toolkit/mozapps/extensions/test/browser/browser_bug577990.js": 17549, + "toolkit/mozapps/extensions/test/browser/browser_bug580298.js": 3569, + "toolkit/mozapps/extensions/test/browser/browser_bug581076.js": 11480, + "toolkit/mozapps/extensions/test/browser/browser_bug586574.js": 3823, + "toolkit/mozapps/extensions/test/browser/browser_bug587970.js": 3230, + "toolkit/mozapps/extensions/test/browser/browser_bug590347.js": 3586, + "toolkit/mozapps/extensions/test/browser/browser_bug591465.js": 7348, + "toolkit/mozapps/extensions/test/browser/browser_bug591663.js": 5829, + "toolkit/mozapps/extensions/test/browser/browser_bug596336.js": 7869, + "toolkit/mozapps/extensions/test/browser/browser_bug608316.js": 3286, + "toolkit/mozapps/extensions/test/browser/browser_bug610764.js": 4074, + "toolkit/mozapps/extensions/test/browser/browser_bug618502.js": 3939, + "toolkit/mozapps/extensions/test/browser/browser_bug679604.js": 4171, + "toolkit/mozapps/extensions/test/browser/browser_bug714593.js": 3279, + "toolkit/mozapps/extensions/test/browser/browser_cancelCompatCheck.js": 20610, + "toolkit/mozapps/extensions/test/browser/browser_details.js": 44528, + "toolkit/mozapps/extensions/test/browser/browser_discovery.js": 62860, + "toolkit/mozapps/extensions/test/browser/browser_discovery_install.js": 16361, + "toolkit/mozapps/extensions/test/browser/browser_dragdrop.js": 6710, + "toolkit/mozapps/extensions/test/browser/browser_eula.js": 4062, + "toolkit/mozapps/extensions/test/browser/browser_experiments.js": 11973, + "toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js": 5113, + "toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js": 53557, + "toolkit/mozapps/extensions/test/browser/browser_hotfix.js": 4078, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js": 10764, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_browser.js": 7811, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_custom.js": 3870, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js": 10507, + "toolkit/mozapps/extensions/test/browser/browser_install.js": 20304, + "toolkit/mozapps/extensions/test/browser/browser_installssl.js": 13849, + "toolkit/mozapps/extensions/test/browser/browser_list.js": 16456, + "toolkit/mozapps/extensions/test/browser/browser_manualupdates.js": 6810, + "toolkit/mozapps/extensions/test/browser/browser_newaddon.js": 5304, + "toolkit/mozapps/extensions/test/browser/browser_openDialog.js": 3149, + "toolkit/mozapps/extensions/test/browser/browser_plugin_enabled_state_locked.js": 4336, + "toolkit/mozapps/extensions/test/browser/browser_pluginprefs.js": 2734, + "toolkit/mozapps/extensions/test/browser/browser_purchase.js": 6251, + "toolkit/mozapps/extensions/test/browser/browser_recentupdates.js": 8887, + "toolkit/mozapps/extensions/test/browser/browser_searching.js": 26394, + "toolkit/mozapps/extensions/test/browser/browser_sorting.js": 7486, + "toolkit/mozapps/extensions/test/browser/browser_sorting_plugins.js": 3145, + "toolkit/mozapps/extensions/test/browser/browser_tabsettings.js": 3391, + "toolkit/mozapps/extensions/test/browser/browser_types.js": 33981, + "toolkit/mozapps/extensions/test/browser/browser_uninstalling.js": 22055, + "toolkit/mozapps/extensions/test/browser/browser_updateid.js": 3257, + "toolkit/mozapps/extensions/test/browser/browser_updatessl.js": 20643, + "toolkit/mozapps/extensions/test/browser/browser_webapi_access.js": 8925, + "toolkit/mozapps/extensions/test/browser/browser_webapi_addon_listener.js": 5518, + "toolkit/mozapps/extensions/test/browser/browser_webapi_install.js": 9827, + "toolkit/mozapps/extensions/test/browser/browser_webext_options.js": 8145, + "toolkit/mozapps/extensions/test/browser/test-window/browser_CTP_plugins.js": 12575, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562797.js": 31916, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562854.js": 5907, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562899.js": 4155, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug567137.js": 6618, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug572561.js": 5521, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug577990.js": 13724, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug580298.js": 2993, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug581076.js": 9600, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug586574.js": 3185, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug590347.js": 2952, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591465.js": 6409, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591663.js": 4501, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug596336.js": 6843, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug610764.js": 3232, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug618502.js": 2769, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug679604.js": 3301, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug714593.js": 2702, + "toolkit/mozapps/extensions/test/browser/test-window/browser_details.js": 39524, + "toolkit/mozapps/extensions/test/browser/test-window/browser_discovery.js": 47140, + "toolkit/mozapps/extensions/test/browser/test-window/browser_dragdrop.js": 4667, + "toolkit/mozapps/extensions/test/browser/test-window/browser_eula.js": 3478, + "toolkit/mozapps/extensions/test/browser/test-window/browser_experiments.js": 8203, + "toolkit/mozapps/extensions/test/browser/test-window/browser_globalwarnings.js": 4084, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings.js": 9106, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_browser.js": 7250, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_custom.js": 3430, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_info.js": 9317, + "toolkit/mozapps/extensions/test/browser/test-window/browser_install.js": 17430, + "toolkit/mozapps/extensions/test/browser/test-window/browser_list.js": 14900, + "toolkit/mozapps/extensions/test/browser/test-window/browser_manualupdates.js": 5859, + "toolkit/mozapps/extensions/test/browser/test-window/browser_openDialog.js": 2825, + "toolkit/mozapps/extensions/test/browser/test-window/browser_plugin_enabled_state_locked.js": 3748, + "toolkit/mozapps/extensions/test/browser/test-window/browser_purchase.js": 5235, + "toolkit/mozapps/extensions/test/browser/test-window/browser_recentupdates.js": 7919, + "toolkit/mozapps/extensions/test/browser/test-window/browser_searching.js": 22098, + "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting.js": 6879, + "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting_plugins.js": 3288, + "toolkit/mozapps/extensions/test/browser/test-window/browser_tabsettings.js": 2676, + "toolkit/mozapps/extensions/test/browser/test-window/browser_types.js": 28168, + "toolkit/mozapps/extensions/test/browser/test-window/browser_uninstalling.js": 19153, + "toolkit/mozapps/extensions/test/browser/test-window/browser_webext_options.js": 6971, + "toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger.js": 2920, + "toolkit/mozapps/extensions/test/xpinstall/browser_auth.js": 2849, + "toolkit/mozapps/extensions/test/xpinstall/browser_auth4.js": 2724, + "toolkit/mozapps/extensions/test/xpinstall/browser_bug638292.js": 3676, + "toolkit/mozapps/extensions/test/xpinstall/browser_concurrent_installs.js": 3441, + "toolkit/mozapps/extensions/test/xpinstall/browser_localfile.js": 3563, + "toolkit/mozapps/extensions/test/xpinstall/browser_localfile3.js": 2933, + "toolkit/mozapps/extensions/test/xpinstall/browser_localfile4.js": 3829, + "toolkit/mozapps/extensions/test/xpinstall/browser_signed_multiple.js": 2684, + "uriloader/exthandler/tests/mochitest/browser_web_protocol_handlers.js": 4533 + } +} \ No newline at end of file diff --git a/testing/runtimes/mochitest-browser-chrome.runtimes.json b/testing/runtimes/mochitest-browser-chrome.runtimes.json index d655c717a548..ac0b9f10d794 100644 --- a/testing/runtimes/mochitest-browser-chrome.runtimes.json +++ b/testing/runtimes/mochitest-browser-chrome.runtimes.json @@ -1,689 +1,857 @@ { - "excluded_test_average": 681, + "excluded_test_average": 943, "runtimes": { - "browser/base/content/test/chat/browser_chatwindow.js": 6746, - "browser/base/content/test/chat/browser_focus.js": 5490, - "browser/base/content/test/chat/browser_tearoff.js": 3805, - "browser/base/content/test/general/browser_URLBarSetURI.js": 3351, - "browser/base/content/test/general/browser_aboutAccounts.js": 5693, - "browser/base/content/test/general/browser_aboutHealthReport.js": 4207, - "browser/base/content/test/general/browser_aboutHome.js": 12157, - "browser/base/content/test/general/browser_aboutSyncProgress.js": 1733, - "browser/base/content/test/general/browser_action_keyword.js": 2718, - "browser/base/content/test/general/browser_action_searchengine.js": 1416, - "browser/base/content/test/general/browser_addCertException.js": 1789, - "browser/base/content/test/general/browser_alltabslistener.js": 1743, - "browser/base/content/test/general/browser_audioTabIcon.js": 23714, - "browser/base/content/test/general/browser_autocomplete_edit_completed.js": 1516, - "browser/base/content/test/general/browser_autocomplete_tag_star_visibility.js": 1784, - "browser/base/content/test/general/browser_beforeunload_duplicate_dialogs.js": 4116, - "browser/base/content/test/general/browser_blockHPKP.js": 1839, - "browser/base/content/test/general/browser_bug1025195_switchToTabHavingURI_aOpenParams.js": 2773, - "browser/base/content/test/general/browser_bug1045809.js": 1542, - "browser/base/content/test/general/browser_bug386835.js": 1910, - "browser/base/content/test/general/browser_bug406216.js": 1430, - "browser/base/content/test/general/browser_bug422590.js": 4963, - "browser/base/content/test/general/browser_bug462673.js": 2711, - "browser/base/content/test/general/browser_bug491431.js": 1441, - "browser/base/content/test/general/browser_bug495058.js": 3871, - "browser/base/content/test/general/browser_bug537013.js": 2906, - "browser/base/content/test/general/browser_bug553455.js": 23379, - "browser/base/content/test/general/browser_bug561636.js": 7399, - "browser/base/content/test/general/browser_bug567306.js": 3233, - "browser/base/content/test/general/browser_bug575561.js": 6721, - "browser/base/content/test/general/browser_bug581242.js": 2657, - "browser/base/content/test/general/browser_bug585558.js": 1766, - "browser/base/content/test/general/browser_bug590206.js": 8539, - "browser/base/content/test/general/browser_bug592338.js": 3637, - "browser/base/content/test/general/browser_bug623893.js": 2482, - "browser/base/content/test/general/browser_bug647886.js": 1409, - "browser/base/content/test/general/browser_bug676619.js": 8089, - "browser/base/content/test/general/browser_bug719271.js": 2540, - "browser/base/content/test/general/browser_bug734076.js": 2588, - "browser/base/content/test/general/browser_bug735471.js": 2071, - "browser/base/content/test/general/browser_bug763468_perwindowpb.js": 4076, - "browser/base/content/test/general/browser_bug767836_perwindowpb.js": 4640, - "browser/base/content/test/general/browser_bug817947.js": 2189, - "browser/base/content/test/general/browser_bug822367.js": 6263, - "browser/base/content/test/general/browser_bug902156.js": 3504, - "browser/base/content/test/general/browser_bug906190.js": 15390, - "browser/base/content/test/general/browser_bug963945.js": 4207, - "browser/base/content/test/general/browser_bug970746.js": 1414, - "browser/base/content/test/general/browser_contentAreaClick.js": 1750, - "browser/base/content/test/general/browser_contentSearchUI.js": 13374, - "browser/base/content/test/general/browser_contextmenu_childprocess.js": 3091, - "browser/base/content/test/general/browser_datachoices_notification.js": 2917, - "browser/base/content/test/general/browser_datareporting_notification.js": 3198, - "browser/base/content/test/general/browser_devices_get_user_media.js": 18105, - "browser/base/content/test/general/browser_devices_get_user_media_in_frame.js": 4938, - "browser/base/content/test/general/browser_documentnavigation.js": 3652, - "browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js": 5907, - "browser/base/content/test/general/browser_e10s_chrome_process.js": 3579, - "browser/base/content/test/general/browser_e10s_switchbrowser.js": 4374, - "browser/base/content/test/general/browser_favicon_change_not_in_document.js": 1660, - "browser/base/content/test/general/browser_fullscreen-window-open.js": 4645, - "browser/base/content/test/general/browser_fxa_oauth.js": 3268, - "browser/base/content/test/general/browser_fxa_web_channel.js": 1755, - "browser/base/content/test/general/browser_fxaccounts.js": 1878, - "browser/base/content/test/general/browser_getshortcutoruri.js": 2558, - "browser/base/content/test/general/browser_identity_UI.js": 13365, - "browser/base/content/test/general/browser_locationBarCommand.js": 3068, - "browser/base/content/test/general/browser_mcb_redirect.js": 4934, - "browser/base/content/test/general/browser_mixedContentFromOnunload.js": 1989, - "browser/base/content/test/general/browser_mixedcontent_securityflags.js": 2131, - "browser/base/content/test/general/browser_no_mcb_on_http_site.js": 2123, - "browser/base/content/test/general/browser_notification_tab_switching.js": 2147, - "browser/base/content/test/general/browser_offlineQuotaNotification.js": 2027, - "browser/base/content/test/general/browser_overflowScroll.js": 6361, - "browser/base/content/test/general/browser_pageInfo.js": 1632, - "browser/base/content/test/general/browser_parsable_script.js": 6946, - "browser/base/content/test/general/browser_plainTextLinks.js": 1811, - "browser/base/content/test/general/browser_printpreview.js": 3050, - "browser/base/content/test/general/browser_private_browsing_window.js": 2741, - "browser/base/content/test/general/browser_private_no_prompt.js": 1566, - "browser/base/content/test/general/browser_readerMode.js": 2409, - "browser/base/content/test/general/browser_remoteTroubleshoot.js": 2320, - "browser/base/content/test/general/browser_remoteWebNavigation_postdata.js": 1944, - "browser/base/content/test/general/browser_sanitize-timespans.js": 4289, - "browser/base/content/test/general/browser_sanitizeDialog.js": 14298, - "browser/base/content/test/general/browser_save_link-perwindowpb.js": 3756, - "browser/base/content/test/general/browser_save_link_when_window_navigates.js": 3901, - "browser/base/content/test/general/browser_save_private_link_perwindowpb.js": 1523, - "browser/base/content/test/general/browser_searchSuggestionUI.js": 2958, - "browser/base/content/test/general/browser_ssl_error_reports.js": 4355, - "browser/base/content/test/general/browser_tabMatchesInAwesomebar.js": 8728, - "browser/base/content/test/general/browser_tabMatchesInAwesomebar_perwindowpb.js": 6972, - "browser/base/content/test/general/browser_tab_detach_restore.js": 3090, - "browser/base/content/test/general/browser_tab_drag_drop_perwindow.js": 3189, - "browser/base/content/test/general/browser_tab_dragdrop.js": 4048, - "browser/base/content/test/general/browser_tab_dragdrop2.js": 3956, - "browser/base/content/test/general/browser_tabfocus.js": 2354, - "browser/base/content/test/general/browser_trackingUI.js": 3171, - "browser/base/content/test/general/browser_trackingUI_1.js": 5744, - "browser/base/content/test/general/browser_trackingUI_2.js": 3946, - "browser/base/content/test/general/browser_trackingUI_4.js": 5321, - "browser/base/content/test/general/browser_trackingUI_5.js": 6319, - "browser/base/content/test/general/browser_trackingUI_telemetry.js": 8695, - "browser/base/content/test/general/browser_typeAheadFind.js": 1511, - "browser/base/content/test/general/browser_unloaddialogs.js": 2224, - "browser/base/content/test/general/browser_urlbarCopying.js": 2769, - "browser/base/content/test/general/browser_urlbarDelete.js": 2023, - "browser/base/content/test/general/browser_urlbarEnter.js": 1414, - "browser/base/content/test/general/browser_urlbarSearchSingleWordNotification.js": 10921, - "browser/base/content/test/general/browser_urlbarSearchSuggestionsNotification.js": 4594, - "browser/base/content/test/general/browser_urlbar_autoFill_backspaced.js": 5298, - "browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js": 1511, - "browser/base/content/test/general/browser_web_channel.js": 1563, - "browser/base/content/test/general/browser_windowactivation.js": 4599, - "browser/base/content/test/general/browser_zbug569342.js": 4761, - "browser/base/content/test/newtab/browser_newtab_background_captures.js": 2373, - "browser/base/content/test/newtab/browser_newtab_block.js": 9923, - "browser/base/content/test/newtab/browser_newtab_bug1145428.js": 2725, - "browser/base/content/test/newtab/browser_newtab_bug1178586.js": 3407, - "browser/base/content/test/newtab/browser_newtab_bug1194895.js": 15424, - "browser/base/content/test/newtab/browser_newtab_bug723102.js": 1939, - "browser/base/content/test/newtab/browser_newtab_bug725996.js": 1659, - "browser/base/content/test/newtab/browser_newtab_bug734043.js": 1642, - "browser/base/content/test/newtab/browser_newtab_bug735987.js": 3521, - "browser/base/content/test/newtab/browser_newtab_bug752841.js": 3652, - "browser/base/content/test/newtab/browser_newtab_bug765628.js": 1717, - "browser/base/content/test/newtab/browser_newtab_bug876313.js": 1822, - "browser/base/content/test/newtab/browser_newtab_bug991111.js": 1659, - "browser/base/content/test/newtab/browser_newtab_disable.js": 1620, - "browser/base/content/test/newtab/browser_newtab_drag_drop.js": 7218, - "browser/base/content/test/newtab/browser_newtab_drag_drop_ext.js": 7448, - "browser/base/content/test/newtab/browser_newtab_drop_preview.js": 1897, - "browser/base/content/test/newtab/browser_newtab_enhanced.js": 8704, - "browser/base/content/test/newtab/browser_newtab_focus.js": 1716, - "browser/base/content/test/newtab/browser_newtab_intro.js": 1839, - "browser/base/content/test/newtab/browser_newtab_perwindow_private_browsing.js": 6919, - "browser/base/content/test/newtab/browser_newtab_reflow_load.js": 3013, - "browser/base/content/test/newtab/browser_newtab_reportLinkAction.js": 1556, - "browser/base/content/test/newtab/browser_newtab_search.js": 4365, - "browser/base/content/test/newtab/browser_newtab_undo.js": 3855, - "browser/base/content/test/newtab/browser_newtab_unpin.js": 5873, - "browser/base/content/test/newtab/browser_newtab_update.js": 2411, - "browser/base/content/test/plugins/browser_CTP_crashreporting.js": 3921, - "browser/base/content/test/plugins/browser_CTP_data_urls.js": 2360, - "browser/base/content/test/plugins/browser_CTP_drag_drop.js": 3065, - "browser/base/content/test/plugins/browser_CTP_notificationBar.js": 3297, - "browser/base/content/test/plugins/browser_CTP_remove_navigate.js": 1599, - "browser/base/content/test/plugins/browser_CTP_zoom.js": 1437, - "browser/base/content/test/plugins/browser_blocking.js": 5661, - "browser/base/content/test/plugins/browser_pageInfo_plugins.js": 3208, - "browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js": 2792, - "browser/base/content/test/plugins/browser_pluginCrashReportNonDeterminism.js": 2588, - "browser/base/content/test/plugins/browser_plugin_infolink.js": 2898, - "browser/base/content/test/plugins/browser_pluginnotification.js": 7651, - "browser/base/content/test/plugins/browser_pluginplaypreview.js": 1592, - "browser/base/content/test/plugins/browser_plugins_added_dynamically.js": 1723, - "browser/base/content/test/plugins/browser_private_clicktoplay.js": 8336, - "browser/base/content/test/popupNotifications/browser_popupNotification.js": 1560, - "browser/base/content/test/popupNotifications/browser_popupNotification_2.js": 3683, - "browser/base/content/test/popupNotifications/browser_popupNotification_3.js": 3020, - "browser/base/content/test/popupNotifications/browser_popupNotification_4.js": 3235, - "browser/base/content/test/referrer/browser_referrer_middle_click.js": 7053, - "browser/base/content/test/referrer/browser_referrer_open_link_in_private.js": 5820, - "browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js": 4298, - "browser/base/content/test/referrer/browser_referrer_open_link_in_window.js": 5870, - "browser/base/content/test/referrer/browser_referrer_simple_click.js": 5651, - "browser/base/content/test/social/browser_aboutHome_activation.js": 3625, - "browser/base/content/test/social/browser_addons.js": 8062, - "browser/base/content/test/social/browser_blocklist.js": 2807, - "browser/base/content/test/social/browser_social_activation.js": 7564, - "browser/base/content/test/social/browser_social_chatwindow.js": 6432, - "browser/base/content/test/social/browser_social_chatwindow_resize.js": 5638, - "browser/base/content/test/social/browser_social_chatwindowfocus.js": 2247, - "browser/base/content/test/social/browser_social_contextmenu.js": 2109, - "browser/base/content/test/social/browser_social_errorPage.js": 4091, - "browser/base/content/test/social/browser_social_flyout.js": 1924, - "browser/base/content/test/social/browser_social_marks.js": 10968, - "browser/base/content/test/social/browser_social_marks_context.js": 9230, - "browser/base/content/test/social/browser_social_multiprovider.js": 1515, - "browser/base/content/test/social/browser_social_multiworker.js": 1789, - "browser/base/content/test/social/browser_social_perwindowPB.js": 3807, - "browser/base/content/test/social/browser_social_sidebar.js": 1417, - "browser/base/content/test/social/browser_social_status.js": 3818, - "browser/base/content/test/social/browser_social_window.js": 14447, - "browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js": 3483, - "browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js": 2912, - "browser/components/customizableui/test/browser_1008559_anchor_undo_restore.js": 7497, - "browser/components/customizableui/test/browser_1058573_showToolbarsDropdown.js": 1855, - "browser/components/customizableui/test/browser_1089591_still_customizable_after_reset.js": 3176, - "browser/components/customizableui/test/browser_876926_customize_mode_wrapping.js": 7097, - "browser/components/customizableui/test/browser_876944_customize_mode_create_destroy.js": 1980, - "browser/components/customizableui/test/browser_878452_drag_to_panel.js": 2972, - "browser/components/customizableui/test/browser_880164_customization_context_menus.js": 12796, - "browser/components/customizableui/test/browser_880382_drag_wide_widgets_in_panel.js": 6798, - "browser/components/customizableui/test/browser_885052_customize_mode_observers_disabed.js": 2159, - "browser/components/customizableui/test/browser_885530_showInPrivateBrowsing.js": 7705, - "browser/components/customizableui/test/browser_889120_customize_tab_merging.js": 4484, - "browser/components/customizableui/test/browser_890140_orphaned_placeholders.js": 12851, - "browser/components/customizableui/test/browser_901207_searchbar_in_panel.js": 2324, - "browser/components/customizableui/test/browser_914863_disabled_help_quit_buttons.js": 2138, - "browser/components/customizableui/test/browser_918049_skipintoolbarset_dnd.js": 2529, - "browser/components/customizableui/test/browser_923857_customize_mode_event_wrapping_during_reset.js": 3867, - "browser/components/customizableui/test/browser_927717_customize_drag_empty_toolbar.js": 2355, - "browser/components/customizableui/test/browser_932928_show_notice_when_palette_empty.js": 4106, - "browser/components/customizableui/test/browser_934113_menubar_removable.js": 1771, - "browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js": 1507, - "browser/components/customizableui/test/browser_938980_navbar_collapsed.js": 10937, - "browser/components/customizableui/test/browser_940107_home_button_in_bookmarks_toolbar.js": 2487, - "browser/components/customizableui/test/browser_940307_panel_click_closure_handling.js": 1533, - "browser/components/customizableui/test/browser_940946_removable_from_navbar_customizemode.js": 2089, - "browser/components/customizableui/test/browser_944887_destroyWidget_should_destroy_in_palette.js": 2136, - "browser/components/customizableui/test/browser_956602_remove_special_widget.js": 2427, - "browser/components/customizableui/test/browser_962884_opt_in_disable_hyphens.js": 2588, - "browser/components/customizableui/test/browser_963639_customizing_attribute_non_customizable_toolbar.js": 2516, - "browser/components/customizableui/test/browser_967000_button_feeds.js": 1548, - "browser/components/customizableui/test/browser_967000_button_sync.js": 1669, - "browser/components/customizableui/test/browser_968447_bookmarks_toolbar_items_in_panel.js": 2282, - "browser/components/customizableui/test/browser_968565_insert_before_hidden_items.js": 2675, - "browser/components/customizableui/test/browser_969661_character_encoding_navbar_disabled.js": 2484, - "browser/components/customizableui/test/browser_970511_undo_restore_default.js": 12429, - "browser/components/customizableui/test/browser_973932_addonbar_currentset.js": 3625, - "browser/components/customizableui/test/browser_975719_customtoolbars_behaviour.js": 9625, - "browser/components/customizableui/test/browser_976792_insertNodeInWindow.js": 2000, - "browser/components/customizableui/test/browser_978084_dragEnd_after_move.js": 4572, - "browser/components/customizableui/test/browser_984455_bookmarks_items_reparenting.js": 2255, - "browser/components/customizableui/test/browser_985815_propagate_setToolbarVisibility.js": 5081, - "browser/components/customizableui/test/browser_987640_charEncoding.js": 1848, - "browser/components/customizableui/test/browser_988072_sidebar_events.js": 2217, - "browser/components/customizableui/test/browser_993322_widget_notoolbar.js": 2384, - "browser/components/customizableui/test/browser_995164_registerArea_during_customize_mode.js": 8050, - "browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js": 8464, - "browser/components/downloads/test/browser/browser_first_download_panel.js": 1491, - "browser/components/downloads/test/browser/browser_iframe_gone_mid_download.js": 4740, - "browser/components/loop/test/mochitest/browser_GoogleImporter.js": 2394, - "browser/components/loop/test/mochitest/browser_LoopContacts.js": 1451, - "browser/components/loop/test/mochitest/browser_fxa_login.js": 8993, - "browser/components/loop/test/mochitest/browser_mozLoop_context.js": 1688, - "browser/components/loop/test/mochitest/browser_mozLoop_sharingListeners.js": 1943, - "browser/components/loop/test/mochitest/browser_mozLoop_socialShare.js": 1488, - "browser/components/loop/test/mochitest/browser_toolbarbutton.js": 2710, - "browser/components/places/tests/browser/browser_410196_paste_into_tags.js": 1975, - "browser/components/places/tests/browser/browser_416459_cut.js": 1503, - "browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js": 1637, - "browser/components/places/tests/browser/browser_bookmarksProperties.js": 12567, - "browser/components/places/tests/browser/browser_forgetthissite_single.js": 1926, - "browser/components/places/tests/browser/browser_library_commands.js": 3773, - "browser/components/places/tests/browser/browser_library_middleclick.js": 2823, - "browser/components/places/tests/browser/browser_library_views_liveupdate.js": 6485, - "browser/components/places/tests/browser/browser_sort_in_library.js": 2006, - "browser/components/places/tests/browser/browser_views_liveupdate.js": 3127, - "browser/components/preferences/in-content/tests/browser_advanced_update.js": 1560, - "browser/components/preferences/in-content/tests/browser_bug1020245_openPreferences_to_paneContent.js": 5044, - "browser/components/preferences/in-content/tests/browser_bug731866.js": 2480, - "browser/components/preferences/in-content/tests/browser_connection.js": 1872, - "browser/components/preferences/in-content/tests/browser_connection_bug388287.js": 3849, - "browser/components/preferences/in-content/tests/browser_healthreport.js": 1805, - "browser/components/preferences/in-content/tests/browser_privacypane_1.js": 8921, - "browser/components/preferences/in-content/tests/browser_privacypane_3.js": 7660, - "browser/components/preferences/in-content/tests/browser_privacypane_4.js": 12760, - "browser/components/preferences/in-content/tests/browser_privacypane_5.js": 7050, - "browser/components/preferences/in-content/tests/browser_privacypane_8.js": 6767, - "browser/components/preferences/in-content/tests/browser_proxy_backup.js": 1771, - "browser/components/preferences/in-content/tests/browser_sanitizeOnShutdown_prefLocked.js": 2181, - "browser/components/preferences/in-content/tests/browser_searchsuggestions.js": 1587, - "browser/components/preferences/in-content/tests/browser_subdialogs.js": 4165, - "browser/components/preferences/tests/browser_chunk_permissions.js": 2327, - "browser/components/preferences/tests/browser_connection_bug388287.js": 2194, - "browser/components/preferences/tests/browser_cookies_exceptions.js": 7243, - "browser/components/preferences/tests/browser_permissions.js": 2139, - "browser/components/preferences/tests/browser_privacypane_1.js": 3329, - "browser/components/preferences/tests/browser_privacypane_3.js": 2988, - "browser/components/preferences/tests/browser_privacypane_4.js": 5035, - "browser/components/preferences/tests/browser_privacypane_5.js": 3269, - "browser/components/preferences/tests/browser_privacypane_8.js": 2727, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_DownloadLastDirWithCPS.js": 3732, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js": 3244, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutHomeButtonAfterWindowClose.js": 2041, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutHomeButtonAfterWindowClose_old.js": 2260, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutSessionRestore.js": 2143, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cache.js": 1777, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_certexceptionsui.js": 1463, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_concurrent.js": 2338, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cookieacceptdialog.js": 2832, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_crh.js": 2453, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir.js": 2831, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_c.js": 2983, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_toggle.js": 6835, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_geoprompt.js": 3931, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_lastpbcontextexited.js": 4146, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage.js": 1740, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage_before_after.js": 3369, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_noSessionRestoreMenuOption.js": 1787, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js": 1502, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_opendir.js": 1460, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js": 2200, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js": 4198, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_popupblocker.js": 4159, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js": 3509, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_sidebar.js": 8497, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_ui.js": 2179, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js": 2319, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js": 16867, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoom.js": 1973, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoomrestore.js": 2361, - "browser/components/search/test/browser_426329.js": 7820, - "browser/components/search/test/browser_contextmenu.js": 1630, - "browser/components/search/test/browser_private_search_perwindowpb.js": 3029, - "browser/components/search/test/browser_searchbar_keyboard_navigation.js": 1956, - "browser/components/search/test/browser_searchbar_openpopup.js": 2580, - "browser/components/search/test/browser_searchbar_smallpanel_keyboard_navigation.js": 1514, - "browser/components/search/test/browser_webapi.js": 10025, - "browser/components/search/test/browser_yahoo_behavior.js": 1487, - "browser/components/sessionstore/test/browser_354894_perwindowpb.js": 17388, - "browser/components/sessionstore/test/browser_393716.js": 1592, - "browser/components/sessionstore/test/browser_394759_behavior.js": 13536, - "browser/components/sessionstore/test/browser_394759_perwindowpb.js": 4836, - "browser/components/sessionstore/test/browser_423132.js": 1408, - "browser/components/sessionstore/test/browser_463206.js": 1660, - "browser/components/sessionstore/test/browser_477657.js": 1413, - "browser/components/sessionstore/test/browser_480893.js": 1412, - "browser/components/sessionstore/test/browser_490040.js": 4953, - "browser/components/sessionstore/test/browser_491168.js": 1951, - "browser/components/sessionstore/test/browser_495495.js": 4174, - "browser/components/sessionstore/test/browser_500328.js": 1658, - "browser/components/sessionstore/test/browser_522545.js": 10212, - "browser/components/sessionstore/test/browser_524745.js": 2036, - "browser/components/sessionstore/test/browser_586068-apptabs.js": 3141, - "browser/components/sessionstore/test/browser_586068-apptabs_ondemand.js": 2470, - "browser/components/sessionstore/test/browser_586068-browser_state_interrupted.js": 6547, - "browser/components/sessionstore/test/browser_586068-cascade.js": 3407, - "browser/components/sessionstore/test/browser_586068-multi_window.js": 4936, - "browser/components/sessionstore/test/browser_586068-reload.js": 3867, - "browser/components/sessionstore/test/browser_586068-select.js": 3709, - "browser/components/sessionstore/test/browser_586068-window_state.js": 5535, - "browser/components/sessionstore/test/browser_586068-window_state_override.js": 3960, - "browser/components/sessionstore/test/browser_590268.js": 6363, - "browser/components/sessionstore/test/browser_590563.js": 1486, - "browser/components/sessionstore/test/browser_595601-restore_hidden.js": 8130, - "browser/components/sessionstore/test/browser_599909.js": 2284, - "browser/components/sessionstore/test/browser_600545.js": 6652, - "browser/components/sessionstore/test/browser_601955.js": 5366, - "browser/components/sessionstore/test/browser_607016.js": 1703, - "browser/components/sessionstore/test/browser_615394-SSWindowState_events.js": 17373, - "browser/components/sessionstore/test/browser_625016.js": 1701, - "browser/components/sessionstore/test/browser_635418.js": 5027, - "browser/components/sessionstore/test/browser_636279.js": 1876, - "browser/components/sessionstore/test/browser_637020.js": 2490, - "browser/components/sessionstore/test/browser_644409-scratchpads.js": 2668, - "browser/components/sessionstore/test/browser_662743.js": 3389, - "browser/components/sessionstore/test/browser_705597.js": 1517, - "browser/components/sessionstore/test/browser_819510_perwindowpb.js": 7723, - "browser/components/sessionstore/test/browser_911547.js": 1615, - "browser/components/sessionstore/test/browser_aboutSessionRestore.js": 1803, - "browser/components/sessionstore/test/browser_async_duplicate_tab.js": 1943, - "browser/components/sessionstore/test/browser_backup_recovery.js": 5683, - "browser/components/sessionstore/test/browser_broadcast.js": 7563, - "browser/components/sessionstore/test/browser_cleaner.js": 7367, - "browser/components/sessionstore/test/browser_cookies.js": 16397, - "browser/components/sessionstore/test/browser_dying_cache.js": 2116, - "browser/components/sessionstore/test/browser_formdata.js": 6549, - "browser/components/sessionstore/test/browser_formdata_cc.js": 25318, - "browser/components/sessionstore/test/browser_formdata_format.js": 8071, - "browser/components/sessionstore/test/browser_formdata_xpath.js": 1912, - "browser/components/sessionstore/test/browser_frame_history.js": 4787, - "browser/components/sessionstore/test/browser_frametree.js": 2569, - "browser/components/sessionstore/test/browser_history_persist.js": 1764, - "browser/components/sessionstore/test/browser_pageStyle.js": 5801, - "browser/components/sessionstore/test/browser_privatetabs.js": 4889, - "browser/components/sessionstore/test/browser_purge_shistory.js": 1423, - "browser/components/sessionstore/test/browser_replace_load.js": 1427, - "browser/components/sessionstore/test/browser_restore_redirect.js": 1531, - "browser/components/sessionstore/test/browser_scrollPositions.js": 2349, - "browser/components/sessionstore/test/browser_sessionHistory.js": 7134, - "browser/components/sessionstore/test/browser_sessionStorage.js": 5884, - "browser/components/sessionstore/test/browser_swapDocShells.js": 2401, - "browser/components/sessionstore/test/browser_telemetry.js": 5540, - "browser/components/tabview/test/browser_tabview_bug587231.js": 4946, - "browser/components/tabview/test/browser_tabview_bug587503.js": 2447, - "browser/components/tabview/test/browser_tabview_bug587990.js": 1505, - "browser/components/tabview/test/browser_tabview_bug588265.js": 1464, - "browser/components/tabview/test/browser_tabview_bug589324.js": 5819, - "browser/components/tabview/test/browser_tabview_bug593283.js": 3869, - "browser/components/tabview/test/browser_tabview_bug595436.js": 1463, - "browser/components/tabview/test/browser_tabview_bug595521.js": 1625, - "browser/components/tabview/test/browser_tabview_bug595560.js": 2512, - "browser/components/tabview/test/browser_tabview_bug595601.js": 3476, - "browser/components/tabview/test/browser_tabview_bug595930.js": 1670, - "browser/components/tabview/test/browser_tabview_bug595965.js": 5109, - "browser/components/tabview/test/browser_tabview_bug597360.js": 2265, - "browser/components/tabview/test/browser_tabview_bug598375.js": 1837, - "browser/components/tabview/test/browser_tabview_bug598600.js": 2104, - "browser/components/tabview/test/browser_tabview_bug599048.js": 2389, - "browser/components/tabview/test/browser_tabview_bug599626.js": 1565, - "browser/components/tabview/test/browser_tabview_bug608037.js": 2114, - "browser/components/tabview/test/browser_tabview_bug608158.js": 2469, - "browser/components/tabview/test/browser_tabview_bug610208.js": 9207, - "browser/components/tabview/test/browser_tabview_bug612470.js": 1633, - "browser/components/tabview/test/browser_tabview_bug613541.js": 8357, - "browser/components/tabview/test/browser_tabview_bug616729.js": 4512, - "browser/components/tabview/test/browser_tabview_bug616967.js": 1587, - "browser/components/tabview/test/browser_tabview_bug618816.js": 1572, - "browser/components/tabview/test/browser_tabview_bug618828.js": 1788, - "browser/components/tabview/test/browser_tabview_bug622835.js": 2576, - "browser/components/tabview/test/browser_tabview_bug623768.js": 1515, - "browser/components/tabview/test/browser_tabview_bug624692.js": 1937, - "browser/components/tabview/test/browser_tabview_bug624727_perwindowpb.js": 5130, - "browser/components/tabview/test/browser_tabview_bug624847.js": 4973, - "browser/components/tabview/test/browser_tabview_bug624931.js": 1408, - "browser/components/tabview/test/browser_tabview_bug624953.js": 1733, - "browser/components/tabview/test/browser_tabview_bug625269.js": 2240, - "browser/components/tabview/test/browser_tabview_bug625424.js": 4059, - "browser/components/tabview/test/browser_tabview_bug626455.js": 3541, - "browser/components/tabview/test/browser_tabview_bug626525.js": 2291, - "browser/components/tabview/test/browser_tabview_bug626791.js": 11073, - "browser/components/tabview/test/browser_tabview_bug627736.js": 2269, - "browser/components/tabview/test/browser_tabview_bug628061.js": 4628, - "browser/components/tabview/test/browser_tabview_bug628270.js": 2479, - "browser/components/tabview/test/browser_tabview_bug628887.js": 2379, - "browser/components/tabview/test/browser_tabview_bug629195.js": 1634, - "browser/components/tabview/test/browser_tabview_bug630102.js": 2542, - "browser/components/tabview/test/browser_tabview_bug631752.js": 4728, - "browser/components/tabview/test/browser_tabview_bug633788.js": 2762, - "browser/components/tabview/test/browser_tabview_bug634085.js": 3738, - "browser/components/tabview/test/browser_tabview_bug634672.js": 2246, - "browser/components/tabview/test/browser_tabview_bug635696.js": 2701, - "browser/components/tabview/test/browser_tabview_bug637840.js": 4919, - "browser/components/tabview/test/browser_tabview_bug640765.js": 1526, - "browser/components/tabview/test/browser_tabview_bug642793.js": 2269, - "browser/components/tabview/test/browser_tabview_bug643392.js": 4179, - "browser/components/tabview/test/browser_tabview_bug644097.js": 4856, - "browser/components/tabview/test/browser_tabview_bug649307.js": 1585, - "browser/components/tabview/test/browser_tabview_bug649319.js": 2913, - "browser/components/tabview/test/browser_tabview_bug650280_perwindowpb.js": 8085, - "browser/components/tabview/test/browser_tabview_bug650573.js": 2531, - "browser/components/tabview/test/browser_tabview_bug654295.js": 3832, - "browser/components/tabview/test/browser_tabview_bug654721.js": 4177, - "browser/components/tabview/test/browser_tabview_bug655269.js": 2006, - "browser/components/tabview/test/browser_tabview_bug656778.js": 6567, - "browser/components/tabview/test/browser_tabview_bug656913.js": 2904, - "browser/components/tabview/test/browser_tabview_bug659594.js": 1767, - "browser/components/tabview/test/browser_tabview_bug662266.js": 2787, - "browser/components/tabview/test/browser_tabview_bug663421.js": 4512, - "browser/components/tabview/test/browser_tabview_bug665502.js": 2217, - "browser/components/tabview/test/browser_tabview_bug669694.js": 2401, - "browser/components/tabview/test/browser_tabview_bug673196.js": 2108, - "browser/components/tabview/test/browser_tabview_bug681599.js": 1642, - "browser/components/tabview/test/browser_tabview_bug685692.js": 3932, - "browser/components/tabview/test/browser_tabview_bug686654.js": 2728, - "browser/components/tabview/test/browser_tabview_bug697390.js": 3880, - "browser/components/tabview/test/browser_tabview_bug705621.js": 2916, - "browser/components/tabview/test/browser_tabview_bug706430.js": 4408, - "browser/components/tabview/test/browser_tabview_bug706736.js": 3075, - "browser/components/tabview/test/browser_tabview_bug707466.js": 3831, - "browser/components/tabview/test/browser_tabview_bug712203.js": 3506, - "browser/components/tabview/test/browser_tabview_bug715454.js": 1727, - "browser/components/tabview/test/browser_tabview_bug716880.js": 1753, - "browser/components/tabview/test/browser_tabview_bug733115.js": 1684, - "browser/components/tabview/test/browser_tabview_bug749658.js": 1735, - "browser/components/tabview/test/browser_tabview_bug766597.js": 1560, - "browser/components/tabview/test/browser_tabview_click_group.js": 2341, - "browser/components/tabview/test/browser_tabview_dragdrop.js": 1838, - "browser/components/tabview/test/browser_tabview_expander.js": 9046, - "browser/components/tabview/test/browser_tabview_firstrun_pref.js": 3242, - "browser/components/tabview/test/browser_tabview_launch.js": 2764, - "browser/components/tabview/test/browser_tabview_multiwindow_search.js": 3158, - "browser/components/tabview/test/browser_tabview_pending_tabs.js": 2589, - "browser/components/tabview/test/browser_tabview_privatebrowsing_perwindowpb.js": 2459, - "browser/components/tabview/test/browser_tabview_rtl.js": 1467, - "browser/components/tabview/test/browser_tabview_search.js": 1478, - "browser/components/tabview/test/browser_tabview_snapping.js": 2005, - "browser/components/tabview/test/browser_tabview_undo_group.js": 2594, - "browser/components/translation/test/browser_translation_exceptions.js": 3601, - "browser/components/translation/test/browser_translation_fhr.js": 9631, - "browser/components/translation/test/browser_translation_telemetry.js": 6868, - "browser/components/translation/test/browser_translation_yandex.js": 1832, - "browser/components/uitour/test/browser_UITour.js": 6707, - "browser/components/uitour/test/browser_UITour2.js": 3816, - "browser/components/uitour/test/browser_UITour3.js": 2336, - "browser/components/uitour/test/browser_UITour_annotation_size_attributes.js": 1722, - "browser/components/uitour/test/browser_UITour_availableTargets.js": 1770, - "browser/components/uitour/test/browser_UITour_detach_tab.js": 2289, - "browser/components/uitour/test/browser_UITour_heartbeat.js": 18313, - "browser/components/uitour/test/browser_UITour_loop.js": 7719, - "browser/components/uitour/test/browser_UITour_observe.js": 2758, - "browser/components/uitour/test/browser_UITour_registerPageID.js": 1910, - "browser/components/uitour/test/browser_UITour_sync.js": 2160, - "browser/components/uitour/test/browser_backgroundTab.js": 6712, - "browser/components/uitour/test/browser_openPreferences.js": 5495, - "browser/components/uitour/test/browser_showMenu_controlCenter.js": 2068, - "browser/components/uitour/test/browser_trackingProtection.js": 5599, - "browser/components/uitour/test/browser_trackingProtection_tour.js": 3841, - "browser/extensions/pdfjs/test/browser_pdfjs_main.js": 2597, - "browser/extensions/pdfjs/test/browser_pdfjs_navigation.js": 6125, - "browser/extensions/pdfjs/test/browser_pdfjs_views.js": 1843, - "browser/extensions/pdfjs/test/browser_pdfjs_zoom.js": 7230, - "browser/modules/test/browser_BrowserUITelemetry_buckets.js": 4295, - "browser/modules/test/browser_ContentSearch.js": 3939, - "browser/modules/test/browser_NetworkPrioritizer.js": 3205, - "browser/modules/test/browser_SelfSupportBackend.js": 5750, - "docshell/test/browser/browser_bug388121-2.js": 1470, - "docshell/test/browser/browser_onbeforeunload_navigation.js": 2404, - "docshell/test/browser/browser_timelineMarkers-02.js": 6479, - "docshell/test/browser/browser_timelineMarkers-03.js": 5996, - "docshell/test/browser/browser_uriFixupIntegration.js": 1428, - "docshell/test/navigation/browser_bug343515.js": 1985, - "dom/base/test/browser_bug1058164.js": 1631, - "dom/base/test/browser_use_counters.js": 11408, - "dom/html/test/browser_bug1108547.js": 8802, - "dom/indexedDB/test/browser_forgetThisSite.js": 2877, - "dom/indexedDB/test/browser_permissionsPromptDeny.js": 1418, - "dom/indexedDB/test/browser_perwindow_privateBrowsing.js": 1822, - "dom/ipc/tests/browser_domainPolicy.js": 7032, - "dom/manifest/test/browser_ManifestFinder_browserHasManifestLink.js": 1974, - "dom/manifest/test/browser_ManifestObtainer_obtain.js": 14760, - "dom/power/test/browser_wakelocks.js": 2890, - "dom/security/test/csp/browser_test_web_manifest.js": 5199, - "dom/tests/browser/browser_ConsoleStoragePBTest_perwindowpb.js": 1665, - "dom/tests/browser/browser_bug396843.js": 1891, - "dom/tests/browser/browser_focus_steal_from_chrome.js": 5154, - "dom/tests/browser/browser_localStorage_privatestorageevent.js": 2060, - "dom/tests/browser/browser_test_new_window_from_content.js": 16915, - "image/test/browser/browser_bug666317.js": 2538, - "layout/base/tests/browser_disableDialogs_onbeforeunload.js": 1600, - "netwerk/test/browser/browser_cacheFirstParty.js": 45200, - "netwerk/test/browser/browser_child_resource.js": 1684, - "security/manager/ssl/tests/mochitest/browser/browser_bug627234_perwindowpb.js": 2751, - "testing/mochitest/tests/browser/browser_async.js": 10038, - "testing/mochitest/tests/browser/browser_browserLoaded_content_loaded.js": 1817, - "testing/mochitest/tests/browser/browser_fail_timeout.js": 3911, - "testing/mochitest/tests/browser/browser_fail_unexpectedTimeout.js": 3919, - "testing/mochitest/tests/browser/browser_waitForFocus.js": 1455, - "toolkit/components/aboutperformance/tests/browser/browser_aboutperformance.js": 14460, - "toolkit/components/addoncompat/tests/browser/browser_addonShims.js": 3710, - "toolkit/components/passwordmgr/test/browser/browser_context_menu.js": 4446, - "toolkit/components/passwordmgr/test/browser/browser_passwordmgr_editing.js": 1714, - "toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js": 6751, - "toolkit/components/perfmonitoring/tests/browser/browser_AddonWatcher.js": 6209, - "toolkit/components/perfmonitoring/tests/browser/browser_compartments.js": 2466, - "toolkit/components/places/tests/browser/browser_bug248970.js": 3562, - "toolkit/components/places/tests/browser/browser_bug399606.js": 7565, - "toolkit/components/places/tests/browser/browser_colorAnalyzer.js": 1954, - "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js": 3429, - "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js": 6644, - "toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js": 2248, - "toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js": 2984, - "toolkit/components/social/test/browser/browser_SocialProvider.js": 2107, - "toolkit/components/social/test/browser/browser_frameworker.js": 5837, - "toolkit/components/social/test/browser/browser_frameworker_sandbox.js": 5778, - "toolkit/components/social/test/browser/browser_workerAPI.js": 2275, - "toolkit/components/startup/tests/browser/browser_bug511456.js": 1720, - "toolkit/components/startup/tests/browser/browser_crash_detection.js": 35031, - "toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_during_capture.js": 1739, - "toolkit/components/thumbnails/test/browser_thumbnails_bg_destroy_browser.js": 3213, - "toolkit/components/thumbnails/test/browser_thumbnails_bug818225.js": 1536, - "toolkit/components/thumbnails/test/browser_thumbnails_capture.js": 1628, - "toolkit/components/thumbnails/test/browser_thumbnails_privacy.js": 5642, - "toolkit/components/thumbnails/test/browser_thumbnails_redirect.js": 1676, - "toolkit/components/thumbnails/test/browser_thumbnails_storage.js": 3560, - "toolkit/components/thumbnails/test/browser_thumbnails_update.js": 5752, - "toolkit/components/viewsource/test/browser/browser_bug464222.js": 1552, - "toolkit/components/viewsource/test/browser/browser_bug713810.js": 1637, - "toolkit/components/viewsource/test/browser/browser_contextmenu.js": 1716, - "toolkit/components/viewsource/test/browser/browser_gotoline.js": 1530, - "toolkit/components/viewsource/test/browser/browser_viewsourceprefs.js": 1951, - "toolkit/content/tests/browser/browser_bug1170531.js": 1774, - "toolkit/content/tests/browser/browser_bug295977_autoscroll_overflow.js": 4337, - "toolkit/content/tests/browser/browser_f7_caret_browsing.js": 3198, - "toolkit/content/tests/browser/browser_findbar.js": 4402, - "toolkit/content/tests/browser/browser_mediaPlayback_mute.js": 8805, - "toolkit/forgetaboutsite/test/browser/browser_clearplugindata.js": 1426, - "toolkit/modules/tests/browser/browser_RemotePageManager.js": 4867, - "toolkit/modules/tests/browser/browser_RemoteWebNavigation.js": 1612, - "toolkit/modules/tests/browser/browser_WebRequest.js": 2167, - "toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js": 6915, - "toolkit/mozapps/extensions/test/browser/browser_bug557956.js": 15093, - "toolkit/mozapps/extensions/test/browser/browser_bug562797.js": 34538, - "toolkit/mozapps/extensions/test/browser/browser_bug562854.js": 3641, - "toolkit/mozapps/extensions/test/browser/browser_bug562890.js": 1431, - "toolkit/mozapps/extensions/test/browser/browser_bug562899.js": 2838, - "toolkit/mozapps/extensions/test/browser/browser_bug567127.js": 1568, - "toolkit/mozapps/extensions/test/browser/browser_bug567137.js": 3628, - "toolkit/mozapps/extensions/test/browser/browser_bug572561.js": 3027, - "toolkit/mozapps/extensions/test/browser/browser_bug577990.js": 8539, - "toolkit/mozapps/extensions/test/browser/browser_bug580298.js": 1981, - "toolkit/mozapps/extensions/test/browser/browser_bug581076.js": 5994, - "toolkit/mozapps/extensions/test/browser/browser_bug586574.js": 2298, - "toolkit/mozapps/extensions/test/browser/browser_bug587970.js": 1626, - "toolkit/mozapps/extensions/test/browser/browser_bug590347.js": 2157, - "toolkit/mozapps/extensions/test/browser/browser_bug591465.js": 4538, - "toolkit/mozapps/extensions/test/browser/browser_bug591663.js": 3488, - "toolkit/mozapps/extensions/test/browser/browser_bug596336.js": 4012, - "toolkit/mozapps/extensions/test/browser/browser_bug608316.js": 1925, - "toolkit/mozapps/extensions/test/browser/browser_bug610764.js": 2331, - "toolkit/mozapps/extensions/test/browser/browser_bug618502.js": 1947, - "toolkit/mozapps/extensions/test/browser/browser_bug679604.js": 1920, - "toolkit/mozapps/extensions/test/browser/browser_bug714593.js": 1518, - "toolkit/mozapps/extensions/test/browser/browser_cancelCompatCheck.js": 13874, - "toolkit/mozapps/extensions/test/browser/browser_debug_button.js": 5265, - "toolkit/mozapps/extensions/test/browser/browser_details.js": 16551, - "toolkit/mozapps/extensions/test/browser/browser_discovery.js": 33057, - "toolkit/mozapps/extensions/test/browser/browser_dragdrop.js": 4582, - "toolkit/mozapps/extensions/test/browser/browser_eula.js": 2955, - "toolkit/mozapps/extensions/test/browser/browser_experiments.js": 6904, - "toolkit/mozapps/extensions/test/browser/browser_globalinformations.js": 2784, - "toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js": 2444, - "toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js": 19925, - "toolkit/mozapps/extensions/test/browser/browser_hotfix.js": 2183, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js": 6640, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_custom.js": 3207, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js": 5494, - "toolkit/mozapps/extensions/test/browser/browser_install.js": 12110, - "toolkit/mozapps/extensions/test/browser/browser_installssl.js": 17861, - "toolkit/mozapps/extensions/test/browser/browser_list.js": 8547, - "toolkit/mozapps/extensions/test/browser/browser_manualupdates.js": 3761, - "toolkit/mozapps/extensions/test/browser/browser_newaddon.js": 1743, - "toolkit/mozapps/extensions/test/browser/browser_openDialog.js": 2345, - "toolkit/mozapps/extensions/test/browser/browser_plugin_enabled_state_locked.js": 2313, - "toolkit/mozapps/extensions/test/browser/browser_pluginprefs.js": 1858, - "toolkit/mozapps/extensions/test/browser/browser_purchase.js": 2873, - "toolkit/mozapps/extensions/test/browser/browser_recentupdates.js": 5307, - "toolkit/mozapps/extensions/test/browser/browser_searching.js": 13897, - "toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.js": 1703, - "toolkit/mozapps/extensions/test/browser/browser_select_confirm.js": 1894, - "toolkit/mozapps/extensions/test/browser/browser_select_selection.js": 1936, - "toolkit/mozapps/extensions/test/browser/browser_select_update.js": 1933, - "toolkit/mozapps/extensions/test/browser/browser_sorting.js": 3923, - "toolkit/mozapps/extensions/test/browser/browser_sorting_plugins.js": 2378, - "toolkit/mozapps/extensions/test/browser/browser_tabsettings.js": 1499, - "toolkit/mozapps/extensions/test/browser/browser_types.js": 18057, - "toolkit/mozapps/extensions/test/browser/browser_uninstalling.js": 13790, - "toolkit/mozapps/extensions/test/browser/browser_updatessl.js": 21277, - "toolkit/mozapps/extensions/test/browser/test-window/browser_CTP_plugins.js": 7040, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562797.js": 19776, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562854.js": 4058, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562899.js": 2455, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562992.js": 1842, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug567137.js": 4022, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug572561.js": 3570, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug577990.js": 8883, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug580298.js": 1788, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug581076.js": 5754, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug586574.js": 2166, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug587970.js": 1630, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug590347.js": 1777, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591465.js": 4436, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591663.js": 3085, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug596336.js": 4000, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug608316.js": 2072, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug610764.js": 2091, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug618502.js": 1706, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug679604.js": 2002, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug714593.js": 1599, - "toolkit/mozapps/extensions/test/browser/test-window/browser_debug_button.js": 5222, - "toolkit/mozapps/extensions/test/browser/test-window/browser_details.js": 15948, - "toolkit/mozapps/extensions/test/browser/test-window/browser_discovery.js": 31165, - "toolkit/mozapps/extensions/test/browser/test-window/browser_dragdrop.js": 2907, - "toolkit/mozapps/extensions/test/browser/test-window/browser_eula.js": 2227, - "toolkit/mozapps/extensions/test/browser/test-window/browser_experiments.js": 4979, - "toolkit/mozapps/extensions/test/browser/test-window/browser_globalinformations.js": 2699, - "toolkit/mozapps/extensions/test/browser/test-window/browser_globalwarnings.js": 2318, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings.js": 6433, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_custom.js": 2722, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_info.js": 5449, - "toolkit/mozapps/extensions/test/browser/test-window/browser_install.js": 11581, - "toolkit/mozapps/extensions/test/browser/test-window/browser_list.js": 8605, - "toolkit/mozapps/extensions/test/browser/test-window/browser_manualupdates.js": 3844, - "toolkit/mozapps/extensions/test/browser/test-window/browser_openDialog.js": 1898, - "toolkit/mozapps/extensions/test/browser/test-window/browser_plugin_enabled_state_locked.js": 2310, - "toolkit/mozapps/extensions/test/browser/test-window/browser_pluginprefs.js": 1941, - "toolkit/mozapps/extensions/test/browser/test-window/browser_purchase.js": 3397, - "toolkit/mozapps/extensions/test/browser/test-window/browser_recentupdates.js": 5188, - "toolkit/mozapps/extensions/test/browser/test-window/browser_searching.js": 13672, - "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting.js": 4023, - "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting_plugins.js": 2618, - "toolkit/mozapps/extensions/test/browser/test-window/browser_tabsettings.js": 1419, - "toolkit/mozapps/extensions/test/browser/test-window/browser_types.js": 17544, - "toolkit/mozapps/extensions/test/browser/test-window/browser_uninstalling.js": 13576, - "toolkit/mozapps/extensions/test/xpinstall/browser_auth.js": 2284, - "toolkit/mozapps/extensions/test/xpinstall/browser_auth4.js": 1680, - "toolkit/mozapps/extensions/test/xpinstall/browser_bug638292.js": 1504, - "toolkit/mozapps/extensions/test/xpinstall/browser_concurrent_installs.js": 1969, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash5.js": 1563, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash6.js": 1797, - "toolkit/mozapps/extensions/test/xpinstall/browser_signed_multiple.js": 1608 + "Main app process exited normally": 256712, + "accessible/tests/browser/browser_caching_name.js": 4954, + "accessible/tests/browser/browser_shutdown_acc_reference.js": 3209, + "accessible/tests/browser/browser_shutdown_doc_acc_reference.js": 2929, + "accessible/tests/browser/browser_shutdown_multi_acc_reference_doc.js": 4225, + "accessible/tests/browser/browser_shutdown_multi_acc_reference_obj.js": 4138, + "accessible/tests/browser/browser_shutdown_multi_reference.js": 2710, + "accessible/tests/browser/browser_shutdown_start_restart.js": 2713, + "accessible/tests/browser/e10s/browser_caching_name.js": 8501, + "accessible/tests/browser/e10s/browser_treeupdate_ariaowns.js": 2316, + "accessible/tests/browser/e10s/browser_treeupdate_visibility.js": 2005, + "browser/base/content/test/alerts/browser_notification_close.js": 2055, + "browser/base/content/test/alerts/browser_notification_open_settings.js": 2448, + "browser/base/content/test/captivePortal/browser_captivePortal_certErrorUI.js": 2503, + "browser/base/content/test/chat/browser_chatwindow.js": 8674, + "browser/base/content/test/chat/browser_focus.js": 6450, + "browser/base/content/test/chat/browser_tearoff.js": 4319, + "browser/base/content/test/general/browser_URLBarSetURI.js": 4590, + "browser/base/content/test/general/browser_aboutAccounts.js": 4535, + "browser/base/content/test/general/browser_aboutCertError.js": 9211, + "browser/base/content/test/general/browser_aboutHome.js": 22363, + "browser/base/content/test/general/browser_aboutHome_wrapsCorrectly.js": 3441, + "browser/base/content/test/general/browser_action_keyword.js": 2708, + "browser/base/content/test/general/browser_addCertException.js": 3136, + "browser/base/content/test/general/browser_addKeywordSearch.js": 2128, + "browser/base/content/test/general/browser_alltabslistener.js": 2755, + "browser/base/content/test/general/browser_audioTabIcon.js": 39786, + "browser/base/content/test/general/browser_autocomplete_edit_completed.js": 2099, + "browser/base/content/test/general/browser_beforeunload_duplicate_dialogs.js": 6496, + "browser/base/content/test/general/browser_blockHPKP.js": 2540, + "browser/base/content/test/general/browser_bookmark_popup.js": 12455, + "browser/base/content/test/general/browser_bookmark_titles.js": 2409, + "browser/base/content/test/general/browser_bug1025195_switchToTabHavingURI_aOpenParams.js": 4631, + "browser/base/content/test/general/browser_bug1045809.js": 1960, + "browser/base/content/test/general/browser_bug1299667.js": 8754, + "browser/base/content/test/general/browser_bug386835.js": 3234, + "browser/base/content/test/general/browser_bug406216.js": 2261, + "browser/base/content/test/general/browser_bug422590.js": 8139, + "browser/base/content/test/general/browser_bug462673.js": 4036, + "browser/base/content/test/general/browser_bug491431.js": 2127, + "browser/base/content/test/general/browser_bug495058.js": 5673, + "browser/base/content/test/general/browser_bug537013.js": 4228, + "browser/base/content/test/general/browser_bug553455.js": 32427, + "browser/base/content/test/general/browser_bug567306.js": 5920, + "browser/base/content/test/general/browser_bug575561.js": 10730, + "browser/base/content/test/general/browser_bug581242.js": 2704, + "browser/base/content/test/general/browser_bug585558.js": 2040, + "browser/base/content/test/general/browser_bug590206.js": 10362, + "browser/base/content/test/general/browser_bug592338.js": 4611, + "browser/base/content/test/general/browser_bug609700.js": 4015, + "browser/base/content/test/general/browser_bug623893.js": 3163, + "browser/base/content/test/general/browser_bug676619.js": 11546, + "browser/base/content/test/general/browser_bug719271.js": 3871, + "browser/base/content/test/general/browser_bug734076.js": 3261, + "browser/base/content/test/general/browser_bug735471.js": 2085, + "browser/base/content/test/general/browser_bug763468_perwindowpb.js": 6924, + "browser/base/content/test/general/browser_bug767836_perwindowpb.js": 6682, + "browser/base/content/test/general/browser_bug817947.js": 2969, + "browser/base/content/test/general/browser_bug822367.js": 7570, + "browser/base/content/test/general/browser_bug882977.js": 2116, + "browser/base/content/test/general/browser_bug902156.js": 4323, + "browser/base/content/test/general/browser_bug906190.js": 23834, + "browser/base/content/test/general/browser_bug963945.js": 3860, + "browser/base/content/test/general/browser_contentAltClick.js": 3194, + "browser/base/content/test/general/browser_contentAreaClick.js": 2520, + "browser/base/content/test/general/browser_contentSearchUI.js": 16302, + "browser/base/content/test/general/browser_contextmenu.js": 6404, + "browser/base/content/test/general/browser_contextmenu_childprocess.js": 4201, + "browser/base/content/test/general/browser_ctrlTab.js": 4962, + "browser/base/content/test/general/browser_datachoices_notification.js": 3564, + "browser/base/content/test/general/browser_datareporting_notification.js": 4123, + "browser/base/content/test/general/browser_decoderDoctor.js": 1926, + "browser/base/content/test/general/browser_devices_get_user_media.js": 20295, + "browser/base/content/test/general/browser_devices_get_user_media_in_frame.js": 6180, + "browser/base/content/test/general/browser_documentnavigation.js": 5228, + "browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js": 4787, + "browser/base/content/test/general/browser_e10s_chrome_process.js": 4526, + "browser/base/content/test/general/browser_e10s_switchbrowser.js": 5444, + "browser/base/content/test/general/browser_fullscreen-window-open.js": 2830, + "browser/base/content/test/general/browser_fxa_oauth.js": 4120, + "browser/base/content/test/general/browser_fxa_web_channel.js": 3535, + "browser/base/content/test/general/browser_fxaccounts.js": 3175, + "browser/base/content/test/general/browser_getshortcutoruri.js": 3344, + "browser/base/content/test/general/browser_identity_UI.js": 19308, + "browser/base/content/test/general/browser_insecureLoginForms.js": 3538, + "browser/base/content/test/general/browser_locationBarCommand.js": 3188, + "browser/base/content/test/general/browser_mcb_redirect.js": 8524, + "browser/base/content/test/general/browser_misused_characters_in_strings.js": 6197, + "browser/base/content/test/general/browser_mixedContentFromOnunload.js": 2355, + "browser/base/content/test/general/browser_mixed_content_cert_override.js": 4309, + "browser/base/content/test/general/browser_mixedcontent_securityflags.js": 2629, + "browser/base/content/test/general/browser_newTabDrop.js": 4928, + "browser/base/content/test/general/browser_newWindowDrop.js": 21114, + "browser/base/content/test/general/browser_no_mcb_on_http_site.js": 2901, + "browser/base/content/test/general/browser_offlineQuotaNotification.js": 2814, + "browser/base/content/test/general/browser_overflowScroll.js": 7265, + "browser/base/content/test/general/browser_pageInfo.js": 2273, + "browser/base/content/test/general/browser_parsable_css.js": 2523, + "browser/base/content/test/general/browser_parsable_script.js": 8547, + "browser/base/content/test/general/browser_permissions.js": 4518, + "browser/base/content/test/general/browser_plainTextLinks.js": 2170, + "browser/base/content/test/general/browser_popupUI.js": 2245, + "browser/base/content/test/general/browser_printpreview.js": 5871, + "browser/base/content/test/general/browser_private_browsing_window.js": 3607, + "browser/base/content/test/general/browser_private_no_prompt.js": 2065, + "browser/base/content/test/general/browser_readerMode.js": 3581, + "browser/base/content/test/general/browser_refreshBlocker.js": 10694, + "browser/base/content/test/general/browser_relatedTabs.js": 8578, + "browser/base/content/test/general/browser_remoteTroubleshoot.js": 3548, + "browser/base/content/test/general/browser_remoteWebNavigation_postdata.js": 2176, + "browser/base/content/test/general/browser_sanitize-timespans.js": 6246, + "browser/base/content/test/general/browser_sanitizeDialog.js": 21078, + "browser/base/content/test/general/browser_save_link-perwindowpb.js": 5222, + "browser/base/content/test/general/browser_save_link_when_window_navigates.js": 4887, + "browser/base/content/test/general/browser_save_private_link_perwindowpb.js": 3032, + "browser/base/content/test/general/browser_selectTabAtIndex.js": 2787, + "browser/base/content/test/general/browser_ssl_error_reports.js": 8220, + "browser/base/content/test/general/browser_syncui.js": 5402, + "browser/base/content/test/general/browser_tabDrop.js": 3870, + "browser/base/content/test/general/browser_tabMatchesInAwesomebar.js": 12675, + "browser/base/content/test/general/browser_tabMatchesInAwesomebar_perwindowpb.js": 8317, + "browser/base/content/test/general/browser_tab_close_dependent_window.js": 3170, + "browser/base/content/test/general/browser_tab_detach_restore.js": 3826, + "browser/base/content/test/general/browser_tab_drag_drop_perwindow.js": 9358, + "browser/base/content/test/general/browser_tab_dragdrop.js": 5989, + "browser/base/content/test/general/browser_tab_dragdrop2.js": 5365, + "browser/base/content/test/general/browser_tabfocus.js": 3234, + "browser/base/content/test/general/browser_tabkeynavigation.js": 2058, + "browser/base/content/test/general/browser_tabs_isActive.js": 2148, + "browser/base/content/test/general/browser_trackingUI_1.js": 8610, + "browser/base/content/test/general/browser_trackingUI_2.js": 5972, + "browser/base/content/test/general/browser_trackingUI_3.js": 2056, + "browser/base/content/test/general/browser_trackingUI_4.js": 7873, + "browser/base/content/test/general/browser_trackingUI_5.js": 8397, + "browser/base/content/test/general/browser_trackingUI_telemetry.js": 12210, + "browser/base/content/test/general/browser_typeAheadFind.js": 2104, + "browser/base/content/test/general/browser_unloaddialogs.js": 1989, + "browser/base/content/test/general/browser_urlbarCopying.js": 3291, + "browser/base/content/test/general/browser_urlbarDelete.js": 2349, + "browser/base/content/test/general/browser_urlbarSearchSingleWordNotification.js": 12733, + "browser/base/content/test/general/browser_urlbarSearchSuggestionsNotification.js": 11224, + "browser/base/content/test/general/browser_urlbarSearchTelemetry.js": 3252, + "browser/base/content/test/general/browser_urlbar_autoFill_backspaced.js": 5662, + "browser/base/content/test/general/browser_utilityOverlay.js": 2079, + "browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js": 2435, + "browser/base/content/test/general/browser_web_channel.js": 13287, + "browser/base/content/test/general/browser_windowactivation.js": 5022, + "browser/base/content/test/newtab/browser_newtab_block.js": 4694, + "browser/base/content/test/newtab/browser_newtab_bug1194895.js": 7375, + "browser/base/content/test/newtab/browser_newtab_drag_drop.js": 4524, + "browser/base/content/test/newtab/browser_newtab_drag_drop_ext.js": 10077, + "browser/base/content/test/newtab/browser_newtab_enhanced.js": 4317, + "browser/base/content/test/newtab/browser_newtab_intro.js": 2152, + "browser/base/content/test/newtab/browser_newtab_perwindow_private_browsing.js": 2984, + "browser/base/content/test/newtab/browser_newtab_unpin.js": 2896, + "browser/base/content/test/plugins/browser_CTP_crashreporting.js": 4623, + "browser/base/content/test/plugins/browser_CTP_data_urls.js": 3580, + "browser/base/content/test/plugins/browser_CTP_drag_drop.js": 5004, + "browser/base/content/test/plugins/browser_CTP_notificationBar.js": 4726, + "browser/base/content/test/plugins/browser_CTP_outsideScrollArea.js": 2057, + "browser/base/content/test/plugins/browser_CTP_remove_navigate.js": 2607, + "browser/base/content/test/plugins/browser_CTP_zoom.js": 2497, + "browser/base/content/test/plugins/browser_blocking.js": 8859, + "browser/base/content/test/plugins/browser_bug743421.js": 1953, + "browser/base/content/test/plugins/browser_clearplugindata.js": 1970, + "browser/base/content/test/plugins/browser_iterate_hidden_plugins.js": 3842, + "browser/base/content/test/plugins/browser_pageInfo_plugins.js": 4949, + "browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js": 3975, + "browser/base/content/test/plugins/browser_plugin_infolink.js": 2392, + "browser/base/content/test/plugins/browser_pluginnotification.js": 10634, + "browser/base/content/test/plugins/browser_plugins_added_dynamically.js": 2310, + "browser/base/content/test/plugins/browser_private_clicktoplay.js": 7542, + "browser/base/content/test/popupNotifications/browser_popupNotification_2.js": 4242, + "browser/base/content/test/popupNotifications/browser_popupNotification_3.js": 3418, + "browser/base/content/test/popupNotifications/browser_popupNotification_4.js": 2958, + "browser/base/content/test/popupNotifications/browser_popupNotification_5.js": 3582, + "browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js": 2846, + "browser/base/content/test/referrer/browser_referrer_middle_click.js": 17578, + "browser/base/content/test/referrer/browser_referrer_middle_click_in_container.js": 17296, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab.js": 4884, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab2.js": 4456, + "browser/base/content/test/referrer/browser_referrer_open_link_in_container_tab3.js": 4761, + "browser/base/content/test/referrer/browser_referrer_open_link_in_private.js": 7624, + "browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js": 5245, + "browser/base/content/test/referrer/browser_referrer_open_link_in_window.js": 8155, + "browser/base/content/test/referrer/browser_referrer_open_link_in_window_in_container.js": 8389, + "browser/base/content/test/referrer/browser_referrer_simple_click.js": 13704, + "browser/base/content/test/social/browser_aboutHome_activation.js": 4928, + "browser/base/content/test/social/browser_blocklist.js": 3946, + "browser/base/content/test/social/browser_share.js": 9928, + "browser/base/content/test/social/browser_social_activation.js": 8652, + "browser/base/content/test/social/browser_social_chatwindow.js": 7424, + "browser/base/content/test/social/browser_social_chatwindow_resize.js": 4743, + "browser/base/content/test/social/browser_social_chatwindowfocus.js": 3147, + "browser/base/content/test/social/browser_social_contextmenu.js": 3014, + "browser/base/content/test/social/browser_social_errorPage.js": 5261, + "browser/base/content/test/social/browser_social_flyout.js": 2181, + "browser/base/content/test/social/browser_social_marks.js": 8438, + "browser/base/content/test/social/browser_social_marks_context.js": 5938, + "browser/base/content/test/social/browser_social_multiworker.js": 2746, + "browser/base/content/test/social/browser_social_perwindowPB.js": 5727, + "browser/base/content/test/social/browser_social_status.js": 4890, + "browser/base/content/test/social/browser_social_window.js": 19940, + "browser/base/content/test/tabs/browser_navigatePinnedTab.js": 3563, + "browser/base/content/test/tabs/browser_tabSwitchPrintPreview.js": 2163, + "browser/base/content/test/urlbar/browser_URLBarSetURI.js": 4770, + "browser/base/content/test/urlbar/browser_action_searchengine.js": 2122, + "browser/base/content/test/urlbar/browser_action_searchengine_alias.js": 1986, + "browser/base/content/test/urlbar/browser_autocomplete_a11y_label.js": 1965, + "browser/base/content/test/urlbar/browser_autocomplete_autoselect.js": 2100, + "browser/base/content/test/urlbar/browser_autocomplete_enter_race.js": 5982, + "browser/base/content/test/urlbar/browser_autocomplete_tag_star_visibility.js": 3463, + "browser/base/content/test/urlbar/browser_bug1025195_switchToTabHavingURI_aOpenParams.js": 8349, + "browser/base/content/test/urlbar/browser_bug1070778.js": 2199, + "browser/base/content/test/urlbar/browser_bug304198.js": 1925, + "browser/base/content/test/urlbar/browser_canonizeURL.js": 2985, + "browser/base/content/test/urlbar/browser_moz_action_link.js": 2323, + "browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar.js": 9636, + "browser/base/content/test/urlbar/browser_tabMatchesInAwesomebar_perwindowpb.js": 4170, + "browser/base/content/test/urlbar/browser_urlbarAboutHomeLoading.js": 9206, + "browser/base/content/test/urlbar/browser_urlbarDecode.js": 2299, + "browser/base/content/test/urlbar/browser_urlbarHashChangeProxyState.js": 2294, + "browser/base/content/test/urlbar/browser_urlbarKeepStateAcrossTabSwitches.js": 2583, + "browser/base/content/test/urlbar/browser_urlbarOneOffs.js": 6115, + "browser/base/content/test/urlbar/browser_urlbarRaceWithTabs.js": 2282, + "browser/base/content/test/urlbar/browser_urlbarSearchSingleWordNotification.js": 16819, + "browser/base/content/test/urlbar/browser_urlbarSearchSuggestions.js": 2251, + "browser/base/content/test/urlbar/browser_urlbarSearchSuggestionsNotification.js": 10936, + "browser/base/content/test/urlbar/browser_urlbarSearchTelemetry.js": 5890, + "browser/base/content/test/urlbar/browser_urlbarStop.js": 2092, + "browser/base/content/test/urlbar/browser_urlbar_autoFill_backspaced.js": 7004, + "browser/base/content/test/urlbar/browser_urlbar_blanking.js": 3691, + "browser/base/content/test/webrtc/browser_devices_get_user_media.js": 13978, + "browser/base/content/test/webrtc/browser_devices_get_user_media_anim.js": 5250, + "browser/base/content/test/webrtc/browser_devices_get_user_media_in_frame.js": 8327, + "browser/base/content/test/webrtc/browser_devices_get_user_media_screen.js": 6249, + "browser/base/content/test/webrtc/browser_devices_get_user_media_tear_off_tab.js": 3249, + "browser/components/contextualidentity/test/browser/browser_aboutURLs.js": 19159, + "browser/components/contextualidentity/test/browser/browser_broadcastchannel.js": 1991, + "browser/components/contextualidentity/test/browser/browser_eme.js": 2237, + "browser/components/contextualidentity/test/browser/browser_favicon.js": 9300, + "browser/components/contextualidentity/test/browser/browser_forgetAPI_EME_forgetThisSite.js": 5300, + "browser/components/contextualidentity/test/browser/browser_forgetAPI_quota_clearStoragesForPrincipal.js": 3675, + "browser/components/contextualidentity/test/browser/browser_forgetaboutsite.js": 13411, + "browser/components/contextualidentity/test/browser/browser_imageCache.js": 4815, + "browser/components/contextualidentity/test/browser/browser_newtabButton.js": 5498, + "browser/components/contextualidentity/test/browser/browser_serviceworkers.js": 2686, + "browser/components/contextualidentity/test/browser/browser_usercontext.js": 4116, + "browser/components/contextualidentity/test/browser/browser_usercontextid_tabdrop.js": 4974, + "browser/components/contextualidentity/test/browser/browser_windowOpen.js": 2486, + "browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js": 3488, + "browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js": 2654, + "browser/components/customizableui/test/browser_1008559_anchor_undo_restore.js": 8718, + "browser/components/customizableui/test/browser_1089591_still_customizable_after_reset.js": 3416, + "browser/components/customizableui/test/browser_876926_customize_mode_wrapping.js": 8648, + "browser/components/customizableui/test/browser_876944_customize_mode_create_destroy.js": 1987, + "browser/components/customizableui/test/browser_878452_drag_to_panel.js": 3304, + "browser/components/customizableui/test/browser_880164_customization_context_menus.js": 14163, + "browser/components/customizableui/test/browser_880382_drag_wide_widgets_in_panel.js": 8111, + "browser/components/customizableui/test/browser_885052_customize_mode_observers_disabed.js": 2613, + "browser/components/customizableui/test/browser_885530_showInPrivateBrowsing.js": 10316, + "browser/components/customizableui/test/browser_889120_customize_tab_merging.js": 6271, + "browser/components/customizableui/test/browser_890140_orphaned_placeholders.js": 13730, + "browser/components/customizableui/test/browser_901207_searchbar_in_panel.js": 2327, + "browser/components/customizableui/test/browser_914863_disabled_help_quit_buttons.js": 2058, + "browser/components/customizableui/test/browser_918049_skipintoolbarset_dnd.js": 2438, + "browser/components/customizableui/test/browser_923857_customize_mode_event_wrapping_during_reset.js": 3920, + "browser/components/customizableui/test/browser_927717_customize_drag_empty_toolbar.js": 2338, + "browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js": 1922, + "browser/components/customizableui/test/browser_938980_navbar_collapsed.js": 12517, + "browser/components/customizableui/test/browser_940946_removable_from_navbar_customizemode.js": 1994, + "browser/components/customizableui/test/browser_944887_destroyWidget_should_destroy_in_palette.js": 1960, + "browser/components/customizableui/test/browser_956602_remove_special_widget.js": 2334, + "browser/components/customizableui/test/browser_962884_opt_in_disable_hyphens.js": 2399, + "browser/components/customizableui/test/browser_963639_customizing_attribute_non_customizable_toolbar.js": 2295, + "browser/components/customizableui/test/browser_967000_button_sync.js": 7471, + "browser/components/customizableui/test/browser_968565_insert_before_hidden_items.js": 2534, + "browser/components/customizableui/test/browser_969661_character_encoding_navbar_disabled.js": 2362, + "browser/components/customizableui/test/browser_970511_undo_restore_default.js": 14354, + "browser/components/customizableui/test/browser_973932_addonbar_currentset.js": 3456, + "browser/components/customizableui/test/browser_975719_customtoolbars_behaviour.js": 10607, + "browser/components/customizableui/test/browser_978084_dragEnd_after_move.js": 4609, + "browser/components/customizableui/test/browser_985815_propagate_setToolbarVisibility.js": 5794, + "browser/components/customizableui/test/browser_987640_charEncoding.js": 2372, + "browser/components/customizableui/test/browser_988072_sidebar_events.js": 4880, + "browser/components/customizableui/test/browser_993322_widget_notoolbar.js": 2224, + "browser/components/customizableui/test/browser_995164_registerArea_during_customize_mode.js": 8583, + "browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js": 8390, + "browser/components/customizableui/test/browser_check_tooltips_in_navbar.js": 2096, + "browser/components/customizableui/test/browser_customizemode_contextmenu_menubuttonstate.js": 2284, + "browser/components/customizableui/test/browser_switch_to_customize_mode.js": 5363, + "browser/components/downloads/test/browser/browser_confirm_unblock_download.js": 5417, + "browser/components/downloads/test/browser/browser_downloads_panel_block.js": 22516, + "browser/components/downloads/test/browser/browser_iframe_gone_mid_download.js": 7385, + "browser/components/downloads/test/browser/browser_indicatorDrop.js": 5075, + "browser/components/downloads/test/browser/browser_libraryDrop.js": 6251, + "browser/components/extensions/test/browser/browser_ext_browserAction_context.js": 6063, + "browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon.js": 13426, + "browser/components/extensions/test/browser/browser_ext_browserAction_pageAction_icon_permissions.js": 4447, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup.js": 13072, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup_preload.js": 4825, + "browser/components/extensions/test/browser/browser_ext_browserAction_popup_resize.js": 11396, + "browser/components/extensions/test/browser/browser_ext_browserAction_simple.js": 2631, + "browser/components/extensions/test/browser/browser_ext_commands_execute_browser_action.js": 3773, + "browser/components/extensions/test/browser/browser_ext_commands_onCommand.js": 4519, + "browser/components/extensions/test/browser/browser_ext_contextMenus.js": 6844, + "browser/components/extensions/test/browser/browser_ext_contextMenus_actionMenus.js": 2209, + "browser/components/extensions/test/browser/browser_ext_contextMenus_checkboxes.js": 2087, + "browser/components/extensions/test/browser/browser_ext_contextMenus_chrome.js": 2877, + "browser/components/extensions/test/browser/browser_ext_contextMenus_onclick.js": 19241, + "browser/components/extensions/test/browser/browser_ext_contextMenus_radioGroups.js": 2043, + "browser/components/extensions/test/browser/browser_ext_currentWindow.js": 8998, + "browser/components/extensions/test/browser/browser_ext_getViews.js": 9544, + "browser/components/extensions/test/browser/browser_ext_incognito_popup.js": 5140, + "browser/components/extensions/test/browser/browser_ext_incognito_views.js": 4075, + "browser/components/extensions/test/browser/browser_ext_legacy_extension_context_contentscript.js": 2629, + "browser/components/extensions/test/browser/browser_ext_omnibox.js": 7971, + "browser/components/extensions/test/browser/browser_ext_optionsPage_privileges.js": 5073, + "browser/components/extensions/test/browser/browser_ext_pageAction_context.js": 8016, + "browser/components/extensions/test/browser/browser_ext_pageAction_popup.js": 5772, + "browser/components/extensions/test/browser/browser_ext_pageAction_popup_resize.js": 2346, + "browser/components/extensions/test/browser/browser_ext_pageAction_title.js": 9209, + "browser/components/extensions/test/browser/browser_ext_popup_api_injection.js": 3126, + "browser/components/extensions/test/browser/browser_ext_popup_background.js": 3195, + "browser/components/extensions/test/browser/browser_ext_popup_corners.js": 2673, + "browser/components/extensions/test/browser/browser_ext_popup_sendMessage.js": 2454, + "browser/components/extensions/test/browser/browser_ext_popup_shutdown.js": 3823, + "browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage.js": 24202, + "browser/components/extensions/test/browser/browser_ext_runtime_openOptionsPage_uninstall.js": 4739, + "browser/components/extensions/test/browser/browser_ext_runtime_setUninstallURL.js": 3413, + "browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed.js": 14654, + "browser/components/extensions/test/browser/browser_ext_sessions_getRecentlyClosed_private.js": 4249, + "browser/components/extensions/test/browser/browser_ext_sessions_restore.js": 11395, + "browser/components/extensions/test/browser/browser_ext_tab_runtimeConnect.js": 2306, + "browser/components/extensions/test/browser/browser_ext_tabs_audio.js": 3006, + "browser/components/extensions/test/browser/browser_ext_tabs_captureVisibleTab.js": 7471, + "browser/components/extensions/test/browser/browser_ext_tabs_cookieStoreId.js": 11426, + "browser/components/extensions/test/browser/browser_ext_tabs_create.js": 8814, + "browser/components/extensions/test/browser/browser_ext_tabs_detectLanguage.js": 3680, + "browser/components/extensions/test/browser/browser_ext_tabs_duplicate.js": 7481, + "browser/components/extensions/test/browser/browser_ext_tabs_events.js": 11709, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript.js": 4252, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_bad.js": 7803, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_good.js": 9378, + "browser/components/extensions/test/browser/browser_ext_tabs_executeScript_runAt.js": 2717, + "browser/components/extensions/test/browser/browser_ext_tabs_getCurrent.js": 2190, + "browser/components/extensions/test/browser/browser_ext_tabs_move.js": 3728, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window.js": 7730, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window_multiple.js": 6397, + "browser/components/extensions/test/browser/browser_ext_tabs_move_window_pinned.js": 4922, + "browser/components/extensions/test/browser/browser_ext_tabs_onHighlighted.js": 3195, + "browser/components/extensions/test/browser/browser_ext_tabs_onUpdated.js": 16368, + "browser/components/extensions/test/browser/browser_ext_tabs_query.js": 9851, + "browser/components/extensions/test/browser/browser_ext_tabs_reload.js": 1956, + "browser/components/extensions/test/browser/browser_ext_tabs_reload_bypass_cache.js": 2218, + "browser/components/extensions/test/browser/browser_ext_tabs_removeCSS.js": 2097, + "browser/components/extensions/test/browser/browser_ext_tabs_sendMessage.js": 4951, + "browser/components/extensions/test/browser/browser_ext_tabs_update.js": 2279, + "browser/components/extensions/test/browser/browser_ext_tabs_update_url.js": 5491, + "browser/components/extensions/test/browser/browser_ext_tabs_zoom.js": 4946, + "browser/components/extensions/test/browser/browser_ext_webNavigation_getFrames.js": 2319, + "browser/components/extensions/test/browser/browser_ext_webNavigation_urlbar_transitions.js": 8373, + "browser/components/extensions/test/browser/browser_ext_webRequest.js": 5295, + "browser/components/extensions/test/browser/browser_ext_windows.js": 2319, + "browser/components/extensions/test/browser/browser_ext_windows_allowScriptsToClose.js": 6112, + "browser/components/extensions/test/browser/browser_ext_windows_create.js": 10089, + "browser/components/extensions/test/browser/browser_ext_windows_create_tabId.js": 10142, + "browser/components/extensions/test/browser/browser_ext_windows_create_url.js": 8076, + "browser/components/extensions/test/browser/browser_ext_windows_events.js": 4114, + "browser/components/extensions/test/browser/browser_ext_windows_size.js": 3006, + "browser/components/extensions/test/browser/browser_ext_windows_update.js": 7168, + "browser/components/newtab/tests/browser/browser_PreviewProvider.js": 2721, + "browser/components/newtab/tests/browser/browser_newtab_overrides.js": 5220, + "browser/components/newtab/tests/browser/browser_newtabwebchannel.js": 5901, + "browser/components/originattributes/test/browser/browser_blobURLIsolation.js": 11316, + "browser/components/originattributes/test/browser/browser_broadcastChannel.js": 9848, + "browser/components/originattributes/test/browser/browser_cache.js": 20014, + "browser/components/originattributes/test/browser/browser_cacheAPI.js": 13788, + "browser/components/originattributes/test/browser/browser_clientAuth.js": 14758, + "browser/components/originattributes/test/browser/browser_cookieIsolation.js": 8153, + "browser/components/originattributes/test/browser/browser_favicon_firstParty.js": 9326, + "browser/components/originattributes/test/browser/browser_favicon_userContextId.js": 6434, + "browser/components/originattributes/test/browser/browser_firstPartyIsolation.js": 15130, + "browser/components/originattributes/test/browser/browser_httpauth.js": 22525, + "browser/components/originattributes/test/browser/browser_imageCacheIsolation.js": 19571, + "browser/components/originattributes/test/browser/browser_localStorageIsolation.js": 7981, + "browser/components/originattributes/test/browser/browser_permissions.js": 31916, + "browser/components/originattributes/test/browser/browser_sanitize.js": 36498, + "browser/components/originattributes/test/browser/browser_sharedworker.js": 8933, + "browser/components/places/tests/browser/browser_0_library_left_pane_migration.js": 1932, + "browser/components/places/tests/browser/browser_410196_paste_into_tags.js": 2102, + "browser/components/places/tests/browser/browser_475045.js": 2023, + "browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js": 5613, + "browser/components/places/tests/browser/browser_bookmarkProperties_editTagContainer.js": 2424, + "browser/components/places/tests/browser/browser_bookmarklet_windowOpen.js": 2011, + "browser/components/places/tests/browser/browser_bookmarksProperties.js": 4787, + "browser/components/places/tests/browser/browser_forgetthissite_single.js": 2492, + "browser/components/places/tests/browser/browser_library_batch_delete.js": 2138, + "browser/components/places/tests/browser/browser_library_commands.js": 5823, + "browser/components/places/tests/browser/browser_library_infoBox.js": 2070, + "browser/components/places/tests/browser/browser_library_middleclick.js": 4660, + "browser/components/places/tests/browser/browser_library_views_liveupdate.js": 9015, + "browser/components/places/tests/browser/browser_sort_in_library.js": 2706, + "browser/components/places/tests/browser/browser_views_liveupdate.js": 4275, + "browser/components/preferences/in-content/tests/browser_advanced_siteData.js": 4546, + "browser/components/preferences/in-content/tests/browser_advanced_update.js": 3765, + "browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js": 2815, + "browser/components/preferences/in-content/tests/browser_bug1020245_openPreferences_to_paneContent.js": 7119, + "browser/components/preferences/in-content/tests/browser_bug1184989_prevent_scrolling_when_preferences_flipped.js": 3072, + "browser/components/preferences/in-content/tests/browser_bug731866.js": 3887, + "browser/components/preferences/in-content/tests/browser_connection.js": 2059, + "browser/components/preferences/in-content/tests/browser_connection_bug388287.js": 4792, + "browser/components/preferences/in-content/tests/browser_cookies_exceptions.js": 24898, + "browser/components/preferences/in-content/tests/browser_defaultbrowser_alwayscheck.js": 3312, + "browser/components/preferences/in-content/tests/browser_homepages_filter_aboutpreferences.js": 2566, + "browser/components/preferences/in-content/tests/browser_permissions_urlFieldHidden.js": 3240, + "browser/components/preferences/in-content/tests/browser_privacypane_1.js": 12582, + "browser/components/preferences/in-content/tests/browser_privacypane_3.js": 11813, + "browser/components/preferences/in-content/tests/browser_privacypane_4.js": 19735, + "browser/components/preferences/in-content/tests/browser_privacypane_5.js": 11639, + "browser/components/preferences/in-content/tests/browser_privacypane_8.js": 11650, + "browser/components/preferences/in-content/tests/browser_proxy_backup.js": 2184, + "browser/components/preferences/in-content/tests/browser_sanitizeOnShutdown_prefLocked.js": 3107, + "browser/components/preferences/in-content/tests/browser_searchsuggestions.js": 2438, + "browser/components/preferences/in-content/tests/browser_security.js": 11804, + "browser/components/preferences/in-content/tests/browser_subdialogs.js": 8790, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_DownloadLastDirWithCPS.js": 6301, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js": 4713, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutHomeButtonAfterWindowClose.js": 3379, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutSessionRestore.js": 3345, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_blobUrl.js": 3606, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cache.js": 2957, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_certexceptionsui.js": 2477, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_concurrent.js": 7935, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_context_and_chromeFlags.js": 3542, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_crh.js": 3685, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir.js": 4398, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_c.js": 4479, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_toggle.js": 9423, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_favicon.js": 9058, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_geoprompt.js": 5966, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_lastpbcontextexited.js": 5888, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage.js": 3665, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage_before_after.js": 4699, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_newtab_from_popup.js": 4326, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_noSessionRestoreMenuOption.js": 3144, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js": 2557, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_opendir.js": 2563, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js": 3953, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js": 6580, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_popupblocker.js": 5971, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js": 5707, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_sidebar.js": 12408, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_ui.js": 3242, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js": 3376, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_windowtitle.js": 25463, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoom.js": 3568, + "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_zoomrestore.js": 3486, + "browser/components/safebrowsing/content/test/browser_bug400731.js": 1919, + "browser/components/safebrowsing/content/test/browser_bug415846.js": 1921, + "browser/components/search/test/browser_426329.js": 8841, + "browser/components/search/test/browser_aboutSearchReset.js": 4146, + "browser/components/search/test/browser_contextmenu.js": 2251, + "browser/components/search/test/browser_oneOffContextMenu.js": 1931, + "browser/components/search/test/browser_private_search_perwindowpb.js": 5217, + "browser/components/search/test/browser_searchbar_keyboard_navigation.js": 2679, + "browser/components/search/test/browser_searchbar_smallpanel_keyboard_navigation.js": 2229, + "browser/components/search/test/browser_webapi.js": 6207, + "browser/components/search/test/browser_yahoo_behavior.js": 2213, + "browser/components/sessionstore/test/browser_354894_perwindowpb.js": 31054, + "browser/components/sessionstore/test/browser_393716.js": 2257, + "browser/components/sessionstore/test/browser_394759_behavior.js": 18512, + "browser/components/sessionstore/test/browser_394759_perwindowpb.js": 6367, + "browser/components/sessionstore/test/browser_423132.js": 2267, + "browser/components/sessionstore/test/browser_463206.js": 2312, + "browser/components/sessionstore/test/browser_464199.js": 1996, + "browser/components/sessionstore/test/browser_465223.js": 1931, + "browser/components/sessionstore/test/browser_477657.js": 2209, + "browser/components/sessionstore/test/browser_480893.js": 2061, + "browser/components/sessionstore/test/browser_490040.js": 7018, + "browser/components/sessionstore/test/browser_491168.js": 2636, + "browser/components/sessionstore/test/browser_495495.js": 5815, + "browser/components/sessionstore/test/browser_500328.js": 2461, + "browser/components/sessionstore/test/browser_522545.js": 15600, + "browser/components/sessionstore/test/browser_524745.js": 2696, + "browser/components/sessionstore/test/browser_586068-apptabs.js": 4253, + "browser/components/sessionstore/test/browser_586068-apptabs_ondemand.js": 3099, + "browser/components/sessionstore/test/browser_586068-browser_state_interrupted.js": 7824, + "browser/components/sessionstore/test/browser_586068-cascade.js": 4403, + "browser/components/sessionstore/test/browser_586068-multi_window.js": 6783, + "browser/components/sessionstore/test/browser_586068-reload.js": 5703, + "browser/components/sessionstore/test/browser_586068-select.js": 5048, + "browser/components/sessionstore/test/browser_586068-window_state.js": 7307, + "browser/components/sessionstore/test/browser_586068-window_state_override.js": 5164, + "browser/components/sessionstore/test/browser_588426.js": 2657, + "browser/components/sessionstore/test/browser_590268.js": 8307, + "browser/components/sessionstore/test/browser_590563.js": 3125, + "browser/components/sessionstore/test/browser_595601-restore_hidden.js": 12818, + "browser/components/sessionstore/test/browser_599909.js": 2060, + "browser/components/sessionstore/test/browser_600545.js": 8725, + "browser/components/sessionstore/test/browser_601955.js": 5447, + "browser/components/sessionstore/test/browser_607016.js": 2705, + "browser/components/sessionstore/test/browser_615394-SSWindowState_events.js": 23104, + "browser/components/sessionstore/test/browser_625016.js": 2891, + "browser/components/sessionstore/test/browser_635418.js": 5002, + "browser/components/sessionstore/test/browser_636279.js": 2253, + "browser/components/sessionstore/test/browser_637020.js": 3577, + "browser/components/sessionstore/test/browser_644409-scratchpads.js": 4627, + "browser/components/sessionstore/test/browser_662743.js": 4474, + "browser/components/sessionstore/test/browser_701377.js": 2504, + "browser/components/sessionstore/test/browser_819510_perwindowpb.js": 23642, + "browser/components/sessionstore/test/browser_911547.js": 2187, + "browser/components/sessionstore/test/browser_aboutSessionRestore.js": 2603, + "browser/components/sessionstore/test/browser_async_duplicate_tab.js": 2606, + "browser/components/sessionstore/test/browser_async_window_flushing.js": 6549, + "browser/components/sessionstore/test/browser_backup_recovery.js": 11615, + "browser/components/sessionstore/test/browser_broadcast.js": 8420, + "browser/components/sessionstore/test/browser_cleaner.js": 9836, + "browser/components/sessionstore/test/browser_closed_objects_changed_notifications_tabs.js": 9435, + "browser/components/sessionstore/test/browser_closed_objects_changed_notifications_windows.js": 14452, + "browser/components/sessionstore/test/browser_cookies.js": 20675, + "browser/components/sessionstore/test/browser_docshell_uuid_consistency.js": 1991, + "browser/components/sessionstore/test/browser_dying_cache.js": 2972, + "browser/components/sessionstore/test/browser_forget_async_closings.js": 6728, + "browser/components/sessionstore/test/browser_formdata.js": 7492, + "browser/components/sessionstore/test/browser_formdata_cc.js": 29674, + "browser/components/sessionstore/test/browser_formdata_format.js": 10315, + "browser/components/sessionstore/test/browser_formdata_xpath.js": 2650, + "browser/components/sessionstore/test/browser_frame_history.js": 5986, + "browser/components/sessionstore/test/browser_frametree.js": 3151, + "browser/components/sessionstore/test/browser_history_persist.js": 2496, + "browser/components/sessionstore/test/browser_merge_closed_tabs.js": 2586, + "browser/components/sessionstore/test/browser_newtab_userTypedValue.js": 27350, + "browser/components/sessionstore/test/browser_pageStyle.js": 8178, + "browser/components/sessionstore/test/browser_privatetabs.js": 7866, + "browser/components/sessionstore/test/browser_purge_shistory.js": 2055, + "browser/components/sessionstore/test/browser_replace_load.js": 2189, + "browser/components/sessionstore/test/browser_restore_cookies_noOriginAttributes.js": 2962, + "browser/components/sessionstore/test/browser_restore_redirect.js": 2148, + "browser/components/sessionstore/test/browser_scrollPositions.js": 31762, + "browser/components/sessionstore/test/browser_scrollPositionsReaderMode.js": 9403, + "browser/components/sessionstore/test/browser_sessionHistory.js": 7939, + "browser/components/sessionstore/test/browser_sessionStorage.js": 7579, + "browser/components/sessionstore/test/browser_sessionStoreContainer.js": 12959, + "browser/components/sessionstore/test/browser_swapDocShells.js": 3819, + "browser/components/sessionstore/test/browser_undoCloseById.js": 5522, + "browser/components/sessionstore/test/browser_windowRestore_perwindowpb.js": 1935, + "browser/components/sessionstore/test/browser_windowStateContainer.js": 21687, + "browser/components/syncedtabs/test/browser/browser_sidebar_syncedtabslist.js": 2649, + "browser/components/translation/test/browser_translation_bing.js": 2069, + "browser/components/translation/test/browser_translation_exceptions.js": 4586, + "browser/components/translation/test/browser_translation_telemetry.js": 9736, + "browser/components/translation/test/browser_translation_yandex.js": 3022, + "browser/components/uitour/test/browser_UITour.js": 5030, + "browser/components/uitour/test/browser_UITour2.js": 4854, + "browser/components/uitour/test/browser_UITour_annotation_size_attributes.js": 2220, + "browser/components/uitour/test/browser_UITour_availableTargets.js": 2331, + "browser/components/uitour/test/browser_UITour_detach_tab.js": 3068, + "browser/components/uitour/test/browser_UITour_heartbeat.js": 29548, + "browser/components/uitour/test/browser_UITour_observe.js": 4010, + "browser/components/uitour/test/browser_UITour_registerPageID.js": 2595, + "browser/components/uitour/test/browser_UITour_sync.js": 17053, + "browser/components/uitour/test/browser_backgroundTab.js": 7438, + "browser/components/uitour/test/browser_openPreferences.js": 6317, + "browser/components/uitour/test/browser_showMenu_controlCenter.js": 2779, + "browser/components/uitour/test/browser_trackingProtection.js": 3564, + "browser/components/uitour/test/browser_trackingProtection_tour.js": 4568, + "browser/extensions/loop/chrome/test/mochitest/browser_LoopRooms_channel.js": 3910, + "browser/extensions/loop/chrome/test/mochitest/browser_fxa_login.js": 11542, + "browser/extensions/loop/chrome/test/mochitest/browser_mozLoop_chat.js": 5094, + "browser/extensions/loop/chrome/test/mochitest/browser_mozLoop_sharingListeners.js": 2227, + "browser/extensions/loop/chrome/test/mochitest/browser_toolbarbutton.js": 3852, + "browser/extensions/pdfjs/test/browser_pdfjs_main.js": 6113, + "browser/extensions/pdfjs/test/browser_pdfjs_navigation.js": 8730, + "browser/extensions/pdfjs/test/browser_pdfjs_views.js": 5372, + "browser/extensions/pdfjs/test/browser_pdfjs_zoom.js": 9760, + "browser/extensions/pocket/test/browser_pocket_ui_check.js": 2012, + "browser/extensions/shield-recipe-client/test/browser_Heartbeat.js": 7131, + "browser/modules/test/browser_BrowserUITelemetry_buckets.js": 4374, + "browser/modules/test/browser_CaptivePortalWatcher.js": 13616, + "browser/modules/test/browser_ContentSearch.js": 5221, + "browser/modules/test/browser_NetworkPrioritizer.js": 4842, + "browser/modules/test/browser_PermissionUI.js": 4839, + "browser/modules/test/browser_SelfSupportBackend.js": 5724, + "browser/modules/test/browser_UnsubmittedCrashHandler.js": 3442, + "browser/modules/test/browser_UsageTelemetry.js": 12643, + "browser/modules/test/browser_UsageTelemetry_content.js": 3285, + "browser/modules/test/browser_UsageTelemetry_content_aboutHome.js": 2240, + "browser/modules/test/browser_UsageTelemetry_private_and_restore.js": 2664, + "browser/modules/test/browser_UsageTelemetry_searchbar.js": 4280, + "browser/modules/test/browser_UsageTelemetry_urlbar.js": 6533, + "docshell/test/browser/browser_bug388121-2.js": 2635, + "docshell/test/browser/browser_bug422543.js": 2484, + "docshell/test/browser/browser_bug852909.js": 1992, + "docshell/test/browser/browser_onbeforeunload_navigation.js": 4636, + "docshell/test/browser/browser_timelineMarkers-03.js": 6194, + "docshell/test/browser/browser_uriFixupIntegration.js": 2103, + "docshell/test/navigation/browser_bug343515.js": 3292, + "docshell/test/navigation/browser_test-content-chromeflags.js": 1978, + "dom/base/test/browser_bug1058164.js": 2748, + "dom/base/test/browser_bug1307747.js": 2805, + "dom/base/test/browser_use_counters.js": 23404, + "dom/broadcastchannel/tests/browser_private_browsing.js": 4978, + "dom/html/test/browser_bug1108547.js": 13316, + "dom/html/test/browser_fullscreen-contextmenu-esc.js": 2445, + "dom/indexedDB/test/browser_forgetThisSite.js": 4885, + "dom/indexedDB/test/browser_permissionsPromptAllow.js": 1920, + "dom/indexedDB/test/browser_permissionsPromptDeny.js": 3954, + "dom/indexedDB/test/browser_permissionsPromptWorker.js": 2071, + "dom/indexedDB/test/browser_perwindow_privateBrowsing.js": 2972, + "dom/ipc/tests/browser_domainPolicy.js": 9706, + "dom/manifest/test/browser_ManifestFinder_browserHasManifestLink.js": 2363, + "dom/manifest/test/browser_ManifestObtainer_obtain.js": 18836, + "dom/media/webaudio/test/browser_bug1181073.js": 4083, + "dom/notification/test/browser/browser_permission_dismiss.js": 2250, + "dom/power/test/browser_wakelocks.js": 4354, + "dom/security/test/contentverifier/browser_verify_content_about_newtab.js": 12181, + "dom/security/test/contentverifier/browser_verify_content_about_newtab2.js": 10284, + "dom/security/test/csp/browser_manifest-src-override-default-src.js": 1939, + "dom/security/test/csp/browser_test_web_manifest.js": 5639, + "dom/security/test/hsts/browser_hsts-priming_allow_active.js": 2280, + "dom/security/test/hsts/browser_hsts-priming_allow_display.js": 1974, + "dom/security/test/hsts/browser_hsts-priming_block_active.js": 2803, + "dom/security/test/hsts/browser_hsts-priming_block_active_with_redir_same.js": 2682, + "dom/security/test/hsts/browser_hsts-priming_cache-timeout.js": 3110, + "dom/security/test/hsts/browser_hsts-priming_hsts_after_mixed.js": 2328, + "dom/security/test/hsts/browser_hsts-priming_no-duplicates.js": 2831, + "dom/security/test/hsts/browser_hsts-priming_timeout.js": 3798, + "dom/tests/browser/browser_ConsoleAPITests.js": 3520, + "dom/tests/browser/browser_ConsoleStoragePBTest_perwindowpb.js": 2914, + "dom/tests/browser/browser_bug396843.js": 6050, + "dom/tests/browser/browser_focus_steal_from_chrome.js": 24015, + "dom/tests/browser/browser_localStorage_privatestorageevent.js": 4393, + "dom/tests/browser/browser_test_new_window_from_content.js": 31428, + "dom/tests/browser/browser_test_toolbars_visibility.js": 7831, + "dom/workers/test/serviceworkers/browser_download.js": 2556, + "editor/libeditor/tests/browser_bug527935.js": 2560, + "embedding/components/windowwatcher/test/browser_new_content_window_chromeflags.js": 3909, + "embedding/components/windowwatcher/test/browser_new_content_window_from_chrome_principal.js": 2168, + "embedding/components/windowwatcher/test/browser_new_sized_window.js": 4285, + "embedding/test/browser_bug1204626.js": 5652, + "layout/base/tests/browser_bug617076.js": 2453, + "layout/base/tests/browser_disableDialogs_onbeforeunload.js": 2230, + "layout/base/tests/browser_onbeforeunload_only_after_interaction.js": 2284, + "layout/base/tests/browser_onbeforeunload_only_after_interaction_in_frame.js": 2441, + "netwerk/cookie/test/browser/browser_originattributes.js": 5489, + "netwerk/test/browser/browser_child_resource.js": 2440, + "security/manager/ssl/tests/mochitest/browser/browser_bug627234_perwindowpb.js": 4724, + "security/manager/ssl/tests/mochitest/browser/browser_certViewer.js": 6507, + "security/manager/ssl/tests/mochitest/browser/browser_clientAuth_connection.js": 3321, + "security/manager/ssl/tests/mochitest/browser/browser_deleteCert_ui.js": 2969, + "testing/mochitest/tests/browser/browser_async.js": 10083, + "testing/mochitest/tests/browser/browser_browserLoaded_content_loaded.js": 2864, + "testing/mochitest/tests/browser/browser_waitForFocus.js": 2067, + "toolkit/components/aboutperformance/tests/browser/browser_aboutperformance.js": 8669, + "toolkit/components/addoncompat/tests/browser/browser_addonShims.js": 6424, + "toolkit/components/narrate/test/browser_narrate.js": 3896, + "toolkit/components/narrate/test/browser_narrate_disable.js": 2528, + "toolkit/components/narrate/test/browser_narrate_language.js": 2241, + "toolkit/components/narrate/test/browser_voiceselect.js": 3199, + "toolkit/components/narrate/test/browser_word_highlight.js": 3436, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js": 30201, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger_httpsUpgrade.js": 5048, + "toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger_window_open.js": 9295, + "toolkit/components/passwordmgr/test/browser/browser_context_menu.js": 14753, + "toolkit/components/passwordmgr/test/browser/browser_formless_submit_chrome.js": 5973, + "toolkit/components/passwordmgr/test/browser/browser_hasInsecureLoginForms.js": 2667, + "toolkit/components/passwordmgr/test/browser/browser_http_autofill.js": 4404, + "toolkit/components/passwordmgr/test/browser/browser_insecurePasswordWarning.js": 9300, + "toolkit/components/passwordmgr/test/browser/browser_notifications.js": 3980, + "toolkit/components/passwordmgr/test/browser/browser_notifications_password.js": 4966, + "toolkit/components/passwordmgr/test/browser/browser_notifications_username.js": 7874, + "toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js": 8504, + "toolkit/components/passwordmgr/test/browser/browser_username_select_dialog.js": 3380, + "toolkit/components/perfmonitoring/tests/browser/browser_AddonWatcher.js": 2539, + "toolkit/components/perfmonitoring/tests/browser/browser_addonPerformanceAlerts.js": 23826, + "toolkit/components/perfmonitoring/tests/browser/browser_addonPerformanceAlerts_2.js": 5789, + "toolkit/components/perfmonitoring/tests/browser/browser_compartments.js": 5699, + "toolkit/components/perfmonitoring/tests/browser/browser_webpagePerformanceAlerts.js": 35101, + "toolkit/components/places/tests/browser/browser_bug248970.js": 6353, + "toolkit/components/places/tests/browser/browser_bug399606.js": 8916, + "toolkit/components/places/tests/browser/browser_bug461710.js": 4239, + "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage.js": 5677, + "toolkit/components/places/tests/browser/browser_favicon_setAndFetchFaviconForPage_failures.js": 10364, + "toolkit/components/places/tests/browser/browser_visituri_privatebrowsing_perwindowpb.js": 3319, + "toolkit/components/reader/test/browser_bug1124271_readerModePinnedTab.js": 2067, + "toolkit/components/reader/test/browser_readerMode.js": 5178, + "toolkit/components/reader/test/browser_readerMode_readingTime.js": 2362, + "toolkit/components/satchel/test/browser/browser_privbrowsing_perwindowpb.js": 4898, + "toolkit/components/social/test/browser/browser_SocialProvider.js": 2324, + "toolkit/components/social/test/browser/browser_frameworker.js": 5888, + "toolkit/components/social/test/browser/browser_frameworker_sandbox.js": 5738, + "toolkit/components/social/test/browser/browser_workerAPI.js": 2483, + "toolkit/components/startup/tests/browser/browser_bug511456.js": 2803, + "toolkit/components/startup/tests/browser/browser_crash_detection.js": 35076, + "toolkit/components/thumbnails/test/browser_thumbnails_bg_bad_url.js": 2260, + "toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_during_capture.js": 2281, + "toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_while_idle.js": 2113, + "toolkit/components/thumbnails/test/browser_thumbnails_bg_destroy_browser.js": 4497, + "toolkit/components/thumbnails/test/browser_thumbnails_privacy.js": 7688, + "toolkit/components/thumbnails/test/browser_thumbnails_storage.js": 4654, + "toolkit/components/thumbnails/test/browser_thumbnails_update.js": 4615, + "toolkit/components/tooltiptext/tests/browser_input_file_tooltips.js": 4764, + "toolkit/components/viewsource/test/browser/browser_bug464222.js": 2589, + "toolkit/components/viewsource/test/browser/browser_bug713810.js": 2305, + "toolkit/components/viewsource/test/browser/browser_contextmenu.js": 3464, + "toolkit/components/viewsource/test/browser/browser_gotoline.js": 2177, + "toolkit/components/viewsource/test/browser/browser_viewsourceprefs.js": 3124, + "toolkit/content/tests/browser/browser_audioCompeting.js": 3484, + "toolkit/content/tests/browser/browser_bug1170531.js": 2083, + "toolkit/content/tests/browser/browser_bug295977_autoscroll_overflow.js": 7223, + "toolkit/content/tests/browser/browser_f7_caret_browsing.js": 4806, + "toolkit/content/tests/browser/browser_findbar.js": 9522, + "toolkit/content/tests/browser/browser_label_textlink.js": 2560, + "toolkit/content/tests/browser/browser_mediaPlayback.js": 6217, + "toolkit/content/tests/browser/browser_mediaPlayback_mute.js": 9273, + "toolkit/content/tests/browser/browser_mediaPlayback_suspended.js": 4139, + "toolkit/content/tests/browser/browser_mediaPlayback_suspended_multipleAudio.js": 8178, + "toolkit/content/tests/browser/browser_quickfind_editable.js": 3343, + "toolkit/forgetaboutsite/test/browser/browser_clearplugindata.js": 2527, + "toolkit/modules/tests/browser/browser_RemotePageManager.js": 7969, + "toolkit/modules/tests/browser/browser_WebRequest.js": 4238, + "toolkit/mozapps/extensions/test/browser/browser_CTP_plugins.js": 11117, + "toolkit/mozapps/extensions/test/browser/browser_bug557943.js": 2060, + "toolkit/mozapps/extensions/test/browser/browser_bug557956.js": 30339, + "toolkit/mozapps/extensions/test/browser/browser_bug562797.js": 52689, + "toolkit/mozapps/extensions/test/browser/browser_bug562854.js": 5473, + "toolkit/mozapps/extensions/test/browser/browser_bug562890.js": 2183, + "toolkit/mozapps/extensions/test/browser/browser_bug562899.js": 3720, + "toolkit/mozapps/extensions/test/browser/browser_bug562992.js": 2158, + "toolkit/mozapps/extensions/test/browser/browser_bug567127.js": 2149, + "toolkit/mozapps/extensions/test/browser/browser_bug567137.js": 5681, + "toolkit/mozapps/extensions/test/browser/browser_bug572561.js": 4890, + "toolkit/mozapps/extensions/test/browser/browser_bug573062.js": 2049, + "toolkit/mozapps/extensions/test/browser/browser_bug577990.js": 12990, + "toolkit/mozapps/extensions/test/browser/browser_bug580298.js": 3033, + "toolkit/mozapps/extensions/test/browser/browser_bug581076.js": 9096, + "toolkit/mozapps/extensions/test/browser/browser_bug586574.js": 3052, + "toolkit/mozapps/extensions/test/browser/browser_bug587970.js": 2401, + "toolkit/mozapps/extensions/test/browser/browser_bug590347.js": 2933, + "toolkit/mozapps/extensions/test/browser/browser_bug591465.js": 6457, + "toolkit/mozapps/extensions/test/browser/browser_bug591663.js": 4259, + "toolkit/mozapps/extensions/test/browser/browser_bug596336.js": 6496, + "toolkit/mozapps/extensions/test/browser/browser_bug608316.js": 2414, + "toolkit/mozapps/extensions/test/browser/browser_bug610764.js": 2823, + "toolkit/mozapps/extensions/test/browser/browser_bug618502.js": 2623, + "toolkit/mozapps/extensions/test/browser/browser_bug679604.js": 2893, + "toolkit/mozapps/extensions/test/browser/browser_bug714593.js": 2617, + "toolkit/mozapps/extensions/test/browser/browser_cancelCompatCheck.js": 20447, + "toolkit/mozapps/extensions/test/browser/browser_debug_button.js": 6544, + "toolkit/mozapps/extensions/test/browser/browser_details.js": 38493, + "toolkit/mozapps/extensions/test/browser/browser_discovery.js": 47540, + "toolkit/mozapps/extensions/test/browser/browser_discovery_install.js": 13023, + "toolkit/mozapps/extensions/test/browser/browser_dragdrop.js": 5732, + "toolkit/mozapps/extensions/test/browser/browser_eula.js": 3411, + "toolkit/mozapps/extensions/test/browser/browser_experiments.js": 10751, + "toolkit/mozapps/extensions/test/browser/browser_globalinformations.js": 3474, + "toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js": 3905, + "toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js": 46765, + "toolkit/mozapps/extensions/test/browser/browser_hotfix.js": 3851, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js": 9334, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_browser.js": 7072, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_custom.js": 3215, + "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js": 9210, + "toolkit/mozapps/extensions/test/browser/browser_install.js": 16713, + "toolkit/mozapps/extensions/test/browser/browser_installssl.js": 14037, + "toolkit/mozapps/extensions/test/browser/browser_list.js": 13804, + "toolkit/mozapps/extensions/test/browser/browser_manualupdates.js": 5553, + "toolkit/mozapps/extensions/test/browser/browser_newaddon.js": 3395, + "toolkit/mozapps/extensions/test/browser/browser_openDialog.js": 2435, + "toolkit/mozapps/extensions/test/browser/browser_plugin_enabled_state_locked.js": 3727, + "toolkit/mozapps/extensions/test/browser/browser_pluginprefs.js": 2051, + "toolkit/mozapps/extensions/test/browser/browser_purchase.js": 4428, + "toolkit/mozapps/extensions/test/browser/browser_recentupdates.js": 7583, + "toolkit/mozapps/extensions/test/browser/browser_searching.js": 21947, + "toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.js": 2440, + "toolkit/mozapps/extensions/test/browser/browser_select_confirm.js": 2470, + "toolkit/mozapps/extensions/test/browser/browser_select_selection.js": 2535, + "toolkit/mozapps/extensions/test/browser/browser_select_update.js": 2276, + "toolkit/mozapps/extensions/test/browser/browser_sorting.js": 6235, + "toolkit/mozapps/extensions/test/browser/browser_sorting_plugins.js": 2582, + "toolkit/mozapps/extensions/test/browser/browser_tabsettings.js": 2334, + "toolkit/mozapps/extensions/test/browser/browser_types.js": 27100, + "toolkit/mozapps/extensions/test/browser/browser_uninstalling.js": 19569, + "toolkit/mozapps/extensions/test/browser/browser_updateid.js": 2102, + "toolkit/mozapps/extensions/test/browser/browser_updatessl.js": 20828, + "toolkit/mozapps/extensions/test/browser/browser_webapi_access.js": 7026, + "toolkit/mozapps/extensions/test/browser/browser_webapi_addon_listener.js": 4087, + "toolkit/mozapps/extensions/test/browser/browser_webapi_install.js": 8577, + "toolkit/mozapps/extensions/test/browser/browser_webext_options.js": 6565, + "toolkit/mozapps/extensions/test/browser/test-window/browser_CTP_plugins.js": 11673, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug557943.js": 2147, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562797.js": 31447, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562854.js": 5682, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562890.js": 2120, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562899.js": 4089, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562992.js": 2199, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug567127.js": 2082, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug567137.js": 6395, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug572561.js": 5249, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug573062.js": 1997, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug577990.js": 13657, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug580298.js": 2852, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug581076.js": 9272, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug586574.js": 2970, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug587970.js": 2399, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug590347.js": 2813, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591465.js": 6131, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591663.js": 4516, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug596336.js": 6574, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug608316.js": 2469, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug610764.js": 2979, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug618502.js": 2773, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug679604.js": 3002, + "toolkit/mozapps/extensions/test/browser/test-window/browser_bug714593.js": 2619, + "toolkit/mozapps/extensions/test/browser/test-window/browser_debug_button.js": 7434, + "toolkit/mozapps/extensions/test/browser/test-window/browser_details.js": 39353, + "toolkit/mozapps/extensions/test/browser/test-window/browser_discovery.js": 46972, + "toolkit/mozapps/extensions/test/browser/test-window/browser_dragdrop.js": 4499, + "toolkit/mozapps/extensions/test/browser/test-window/browser_eula.js": 3261, + "toolkit/mozapps/extensions/test/browser/test-window/browser_experiments.js": 8135, + "toolkit/mozapps/extensions/test/browser/test-window/browser_globalinformations.js": 3232, + "toolkit/mozapps/extensions/test/browser/test-window/browser_globalwarnings.js": 3836, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings.js": 8986, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_browser.js": 7042, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_custom.js": 3359, + "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_info.js": 9014, + "toolkit/mozapps/extensions/test/browser/test-window/browser_install.js": 17201, + "toolkit/mozapps/extensions/test/browser/test-window/browser_list.js": 14575, + "toolkit/mozapps/extensions/test/browser/test-window/browser_manualupdates.js": 5677, + "toolkit/mozapps/extensions/test/browser/test-window/browser_openDialog.js": 2587, + "toolkit/mozapps/extensions/test/browser/test-window/browser_plugin_enabled_state_locked.js": 3670, + "toolkit/mozapps/extensions/test/browser/test-window/browser_pluginprefs.js": 2519, + "toolkit/mozapps/extensions/test/browser/test-window/browser_purchase.js": 4643, + "toolkit/mozapps/extensions/test/browser/test-window/browser_recentupdates.js": 7785, + "toolkit/mozapps/extensions/test/browser/test-window/browser_searching.js": 21951, + "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting.js": 6477, + "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting_plugins.js": 3129, + "toolkit/mozapps/extensions/test/browser/test-window/browser_tabsettings.js": 2300, + "toolkit/mozapps/extensions/test/browser/test-window/browser_types.js": 28129, + "toolkit/mozapps/extensions/test/browser/test-window/browser_uninstalling.js": 18998, + "toolkit/mozapps/extensions/test/browser/test-window/browser_updateid.js": 2226, + "toolkit/mozapps/extensions/test/browser/test-window/browser_webext_options.js": 6669, + "toolkit/mozapps/extensions/test/xpinstall/browser_amosigned_trigger.js": 2568, + "toolkit/mozapps/extensions/test/xpinstall/browser_auth.js": 2405, + "toolkit/mozapps/extensions/test/xpinstall/browser_auth4.js": 2193, + "toolkit/mozapps/extensions/test/xpinstall/browser_bug638292.js": 2663, + "toolkit/mozapps/extensions/test/xpinstall/browser_concurrent_installs.js": 2840, + "toolkit/mozapps/extensions/test/xpinstall/browser_httphash5.js": 1977, + "toolkit/mozapps/extensions/test/xpinstall/browser_httphash6.js": 2262, + "toolkit/mozapps/extensions/test/xpinstall/browser_signed_multiple.js": 2368, + "uriloader/exthandler/tests/mochitest/browser_web_protocol_handlers.js": 4136 } } \ No newline at end of file diff --git a/testing/runtimes/mochitest-devtools-chrome-e10s.runtimes.json b/testing/runtimes/mochitest-devtools-chrome-e10s.runtimes.json new file mode 100644 index 000000000000..da6281282824 --- /dev/null +++ b/testing/runtimes/mochitest-devtools-chrome-e10s.runtimes.json @@ -0,0 +1,828 @@ +{ + "excluded_test_average": 2737, + "runtimes": { + "Main app process exited normally": 1088010, + "devtools/client/aboutdebugging/test/browser_addons_debug_bootstrapped.js": 16666, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension.js": 15375, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_inspector.js": 16630, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_nobg.js": 16054, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_popup.js": 16332, + "devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js": 9722, + "devtools/client/aboutdebugging/test/browser_addons_install.js": 5032, + "devtools/client/aboutdebugging/test/browser_addons_reload.js": 7988, + "devtools/client/aboutdebugging/test/browser_service_workers_not_compatible.js": 6634, + "devtools/client/aboutdebugging/test/browser_service_workers_status.js": 6493, + "devtools/client/animationinspector/test/browser_animation_animated_properties_displayed.js": 15078, + "devtools/client/animationinspector/test/browser_animation_click_selects_animation.js": 13152, + "devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js": 14272, + "devtools/client/animationinspector/test/browser_animation_keyframe_click_to_set_time.js": 8243, + "devtools/client/animationinspector/test/browser_animation_keyframe_markers.js": 8178, + "devtools/client/animationinspector/test/browser_animation_mutations_with_same_names.js": 5906, + "devtools/client/animationinspector/test/browser_animation_participate_in_inspector_update.js": 13784, + "devtools/client/animationinspector/test/browser_animation_playerFronts_are_refreshed.js": 15055, + "devtools/client/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js": 6530, + "devtools/client/animationinspector/test/browser_animation_playerWidgets_target_nodes.js": 13834, + "devtools/client/animationinspector/test/browser_animation_pseudo_elements.js": 10608, + "devtools/client/animationinspector/test/browser_animation_refresh_on_added_animation.js": 15072, + "devtools/client/animationinspector/test/browser_animation_refresh_when_active.js": 17272, + "devtools/client/animationinspector/test/browser_animation_running_on_compositor.js": 14969, + "devtools/client/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js": 13965, + "devtools/client/animationinspector/test/browser_animation_shows_player_on_valid_node.js": 13910, + "devtools/client/animationinspector/test/browser_animation_spacebar_toggles_animations.js": 14055, + "devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js": 15596, + "devtools/client/animationinspector/test/browser_animation_target_highlight_select.js": 16323, + "devtools/client/animationinspector/test/browser_animation_target_highlighter_lock.js": 14282, + "devtools/client/animationinspector/test/browser_animation_timeline_currentTime.js": 14593, + "devtools/client/animationinspector/test/browser_animation_timeline_header.js": 12767, + "devtools/client/animationinspector/test/browser_animation_timeline_iterationStart.js": 5382, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button.js": 18428, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_01.js": 16298, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_02.js": 16369, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_03.js": 22277, + "devtools/client/animationinspector/test/browser_animation_timeline_rate_selector.js": 22536, + "devtools/client/animationinspector/test/browser_animation_timeline_rewind_button.js": 17330, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_exists.js": 12727, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_movable.js": 12555, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_moves.js": 14775, + "devtools/client/animationinspector/test/browser_animation_timeline_setCurrentTime.js": 8274, + "devtools/client/animationinspector/test/browser_animation_timeline_short_duration.js": 5893, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_delay.js": 15566, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_endDelay.js": 7056, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_iterations.js": 14638, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_name_label.js": 14903, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_time_info.js": 13065, + "devtools/client/animationinspector/test/browser_animation_timeline_takes_rate_into_account.js": 5252, + "devtools/client/animationinspector/test/browser_animation_timeline_ui.js": 12591, + "devtools/client/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js": 17782, + "devtools/client/animationinspector/test/browser_animation_toggle_button_toggles_animations.js": 13877, + "devtools/client/animationinspector/test/browser_animation_toolbar_exists.js": 13538, + "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js": 15802, + "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-highlight.js": 6365, + "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js": 7139, + "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js": 6135, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breaking-from-console.js": 11600, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breaking.js": 14528, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints-cond.js": 10208, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints.js": 17373, + "devtools/client/debugger/new/test/mochitest/browser_dbg-call-stack.js": 15491, + "devtools/client/debugger/new/test/mochitest/browser_dbg-console.js": 5813, + "devtools/client/debugger/new/test/mochitest/browser_dbg-debugger-buttons.js": 13601, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-gutter.js": 10957, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-highlight.js": 11201, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-mode.js": 7867, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-select.js": 17748, + "devtools/client/debugger/new/test/mochitest/browser_dbg-iframes.js": 11879, + "devtools/client/debugger/new/test/mochitest/browser_dbg-navigation.js": 16967, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pause-exceptions.js": 10917, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print-paused.js": 9732, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print.js": 12632, + "devtools/client/debugger/new/test/mochitest/browser_dbg-scopes.js": 18214, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js": 7272, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps.js": 17903, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sources.js": 6850, + "devtools/client/debugger/new/test/mochitest/browser_dbg_keyboard-shortcuts.js": 12509, + "devtools/client/debugger/test/mochitest/browser_dbg_aaa_run_first_leaktest.js": 5663, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-panels.js": 6842, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-sources.js": 6940, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-workers-dbg-enabled.js": 7399, + "devtools/client/debugger/test/mochitest/browser_dbg_auto-pretty-print-01.js": 7231, + "devtools/client/debugger/test/mochitest/browser_dbg_auto-pretty-print-02.js": 4916, + "devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-02.js": 5535, + "devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-03.js": 5592, + "devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-04.js": 5576, + "devtools/client/debugger/test/mochitest/browser_dbg_blackboxing-06.js": 5576, + "devtools/client/debugger/test/mochitest/browser_dbg_breadcrumbs-access.js": 5615, + "devtools/client/debugger/test/mochitest/browser_dbg_break-in-anon.js": 4984, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-02.js": 7489, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-03.js": 5124, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-04.js": 5065, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-05.js": 5190, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-06.js": 7151, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-08.js": 5424, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-next-console.js": 7240, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-next.js": 5905, + "devtools/client/debugger/test/mochitest/browser_dbg_break-unselected.js": 5869, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location.js": 5338, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js": 6412, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-button-01.js": 4943, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu-add.js": 5523, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu.js": 15275, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-other-tabs.js": 4951, + "devtools/client/debugger/test/mochitest/browser_dbg_closure-inspection.js": 6496, + "devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-01.js": 8307, + "devtools/client/debugger/test/mochitest/browser_dbg_host-layout.js": 15475, + "devtools/client/debugger/test/mochitest/browser_dbg_pause-warning.js": 5180, + "devtools/client/debugger/test/mochitest/browser_dbg_reload-same-script.js": 5060, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-06.js": 5317, + "devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-01.js": 7472, + "devtools/client/debugger/test/mochitest/browser_dbg_sources-cache.js": 5708, + "devtools/client/debugger/test/mochitest/browser_dbg_sources-large.js": 5101, + "devtools/client/debugger/test/mochitest/browser_dbg_sources-webext-contentscript.js": 6988, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-01.js": 12270, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-value.js": 6445, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-watch.js": 5047, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-01.js": 8441, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-02.js": 8601, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-03.js": 6950, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-04.js": 6216, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-05.js": 6403, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-01.js": 5723, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-03.js": 8030, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-hide-non-enums.js": 5042, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-large-array-buffer.js": 18383, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-override-01.js": 6200, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-01.js": 5028, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-13.js": 6174, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-16.js": 8745, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-01.js": 15428, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-02.js": 18643, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-webidl.js": 7990, + "devtools/client/debugger/test/mochitest/browser_dbg_watch-expressions-02.js": 7985, + "devtools/client/debugger/test/mochitest/browser_dbg_worker-source-map.js": 5102, + "devtools/client/dom/test/browser_dom_array.js": 14192, + "devtools/client/dom/test/browser_dom_basic.js": 10227, + "devtools/client/dom/test/browser_dom_refresh.js": 12990, + "devtools/client/framework/test/browser_browser_toolbox.js": 23211, + "devtools/client/framework/test/browser_browser_toolbox_debugger.js": 20545, + "devtools/client/framework/test/browser_devtools_api.js": 6121, + "devtools/client/framework/test/browser_ignore_toolbox_network_requests.js": 5200, + "devtools/client/framework/test/browser_keybindings_01.js": 8671, + "devtools/client/framework/test/browser_keybindings_02.js": 5198, + "devtools/client/framework/test/browser_new_activation_workflow.js": 8167, + "devtools/client/framework/test/browser_toolbox_highlight.js": 5258, + "devtools/client/framework/test/browser_toolbox_hosts.js": 13758, + "devtools/client/framework/test/browser_toolbox_hosts_size.js": 9535, + "devtools/client/framework/test/browser_toolbox_hosts_telemetry.js": 4910, + "devtools/client/framework/test/browser_toolbox_options.js": 5657, + "devtools/client/framework/test/browser_toolbox_options_disable_buttons.js": 6875, + "devtools/client/framework/test/browser_toolbox_options_disable_cache-01.js": 10789, + "devtools/client/framework/test/browser_toolbox_options_disable_cache-02.js": 13356, + "devtools/client/framework/test/browser_toolbox_remoteness_change.js": 6065, + "devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js": 12628, + "devtools/client/framework/test/browser_toolbox_target.js": 4988, + "devtools/client/framework/test/browser_toolbox_textbox_context_menu.js": 5111, + "devtools/client/framework/test/browser_toolbox_toggle.js": 12579, + "devtools/client/framework/test/browser_toolbox_tool_ready.js": 21463, + "devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js": 15566, + "devtools/client/framework/test/browser_toolbox_transport_events.js": 5083, + "devtools/client/framework/test/browser_toolbox_view_source_01.js": 4993, + "devtools/client/framework/test/browser_toolbox_view_source_03.js": 5959, + "devtools/client/framework/test/browser_toolbox_view_source_04.js": 6407, + "devtools/client/framework/test/browser_toolbox_window_reload_target.js": 25595, + "devtools/client/framework/test/browser_toolbox_window_shortcuts.js": 10792, + "devtools/client/framework/test/browser_toolbox_window_title_changes.js": 11902, + "devtools/client/framework/test/browser_toolbox_window_title_frame_select.js": 8318, + "devtools/client/inspector/components/test/browser_boxmodel.js": 10201, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel.js": 11826, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_bluronclick.js": 5720, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_border.js": 6849, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_stylerules.js": 9251, + "devtools/client/inspector/components/test/browser_boxmodel_guides.js": 5585, + "devtools/client/inspector/components/test/browser_boxmodel_rotate-labels-on-sides.js": 5462, + "devtools/client/inspector/components/test/browser_boxmodel_sync.js": 6243, + "devtools/client/inspector/components/test/browser_boxmodel_tooltips.js": 6161, + "devtools/client/inspector/components/test/browser_boxmodel_update-after-navigation.js": 11998, + "devtools/client/inspector/components/test/browser_boxmodel_update-after-reload.js": 8700, + "devtools/client/inspector/computed/test/browser_computed_browser-styles.js": 11233, + "devtools/client/inspector/computed/test/browser_computed_cycle_color.js": 5369, + "devtools/client/inspector/computed/test/browser_computed_getNodeInfo.js": 5894, + "devtools/client/inspector/computed/test/browser_computed_keybindings_01.js": 5530, + "devtools/client/inspector/computed/test/browser_computed_keybindings_02.js": 6057, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors-toggle.js": 5476, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors_01.js": 6225, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors_02.js": 4989, + "devtools/client/inspector/computed/test/browser_computed_media-queries.js": 5758, + "devtools/client/inspector/computed/test/browser_computed_no-results-placeholder.js": 5930, + "devtools/client/inspector/computed/test/browser_computed_original-source-link.js": 8411, + "devtools/client/inspector/computed/test/browser_computed_pseudo-element_01.js": 7388, + "devtools/client/inspector/computed/test/browser_computed_refresh-on-style-change_01.js": 5600, + "devtools/client/inspector/computed/test/browser_computed_search-filter.js": 8635, + "devtools/client/inspector/computed/test/browser_computed_search-filter_clear.js": 6808, + "devtools/client/inspector/computed/test/browser_computed_search-filter_escape-keypress.js": 10700, + "devtools/client/inspector/computed/test/browser_computed_search-filter_noproperties.js": 6140, + "devtools/client/inspector/computed/test/browser_computed_style-editor-link.js": 9532, + "devtools/client/inspector/fonts/test/browser_fontinspector.js": 10453, + "devtools/client/inspector/fonts/test/browser_fontinspector_edit-previews-show-all.js": 5369, + "devtools/client/inspector/fonts/test/browser_fontinspector_edit-previews.js": 5938, + "devtools/client/inspector/fonts/test/browser_fontinspector_theme-change.js": 6053, + "devtools/client/inspector/layout/test/browser_layout_editablemodel.js": 4995, + "devtools/client/inspector/markup/test/browser_markup_accessibility_focus_blur.js": 9353, + "devtools/client/inspector/markup/test/browser_markup_accessibility_navigation.js": 7558, + "devtools/client/inspector/markup/test/browser_markup_accessibility_semantics.js": 5507, + "devtools/client/inspector/markup/test/browser_markup_anonymous_01.js": 6043, + "devtools/client/inspector/markup/test/browser_markup_anonymous_03.js": 5843, + "devtools/client/inspector/markup/test/browser_markup_anonymous_04.js": 6292, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_01.js": 9471, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_02.js": 12064, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_03.js": 8196, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_autoscroll_01.js": 10602, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_autoscroll_02.js": 11720, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_distance.js": 5671, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_dragRootNode.js": 5569, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_draggable.js": 5540, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_escapeKeyPress.js": 5173, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_invalidNodes.js": 5997, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_reorder.js": 9886, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_tooltip.js": 4960, + "devtools/client/inspector/markup/test/browser_markup_events-windowed-host.js": 13032, + "devtools/client/inspector/markup/test/browser_markup_events1.js": 9734, + "devtools/client/inspector/markup/test/browser_markup_events2.js": 10486, + "devtools/client/inspector/markup/test/browser_markup_events3.js": 11163, + "devtools/client/inspector/markup/test/browser_markup_events_01.js": 11814, + "devtools/client/inspector/markup/test/browser_markup_events_02.js": 12496, + "devtools/client/inspector/markup/test/browser_markup_events_03.js": 10715, + "devtools/client/inspector/markup/test/browser_markup_events_04.js": 12996, + "devtools/client/inspector/markup/test/browser_markup_events_form.js": 6197, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.0.js": 10675, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.1.js": 10934, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.11.1.js": 11341, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.2.js": 9700, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.3.js": 13655, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.4.js": 12951, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.6.js": 14910, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.7.js": 13775, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_2.1.1.js": 11548, + "devtools/client/inspector/markup/test/browser_markup_html_edit_01.js": 15757, + "devtools/client/inspector/markup/test/browser_markup_html_edit_02.js": 12583, + "devtools/client/inspector/markup/test/browser_markup_html_edit_03.js": 10358, + "devtools/client/inspector/markup/test/browser_markup_image_tooltip.js": 5155, + "devtools/client/inspector/markup/test/browser_markup_keybindings_01.js": 4986, + "devtools/client/inspector/markup/test/browser_markup_keybindings_02.js": 5464, + "devtools/client/inspector/markup/test/browser_markup_keybindings_03.js": 6879, + "devtools/client/inspector/markup/test/browser_markup_keybindings_04.js": 8498, + "devtools/client/inspector/markup/test/browser_markup_keybindings_scrolltonode.js": 5517, + "devtools/client/inspector/markup/test/browser_markup_links_01.js": 9121, + "devtools/client/inspector/markup/test/browser_markup_links_02.js": 5753, + "devtools/client/inspector/markup/test/browser_markup_links_03.js": 5413, + "devtools/client/inspector/markup/test/browser_markup_links_05.js": 8040, + "devtools/client/inspector/markup/test/browser_markup_links_06.js": 10484, + "devtools/client/inspector/markup/test/browser_markup_links_07.js": 8784, + "devtools/client/inspector/markup/test/browser_markup_load_01.js": 7648, + "devtools/client/inspector/markup/test/browser_markup_mutation_01.js": 9416, + "devtools/client/inspector/markup/test/browser_markup_mutation_02.js": 5622, + "devtools/client/inspector/markup/test/browser_markup_navigation.js": 14847, + "devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js": 6958, + "devtools/client/inspector/markup/test/browser_markup_pagesize_01.js": 6603, + "devtools/client/inspector/markup/test/browser_markup_pagesize_02.js": 8210, + "devtools/client/inspector/markup/test/browser_markup_search_01.js": 9445, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_01.js": 10127, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_02.js": 5066, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_03.js": 5473, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_04-backspace.js": 14069, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_04-delete.js": 13327, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_05.js": 7278, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_06.js": 7830, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_07.js": 8178, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_08.js": 8286, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_09.js": 5628, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_10.js": 5146, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_12.js": 5375, + "devtools/client/inspector/markup/test/browser_markup_textcontent_display.js": 5394, + "devtools/client/inspector/markup/test/browser_markup_textcontent_edit_01.js": 9860, + "devtools/client/inspector/markup/test/browser_markup_textcontent_edit_02.js": 7045, + "devtools/client/inspector/markup/test/browser_markup_toggle_01.js": 6500, + "devtools/client/inspector/markup/test/browser_markup_toggle_02.js": 6311, + "devtools/client/inspector/markup/test/browser_markup_toggle_03.js": 6962, + "devtools/client/inspector/markup/test/browser_markup_update-on-navigtion.js": 6235, + "devtools/client/inspector/markup/test/browser_markup_whitespace.js": 5632, + "devtools/client/inspector/rules/test/browser_rules_add-property-and-reselect.js": 11294, + "devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js": 6070, + "devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js": 5252, + "devtools/client/inspector/rules/test/browser_rules_add-property-commented.js": 5425, + "devtools/client/inspector/rules/test/browser_rules_add-property-svg.js": 6095, + "devtools/client/inspector/rules/test/browser_rules_add-property_01.js": 6299, + "devtools/client/inspector/rules/test/browser_rules_add-property_02.js": 5764, + "devtools/client/inspector/rules/test/browser_rules_add-rule-and-property.js": 5169, + "devtools/client/inspector/rules/test/browser_rules_add-rule-button-state.js": 5563, + "devtools/client/inspector/rules/test/browser_rules_add-rule-edit-selector.js": 5908, + "devtools/client/inspector/rules/test/browser_rules_add-rule-iframes.js": 7840, + "devtools/client/inspector/rules/test/browser_rules_add-rule-namespace-elements.js": 6806, + "devtools/client/inspector/rules/test/browser_rules_add-rule-pseudo-class.js": 10439, + "devtools/client/inspector/rules/test/browser_rules_add-rule-then-property-edit-selector.js": 6157, + "devtools/client/inspector/rules/test/browser_rules_add-rule-with-menu.js": 5119, + "devtools/client/inspector/rules/test/browser_rules_add-rule.js": 9561, + "devtools/client/inspector/rules/test/browser_rules_authored_color.js": 6967, + "devtools/client/inspector/rules/test/browser_rules_blob_stylesheet.js": 5260, + "devtools/client/inspector/rules/test/browser_rules_colorUnit.js": 11215, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-and-image-tooltip_02.js": 5006, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-appears-on-swatch-click.js": 4976, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-commit-on-ENTER.js": 5022, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-multiple-changes.js": 6756, + "devtools/client/inspector/rules/test/browser_rules_completion-existing-property_01.js": 11723, + "devtools/client/inspector/rules/test/browser_rules_completion-existing-property_02.js": 11455, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_01.js": 8833, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_02.js": 12385, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_03.js": 6123, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_04.js": 6779, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_multiline.js": 5945, + "devtools/client/inspector/rules/test/browser_rules_completion-popup-hidden-after-navigation.js": 5927, + "devtools/client/inspector/rules/test/browser_rules_computed-lists_02.js": 4917, + "devtools/client/inspector/rules/test/browser_rules_content_01.js": 4922, + "devtools/client/inspector/rules/test/browser_rules_context-menu-show-mdn-docs-01.js": 6232, + "devtools/client/inspector/rules/test/browser_rules_context-menu-show-mdn-docs-03.js": 9284, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-appears-on-swatch-click.js": 5418, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-commit-on-ENTER.js": 5135, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-revert-on-ESC.js": 4965, + "devtools/client/inspector/rules/test/browser_rules_custom.js": 7059, + "devtools/client/inspector/rules/test/browser_rules_cycle-angle.js": 5546, + "devtools/client/inspector/rules/test/browser_rules_cycle-color.js": 6420, + "devtools/client/inspector/rules/test/browser_rules_edit-display-grid-property.js": 5582, + "devtools/client/inspector/rules/test/browser_rules_edit-property-cancel.js": 5569, + "devtools/client/inspector/rules/test/browser_rules_edit-property-click.js": 5751, + "devtools/client/inspector/rules/test/browser_rules_edit-property-commit.js": 7067, + "devtools/client/inspector/rules/test/browser_rules_edit-property-computed.js": 5729, + "devtools/client/inspector/rules/test/browser_rules_edit-property-increments.js": 12456, + "devtools/client/inspector/rules/test/browser_rules_edit-property-order.js": 8776, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_01.js": 5820, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_02.js": 5852, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js": 6054, + "devtools/client/inspector/rules/test/browser_rules_edit-property_01.js": 10220, + "devtools/client/inspector/rules/test/browser_rules_edit-property_02.js": 8191, + "devtools/client/inspector/rules/test/browser_rules_edit-property_03.js": 5993, + "devtools/client/inspector/rules/test/browser_rules_edit-property_04.js": 6275, + "devtools/client/inspector/rules/test/browser_rules_edit-property_05.js": 6881, + "devtools/client/inspector/rules/test/browser_rules_edit-property_06.js": 6014, + "devtools/client/inspector/rules/test/browser_rules_edit-property_07.js": 5585, + "devtools/client/inspector/rules/test/browser_rules_edit-property_08.js": 6029, + "devtools/client/inspector/rules/test/browser_rules_edit-property_09.js": 6097, + "devtools/client/inspector/rules/test/browser_rules_edit-selector-click-on-scrollbar.js": 5460, + "devtools/client/inspector/rules/test/browser_rules_edit-selector-commit.js": 7670, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_01.js": 5702, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_02.js": 7086, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_03.js": 5288, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_04.js": 6125, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_05.js": 6660, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_06.js": 6245, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_07.js": 5650, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_08.js": 6291, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_09.js": 7372, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_10.js": 5806, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_11.js": 5997, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_01.js": 5662, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_02.js": 5448, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_03.js": 5493, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_04.js": 5680, + "devtools/client/inspector/rules/test/browser_rules_editable-field-focus_01.js": 9759, + "devtools/client/inspector/rules/test/browser_rules_editable-field-focus_02.js": 7290, + "devtools/client/inspector/rules/test/browser_rules_eyedropper.js": 5934, + "devtools/client/inspector/rules/test/browser_rules_filtereditor-appears-on-swatch-click.js": 5156, + "devtools/client/inspector/rules/test/browser_rules_filtereditor-commit-on-ENTER.js": 5299, + "devtools/client/inspector/rules/test/browser_rules_grid-highlighter-on-navigate.js": 6210, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_01.js": 4950, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_02.js": 5246, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_03.js": 5800, + "devtools/client/inspector/rules/test/browser_rules_guessIndentation.js": 7175, + "devtools/client/inspector/rules/test/browser_rules_inline-source-map.js": 4999, + "devtools/client/inspector/rules/test/browser_rules_invalid-source-map.js": 5192, + "devtools/client/inspector/rules/test/browser_rules_keybindings.js": 5393, + "devtools/client/inspector/rules/test/browser_rules_keyframeLineNumbers.js": 9017, + "devtools/client/inspector/rules/test/browser_rules_keyframes-rule_01.js": 9286, + "devtools/client/inspector/rules/test/browser_rules_keyframes-rule_02.js": 8414, + "devtools/client/inspector/rules/test/browser_rules_lineNumbers.js": 6040, + "devtools/client/inspector/rules/test/browser_rules_livepreview.js": 7952, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_01.js": 5857, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_05.js": 5921, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_06.js": 5667, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_07.js": 5215, + "devtools/client/inspector/rules/test/browser_rules_mathml-element.js": 5681, + "devtools/client/inspector/rules/test/browser_rules_media-queries.js": 5079, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-duplicates.js": 6057, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-priority.js": 5373, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_01.js": 5916, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js": 5757, + "devtools/client/inspector/rules/test/browser_rules_multiple_properties_01.js": 5492, + "devtools/client/inspector/rules/test/browser_rules_multiple_properties_02.js": 5661, + "devtools/client/inspector/rules/test/browser_rules_original-source-link.js": 7078, + "devtools/client/inspector/rules/test/browser_rules_pseudo-element_01.js": 9883, + "devtools/client/inspector/rules/test/browser_rules_pseudo-element_02.js": 5788, + "devtools/client/inspector/rules/test/browser_rules_pseudo_lock_options.js": 7254, + "devtools/client/inspector/rules/test/browser_rules_refresh-on-attribute-change_01.js": 5044, + "devtools/client/inspector/rules/test/browser_rules_refresh-on-attribute-change_02.js": 6149, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_01.js": 6704, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_02.js": 5313, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_03.js": 5034, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_04.js": 5794, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_expander.js": 5181, + "devtools/client/inspector/rules/test/browser_rules_search-filter-overridden-property.js": 5197, + "devtools/client/inspector/rules/test/browser_rules_search-filter_01.js": 6553, + "devtools/client/inspector/rules/test/browser_rules_search-filter_02.js": 7946, + "devtools/client/inspector/rules/test/browser_rules_search-filter_03.js": 4937, + "devtools/client/inspector/rules/test/browser_rules_search-filter_04.js": 5343, + "devtools/client/inspector/rules/test/browser_rules_search-filter_05.js": 5626, + "devtools/client/inspector/rules/test/browser_rules_search-filter_06.js": 5688, + "devtools/client/inspector/rules/test/browser_rules_search-filter_07.js": 6031, + "devtools/client/inspector/rules/test/browser_rules_search-filter_08.js": 5721, + "devtools/client/inspector/rules/test/browser_rules_search-filter_09.js": 5748, + "devtools/client/inspector/rules/test/browser_rules_search-filter_10.js": 5730, + "devtools/client/inspector/rules/test/browser_rules_search-filter_escape-keypress.js": 5194, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter-on-navigate.js": 5842, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter_02.js": 5138, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter_03.js": 5445, + "devtools/client/inspector/rules/test/browser_rules_selector_highlight.js": 7123, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter-computed-list_01.js": 7535, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_01.js": 7447, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_02.js": 5644, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_03.js": 5046, + "devtools/client/inspector/rules/test/browser_rules_style-editor-link.js": 10287, + "devtools/client/inspector/rules/test/browser_rules_urls-clickable.js": 6470, + "devtools/client/inspector/rules/test/browser_rules_user-agent-styles-uneditable.js": 6078, + "devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js": 25481, + "devtools/client/inspector/rules/test/browser_rules_user-property-reset.js": 7767, + "devtools/client/inspector/shared/test/browser_styleinspector_context-menu-copy-color_01.js": 19668, + "devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js": 11082, + "devtools/client/inspector/shared/test/browser_styleinspector_refresh_when_active.js": 5648, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-background-image.js": 6218, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-longhand-fontfamily.js": 5967, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-multiple-background-images.js": 5516, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-shorthand-fontfamily.js": 5062, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-size.js": 5016, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-01.js": 5350, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-02.js": 5686, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-03.js": 5133, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-04.js": 5638, + "devtools/client/inspector/test/browser_inspector_addNode_01.js": 9199, + "devtools/client/inspector/test/browser_inspector_addNode_02.js": 5969, + "devtools/client/inspector/test/browser_inspector_addNode_03.js": 7433, + "devtools/client/inspector/test/browser_inspector_breadcrumbs.js": 10090, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_highlight_hover.js": 5337, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_keybinding.js": 6397, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_mutations.js": 8295, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_visibility.js": 6376, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-01.js": 6536, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-02.js": 12775, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-03.js": 6060, + "devtools/client/inspector/test/browser_inspector_destroy-after-navigation.js": 5757, + "devtools/client/inspector/test/browser_inspector_destroy-before-ready.js": 5769, + "devtools/client/inspector/test/browser_inspector_gcli-inspect-command.js": 7999, + "devtools/client/inspector/test/browser_inspector_highlighter-01.js": 5656, + "devtools/client/inspector/test/browser_inspector_highlighter-02.js": 9583, + "devtools/client/inspector/test/browser_inspector_highlighter-03.js": 6842, + "devtools/client/inspector/test/browser_inspector_highlighter-cancel.js": 8115, + "devtools/client/inspector/test/browser_inspector_highlighter-comments.js": 7905, + "devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js": 4993, + "devtools/client/inspector/test/browser_inspector_highlighter-embed.js": 6012, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js": 5111, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-label.js": 5165, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-xul.js": 7076, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_01.js": 4918, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_02.js": 5488, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_03.js": 5225, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_04.js": 6060, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_05.js": 6558, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_06.js": 7284, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_01.js": 6411, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_02.js": 5059, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_03.js": 6686, + "devtools/client/inspector/test/browser_inspector_highlighter-iframes_01.js": 8139, + "devtools/client/inspector/test/browser_inspector_highlighter-iframes_02.js": 6904, + "devtools/client/inspector/test/browser_inspector_highlighter-inline.js": 17802, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_01.js": 7281, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_02.js": 6671, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_03.js": 5759, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_04.js": 6021, + "devtools/client/inspector/test/browser_inspector_highlighter-options.js": 6169, + "devtools/client/inspector/test/browser_inspector_highlighter-preview.js": 7961, + "devtools/client/inspector/test/browser_inspector_highlighter-selector_01.js": 6836, + "devtools/client/inspector/test/browser_inspector_highlighter-xbl.js": 5674, + "devtools/client/inspector/test/browser_inspector_highlighter-zoom.js": 6600, + "devtools/client/inspector/test/browser_inspector_iframe-navigation.js": 5010, + "devtools/client/inspector/test/browser_inspector_infobar_01.js": 10910, + "devtools/client/inspector/test/browser_inspector_infobar_02.js": 6433, + "devtools/client/inspector/test/browser_inspector_infobar_03.js": 5861, + "devtools/client/inspector/test/browser_inspector_infobar_textnode.js": 7853, + "devtools/client/inspector/test/browser_inspector_initialization.js": 8399, + "devtools/client/inspector/test/browser_inspector_invalidate.js": 4988, + "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts.js": 10669, + "devtools/client/inspector/test/browser_inspector_menu-04-use-in-console.js": 6965, + "devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js": 5949, + "devtools/client/inspector/test/browser_inspector_menu-06-other.js": 10591, + "devtools/client/inspector/test/browser_inspector_navigate_to_errors.js": 13589, + "devtools/client/inspector/test/browser_inspector_navigation.js": 8612, + "devtools/client/inspector/test/browser_inspector_open_on_neterror.js": 7032, + "devtools/client/inspector/test/browser_inspector_pane-toggle-02.js": 5186, + "devtools/client/inspector/test/browser_inspector_pane-toggle-03.js": 4981, + "devtools/client/inspector/test/browser_inspector_picker-stop-on-destroy.js": 5355, + "devtools/client/inspector/test/browser_inspector_picker-stop-on-tool-change.js": 5401, + "devtools/client/inspector/test/browser_inspector_portrait_mode.js": 9215, + "devtools/client/inspector/test/browser_inspector_pseudoclass-lock.js": 8923, + "devtools/client/inspector/test/browser_inspector_pseudoclass-menu.js": 4954, + "devtools/client/inspector/test/browser_inspector_reload-01.js": 5854, + "devtools/client/inspector/test/browser_inspector_reload-02.js": 6146, + "devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js": 5890, + "devtools/client/inspector/test/browser_inspector_search-01.js": 12616, + "devtools/client/inspector/test/browser_inspector_search-02.js": 7235, + "devtools/client/inspector/test/browser_inspector_search-03.js": 7320, + "devtools/client/inspector/test/browser_inspector_search-04.js": 5373, + "devtools/client/inspector/test/browser_inspector_search-05.js": 14584, + "devtools/client/inspector/test/browser_inspector_search-06.js": 9073, + "devtools/client/inspector/test/browser_inspector_search-label.js": 6173, + "devtools/client/inspector/test/browser_inspector_search-navigation.js": 7122, + "devtools/client/inspector/test/browser_inspector_search-reserved.js": 6232, + "devtools/client/inspector/test/browser_inspector_search-selection.js": 10932, + "devtools/client/inspector/test/browser_inspector_search-sidebar.js": 6775, + "devtools/client/inspector/test/browser_inspector_search_keyboard_trap.js": 5313, + "devtools/client/inspector/test/browser_inspector_select-docshell.js": 5763, + "devtools/client/inspector/test/browser_inspector_select-last-selected.js": 16193, + "devtools/client/inspector/test/browser_inspector_sidebarstate.js": 8902, + "devtools/client/inspector/test/browser_inspector_startup.js": 5985, + "devtools/client/inspector/test/browser_inspector_switch-to-inspector-on-pick.js": 5411, + "devtools/client/inspector/test/browser_inspector_textbox-menu.js": 6809, + "devtools/client/memory/test/browser/browser_memory_allocationStackDisplay_01.js": 6841, + "devtools/client/memory/test/browser/browser_memory_clear_snapshots.js": 7578, + "devtools/client/memory/test/browser/browser_memory_diff_01.js": 6003, + "devtools/client/memory/test/browser/browser_memory_displays_01.js": 4914, + "devtools/client/memory/test/browser/browser_memory_dominator_trees_01.js": 20227, + "devtools/client/memory/test/browser/browser_memory_dominator_trees_02.js": 6883, + "devtools/client/memory/test/browser/browser_memory_filter_01.js": 6727, + "devtools/client/memory/test/browser/browser_memory_individuals_01.js": 8165, + "devtools/client/memory/test/browser/browser_memory_keyboard-snapshot-list.js": 8628, + "devtools/client/memory/test/browser/browser_memory_keyboard.js": 5793, + "devtools/client/memory/test/browser/browser_memory_no_allocation_stacks.js": 4927, + "devtools/client/memory/test/browser/browser_memory_simple_01.js": 5826, + "devtools/client/netmonitor/test/browser_net_aaa_leaktest.js": 7143, + "devtools/client/netmonitor/test/browser_net_accessibility-01.js": 18530, + "devtools/client/netmonitor/test/browser_net_accessibility-02.js": 16038, + "devtools/client/netmonitor/test/browser_net_api-calls.js": 6337, + "devtools/client/netmonitor/test/browser_net_autoscroll.js": 15924, + "devtools/client/netmonitor/test/browser_net_brotli.js": 5268, + "devtools/client/netmonitor/test/browser_net_cached-status.js": 6904, + "devtools/client/netmonitor/test/browser_net_cause.js": 8602, + "devtools/client/netmonitor/test/browser_net_cause_redirect.js": 5983, + "devtools/client/netmonitor/test/browser_net_complex-params.js": 8947, + "devtools/client/netmonitor/test/browser_net_content-type.js": 10323, + "devtools/client/netmonitor/test/browser_net_curl-utils.js": 6612, + "devtools/client/netmonitor/test/browser_net_cyrillic-02.js": 5050, + "devtools/client/netmonitor/test/browser_net_filter-01.js": 14286, + "devtools/client/netmonitor/test/browser_net_filter-02.js": 21601, + "devtools/client/netmonitor/test/browser_net_filter-03.js": 16048, + "devtools/client/netmonitor/test/browser_net_filter-04.js": 7228, + "devtools/client/netmonitor/test/browser_net_footer-summary.js": 15713, + "devtools/client/netmonitor/test/browser_net_frame.js": 13230, + "devtools/client/netmonitor/test/browser_net_html-preview.js": 7595, + "devtools/client/netmonitor/test/browser_net_icon-preview.js": 9115, + "devtools/client/netmonitor/test/browser_net_image-tooltip.js": 7228, + "devtools/client/netmonitor/test/browser_net_json-long.js": 21691, + "devtools/client/netmonitor/test/browser_net_json-malformed.js": 5888, + "devtools/client/netmonitor/test/browser_net_json_custom_mime.js": 5780, + "devtools/client/netmonitor/test/browser_net_jsonp.js": 5120, + "devtools/client/netmonitor/test/browser_net_large-response.js": 5466, + "devtools/client/netmonitor/test/browser_net_persistent_logs.js": 7117, + "devtools/client/netmonitor/test/browser_net_post-data-01.js": 5991, + "devtools/client/netmonitor/test/browser_net_prefs-reload.js": 22731, + "devtools/client/netmonitor/test/browser_net_raw_headers.js": 5081, + "devtools/client/netmonitor/test/browser_net_req-resp-bodies.js": 7903, + "devtools/client/netmonitor/test/browser_net_resend.js": 8999, + "devtools/client/netmonitor/test/browser_net_resend_cors.js": 8137, + "devtools/client/netmonitor/test/browser_net_security-icon-click.js": 5500, + "devtools/client/netmonitor/test/browser_net_security-state.js": 6018, + "devtools/client/netmonitor/test/browser_net_security-tab-deselect.js": 5227, + "devtools/client/netmonitor/test/browser_net_security-tab-visibility.js": 7968, + "devtools/client/netmonitor/test/browser_net_simple-request.js": 5249, + "devtools/client/netmonitor/test/browser_net_sort-02.js": 12212, + "devtools/client/netmonitor/test/browser_net_sort-03.js": 18962, + "devtools/client/netmonitor/test/browser_net_statistics-01.js": 8823, + "devtools/client/netmonitor/test/browser_net_statistics-02.js": 10084, + "devtools/client/netmonitor/test/browser_net_status-codes.js": 7771, + "devtools/client/netmonitor/test/browser_net_streaming-response.js": 5701, + "devtools/client/netmonitor/test/browser_net_throttle.js": 9461, + "devtools/client/netmonitor/test/browser_net_timing-division.js": 7122, + "devtools/client/performance/test/browser_aaa-run-first-leaktest.js": 6395, + "devtools/client/performance/test/browser_perf-button-states.js": 5600, + "devtools/client/performance/test/browser_perf-calltree-js-categories.js": 6540, + "devtools/client/performance/test/browser_perf-calltree-js-columns.js": 6707, + "devtools/client/performance/test/browser_perf-calltree-js-events.js": 6102, + "devtools/client/performance/test/browser_perf-calltree-memory-columns.js": 5530, + "devtools/client/performance/test/browser_perf-console-record-01.js": 6916, + "devtools/client/performance/test/browser_perf-console-record-02.js": 11250, + "devtools/client/performance/test/browser_perf-console-record-03.js": 6787, + "devtools/client/performance/test/browser_perf-console-record-04.js": 8629, + "devtools/client/performance/test/browser_perf-console-record-05.js": 9700, + "devtools/client/performance/test/browser_perf-console-record-06.js": 13428, + "devtools/client/performance/test/browser_perf-console-record-07.js": 11800, + "devtools/client/performance/test/browser_perf-console-record-08.js": 21590, + "devtools/client/performance/test/browser_perf-console-record-09.js": 8449, + "devtools/client/performance/test/browser_perf-details-01-toggle.js": 5968, + "devtools/client/performance/test/browser_perf-details-02-utility-fun.js": 5907, + "devtools/client/performance/test/browser_perf-details-03-without-allocations.js": 7829, + "devtools/client/performance/test/browser_perf-details-04-toolbar-buttons.js": 7357, + "devtools/client/performance/test/browser_perf-details-05-preserve-view.js": 7057, + "devtools/client/performance/test/browser_perf-details-06-rerender-on-selection.js": 5935, + "devtools/client/performance/test/browser_perf-details-07-bleed-events.js": 7230, + "devtools/client/performance/test/browser_perf-details-render-00-waterfall.js": 6838, + "devtools/client/performance/test/browser_perf-details-render-01-js-calltree.js": 6930, + "devtools/client/performance/test/browser_perf-details-render-02-js-flamegraph.js": 6852, + "devtools/client/performance/test/browser_perf-details-render-03-memory-calltree.js": 6548, + "devtools/client/performance/test/browser_perf-details-render-04-memory-flamegraph.js": 6709, + "devtools/client/performance/test/browser_perf-docload.js": 6282, + "devtools/client/performance/test/browser_perf-highlighted.js": 8019, + "devtools/client/performance/test/browser_perf-loading-01.js": 5361, + "devtools/client/performance/test/browser_perf-loading-02.js": 7505, + "devtools/client/performance/test/browser_perf-options-02-toggle-throw-alt.js": 4980, + "devtools/client/performance/test/browser_perf-options-enable-framerate-01.js": 6432, + "devtools/client/performance/test/browser_perf-options-enable-framerate-02.js": 6346, + "devtools/client/performance/test/browser_perf-options-enable-memory-01.js": 7230, + "devtools/client/performance/test/browser_perf-options-enable-memory-02.js": 7217, + "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-01.js": 5808, + "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-02.js": 5617, + "devtools/client/performance/test/browser_perf-options-invert-call-tree-01.js": 6012, + "devtools/client/performance/test/browser_perf-options-invert-call-tree-02.js": 5542, + "devtools/client/performance/test/browser_perf-options-invert-flame-graph-01.js": 5793, + "devtools/client/performance/test/browser_perf-options-invert-flame-graph-02.js": 5625, + "devtools/client/performance/test/browser_perf-options-propagate-allocations.js": 5582, + "devtools/client/performance/test/browser_perf-options-propagate-profiler.js": 5929, + "devtools/client/performance/test/browser_perf-options-show-idle-blocks-01.js": 5808, + "devtools/client/performance/test/browser_perf-options-show-idle-blocks-02.js": 5638, + "devtools/client/performance/test/browser_perf-options-show-platform-data-01.js": 7302, + "devtools/client/performance/test/browser_perf-options-show-platform-data-02.js": 5905, + "devtools/client/performance/test/browser_perf-overview-render-01.js": 7402, + "devtools/client/performance/test/browser_perf-overview-render-02.js": 7865, + "devtools/client/performance/test/browser_perf-overview-render-03.js": 5878, + "devtools/client/performance/test/browser_perf-overview-render-04.js": 7120, + "devtools/client/performance/test/browser_perf-overview-selection-01.js": 5499, + "devtools/client/performance/test/browser_perf-overview-selection-02.js": 7302, + "devtools/client/performance/test/browser_perf-overview-selection-03.js": 5808, + "devtools/client/performance/test/browser_perf-overview-time-interval.js": 5479, + "devtools/client/performance/test/browser_perf-range-changed-render.js": 6501, + "devtools/client/performance/test/browser_perf-recording-notices-01.js": 5484, + "devtools/client/performance/test/browser_perf-recording-notices-02.js": 7455, + "devtools/client/performance/test/browser_perf-recording-notices-03.js": 8753, + "devtools/client/performance/test/browser_perf-recording-notices-04.js": 6312, + "devtools/client/performance/test/browser_perf-recording-selected-01.js": 9042, + "devtools/client/performance/test/browser_perf-recording-selected-02.js": 8650, + "devtools/client/performance/test/browser_perf-recording-selected-03.js": 8921, + "devtools/client/performance/test/browser_perf-recording-selected-04.js": 12586, + "devtools/client/performance/test/browser_perf-recordings-clear-01.js": 8147, + "devtools/client/performance/test/browser_perf-recordings-clear-02.js": 10319, + "devtools/client/performance/test/browser_perf-refresh.js": 7224, + "devtools/client/performance/test/browser_perf-states.js": 7265, + "devtools/client/performance/test/browser_perf-telemetry-01.js": 8724, + "devtools/client/performance/test/browser_perf-telemetry-02.js": 7421, + "devtools/client/performance/test/browser_perf-telemetry-03.js": 7081, + "devtools/client/performance/test/browser_perf-telemetry-04.js": 7901, + "devtools/client/performance/test/browser_perf-ui-recording.js": 7496, + "devtools/client/performance/test/browser_timeline-waterfall-background.js": 7789, + "devtools/client/performance/test/browser_timeline-waterfall-generic.js": 8503, + "devtools/client/projecteditor/test/browser_projecteditor_editing_01.js": 5391, + "devtools/client/projecteditor/test/browser_projecteditor_external_change.js": 6150, + "devtools/client/projecteditor/test/browser_projecteditor_rename_file_01.js": 7606, + "devtools/client/projecteditor/test/browser_projecteditor_rename_file_02.js": 7466, + "devtools/client/projecteditor/test/browser_projecteditor_saveall.js": 5911, + "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js": 5494, + "devtools/client/responsive.html/test/browser/browser_device_change.js": 6423, + "devtools/client/responsive.html/test/browser/browser_device_modal_exit.js": 5112, + "devtools/client/responsive.html/test/browser/browser_device_modal_submit.js": 10943, + "devtools/client/responsive.html/test/browser/browser_device_width.js": 5193, + "devtools/client/responsive.html/test/browser/browser_dpr_change.js": 5765, + "devtools/client/responsive.html/test/browser/browser_exit_button.js": 14943, + "devtools/client/responsive.html/test/browser/browser_frame_script_active.js": 11234, + "devtools/client/responsive.html/test/browser/browser_menu_item_01.js": 5756, + "devtools/client/responsive.html/test/browser/browser_menu_item_02.js": 6415, + "devtools/client/responsive.html/test/browser/browser_mouse_resize.js": 5770, + "devtools/client/responsive.html/test/browser/browser_navigation.js": 7404, + "devtools/client/responsive.html/test/browser/browser_network_throttling.js": 6154, + "devtools/client/responsive.html/test/browser/browser_page_state.js": 6690, + "devtools/client/responsive.html/test/browser/browser_permission_doorhanger.js": 6697, + "devtools/client/responsive.html/test/browser/browser_resize_cmd.js": 19710, + "devtools/client/responsive.html/test/browser/browser_screenshot_button.js": 5968, + "devtools/client/responsive.html/test/browser/browser_shutdown_close_sync.js": 8182, + "devtools/client/responsive.html/test/browser/browser_tab_close.js": 11162, + "devtools/client/responsive.html/test/browser/browser_tab_remoteness_change.js": 12341, + "devtools/client/responsive.html/test/browser/browser_toolbox_computed_view.js": 13850, + "devtools/client/responsive.html/test/browser/browser_toolbox_rule_view.js": 10899, + "devtools/client/responsive.html/test/browser/browser_toolbox_swap_browsers.js": 20399, + "devtools/client/responsive.html/test/browser/browser_touch_simulation.js": 5954, + "devtools/client/responsive.html/test/browser/browser_viewport_basics.js": 5565, + "devtools/client/responsive.html/test/browser/browser_window_close.js": 5799, + "devtools/client/responsivedesign/test/browser_responsive_cmd.js": 5598, + "devtools/client/responsivedesign/test/browser_responsivecomputedview.js": 5357, + "devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js": 7806, + "devtools/client/scratchpad/test/browser_scratchpad_disable_view_menu_items.js": 8310, + "devtools/client/scratchpad/test/browser_scratchpad_restore.js": 6143, + "devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js": 5481, + "devtools/client/shared/components/test/browser/browser_notification_box_basic.js": 6354, + "devtools/client/shared/test/browser_telemetry_button_eyedropper.js": 8019, + "devtools/client/shared/test/browser_telemetry_button_scratchpad.js": 9308, + "devtools/client/shared/test/browser_telemetry_sidebar.js": 8463, + "devtools/client/shared/test/browser_telemetry_toolbox.js": 11441, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_inspector.js": 7533, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js": 6945, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js": 5039, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_netmonitor.js": 5476, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_storage.js": 5531, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_webconsole.js": 5876, + "devtools/client/sourceeditor/test/browser_codemirror.js": 6453, + "devtools/client/sourceeditor/test/browser_vimemacs.js": 59401, + "devtools/client/storage/test/browser_storage_basic.js": 13195, + "devtools/client/storage/test/browser_storage_cache_delete.js": 6798, + "devtools/client/storage/test/browser_storage_cookies_delete_all.js": 7223, + "devtools/client/storage/test/browser_storage_cookies_edit.js": 6613, + "devtools/client/storage/test/browser_storage_cookies_edit_keyboard.js": 6170, + "devtools/client/storage/test/browser_storage_delete.js": 8609, + "devtools/client/storage/test/browser_storage_delete_all.js": 9145, + "devtools/client/storage/test/browser_storage_delete_tree.js": 8542, + "devtools/client/storage/test/browser_storage_dynamic_updates.js": 6442, + "devtools/client/storage/test/browser_storage_dynamic_updates_cookies.js": 5712, + "devtools/client/storage/test/browser_storage_indexeddb_duplicate_names.js": 5130, + "devtools/client/storage/test/browser_storage_localstorage_edit.js": 5530, + "devtools/client/storage/test/browser_storage_overflow.js": 12507, + "devtools/client/storage/test/browser_storage_sessionstorage_edit.js": 5773, + "devtools/client/storage/test/browser_storage_sidebar.js": 10866, + "devtools/client/storage/test/browser_storage_sidebar_update.js": 4919, + "devtools/client/storage/test/browser_storage_values.js": 8302, + "devtools/client/styleeditor/test/browser_styleeditor_autocomplete-disabled.js": 7836, + "devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js": 6363, + "devtools/client/styleeditor/test/browser_styleeditor_cmd_edit.js": 6238, + "devtools/client/styleeditor/test/browser_styleeditor_fetch-from-cache.js": 6079, + "devtools/client/styleeditor/test/browser_styleeditor_filesave.js": 5907, + "devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js": 5273, + "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js": 5078, + "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_links.js": 5768, + "devtools/client/styleeditor/test/browser_styleeditor_navigate.js": 5092, + "devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js": 5351, + "devtools/client/styleeditor/test/browser_styleeditor_reload.js": 5657, + "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js": 9625, + "devtools/client/styleeditor/test/browser_styleeditor_sourcemaps.js": 8175, + "devtools/client/styleeditor/test/browser_styleeditor_sync.js": 9523, + "devtools/client/styleeditor/test/browser_styleeditor_syncAddProperty.js": 6377, + "devtools/client/styleeditor/test/browser_styleeditor_syncAddRule.js": 6879, + "devtools/client/styleeditor/test/browser_styleeditor_syncAlreadyOpen.js": 5931, + "devtools/client/styleeditor/test/browser_styleeditor_syncEditSelector.js": 6432, + "devtools/client/styleeditor/test/browser_styleeditor_syncIntoRuleView.js": 8180, + "devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js": 5104, + "devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js": 5981, + "devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js": 5201, + "devtools/client/webconsole/net/test/mochitest/browser_net_basic.js": 7960, + "devtools/client/webconsole/net/test/mochitest/browser_net_params.js": 6302, + "devtools/client/webconsole/net/test/mochitest/browser_net_post.js": 10882, + "devtools/client/webconsole/net/test/mochitest/browser_net_response.js": 10161, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_batching.js": 13127, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_filters.js": 7241, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_keyboard_accessibility.js": 5548, + "devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js": 4958, + "devtools/client/webconsole/test/browser_bug664688_sandbox_update_after_navigation.js": 6199, + "devtools/client/webconsole/test/browser_bug_871156_ctrlw_close_tab.js": 5090, + "devtools/client/webconsole/test/browser_cached_messages.js": 7091, + "devtools/client/webconsole/test/browser_console_addonsdk_loader_exception.js": 5334, + "devtools/client/webconsole/test/browser_console_consolejsm_output.js": 7848, + "devtools/client/webconsole/test/browser_console_filters.js": 6307, + "devtools/client/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js": 13106, + "devtools/client/webconsole/test/browser_console_history_persist.js": 13379, + "devtools/client/webconsole/test/browser_console_iframe_messages.js": 6408, + "devtools/client/webconsole/test/browser_console_native_getters.js": 8037, + "devtools/client/webconsole/test/browser_console_nsiconsolemessage.js": 6165, + "devtools/client/webconsole/test/browser_console_optimized_out_vars.js": 6946, + "devtools/client/webconsole/test/browser_console_server_logging.js": 6265, + "devtools/client/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js": 7708, + "devtools/client/webconsole/test/browser_console_variables_view_highlighter.js": 14476, + "devtools/client/webconsole/test/browser_console_variables_view_while_debugging.js": 5615, + "devtools/client/webconsole/test/browser_console_variables_view_while_debugging_and_inspecting.js": 8881, + "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe.js": 7311, + "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe2.js": 5048, + "devtools/client/webconsole/test/browser_jsterm_inspect.js": 6838, + "devtools/client/webconsole/test/browser_warn_user_about_replaced_api.js": 7628, + "devtools/client/webconsole/test/browser_webconsole_autocomplete_in_debugger_stackframe.js": 5895, + "devtools/client/webconsole/test/browser_webconsole_bug_593003_iframe_wrong_hud.js": 9578, + "devtools/client/webconsole/test/browser_webconsole_bug_595223_file_uri.js": 6033, + "devtools/client/webconsole/test/browser_webconsole_bug_597103_deactivateHUDForContext_unfocused_window.js": 10020, + "devtools/client/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js": 6606, + "devtools/client/webconsole/test/browser_webconsole_bug_597756_reopen_closed_tab.js": 7495, + "devtools/client/webconsole/test/browser_webconsole_bug_613642_maintain_scroll.js": 5326, + "devtools/client/webconsole/test/browser_webconsole_bug_613642_prune_scroll.js": 5002, + "devtools/client/webconsole/test/browser_webconsole_bug_614793_jsterm_scroll.js": 8608, + "devtools/client/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js": 9607, + "devtools/client/webconsole/test/browser_webconsole_bug_632275_getters_document_width.js": 5951, + "devtools/client/webconsole/test/browser_webconsole_bug_658368_time_methods.js": 6189, + "devtools/client/webconsole/test/browser_webconsole_bug_659907_console_dir.js": 7215, + "devtools/client/webconsole/test/browser_webconsole_bug_752559_ineffective_iframe_sandbox_warning.js": 19880, + "devtools/client/webconsole/test/browser_webconsole_bug_766001_JS_Console_in_Debugger.js": 10836, + "devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js": 6068, + "devtools/client/webconsole/test/browser_webconsole_cached_autocomplete.js": 5095, + "devtools/client/webconsole/test/browser_webconsole_cd_iframe.js": 6699, + "devtools/client/webconsole/test/browser_webconsole_clear_method.js": 6039, + "devtools/client/webconsole/test/browser_webconsole_clickable_urls.js": 12669, + "devtools/client/webconsole/test/browser_webconsole_closure_inspection.js": 10920, + "devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js": 6357, + "devtools/client/webconsole/test/browser_webconsole_input_field_focus_on_panel_select.js": 5607, + "devtools/client/webconsole/test/browser_webconsole_inspect-parsed-documents.js": 5372, + "devtools/client/webconsole/test/browser_webconsole_netlogging.js": 16982, + "devtools/client/webconsole/test/browser_webconsole_netlogging_reset_filter.js": 5216, + "devtools/client/webconsole/test/browser_webconsole_output_01.js": 7384, + "devtools/client/webconsole/test/browser_webconsole_output_02.js": 10487, + "devtools/client/webconsole/test/browser_webconsole_output_03.js": 9448, + "devtools/client/webconsole/test/browser_webconsole_output_04.js": 8364, + "devtools/client/webconsole/test/browser_webconsole_output_05.js": 9768, + "devtools/client/webconsole/test/browser_webconsole_output_06.js": 14630, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js": 7935, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_05.js": 9637, + "devtools/client/webconsole/test/browser_webconsole_output_table.js": 5144, + "devtools/client/webconsole/test/browser_webconsole_split.js": 19238, + "devtools/client/webconsole/test/browser_webconsole_split_escape_key.js": 7203, + "devtools/client/webconsole/test/browser_webconsole_split_focus.js": 6380, + "devtools/client/webconsole/test/browser_webconsole_split_persist.js": 15081, + "devtools/client/webconsole/test/browser_webconsole_view_source.js": 10583, + "devtools/server/tests/browser/browser_markers-cycle-collection.js": 6404, + "devtools/server/tests/browser/browser_storage_dynamic_windows.js": 5272, + "devtools/server/tests/browser/browser_storage_listings.js": 5790, + "devtools/server/tests/browser/browser_webextension_inspected_window.js": 10352 + } +} \ No newline at end of file diff --git a/testing/runtimes/mochitest-devtools-chrome.runtimes.json b/testing/runtimes/mochitest-devtools-chrome.runtimes.json index d4e13a43ee22..0b8ad62a2c9c 100644 --- a/testing/runtimes/mochitest-devtools-chrome.runtimes.json +++ b/testing/runtimes/mochitest-devtools-chrome.runtimes.json @@ -1,820 +1,1098 @@ { - "excluded_test_average": 1606, + "excluded_test_average": 2911, "runtimes": { - "devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js": 11367, - "devtools/client/animationinspector/test/browser_animation_iterationCount_hidden_by_default.js": 5368, - "devtools/client/animationinspector/test/browser_animation_panel_exists.js": 5252, - "devtools/client/animationinspector/test/browser_animation_participate_in_inspector_update.js": 8774, - "devtools/client/animationinspector/test/browser_animation_play_pause_button.js": 6102, - "devtools/client/animationinspector/test/browser_animation_playerFronts_are_refreshed.js": 5674, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js": 6206, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_compositor_icon.js": 4905, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_destroy.js": 5266, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_disables_on_finished.js": 9402, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_dont_show_time_after_duration.js": 8588, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_have_control_buttons.js": 7554, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_meta_data.js": 5171, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_delayed.js": 4850, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_enabled.js": 7386, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_moves.js": 5733, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_state_after_pause.js": 5371, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_target_nodes.js": 8338, - "devtools/client/animationinspector/test/browser_animation_rate_select_shows_presets.js": 5335, - "devtools/client/animationinspector/test/browser_animation_refresh_on_added_animation.js": 9023, - "devtools/client/animationinspector/test/browser_animation_refresh_on_removed_animation.js": 12069, - "devtools/client/animationinspector/test/browser_animation_refresh_when_active.js": 10349, - "devtools/client/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js": 8856, - "devtools/client/animationinspector/test/browser_animation_setting_currentTime_works_and_pauses.js": 7295, - "devtools/client/animationinspector/test/browser_animation_setting_playbackRate_works.js": 5351, - "devtools/client/animationinspector/test/browser_animation_shows_player_on_valid_node.js": 8520, - "devtools/client/animationinspector/test/browser_animation_target_highlight_select.js": 11921, - "devtools/client/animationinspector/test/browser_animation_timeline_animates.js": 4759, - "devtools/client/animationinspector/test/browser_animation_timeline_displays_with_pref.js": 4454, - "devtools/client/animationinspector/test/browser_animation_timeline_header.js": 4484, - "devtools/client/animationinspector/test/browser_animation_timeline_is_enabled.js": 6885, - "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_exists.js": 4526, - "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_movable.js": 3945, - "devtools/client/animationinspector/test/browser_animation_timeline_shows_delay.js": 4708, - "devtools/client/animationinspector/test/browser_animation_timeline_shows_iterations.js": 4691, - "devtools/client/animationinspector/test/browser_animation_timeline_ui.js": 4491, - "devtools/client/animationinspector/test/browser_animation_timeline_waits_for_delay.js": 3777, - "devtools/client/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js": 5870, - "devtools/client/animationinspector/test/browser_animation_toggle_button_toggles_animations.js": 5753, - "devtools/client/animationinspector/test/browser_animation_toggle_button_updates_playerWidgets.js": 5825, - "devtools/client/animationinspector/test/browser_animation_toolbar_exists.js": 5290, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_changes.js": 5799, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js": 10748, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_rate_changes.js": 5908, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_time_changes.js": 6307, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-highlight.js": 3366, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js": 4232, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js": 3645, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-02.js": 3407, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js": 3251, - "devtools/client/commandline/test/browser_cmd_addon.js": 3636, - "devtools/client/commandline/test/browser_cmd_csscoverage_startstop.js": 3888, - "devtools/client/commandline/test/browser_cmd_highlight_01.js": 13146, - "devtools/client/commandline/test/browser_cmd_pagemod_export.js": 3659, - "devtools/client/commandline/test/browser_cmd_screenshot.js": 6829, - "devtools/client/commandline/test/browser_gcli_exec.js": 3804, - "devtools/client/debugger/test/browser_dbg_aaa_run_first_leaktest.js": 4439, - "devtools/client/debugger/test/browser_dbg_addon-modules-unpacked.js": 4516, - "devtools/client/debugger/test/browser_dbg_addon-modules.js": 5270, - "devtools/client/debugger/test/browser_dbg_addon-panels.js": 5365, - "devtools/client/debugger/test/browser_dbg_addon-sources.js": 5104, - "devtools/client/debugger/test/browser_dbg_auto-pretty-print-01.js": 3801, - "devtools/client/debugger/test/browser_dbg_blackboxing-01.js": 3330, - "devtools/client/debugger/test/browser_dbg_blackboxing-02.js": 3478, - "devtools/client/debugger/test/browser_dbg_blackboxing-03.js": 3533, - "devtools/client/debugger/test/browser_dbg_blackboxing-04.js": 3475, - "devtools/client/debugger/test/browser_dbg_blackboxing-06.js": 3521, - "devtools/client/debugger/test/browser_dbg_breadcrumbs-access.js": 3606, - "devtools/client/debugger/test/browser_dbg_break-on-dom-01.js": 3348, - "devtools/client/debugger/test/browser_dbg_break-on-dom-02.js": 5630, - "devtools/client/debugger/test/browser_dbg_break-on-dom-03.js": 3231, - "devtools/client/debugger/test/browser_dbg_break-on-dom-04.js": 3460, - "devtools/client/debugger/test/browser_dbg_break-on-dom-05.js": 3386, - "devtools/client/debugger/test/browser_dbg_break-on-dom-06.js": 4856, - "devtools/client/debugger/test/browser_dbg_break-on-dom-08.js": 3566, - "devtools/client/debugger/test/browser_dbg_breakpoints-actual-location.js": 3565, - "devtools/client/debugger/test/browser_dbg_breakpoints-actual-location2.js": 4238, - "devtools/client/debugger/test/browser_dbg_breakpoints-break-on-last-line-of-script-on-reload.js": 21298, - "devtools/client/debugger/test/browser_dbg_breakpoints-button-01.js": 3718, - "devtools/client/debugger/test/browser_dbg_breakpoints-button-02.js": 3197, - "devtools/client/debugger/test/browser_dbg_breakpoints-condition-thrown-message.js": 4440, - "devtools/client/debugger/test/browser_dbg_breakpoints-contextmenu-add.js": 3811, - "devtools/client/debugger/test/browser_dbg_breakpoints-contextmenu.js": 10667, - "devtools/client/debugger/test/browser_dbg_breakpoints-disabled-reload.js": 7390, - "devtools/client/debugger/test/browser_dbg_breakpoints-editor.js": 3693, - "devtools/client/debugger/test/browser_dbg_breakpoints-eval.js": 3177, - "devtools/client/debugger/test/browser_dbg_breakpoints-highlight.js": 3582, - "devtools/client/debugger/test/browser_dbg_breakpoints-new-script.js": 3863, - "devtools/client/debugger/test/browser_dbg_breakpoints-other-tabs.js": 5351, - "devtools/client/debugger/test/browser_dbg_breakpoints-pane.js": 3835, - "devtools/client/debugger/test/browser_dbg_breakpoints-reload.js": 3734, - "devtools/client/debugger/test/browser_dbg_bug-896139.js": 4069, - "devtools/client/debugger/test/browser_dbg_closure-inspection.js": 7951, - "devtools/client/debugger/test/browser_dbg_cmd-blackbox.js": 5206, - "devtools/client/debugger/test/browser_dbg_cmd-break.js": 4698, - "devtools/client/debugger/test/browser_dbg_cmd-dbg.js": 5582, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-01.js": 10253, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-02.js": 4188, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-03.js": 3597, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-04.js": 4432, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-05.js": 5954, - "devtools/client/debugger/test/browser_dbg_console-eval.js": 3984, - "devtools/client/debugger/test/browser_dbg_console-named-eval.js": 3581, - "devtools/client/debugger/test/browser_dbg_controller-evaluate-01.js": 3783, - "devtools/client/debugger/test/browser_dbg_controller-evaluate-02.js": 3682, - "devtools/client/debugger/test/browser_dbg_editor-contextmenu.js": 3594, - "devtools/client/debugger/test/browser_dbg_editor-mode.js": 3764, - "devtools/client/debugger/test/browser_dbg_file-reload.js": 3285, - "devtools/client/debugger/test/browser_dbg_function-display-name.js": 3674, - "devtools/client/debugger/test/browser_dbg_hit-counts-01.js": 3313, - "devtools/client/debugger/test/browser_dbg_host-layout.js": 15477, - "devtools/client/debugger/test/browser_dbg_iframes.js": 3291, - "devtools/client/debugger/test/browser_dbg_interrupts.js": 3283, - "devtools/client/debugger/test/browser_dbg_listtabs-02.js": 3207, - "devtools/client/debugger/test/browser_dbg_location-changes-01-simple.js": 4432, - "devtools/client/debugger/test/browser_dbg_location-changes-02-blank.js": 3740, - "devtools/client/debugger/test/browser_dbg_location-changes-03-new.js": 4061, - "devtools/client/debugger/test/browser_dbg_location-changes-04-breakpoint.js": 6050, - "devtools/client/debugger/test/browser_dbg_on-pause-highlight.js": 3557, - "devtools/client/debugger/test/browser_dbg_optimized-out-vars.js": 3872, - "devtools/client/debugger/test/browser_dbg_pause-exceptions-01.js": 4701, - "devtools/client/debugger/test/browser_dbg_pause-exceptions-02.js": 4798, - "devtools/client/debugger/test/browser_dbg_pause-no-step.js": 3623, - "devtools/client/debugger/test/browser_dbg_pause-resume.js": 3218, - "devtools/client/debugger/test/browser_dbg_pause-warning.js": 5224, - "devtools/client/debugger/test/browser_dbg_paused-keybindings.js": 4147, - "devtools/client/debugger/test/browser_dbg_pretty-print-01.js": 3456, - "devtools/client/debugger/test/browser_dbg_pretty-print-02.js": 3491, - "devtools/client/debugger/test/browser_dbg_pretty-print-03.js": 4160, - "devtools/client/debugger/test/browser_dbg_pretty-print-04.js": 3875, - "devtools/client/debugger/test/browser_dbg_pretty-print-05.js": 3401, - "devtools/client/debugger/test/browser_dbg_pretty-print-06.js": 3350, - "devtools/client/debugger/test/browser_dbg_pretty-print-07.js": 3481, - "devtools/client/debugger/test/browser_dbg_pretty-print-08.js": 4316, - "devtools/client/debugger/test/browser_dbg_pretty-print-09.js": 4008, - "devtools/client/debugger/test/browser_dbg_pretty-print-10.js": 3297, - "devtools/client/debugger/test/browser_dbg_pretty-print-11.js": 4315, - "devtools/client/debugger/test/browser_dbg_pretty-print-12.js": 3553, - "devtools/client/debugger/test/browser_dbg_pretty-print-13.js": 3617, - "devtools/client/debugger/test/browser_dbg_pretty-print-on-paused.js": 4450, - "devtools/client/debugger/test/browser_dbg_progress-listener-bug.js": 3650, - "devtools/client/debugger/test/browser_dbg_promises-allocation-stack.js": 3555, - "devtools/client/debugger/test/browser_dbg_promises-fulfillment-stack.js": 3563, - "devtools/client/debugger/test/browser_dbg_promises-rejection-stack.js": 3561, - "devtools/client/debugger/test/browser_dbg_reload-preferred-script-01.js": 3405, - "devtools/client/debugger/test/browser_dbg_reload-preferred-script-02.js": 3370, - "devtools/client/debugger/test/browser_dbg_reload-preferred-script-03.js": 3512, - "devtools/client/debugger/test/browser_dbg_reload-same-script.js": 6132, - "devtools/client/debugger/test/browser_dbg_scripts-switching-01.js": 4649, - "devtools/client/debugger/test/browser_dbg_scripts-switching-02.js": 4648, - "devtools/client/debugger/test/browser_dbg_scripts-switching-03.js": 3401, - "devtools/client/debugger/test/browser_dbg_search-autofill-identifier.js": 3673, - "devtools/client/debugger/test/browser_dbg_search-basic-01.js": 5445, - "devtools/client/debugger/test/browser_dbg_search-basic-02.js": 5529, - "devtools/client/debugger/test/browser_dbg_search-basic-03.js": 4785, - "devtools/client/debugger/test/browser_dbg_search-basic-04.js": 3606, - "devtools/client/debugger/test/browser_dbg_search-global-01.js": 5509, - "devtools/client/debugger/test/browser_dbg_search-global-02.js": 5151, - "devtools/client/debugger/test/browser_dbg_search-global-03.js": 5075, - "devtools/client/debugger/test/browser_dbg_search-global-04.js": 4315, - "devtools/client/debugger/test/browser_dbg_search-global-05.js": 5778, - "devtools/client/debugger/test/browser_dbg_search-global-06.js": 7162, - "devtools/client/debugger/test/browser_dbg_search-popup-jank.js": 5101, - "devtools/client/debugger/test/browser_dbg_search-sources-01.js": 5406, - "devtools/client/debugger/test/browser_dbg_search-sources-02.js": 5483, - "devtools/client/debugger/test/browser_dbg_search-sources-03.js": 4172, - "devtools/client/debugger/test/browser_dbg_search-symbols.js": 6951, - "devtools/client/debugger/test/browser_dbg_searchbox-help-popup-01.js": 4200, - "devtools/client/debugger/test/browser_dbg_searchbox-help-popup-02.js": 4091, - "devtools/client/debugger/test/browser_dbg_searchbox-parse.js": 3359, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-01.js": 9963, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-02.js": 5140, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-03.js": 4781, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-04.js": 5407, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-05.js": 6144, - "devtools/client/debugger/test/browser_dbg_source-maps-01.js": 4983, - "devtools/client/debugger/test/browser_dbg_source-maps-02.js": 5341, - "devtools/client/debugger/test/browser_dbg_source-maps-03.js": 4432, - "devtools/client/debugger/test/browser_dbg_source-maps-04.js": 5492, - "devtools/client/debugger/test/browser_dbg_sources-bookmarklet.js": 3702, - "devtools/client/debugger/test/browser_dbg_sources-cache.js": 4659, - "devtools/client/debugger/test/browser_dbg_sources-contextmenu-01.js": 3952, - "devtools/client/debugger/test/browser_dbg_sources-contextmenu-02.js": 4246, - "devtools/client/debugger/test/browser_dbg_sources-eval-02.js": 3842, - "devtools/client/debugger/test/browser_dbg_sources-keybindings.js": 3758, - "devtools/client/debugger/test/browser_dbg_sources-labels.js": 3708, - "devtools/client/debugger/test/browser_dbg_sources-sorting.js": 3750, - "devtools/client/debugger/test/browser_dbg_split-console-paused-reload.js": 8976, - "devtools/client/debugger/test/browser_dbg_stack-01.js": 4215, - "devtools/client/debugger/test/browser_dbg_stack-02.js": 4585, - "devtools/client/debugger/test/browser_dbg_stack-03.js": 12530, - "devtools/client/debugger/test/browser_dbg_stack-04.js": 4387, - "devtools/client/debugger/test/browser_dbg_stack-05.js": 4647, - "devtools/client/debugger/test/browser_dbg_stack-06.js": 4572, - "devtools/client/debugger/test/browser_dbg_stack-07.js": 5815, - "devtools/client/debugger/test/browser_dbg_step-out.js": 5295, - "devtools/client/debugger/test/browser_dbg_terminate-on-tab-close.js": 4394, - "devtools/client/debugger/test/browser_dbg_tracing-01.js": 3931, - "devtools/client/debugger/test/browser_dbg_tracing-02.js": 3789, - "devtools/client/debugger/test/browser_dbg_tracing-03.js": 4172, - "devtools/client/debugger/test/browser_dbg_tracing-04.js": 3879, - "devtools/client/debugger/test/browser_dbg_tracing-05.js": 3845, - "devtools/client/debugger/test/browser_dbg_tracing-06.js": 3514, - "devtools/client/debugger/test/browser_dbg_tracing-07.js": 4016, - "devtools/client/debugger/test/browser_dbg_tracing-08.js": 4805, - "devtools/client/debugger/test/browser_dbg_variables-view-01.js": 3687, - "devtools/client/debugger/test/browser_dbg_variables-view-02.js": 3784, - "devtools/client/debugger/test/browser_dbg_variables-view-03.js": 4105, - "devtools/client/debugger/test/browser_dbg_variables-view-04.js": 3796, - "devtools/client/debugger/test/browser_dbg_variables-view-05.js": 3961, - "devtools/client/debugger/test/browser_dbg_variables-view-06.js": 4789, - "devtools/client/debugger/test/browser_dbg_variables-view-accessibility.js": 4512, - "devtools/client/debugger/test/browser_dbg_variables-view-data.js": 3950, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-cancel.js": 4695, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-click.js": 3773, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-getset-01.js": 16042, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-getset-02.js": 5854, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-value.js": 8457, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-watch.js": 7097, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-01.js": 12423, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-02.js": 12976, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-03.js": 9968, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-04.js": 9092, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-05.js": 9445, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-pref.js": 4211, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-searchbox.js": 4036, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-01.js": 7696, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-02.js": 5491, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-03.js": 11403, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-with.js": 5338, - "devtools/client/debugger/test/browser_dbg_variables-view-frozen-sealed-nonext.js": 4651, - "devtools/client/debugger/test/browser_dbg_variables-view-hide-non-enums.js": 4392, - "devtools/client/debugger/test/browser_dbg_variables-view-large-array-buffer.js": 11929, - "devtools/client/debugger/test/browser_dbg_variables-view-override-01.js": 9352, - "devtools/client/debugger/test/browser_dbg_variables-view-override-02.js": 5197, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-01.js": 7427, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-02.js": 6221, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-03.js": 5290, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-04.js": 5354, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-05.js": 5345, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-06.js": 5420, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-07.js": 7074, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-08.js": 5639, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-09.js": 5955, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-10.js": 6085, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-11.js": 7112, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-12.js": 6986, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-13.js": 7907, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-15.js": 6411, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-16.js": 13041, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-01.js": 24723, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-02.js": 29720, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-03.js": 6593, - "devtools/client/debugger/test/browser_dbg_variables-view-webidl.js": 11423, - "devtools/client/debugger/test/browser_dbg_watch-expressions-01.js": 5303, - "devtools/client/debugger/test/browser_dbg_watch-expressions-02.js": 12206, - "devtools/client/fontinspector/test/browser_fontinspector.js": 5603, - "devtools/client/fontinspector/test/browser_fontinspector_edit-previews-show-all.js": 3612, - "devtools/client/fontinspector/test/browser_fontinspector_edit-previews.js": 3415, - "devtools/client/fontinspector/test/browser_fontinspector_theme-change.js": 3909, - "devtools/client/framework/test/browser_devtools_api.js": 3717, - "devtools/client/framework/test/browser_keybindings.js": 3679, - "devtools/client/framework/test/browser_keybindings_01.js": 4615, - "devtools/client/framework/test/browser_new_activation_workflow.js": 3551, - "devtools/client/framework/test/browser_toolbox_hosts.js": 6796, - "devtools/client/framework/test/browser_toolbox_hosts_size.js": 5268, - "devtools/client/framework/test/browser_toolbox_options.js": 5115, - "devtools/client/framework/test/browser_toolbox_options_disable_buttons.js": 4083, - "devtools/client/framework/test/browser_toolbox_options_disable_cache-01.js": 7633, - "devtools/client/framework/test/browser_toolbox_options_disable_cache-02.js": 9709, - "devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js": 6582, - "devtools/client/framework/test/browser_toolbox_theme_registration.js": 4244, - "devtools/client/framework/test/browser_toolbox_toggle.js": 9638, - "devtools/client/framework/test/browser_toolbox_tool_ready.js": 5819, - "devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js": 6378, - "devtools/client/framework/test/browser_toolbox_view_source_04.js": 3626, - "devtools/client/framework/test/browser_toolbox_window_reload_target.js": 13041, - "devtools/client/framework/test/browser_toolbox_window_shortcuts.js": 4286, - "devtools/client/framework/test/browser_toolbox_window_title_changes.js": 4976, - "devtools/client/inspector/test/browser_inspector_breadcrumbs.js": 7142, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_highlight_hover.js": 3180, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_keybinding.js": 8701, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_menu.js": 3549, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_mutations.js": 4993, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-01.js": 3520, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-02.js": 4896, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-03.js": 3535, - "devtools/client/inspector/test/browser_inspector_destroy-after-navigation.js": 4242, - "devtools/client/inspector/test/browser_inspector_highlighter-01.js": 3364, - "devtools/client/inspector/test/browser_inspector_highlighter-02.js": 5192, - "devtools/client/inspector/test/browser_inspector_highlighter-03.js": 4610, - "devtools/client/inspector/test/browser_inspector_highlighter-comments.js": 4905, - "devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js": 3211, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_02.js": 4385, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_03.js": 3480, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_04.js": 3490, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_05.js": 4776, - "devtools/client/inspector/test/browser_inspector_highlighter-hover_01.js": 4612, - "devtools/client/inspector/test/browser_inspector_highlighter-hover_02.js": 3235, - "devtools/client/inspector/test/browser_inspector_highlighter-hover_03.js": 3435, - "devtools/client/inspector/test/browser_inspector_highlighter-iframes.js": 4939, - "devtools/client/inspector/test/browser_inspector_highlighter-inline.js": 8232, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_01.js": 4884, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_02.js": 4755, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_03.js": 3473, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_04.js": 3342, - "devtools/client/inspector/test/browser_inspector_highlighter-options.js": 4135, - "devtools/client/inspector/test/browser_inspector_highlighter-rect_02.js": 3197, - "devtools/client/inspector/test/browser_inspector_highlighter-rulers_02.js": 3188, - "devtools/client/inspector/test/browser_inspector_highlighter-selector_01.js": 3777, - "devtools/client/inspector/test/browser_inspector_highlighter-selector_02.js": 3276, - "devtools/client/inspector/test/browser_inspector_highlighter-xbl.js": 3550, - "devtools/client/inspector/test/browser_inspector_highlighter-zoom.js": 4423, - "devtools/client/inspector/test/browser_inspector_iframe-navigation.js": 3472, - "devtools/client/inspector/test/browser_inspector_infobar_01.js": 4769, - "devtools/client/inspector/test/browser_inspector_initialization.js": 10479, - "devtools/client/inspector/test/browser_inspector_invalidate.js": 3653, - "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js": 3881, - "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts.js": 3813, - "devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js": 5519, - "devtools/client/inspector/test/browser_inspector_menu-01.js": 9344, - "devtools/client/inspector/test/browser_inspector_menu-02-copy-items.js": 3784, - "devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js": 5441, - "devtools/client/inspector/test/browser_inspector_menu-04-other.js": 5088, - "devtools/client/inspector/test/browser_inspector_navigation.js": 5264, - "devtools/client/inspector/test/browser_inspector_pane-toggle-03.js": 3592, - "devtools/client/inspector/test/browser_inspector_picker-stop-on-destroy.js": 5700, - "devtools/client/inspector/test/browser_inspector_pseudoclass-lock.js": 5411, - "devtools/client/inspector/test/browser_inspector_reload-01.js": 3513, - "devtools/client/inspector/test/browser_inspector_reload-02.js": 3947, - "devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js": 3640, - "devtools/client/inspector/test/browser_inspector_search-01.js": 9354, - "devtools/client/inspector/test/browser_inspector_search-02.js": 6798, - "devtools/client/inspector/test/browser_inspector_search-03.js": 6803, - "devtools/client/inspector/test/browser_inspector_search-04.js": 4311, - "devtools/client/inspector/test/browser_inspector_search-05.js": 4759, - "devtools/client/inspector/test/browser_inspector_search-navigation.js": 8900, - "devtools/client/inspector/test/browser_inspector_search-reserved.js": 5376, - "devtools/client/inspector/test/browser_inspector_select-docshell.js": 3732, - "devtools/client/inspector/test/browser_inspector_select-last-selected.js": 10300, - "devtools/client/inspector/test/browser_inspector_sidebarstate.js": 7512, - "devtools/client/layoutview/test/browser_layoutview.js": 4816, - "devtools/client/layoutview/test/browser_layoutview_editablemodel.js": 5766, - "devtools/client/layoutview/test/browser_layoutview_editablemodel_stylerules.js": 4262, - "devtools/client/layoutview/test/browser_layoutview_update-after-navigation.js": 5688, - "devtools/client/layoutview/test/browser_layoutview_update-after-reload.js": 4557, - "devtools/client/markupview/test/browser_markupview_anonymous_01.js": 5509, - "devtools/client/markupview/test/browser_markupview_anonymous_02.js": 5719, - "devtools/client/markupview/test/browser_markupview_anonymous_03.js": 3242, - "devtools/client/markupview/test/browser_markupview_anonymous_04.js": 3475, - "devtools/client/markupview/test/browser_markupview_copy_image_data.js": 3848, - "devtools/client/markupview/test/browser_markupview_css_completion_style_attribute.js": 6180, - "devtools/client/markupview/test/browser_markupview_dragdrop_autoscroll.js": 3866, - "devtools/client/markupview/test/browser_markupview_dragdrop_invalidNodes.js": 4209, - "devtools/client/markupview/test/browser_markupview_dragdrop_isDragging.js": 3993, - "devtools/client/markupview/test/browser_markupview_dragdrop_reorder.js": 6812, - "devtools/client/markupview/test/browser_markupview_dragdrop_textSelection.js": 3437, - "devtools/client/markupview/test/browser_markupview_events-overflow.js": 5318, - "devtools/client/markupview/test/browser_markupview_events.js": 8689, - "devtools/client/markupview/test/browser_markupview_events_form.js": 3199, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.0.js": 6250, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.1.js": 6640, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.11.1.js": 7257, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.2.js": 5715, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.3.js": 8079, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.4.js": 7983, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.6.js": 9979, - "devtools/client/markupview/test/browser_markupview_events_jquery_1.7.js": 8661, - "devtools/client/markupview/test/browser_markupview_events_jquery_2.1.1.js": 7746, - "devtools/client/markupview/test/browser_markupview_html_edit_01.js": 8473, - "devtools/client/markupview/test/browser_markupview_html_edit_02.js": 8134, - "devtools/client/markupview/test/browser_markupview_html_edit_03.js": 6147, - "devtools/client/markupview/test/browser_markupview_image_tooltip.js": 3372, - "devtools/client/markupview/test/browser_markupview_image_tooltip_mutations.js": 3254, - "devtools/client/markupview/test/browser_markupview_keybindings_01.js": 3299, - "devtools/client/markupview/test/browser_markupview_keybindings_03.js": 3451, - "devtools/client/markupview/test/browser_markupview_keybindings_04.js": 4198, - "devtools/client/markupview/test/browser_markupview_links_01.js": 6352, - "devtools/client/markupview/test/browser_markupview_links_02.js": 4059, - "devtools/client/markupview/test/browser_markupview_links_03.js": 3707, - "devtools/client/markupview/test/browser_markupview_links_04.js": 5422, - "devtools/client/markupview/test/browser_markupview_links_05.js": 5892, - "devtools/client/markupview/test/browser_markupview_links_06.js": 7548, - "devtools/client/markupview/test/browser_markupview_links_07.js": 5762, - "devtools/client/markupview/test/browser_markupview_load_01.js": 10491, - "devtools/client/markupview/test/browser_markupview_mutation_01.js": 6098, - "devtools/client/markupview/test/browser_markupview_mutation_02.js": 3358, - "devtools/client/markupview/test/browser_markupview_navigation.js": 8466, - "devtools/client/markupview/test/browser_markupview_node_not_displayed_02.js": 5252, - "devtools/client/markupview/test/browser_markupview_pagesize_01.js": 4644, - "devtools/client/markupview/test/browser_markupview_pagesize_02.js": 4714, - "devtools/client/markupview/test/browser_markupview_search_01.js": 4275, - "devtools/client/markupview/test/browser_markupview_tag_edit_01.js": 6499, - "devtools/client/markupview/test/browser_markupview_tag_edit_03.js": 3526, - "devtools/client/markupview/test/browser_markupview_tag_edit_04.js": 8442, - "devtools/client/markupview/test/browser_markupview_tag_edit_05.js": 4825, - "devtools/client/markupview/test/browser_markupview_tag_edit_06.js": 5136, - "devtools/client/markupview/test/browser_markupview_tag_edit_07.js": 4537, - "devtools/client/markupview/test/browser_markupview_tag_edit_08.js": 4726, - "devtools/client/markupview/test/browser_markupview_tag_edit_09.js": 3390, - "devtools/client/markupview/test/browser_markupview_tag_edit_10.js": 3329, - "devtools/client/markupview/test/browser_markupview_tag_edit_12.js": 3714, - "devtools/client/markupview/test/browser_markupview_textcontent_edit_01.js": 5145, - "devtools/client/markupview/test/browser_markupview_toggle_01.js": 3730, - "devtools/client/markupview/test/browser_markupview_toggle_02.js": 3691, - "devtools/client/markupview/test/browser_markupview_toggle_03.js": 4166, - "devtools/client/markupview/test/browser_markupview_update-on-navigtion.js": 3818, - "devtools/client/netmonitor/har/test/browser_net_har_copy_all_as_har.js": 4078, - "devtools/client/netmonitor/test/browser_net_aaa_leaktest.js": 3776, - "devtools/client/netmonitor/test/browser_net_accessibility-01.js": 9465, - "devtools/client/netmonitor/test/browser_net_accessibility-02.js": 9419, - "devtools/client/netmonitor/test/browser_net_api-calls.js": 3406, - "devtools/client/netmonitor/test/browser_net_autoscroll.js": 10638, - "devtools/client/netmonitor/test/browser_net_cached-status.js": 3817, - "devtools/client/netmonitor/test/browser_net_complex-params.js": 4835, - "devtools/client/netmonitor/test/browser_net_content-type.js": 5359, - "devtools/client/netmonitor/test/browser_net_copy_image_as_data_uri.js": 4297, - "devtools/client/netmonitor/test/browser_net_copy_params.js": 4402, - "devtools/client/netmonitor/test/browser_net_copy_response.js": 4343, - "devtools/client/netmonitor/test/browser_net_curl-utils.js": 3531, - "devtools/client/netmonitor/test/browser_net_details-no-duplicated-content.js": 4121, - "devtools/client/netmonitor/test/browser_net_filter-01.js": 7654, - "devtools/client/netmonitor/test/browser_net_filter-02.js": 10866, - "devtools/client/netmonitor/test/browser_net_filter-03.js": 10641, - "devtools/client/netmonitor/test/browser_net_filter-04.js": 4344, - "devtools/client/netmonitor/test/browser_net_footer-summary.js": 7876, - "devtools/client/netmonitor/test/browser_net_html-preview.js": 3992, - "devtools/client/netmonitor/test/browser_net_icon-preview.js": 5345, - "devtools/client/netmonitor/test/browser_net_image-tooltip.js": 5498, - "devtools/client/netmonitor/test/browser_net_json-long.js": 13553, - "devtools/client/netmonitor/test/browser_net_json-malformed.js": 3957, - "devtools/client/netmonitor/test/browser_net_large-response.js": 3404, - "devtools/client/netmonitor/test/browser_net_persistent_logs.js": 3784, - "devtools/client/netmonitor/test/browser_net_post-data-01.js": 3337, - "devtools/client/netmonitor/test/browser_net_prefs-reload.js": 15071, - "devtools/client/netmonitor/test/browser_net_req-resp-bodies.js": 3978, - "devtools/client/netmonitor/test/browser_net_resend.js": 4125, - "devtools/client/netmonitor/test/browser_net_security-state.js": 3782, - "devtools/client/netmonitor/test/browser_net_security-tab-deselect.js": 3401, - "devtools/client/netmonitor/test/browser_net_security-tab-visibility.js": 4613, - "devtools/client/netmonitor/test/browser_net_sort-01.js": 7583, - "devtools/client/netmonitor/test/browser_net_sort-02.js": 7739, - "devtools/client/netmonitor/test/browser_net_sort-03.js": 10294, - "devtools/client/netmonitor/test/browser_net_statistics-01.js": 4253, - "devtools/client/netmonitor/test/browser_net_statistics-02.js": 4900, - "devtools/client/netmonitor/test/browser_net_status-codes.js": 4390, - "devtools/client/netmonitor/test/browser_net_timing-division.js": 5635, - "devtools/client/performance/test/browser_aaa-run-first-leaktest.js": 3922, - "devtools/client/performance/test/browser_markers-cycle-collection.js": 5663, - "devtools/client/performance/test/browser_perf-categories-js-calltree.js": 7688, - "devtools/client/performance/test/browser_perf-clear-01.js": 6499, - "devtools/client/performance/test/browser_perf-clear-02.js": 7684, - "devtools/client/performance/test/browser_perf-columns-js-calltree.js": 7489, - "devtools/client/performance/test/browser_perf-columns-memory-calltree.js": 5427, - "devtools/client/performance/test/browser_perf-compatibility-02.js": 4383, - "devtools/client/performance/test/browser_perf-compatibility-04.js": 4726, - "devtools/client/performance/test/browser_perf-compatibility-05.js": 5828, - "devtools/client/performance/test/browser_perf-compatibility-07.js": 5350, - "devtools/client/performance/test/browser_perf-compatibility-08.js": 6000, - "devtools/client/performance/test/browser_perf-console-record-01.js": 4358, - "devtools/client/performance/test/browser_perf-console-record-02.js": 4518, - "devtools/client/performance/test/browser_perf-console-record-03.js": 4118, - "devtools/client/performance/test/browser_perf-console-record-04.js": 6559, - "devtools/client/performance/test/browser_perf-console-record-05.js": 7694, - "devtools/client/performance/test/browser_perf-console-record-06.js": 6193, - "devtools/client/performance/test/browser_perf-console-record-07.js": 5022, - "devtools/client/performance/test/browser_perf-console-record-08.js": 8244, - "devtools/client/performance/test/browser_perf-console-record-09.js": 3267, - "devtools/client/performance/test/browser_perf-data-massaging-01.js": 5714, - "devtools/client/performance/test/browser_perf-data-samples.js": 4214, - "devtools/client/performance/test/browser_perf-details-01.js": 5107, - "devtools/client/performance/test/browser_perf-details-02.js": 4982, - "devtools/client/performance/test/browser_perf-details-03.js": 7917, - "devtools/client/performance/test/browser_perf-details-04.js": 7457, - "devtools/client/performance/test/browser_perf-details-05.js": 6441, - "devtools/client/performance/test/browser_perf-details-06.js": 6284, - "devtools/client/performance/test/browser_perf-details-07.js": 4967, - "devtools/client/performance/test/browser_perf-details-calltree-render.js": 7373, - "devtools/client/performance/test/browser_perf-details-flamegraph-render.js": 7079, - "devtools/client/performance/test/browser_perf-details-memory-calltree-render.js": 7306, - "devtools/client/performance/test/browser_perf-details-memory-flamegraph-render.js": 7016, - "devtools/client/performance/test/browser_perf-details-waterfall-render.js": 6486, - "devtools/client/performance/test/browser_perf-events-calltree.js": 4586, - "devtools/client/performance/test/browser_perf-front-profiler-02.js": 3293, - "devtools/client/performance/test/browser_perf-front-profiler-03.js": 4835, - "devtools/client/performance/test/browser_perf-front-profiler-04.js": 4725, - "devtools/client/performance/test/browser_perf-highlighted.js": 5287, - "devtools/client/performance/test/browser_perf-jit-view-01.js": 6934, - "devtools/client/performance/test/browser_perf-jit-view-02.js": 6069, - "devtools/client/performance/test/browser_perf-legacy-front-01.js": 6385, - "devtools/client/performance/test/browser_perf-legacy-front-02.js": 4189, - "devtools/client/performance/test/browser_perf-legacy-front-03.js": 4815, - "devtools/client/performance/test/browser_perf-legacy-front-04.js": 4751, - "devtools/client/performance/test/browser_perf-legacy-front-05.js": 5658, - "devtools/client/performance/test/browser_perf-legacy-front-06.js": 4346, - "devtools/client/performance/test/browser_perf-loading-01.js": 4100, - "devtools/client/performance/test/browser_perf-loading-02.js": 6159, - "devtools/client/performance/test/browser_perf-options-02.js": 4177, - "devtools/client/performance/test/browser_perf-options-allocations.js": 4746, - "devtools/client/performance/test/browser_perf-options-enable-framerate.js": 5054, - "devtools/client/performance/test/browser_perf-options-enable-memory-01.js": 6278, - "devtools/client/performance/test/browser_perf-options-enable-memory-02.js": 6307, - "devtools/client/performance/test/browser_perf-options-enable-optimizations.js": 6682, - "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-01.js": 5224, - "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-02.js": 5140, - "devtools/client/performance/test/browser_perf-options-invert-call-tree-01.js": 5127, - "devtools/client/performance/test/browser_perf-options-invert-call-tree-02.js": 4895, - "devtools/client/performance/test/browser_perf-options-invert-flame-graph-01.js": 5175, - "devtools/client/performance/test/browser_perf-options-invert-flame-graph-02.js": 5111, - "devtools/client/performance/test/browser_perf-options-profiler.js": 4538, - "devtools/client/performance/test/browser_perf-options-show-idle-blocks-01.js": 5171, - "devtools/client/performance/test/browser_perf-options-show-idle-blocks-02.js": 5110, - "devtools/client/performance/test/browser_perf-options-show-platform-data-01.js": 7857, - "devtools/client/performance/test/browser_perf-options-show-platform-data-02.js": 5732, - "devtools/client/performance/test/browser_perf-overview-render-01.js": 6622, - "devtools/client/performance/test/browser_perf-overview-render-02.js": 17065, - "devtools/client/performance/test/browser_perf-overview-render-03.js": 16375, - "devtools/client/performance/test/browser_perf-overview-render-04.js": 4775, - "devtools/client/performance/test/browser_perf-overview-selection-01.js": 5402, - "devtools/client/performance/test/browser_perf-overview-selection-02.js": 8407, - "devtools/client/performance/test/browser_perf-overview-selection-03.js": 5697, - "devtools/client/performance/test/browser_perf-overview-time-interval.js": 5383, - "devtools/client/performance/test/browser_perf-recording-model-01.js": 3967, - "devtools/client/performance/test/browser_perf-recording-selected-02.js": 3249, - "devtools/client/performance/test/browser_perf-recording-selected-03.js": 3398, - "devtools/client/performance/test/browser_perf-recording-selected-04.js": 4388, - "devtools/client/performance/test/browser_perf-refresh.js": 3955, - "devtools/client/performance/test/browser_perf-states.js": 5245, - "devtools/client/performance/test/browser_perf-theme-toggle-01.js": 8835, - "devtools/client/performance/test/browser_perf_recordings-io-01.js": 3358, - "devtools/client/performance/test/browser_profiler_tree-view-11.js": 4353, - "devtools/client/performance/test/browser_timeline-filters-02.js": 4161, - "devtools/client/performance/test/browser_timeline-filters.js": 6007, - "devtools/client/performance/test/browser_timeline-waterfall-background.js": 5631, - "devtools/client/performance/test/browser_timeline-waterfall-generic.js": 6463, - "devtools/client/projecteditor/test/browser_projecteditor_delete_file.js": 5010, - "devtools/client/projecteditor/test/browser_projecteditor_editing_01.js": 3803, - "devtools/client/projecteditor/test/browser_projecteditor_external_change.js": 4226, - "devtools/client/projecteditor/test/browser_projecteditor_rename_file.js": 10960, - "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js": 4194, - "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js": 3468, - "devtools/client/responsivedesign/test/browser_responsivecomputedview.js": 4803, - "devtools/client/responsivedesign/test/browser_responsiveruleview.js": 4356, - "devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js": 4487, - "devtools/client/scratchpad/test/browser_scratchpad_disable_view_menu_items.js": 6957, - "devtools/client/scratchpad/test/browser_scratchpad_restore.js": 4431, - "devtools/client/scratchpad/test/browser_scratchpad_unsaved.js": 3548, - "devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js": 3770, - "devtools/client/shadereditor/test/browser_se_editors-error-gutter.js": 3324, - "devtools/client/shared/test/browser_css_color.js": 3210, - "devtools/client/shared/test/browser_tableWidget_basic.js": 5684, - "devtools/client/shared/test/browser_telemetry_button_eyedropper.js": 4659, - "devtools/client/shared/test/browser_telemetry_button_paintflashing.js": 4289, - "devtools/client/shared/test/browser_telemetry_button_responsive.js": 3260, - "devtools/client/shared/test/browser_telemetry_button_scratchpad.js": 6509, - "devtools/client/shared/test/browser_telemetry_button_tilt.js": 4443, - "devtools/client/shared/test/browser_telemetry_sidebar.js": 7095, - "devtools/client/shared/test/browser_telemetry_toolbox.js": 7083, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_inspector.js": 4773, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js": 4055, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js": 3343, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_netmonitor.js": 3557, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_options.js": 3276, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_styleeditor.js": 3360, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js": 3549, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_webconsole.js": 3438, - "devtools/client/shared/test/browser_toolbar_basic.js": 3950, - "devtools/client/shared/test/browser_toolbar_webconsole_errors_count.js": 3634, - "devtools/client/sourceeditor/test/browser_codemirror.js": 4597, - "devtools/client/sourceeditor/test/browser_vimemacs.js": 35225, - "devtools/client/storage/test/browser_storage_basic.js": 10104, - "devtools/client/storage/test/browser_storage_dynamic_updates.js": 6616, - "devtools/client/storage/test/browser_storage_sidebar.js": 6947, - "devtools/client/storage/test/browser_storage_values.js": 5949, - "devtools/client/styleeditor/test/browser_styleeditor_autocomplete-disabled.js": 3960, - "devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js": 5172, - "devtools/client/styleeditor/test/browser_styleeditor_bug_740541_iframes.js": 3541, - "devtools/client/styleeditor/test/browser_styleeditor_cmd_edit.js": 4046, - "devtools/client/styleeditor/test/browser_styleeditor_fetch-from-cache.js": 3434, - "devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js": 4172, - "devtools/client/styleeditor/test/browser_styleeditor_loading.js": 3185, - "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js": 3861, - "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js": 3381, - "devtools/client/styleeditor/test/browser_styleeditor_missing_stylesheet.js": 3814, - "devtools/client/styleeditor/test/browser_styleeditor_navigate.js": 4238, - "devtools/client/styleeditor/test/browser_styleeditor_reload.js": 5118, - "devtools/client/styleeditor/test/browser_styleeditor_scroll.js": 3489, - "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_large.js": 3571, - "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js": 7289, - "devtools/client/styleeditor/test/browser_styleeditor_sourcemaps.js": 6423, - "devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js": 4142, - "devtools/client/styleeditor/test/browser_styleeditor_xul.js": 3377, - "devtools/client/styleinspector/test/browser_computedview_browser-styles.js": 6322, - "devtools/client/styleinspector/test/browser_computedview_cycle_color.js": 3470, - "devtools/client/styleinspector/test/browser_computedview_getNodeInfo.js": 3640, - "devtools/client/styleinspector/test/browser_computedview_keybindings_01.js": 3505, - "devtools/client/styleinspector/test/browser_computedview_keybindings_02.js": 4083, - "devtools/client/styleinspector/test/browser_computedview_matched-selectors-toggle.js": 3622, - "devtools/client/styleinspector/test/browser_computedview_matched-selectors_01.js": 3944, - "devtools/client/styleinspector/test/browser_computedview_matched-selectors_02.js": 3440, - "devtools/client/styleinspector/test/browser_computedview_media-queries.js": 3633, - "devtools/client/styleinspector/test/browser_computedview_no-results-placeholder.js": 4025, - "devtools/client/styleinspector/test/browser_computedview_original-source-link.js": 6130, - "devtools/client/styleinspector/test/browser_computedview_pseudo-element_01.js": 4567, - "devtools/client/styleinspector/test/browser_computedview_refresh-on-style-change_01.js": 3616, - "devtools/client/styleinspector/test/browser_computedview_search-filter.js": 5152, - "devtools/client/styleinspector/test/browser_computedview_search-filter_clear.js": 6340, - "devtools/client/styleinspector/test/browser_computedview_search-filter_context-menu.js": 3472, - "devtools/client/styleinspector/test/browser_computedview_search-filter_escape-keypress.js": 6345, - "devtools/client/styleinspector/test/browser_computedview_select-and-copy-styles.js": 3773, - "devtools/client/styleinspector/test/browser_computedview_style-editor-link.js": 6267, - "devtools/client/styleinspector/test/browser_ruleview_add-property-and-reselect.js": 4069, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_01.js": 3337, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_02.js": 3209, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_03.js": 3228, - "devtools/client/styleinspector/test/browser_ruleview_add-property-svg.js": 3202, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_01.js": 11785, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_02.js": 3300, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_03.js": 3645, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_04.js": 3323, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_pseudo_class.js": 5311, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-multiple-changes.js": 4210, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-revert-on-ESC.js": 3460, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-swatch-displayed.js": 3341, - "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_01.js": 7334, - "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_02.js": 6402, - "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_01.js": 5680, - "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_02.js": 6634, - "devtools/client/styleinspector/test/browser_ruleview_completion-popup-hidden-after-navigation.js": 3730, - "devtools/client/styleinspector/test/browser_ruleview_content_01.js": 3283, - "devtools/client/styleinspector/test/browser_ruleview_content_02.js": 3195, - "devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-01.js": 3240, - "devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js": 5574, - "devtools/client/styleinspector/test/browser_ruleview_copy_styles.js": 3976, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-appears-on-swatch-click.js": 3597, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-commit-on-ENTER.js": 3276, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-revert-on-ESC.js": 3391, - "devtools/client/styleinspector/test/browser_ruleview_custom.js": 3730, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-cancel.js": 3179, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-commit.js": 3547, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-computed.js": 3395, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-increments.js": 5384, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-order.js": 3465, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_01.js": 3188, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_02.js": 3307, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_03.js": 3309, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_01.js": 4623, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_02.js": 3990, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_03.js": 3417, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_04.js": 3527, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_05.js": 3470, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_06.js": 3389, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_07.js": 3339, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector-commit.js": 3957, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_01.js": 3368, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_02.js": 3860, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_04.js": 3524, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_05.js": 3599, - "devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_01.js": 4278, - "devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_02.js": 3812, - "devtools/client/styleinspector/test/browser_ruleview_eyedropper.js": 4302, - "devtools/client/styleinspector/test/browser_ruleview_filtereditor-appears-on-swatch-click.js": 3305, - "devtools/client/styleinspector/test/browser_ruleview_filtereditor-commit-on-ENTER.js": 3415, - "devtools/client/styleinspector/test/browser_ruleview_inherit.js": 3684, - "devtools/client/styleinspector/test/browser_ruleview_keybindings.js": 3205, - "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_01.js": 4708, - "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_02.js": 4470, - "devtools/client/styleinspector/test/browser_ruleview_livepreview.js": 3831, - "devtools/client/styleinspector/test/browser_ruleview_mark_overridden_02.js": 3201, - "devtools/client/styleinspector/test/browser_ruleview_mark_overridden_05.js": 3243, - "devtools/client/styleinspector/test/browser_ruleview_mathml-element.js": 3701, - "devtools/client/styleinspector/test/browser_ruleview_media-queries.js": 3236, - "devtools/client/styleinspector/test/browser_ruleview_multiple-properties-duplicates.js": 3372, - "devtools/client/styleinspector/test/browser_ruleview_multiple-properties-unfinished_01.js": 3401, - "devtools/client/styleinspector/test/browser_ruleview_multiple-properties-unfinished_02.js": 3289, - "devtools/client/styleinspector/test/browser_ruleview_multiple_properties_01.js": 3229, - "devtools/client/styleinspector/test/browser_ruleview_multiple_properties_02.js": 3204, - "devtools/client/styleinspector/test/browser_ruleview_original-source-link.js": 4831, - "devtools/client/styleinspector/test/browser_ruleview_override.js": 4901, - "devtools/client/styleinspector/test/browser_ruleview_pseudo-element_01.js": 5458, - "devtools/client/styleinspector/test/browser_ruleview_pseudo-element_02.js": 3745, - "devtools/client/styleinspector/test/browser_ruleview_pseudo_lock_options.js": 4545, - "devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_01.js": 3406, - "devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js": 3868, - "devtools/client/styleinspector/test/browser_ruleview_refresh-on-style-change.js": 3173, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_01.js": 3597, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_02.js": 3313, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_03.js": 3291, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_04.js": 3316, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_05.js": 3256, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_06.js": 3416, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_07.js": 3263, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_08.js": 3386, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_clear.js": 3280, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_expander.js": 3330, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-overridden-property.js": 3290, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_01.js": 3538, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_02.js": 3503, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_03.js": 3234, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_04.js": 3865, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_05.js": 3395, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_06.js": 3384, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_07.js": 3306, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_08.js": 3300, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_09.js": 3258, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_10.js": 3471, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_11.js": 3234, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_12.js": 3628, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_13.js": 3553, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_14.js": 3365, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_15.js": 3424, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_16.js": 3321, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_clear.js": 3307, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_escape-keypress.js": 3277, - "devtools/client/styleinspector/test/browser_ruleview_select-and-copy-styles.js": 3330, - "devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_02.js": 3250, - "devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_03.js": 3540, - "devtools/client/styleinspector/test/browser_ruleview_selector_highlight.js": 4739, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter-computed-list_01.js": 4957, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_01.js": 4880, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_02.js": 3689, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_03.js": 3341, - "devtools/client/styleinspector/test/browser_ruleview_style-editor-link.js": 5544, - "devtools/client/styleinspector/test/browser_ruleview_urls-clickable.js": 4611, - "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles-uneditable.js": 3608, - "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles.js": 12999, - "devtools/client/styleinspector/test/browser_ruleview_user-property-reset.js": 4872, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_01.js": 10071, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_02.js": 3563, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-data-uri.js": 4826, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js": 5173, - "devtools/client/styleinspector/test/browser_styleinspector_csslogic-content-stylesheets.js": 6125, - "devtools/client/styleinspector/test/browser_styleinspector_refresh_when_active.js": 4256, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-background-image.js": 3947, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-closes-on-new-selection.js": 3738, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-longhand-fontfamily.js": 3828, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-multiple-background-images.js": 3622, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-shorthand-fontfamily.js": 3171, - "devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-01.js": 3429, - "devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-02.js": 3628, - "devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-03.js": 3199, - "devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-04.js": 3324, - "devtools/client/timeline/test/browser_timeline_overview-initial-selection-01.js": 3274, - "devtools/client/timeline/test/browser_timeline_overview-update.js": 3363, - "devtools/client/timeline/test/browser_timeline_recording-without-memory.js": 3666, - "devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js": 4611, - "devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js": 4558, - "devtools/client/webaudioeditor/test/browser_wa_graph-click.js": 3483, - "devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js": 3702, - "devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js": 3203, - "devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js": 3879, - "devtools/client/webaudioeditor/test/browser_wa_inspector-width.js": 4077, - "devtools/client/webaudioeditor/test/browser_wa_navigate.js": 3626, - "devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js": 3447, - "devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js": 5327, - "devtools/client/webaudioeditor/test/browser_wa_reset-03.js": 3849, - "devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js": 3707, - "devtools/client/webconsole/test/browser_bug_862916_console_dir_and_filter_off.js": 5470, - "devtools/client/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js": 4853, - "devtools/client/webconsole/test/browser_console_history_persist.js": 6497, - "devtools/client/webconsole/test/browser_console_iframe_messages.js": 3719, - "devtools/client/webconsole/test/browser_console_native_getters.js": 5641, - "devtools/client/webconsole/test/browser_console_optimized_out_vars.js": 3968, - "devtools/client/webconsole/test/browser_console_private_browsing.js": 5279, - "devtools/client/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js": 4810, - "devtools/client/webconsole/test/browser_console_variables_view_highlighter.js": 5594, - "devtools/client/webconsole/test/browser_console_variables_view_while_debugging.js": 3711, - "devtools/client/webconsole/test/browser_console_variables_view_while_debugging_and_inspecting.js": 5181, - "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe.js": 4323, - "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe2.js": 3476, - "devtools/client/webconsole/test/browser_jsterm_inspect.js": 7231, - "devtools/client/webconsole/test/browser_warn_user_about_replaced_api.js": 3560, - "devtools/client/webconsole/test/browser_webconsole_autocomplete_in_debugger_stackframe.js": 4267, - "devtools/client/webconsole/test/browser_webconsole_bug_593003_iframe_wrong_hud.js": 3706, - "devtools/client/webconsole/test/browser_webconsole_bug_595350_multiple_windows_and_tabs.js": 4885, - "devtools/client/webconsole/test/browser_webconsole_bug_595934_message_categories.js": 6058, - "devtools/client/webconsole/test/browser_webconsole_bug_597103_deactivateHUDForContext_unfocused_window.js": 4874, - "devtools/client/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js": 3478, - "devtools/client/webconsole/test/browser_webconsole_bug_597756_reopen_closed_tab.js": 3748, - "devtools/client/webconsole/test/browser_webconsole_bug_602572_log_bodies_checkbox.js": 6123, - "devtools/client/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js": 4114, - "devtools/client/webconsole/test/browser_webconsole_bug_658368_time_methods.js": 3647, - "devtools/client/webconsole/test/browser_webconsole_bug_659907_console_dir.js": 5328, - "devtools/client/webconsole/test/browser_webconsole_bug_752559_ineffective_iframe_sandbox_warning.js": 9285, - "devtools/client/webconsole/test/browser_webconsole_bug_762593_insecure_passwords_about_blank_web_console_warning.js": 3911, - "devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js": 3361, - "devtools/client/webconsole/test/browser_webconsole_cached_autocomplete.js": 4756, - "devtools/client/webconsole/test/browser_webconsole_certificate_messages.js": 3530, - "devtools/client/webconsole/test/browser_webconsole_clickable_urls.js": 7432, - "devtools/client/webconsole/test/browser_webconsole_closure_inspection.js": 6972, - "devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js": 4494, - "devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js": 3642, - "devtools/client/webconsole/test/browser_webconsole_inspect-parsed-documents.js": 3387, - "devtools/client/webconsole/test/browser_webconsole_jsterm.js": 3301, - "devtools/client/webconsole/test/browser_webconsole_network_panel.js": 3790, - "devtools/client/webconsole/test/browser_webconsole_output_01.js": 3805, - "devtools/client/webconsole/test/browser_webconsole_output_02.js": 7481, - "devtools/client/webconsole/test/browser_webconsole_output_03.js": 6231, - "devtools/client/webconsole/test/browser_webconsole_output_04.js": 5284, - "devtools/client/webconsole/test/browser_webconsole_output_05.js": 5314, - "devtools/client/webconsole/test/browser_webconsole_output_06.js": 6424, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js": 4538, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_02.js": 5507, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_03.js": 3443, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_04.js": 4847, - "devtools/client/webconsole/test/browser_webconsole_split.js": 8445, - "devtools/client/webconsole/test/browser_webconsole_split_escape_key.js": 3609, - "devtools/client/webconsole/test/browser_webconsole_split_persist.js": 7189, - "devtools/client/webide/test/browser_tabs.js": 5134, - "devtools/client/webide/test/sidebars/browser_tabs.js": 5627, - "devtools/server/tests/browser/browser_animation_actors_05.js": 3304, - "devtools/server/tests/browser/browser_markers-cycle-collection.js": 6946, - "devtools/server/tests/browser/browser_perf-samples-01.js": 3364, - "devtools/server/tests/browser/browser_storage_dynamic_windows.js": 5281, - "devtools/server/tests/browser/browser_storage_listings.js": 4344 + "devtools/client/aboutdebugging/test/browser_addons_debug_bootstrapped.js": 18612, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension.js": 17533, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_inspector.js": 22229, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_nobg.js": 19392, + "devtools/client/aboutdebugging/test/browser_addons_debug_webextension_popup.js": 18519, + "devtools/client/aboutdebugging/test/browser_addons_debugging_initial_state.js": 10705, + "devtools/client/aboutdebugging/test/browser_addons_reload.js": 8875, + "devtools/client/aboutdebugging/test/browser_service_workers_not_compatible.js": 7688, + "devtools/client/aboutdebugging/test/browser_service_workers_push.js": 23344, + "devtools/client/aboutdebugging/test/browser_service_workers_push_service.js": 19964, + "devtools/client/aboutdebugging/test/browser_service_workers_status.js": 5600, + "devtools/client/animationinspector/test/browser_animation_animated_properties_displayed.js": 11959, + "devtools/client/animationinspector/test/browser_animation_click_selects_animation.js": 10951, + "devtools/client/animationinspector/test/browser_animation_controller_exposes_document_currentTime.js": 6183, + "devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js": 11530, + "devtools/client/animationinspector/test/browser_animation_keyframe_click_to_set_time.js": 7369, + "devtools/client/animationinspector/test/browser_animation_keyframe_markers.js": 7210, + "devtools/client/animationinspector/test/browser_animation_mutations_with_same_names.js": 6443, + "devtools/client/animationinspector/test/browser_animation_participate_in_inspector_update.js": 11743, + "devtools/client/animationinspector/test/browser_animation_playerFronts_are_refreshed.js": 12343, + "devtools/client/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js": 6718, + "devtools/client/animationinspector/test/browser_animation_playerWidgets_target_nodes.js": 11913, + "devtools/client/animationinspector/test/browser_animation_pseudo_elements.js": 12957, + "devtools/client/animationinspector/test/browser_animation_refresh_on_added_animation.js": 12186, + "devtools/client/animationinspector/test/browser_animation_refresh_on_removed_animation.js": 8374, + "devtools/client/animationinspector/test/browser_animation_refresh_when_active.js": 14499, + "devtools/client/animationinspector/test/browser_animation_running_on_compositor.js": 12264, + "devtools/client/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js": 11259, + "devtools/client/animationinspector/test/browser_animation_shows_player_on_valid_node.js": 11288, + "devtools/client/animationinspector/test/browser_animation_spacebar_toggles_animations.js": 11791, + "devtools/client/animationinspector/test/browser_animation_spacebar_toggles_node_animations.js": 14960, + "devtools/client/animationinspector/test/browser_animation_target_highlight_select.js": 13562, + "devtools/client/animationinspector/test/browser_animation_target_highlighter_lock.js": 11829, + "devtools/client/animationinspector/test/browser_animation_timeline_currentTime.js": 13059, + "devtools/client/animationinspector/test/browser_animation_timeline_header.js": 10475, + "devtools/client/animationinspector/test/browser_animation_timeline_iterationStart.js": 6218, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button.js": 17750, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_01.js": 16257, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_02.js": 13674, + "devtools/client/animationinspector/test/browser_animation_timeline_pause_button_03.js": 19248, + "devtools/client/animationinspector/test/browser_animation_timeline_rate_selector.js": 17563, + "devtools/client/animationinspector/test/browser_animation_timeline_rewind_button.js": 17273, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_exists.js": 10283, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_movable.js": 10268, + "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_moves.js": 12572, + "devtools/client/animationinspector/test/browser_animation_timeline_setCurrentTime.js": 10011, + "devtools/client/animationinspector/test/browser_animation_timeline_short_duration.js": 6390, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_delay.js": 12474, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_endDelay.js": 7912, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_iterations.js": 12333, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_name_label.js": 11086, + "devtools/client/animationinspector/test/browser_animation_timeline_shows_time_info.js": 10700, + "devtools/client/animationinspector/test/browser_animation_timeline_takes_rate_into_account.js": 5973, + "devtools/client/animationinspector/test/browser_animation_timeline_ui.js": 10733, + "devtools/client/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js": 14549, + "devtools/client/animationinspector/test/browser_animation_toggle_button_toggles_animations.js": 11848, + "devtools/client/animationinspector/test/browser_animation_toolbar_exists.js": 11156, + "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js": 12667, + "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js": 6768, + "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js": 6171, + "devtools/client/commandline/test/browser_cmd_addon.js": 6375, + "devtools/client/commandline/test/browser_cmd_commands.js": 6019, + "devtools/client/commandline/test/browser_cmd_csscoverage_startstop.js": 7542, + "devtools/client/commandline/test/browser_cmd_highlight_04.js": 14801, + "devtools/client/commandline/test/browser_cmd_screenshot.js": 17808, + "devtools/client/commandline/test/browser_gcli_exec.js": 5572, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breaking-from-console.js": 9602, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breaking.js": 13927, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints-cond.js": 9372, + "devtools/client/debugger/new/test/mochitest/browser_dbg-breakpoints.js": 15856, + "devtools/client/debugger/new/test/mochitest/browser_dbg-call-stack.js": 14046, + "devtools/client/debugger/new/test/mochitest/browser_dbg-console.js": 5371, + "devtools/client/debugger/new/test/mochitest/browser_dbg-debugger-buttons.js": 12733, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-gutter.js": 10029, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-highlight.js": 10077, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-mode.js": 7228, + "devtools/client/debugger/new/test/mochitest/browser_dbg-editor-select.js": 16329, + "devtools/client/debugger/new/test/mochitest/browser_dbg-iframes.js": 10012, + "devtools/client/debugger/new/test/mochitest/browser_dbg-navigation.js": 15149, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pause-exceptions.js": 9425, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print-paused.js": 8647, + "devtools/client/debugger/new/test/mochitest/browser_dbg-pretty-print.js": 11541, + "devtools/client/debugger/new/test/mochitest/browser_dbg-scopes.js": 15957, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps-bogus.js": 6574, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sourcemaps.js": 16114, + "devtools/client/debugger/new/test/mochitest/browser_dbg-sources.js": 5893, + "devtools/client/debugger/new/test/mochitest/browser_dbg_keyboard-shortcuts.js": 11206, + "devtools/client/debugger/test/mochitest/browser_dbg_aaa_run_first_leaktest.js": 6987, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-panels.js": 5758, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-sources.js": 6091, + "devtools/client/debugger/test/mochitest/browser_dbg_addon-workers-dbg-enabled.js": 6671, + "devtools/client/debugger/test/mochitest/browser_dbg_auto-pretty-print-01.js": 5552, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-02.js": 6803, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-dom-06.js": 6478, + "devtools/client/debugger/test/mochitest/browser_dbg_break-on-next-console.js": 6322, + "devtools/client/debugger/test/mochitest/browser_dbg_break-unselected.js": 5501, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-actual-location2.js": 5548, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-break-on-last-line-of-script-on-reload.js": 6747, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-condition-thrown-message.js": 5719, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-contextmenu.js": 12744, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-disabled-reload.js": 9093, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-other-tabs.js": 7022, + "devtools/client/debugger/test/mochitest/browser_dbg_breakpoints-pane.js": 5745, + "devtools/client/debugger/test/mochitest/browser_dbg_bug-896139.js": 5570, + "devtools/client/debugger/test/mochitest/browser_dbg_closure-inspection.js": 9998, + "devtools/client/debugger/test/mochitest/browser_dbg_cmd-blackbox.js": 6424, + "devtools/client/debugger/test/mochitest/browser_dbg_cmd-break.js": 5927, + "devtools/client/debugger/test/mochitest/browser_dbg_cmd-dbg.js": 6698, + "devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-01.js": 11177, + "devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-02.js": 5857, + "devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-03.js": 5382, + "devtools/client/debugger/test/mochitest/browser_dbg_conditional-breakpoints-05.js": 6679, + "devtools/client/debugger/test/mochitest/browser_dbg_console-eval.js": 5528, + "devtools/client/debugger/test/mochitest/browser_dbg_console-named-eval.js": 5664, + "devtools/client/debugger/test/mochitest/browser_dbg_host-layout.js": 21821, + "devtools/client/debugger/test/mochitest/browser_dbg_interrupts.js": 5360, + "devtools/client/debugger/test/mochitest/browser_dbg_location-changes-01-simple.js": 5464, + "devtools/client/debugger/test/mochitest/browser_dbg_location-changes-03-new.js": 5432, + "devtools/client/debugger/test/mochitest/browser_dbg_location-changes-04-breakpoint.js": 7180, + "devtools/client/debugger/test/mochitest/browser_dbg_on-pause-highlight.js": 6003, + "devtools/client/debugger/test/mochitest/browser_dbg_pause-exceptions-01.js": 5543, + "devtools/client/debugger/test/mochitest/browser_dbg_pause-exceptions-02.js": 5862, + "devtools/client/debugger/test/mochitest/browser_dbg_pause-warning.js": 8198, + "devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-11.js": 5813, + "devtools/client/debugger/test/mochitest/browser_dbg_pretty-print-on-paused.js": 5456, + "devtools/client/debugger/test/mochitest/browser_dbg_reload-same-script.js": 6892, + "devtools/client/debugger/test/mochitest/browser_dbg_scripts-switching-01.js": 5362, + "devtools/client/debugger/test/mochitest/browser_dbg_scripts-switching-02.js": 5428, + "devtools/client/debugger/test/mochitest/browser_dbg_search-basic-01.js": 7125, + "devtools/client/debugger/test/mochitest/browser_dbg_search-basic-02.js": 6874, + "devtools/client/debugger/test/mochitest/browser_dbg_search-basic-03.js": 5752, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-01.js": 6015, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-02.js": 5529, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-03.js": 5657, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-05.js": 6320, + "devtools/client/debugger/test/mochitest/browser_dbg_search-global-06.js": 7341, + "devtools/client/debugger/test/mochitest/browser_dbg_search-popup-jank.js": 5417, + "devtools/client/debugger/test/mochitest/browser_dbg_search-sources-01.js": 5731, + "devtools/client/debugger/test/mochitest/browser_dbg_search-sources-02.js": 5805, + "devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-01.js": 10666, + "devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-02.js": 6061, + "devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-03.js": 5636, + "devtools/client/debugger/test/mochitest/browser_dbg_server-conditional-bp-05.js": 6784, + "devtools/client/debugger/test/mochitest/browser_dbg_source-maps-02.js": 6006, + "devtools/client/debugger/test/mochitest/browser_dbg_source-maps-04.js": 5906, + "devtools/client/debugger/test/mochitest/browser_dbg_sources-webext-contentscript.js": 5963, + "devtools/client/debugger/test/mochitest/browser_dbg_split-console-keypress.js": 10419, + "devtools/client/debugger/test/mochitest/browser_dbg_stack-03.js": 11845, + "devtools/client/debugger/test/mochitest/browser_dbg_stack-07.js": 5966, + "devtools/client/debugger/test/mochitest/browser_dbg_step-out.js": 5627, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-01.js": 15720, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-getset-02.js": 5984, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-value.js": 9062, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-edit-watch.js": 7141, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-01.js": 13366, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-02.js": 13948, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-03.js": 10745, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-04.js": 9780, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-filter-05.js": 10108, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-01.js": 8600, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-02.js": 5769, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-parameters-03.js": 12588, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-frame-with.js": 5620, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-large-array-buffer.js": 16856, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-map-set.js": 6569, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-override-01.js": 9563, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-01.js": 7260, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-02.js": 6038, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-03.js": 5318, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-06.js": 5339, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-07.js": 7060, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-08.js": 5442, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-09.js": 5757, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-10.js": 5924, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-11.js": 6912, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-12.js": 6792, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-13.js": 9668, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-15.js": 6242, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-16.js": 13811, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-popup-17.js": 6049, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-01.js": 25497, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-02.js": 31645, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-reexpand-03.js": 6679, + "devtools/client/debugger/test/mochitest/browser_dbg_variables-view-webidl.js": 12245, + "devtools/client/debugger/test/mochitest/browser_dbg_watch-expressions-02.js": 11093, + "devtools/client/debugger/test/mochitest/browser_dbg_worker-console-02.js": 6032, + "devtools/client/debugger/test/mochitest/browser_dbg_worker-console-03.js": 5968, + "devtools/client/debugger/test/mochitest/browser_dbg_worker-console.js": 11622, + "devtools/client/debugger/test/mochitest/browser_dbg_worker-source-map.js": 8070, + "devtools/client/dom/test/browser_dom_array.js": 16886, + "devtools/client/dom/test/browser_dom_basic.js": 13447, + "devtools/client/dom/test/browser_dom_refresh.js": 16195, + "devtools/client/fontinspector/test/browser_fontinspector.js": 7848, + "devtools/client/framework/test/browser_browser_toolbox.js": 26738, + "devtools/client/framework/test/browser_browser_toolbox_debugger.js": 23732, + "devtools/client/framework/test/browser_keybindings_01.js": 10561, + "devtools/client/framework/test/browser_keybindings_02.js": 6178, + "devtools/client/framework/test/browser_new_activation_workflow.js": 9916, + "devtools/client/framework/test/browser_toolbox_getpanelwhenready.js": 5462, + "devtools/client/framework/test/browser_toolbox_highlight.js": 6103, + "devtools/client/framework/test/browser_toolbox_hosts.js": 16113, + "devtools/client/framework/test/browser_toolbox_hosts_size.js": 11373, + "devtools/client/framework/test/browser_toolbox_options.js": 6598, + "devtools/client/framework/test/browser_toolbox_options_disable_buttons.js": 8011, + "devtools/client/framework/test/browser_toolbox_options_disable_cache-01.js": 11970, + "devtools/client/framework/test/browser_toolbox_options_disable_cache-02.js": 14987, + "devtools/client/framework/test/browser_toolbox_options_disable_js.js": 5538, + "devtools/client/framework/test/browser_toolbox_options_enable_serviceworkers_testing.js": 5364, + "devtools/client/framework/test/browser_toolbox_select_event.js": 28851, + "devtools/client/framework/test/browser_toolbox_selected_tool_unavailable.js": 5915, + "devtools/client/framework/test/browser_toolbox_split_console.js": 5537, + "devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js": 18153, + "devtools/client/framework/test/browser_toolbox_target.js": 5461, + "devtools/client/framework/test/browser_toolbox_textbox_context_menu.js": 5858, + "devtools/client/framework/test/browser_toolbox_toggle.js": 14440, + "devtools/client/framework/test/browser_toolbox_tool_ready.js": 25677, + "devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js": 18129, + "devtools/client/framework/test/browser_toolbox_transport_events.js": 6001, + "devtools/client/framework/test/browser_toolbox_view_source_01.js": 6079, + "devtools/client/framework/test/browser_toolbox_view_source_03.js": 6667, + "devtools/client/framework/test/browser_toolbox_view_source_04.js": 7228, + "devtools/client/framework/test/browser_toolbox_window_reload_target.js": 31308, + "devtools/client/framework/test/browser_toolbox_window_shortcuts.js": 13139, + "devtools/client/framework/test/browser_toolbox_window_title_changes.js": 14483, + "devtools/client/framework/test/browser_toolbox_window_title_frame_select.js": 9950, + "devtools/client/inspector/components/test/browser_boxmodel.js": 10398, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel.js": 14314, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_bluronclick.js": 6991, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_border.js": 8074, + "devtools/client/inspector/components/test/browser_boxmodel_editablemodel_stylerules.js": 11155, + "devtools/client/inspector/components/test/browser_boxmodel_guides.js": 6566, + "devtools/client/inspector/components/test/browser_boxmodel_rotate-labels-on-sides.js": 6347, + "devtools/client/inspector/components/test/browser_boxmodel_sync.js": 7129, + "devtools/client/inspector/components/test/browser_boxmodel_tooltips.js": 7454, + "devtools/client/inspector/components/test/browser_boxmodel_update-after-navigation.js": 13474, + "devtools/client/inspector/components/test/browser_boxmodel_update-after-reload.js": 10062, + "devtools/client/inspector/computed/test/browser_computed_browser-styles.js": 13206, + "devtools/client/inspector/computed/test/browser_computed_cycle_color.js": 6942, + "devtools/client/inspector/computed/test/browser_computed_getNodeInfo.js": 7597, + "devtools/client/inspector/computed/test/browser_computed_keybindings_01.js": 7463, + "devtools/client/inspector/computed/test/browser_computed_keybindings_02.js": 8115, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors-toggle.js": 7442, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors_01.js": 8133, + "devtools/client/inspector/computed/test/browser_computed_matched-selectors_02.js": 6673, + "devtools/client/inspector/computed/test/browser_computed_media-queries.js": 7312, + "devtools/client/inspector/computed/test/browser_computed_no-results-placeholder.js": 7674, + "devtools/client/inspector/computed/test/browser_computed_original-source-link.js": 10752, + "devtools/client/inspector/computed/test/browser_computed_pseudo-element_01.js": 9741, + "devtools/client/inspector/computed/test/browser_computed_refresh-on-style-change_01.js": 7220, + "devtools/client/inspector/computed/test/browser_computed_search-filter.js": 13362, + "devtools/client/inspector/computed/test/browser_computed_search-filter_clear.js": 11315, + "devtools/client/inspector/computed/test/browser_computed_search-filter_escape-keypress.js": 14995, + "devtools/client/inspector/computed/test/browser_computed_search-filter_noproperties.js": 8575, + "devtools/client/inspector/computed/test/browser_computed_style-editor-link.js": 12739, + "devtools/client/inspector/fonts/test/browser_fontinspector.js": 9819, + "devtools/client/inspector/fonts/test/browser_fontinspector_edit-previews-show-all.js": 5633, + "devtools/client/inspector/fonts/test/browser_fontinspector_edit-previews.js": 6513, + "devtools/client/inspector/fonts/test/browser_fontinspector_theme-change.js": 6766, + "devtools/client/inspector/layout/test/browser_layout_editablemodel.js": 5394, + "devtools/client/inspector/markup/test/browser_markup_accessibility_focus_blur.js": 10392, + "devtools/client/inspector/markup/test/browser_markup_accessibility_navigation.js": 9094, + "devtools/client/inspector/markup/test/browser_markup_accessibility_navigation_after_edit.js": 5962, + "devtools/client/inspector/markup/test/browser_markup_accessibility_semantics.js": 6530, + "devtools/client/inspector/markup/test/browser_markup_anonymous_01.js": 7336, + "devtools/client/inspector/markup/test/browser_markup_anonymous_02.js": 14787, + "devtools/client/inspector/markup/test/browser_markup_anonymous_03.js": 7334, + "devtools/client/inspector/markup/test/browser_markup_anonymous_04.js": 7535, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_01.js": 10997, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_02.js": 13827, + "devtools/client/inspector/markup/test/browser_markup_css_completion_style_attribute_03.js": 9603, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_autoscroll_01.js": 12853, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_autoscroll_02.js": 13364, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_distance.js": 6444, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_dragRootNode.js": 6793, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_draggable.js": 6699, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_escapeKeyPress.js": 6181, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_invalidNodes.js": 6961, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_reorder.js": 11460, + "devtools/client/inspector/markup/test/browser_markup_dragdrop_tooltip.js": 5998, + "devtools/client/inspector/markup/test/browser_markup_events-windowed-host.js": 14270, + "devtools/client/inspector/markup/test/browser_markup_events1.js": 16053, + "devtools/client/inspector/markup/test/browser_markup_events2.js": 17491, + "devtools/client/inspector/markup/test/browser_markup_events3.js": 18380, + "devtools/client/inspector/markup/test/browser_markup_events_01.js": 13115, + "devtools/client/inspector/markup/test/browser_markup_events_02.js": 14043, + "devtools/client/inspector/markup/test/browser_markup_events_03.js": 11945, + "devtools/client/inspector/markup/test/browser_markup_events_04.js": 14957, + "devtools/client/inspector/markup/test/browser_markup_events_form.js": 8179, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.0.js": 12207, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.1.js": 13953, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.11.1.js": 14551, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.2.js": 12892, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.3.js": 17441, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.4.js": 16970, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.6.js": 19743, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_1.7.js": 19626, + "devtools/client/inspector/markup/test/browser_markup_events_jquery_2.1.1.js": 15770, + "devtools/client/inspector/markup/test/browser_markup_html_edit_01.js": 21558, + "devtools/client/inspector/markup/test/browser_markup_html_edit_02.js": 15370, + "devtools/client/inspector/markup/test/browser_markup_html_edit_03.js": 12597, + "devtools/client/inspector/markup/test/browser_markup_image_tooltip.js": 6530, + "devtools/client/inspector/markup/test/browser_markup_image_tooltip_mutations.js": 5914, + "devtools/client/inspector/markup/test/browser_markup_keybindings_01.js": 6150, + "devtools/client/inspector/markup/test/browser_markup_keybindings_02.js": 6827, + "devtools/client/inspector/markup/test/browser_markup_keybindings_03.js": 8013, + "devtools/client/inspector/markup/test/browser_markup_keybindings_04.js": 9314, + "devtools/client/inspector/markup/test/browser_markup_keybindings_delete_attributes.js": 6119, + "devtools/client/inspector/markup/test/browser_markup_keybindings_scrolltonode.js": 6515, + "devtools/client/inspector/markup/test/browser_markup_links_01.js": 11198, + "devtools/client/inspector/markup/test/browser_markup_links_02.js": 7127, + "devtools/client/inspector/markup/test/browser_markup_links_03.js": 6434, + "devtools/client/inspector/markup/test/browser_markup_links_05.js": 9583, + "devtools/client/inspector/markup/test/browser_markup_links_06.js": 13375, + "devtools/client/inspector/markup/test/browser_markup_links_07.js": 9793, + "devtools/client/inspector/markup/test/browser_markup_load_01.js": 9489, + "devtools/client/inspector/markup/test/browser_markup_mutation_01.js": 10507, + "devtools/client/inspector/markup/test/browser_markup_mutation_02.js": 7097, + "devtools/client/inspector/markup/test/browser_markup_navigation.js": 16575, + "devtools/client/inspector/markup/test/browser_markup_node_names.js": 5423, + "devtools/client/inspector/markup/test/browser_markup_node_not_displayed_01.js": 6105, + "devtools/client/inspector/markup/test/browser_markup_node_not_displayed_02.js": 8254, + "devtools/client/inspector/markup/test/browser_markup_pagesize_01.js": 8273, + "devtools/client/inspector/markup/test/browser_markup_pagesize_02.js": 9954, + "devtools/client/inspector/markup/test/browser_markup_remove_xul_attributes.js": 5632, + "devtools/client/inspector/markup/test/browser_markup_search_01.js": 10255, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_01.js": 11271, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_02.js": 6017, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_03.js": 6748, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_04-backspace.js": 16152, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_04-delete.js": 15457, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_05.js": 8710, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_06.js": 9433, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_07.js": 9627, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_08.js": 9687, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_09.js": 7009, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_10.js": 6233, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_11.js": 5802, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_12.js": 6516, + "devtools/client/inspector/markup/test/browser_markup_tag_edit_13-other.js": 5554, + "devtools/client/inspector/markup/test/browser_markup_textcontent_display.js": 6691, + "devtools/client/inspector/markup/test/browser_markup_textcontent_edit_01.js": 10957, + "devtools/client/inspector/markup/test/browser_markup_textcontent_edit_02.js": 8145, + "devtools/client/inspector/markup/test/browser_markup_toggle_01.js": 7644, + "devtools/client/inspector/markup/test/browser_markup_toggle_02.js": 7827, + "devtools/client/inspector/markup/test/browser_markup_toggle_03.js": 7489, + "devtools/client/inspector/markup/test/browser_markup_update-on-navigtion.js": 7406, + "devtools/client/inspector/markup/test/browser_markup_void_elements_html.js": 5880, + "devtools/client/inspector/markup/test/browser_markup_void_elements_xhtml.js": 5820, + "devtools/client/inspector/markup/test/browser_markup_whitespace.js": 6865, + "devtools/client/inspector/rules/test/browser_rules_add-property-and-reselect.js": 11284, + "devtools/client/inspector/rules/test/browser_rules_add-property-cancel_02.js": 6401, + "devtools/client/inspector/rules/test/browser_rules_add-property-cancel_03.js": 6161, + "devtools/client/inspector/rules/test/browser_rules_add-property-commented.js": 6214, + "devtools/client/inspector/rules/test/browser_rules_add-property-svg.js": 5942, + "devtools/client/inspector/rules/test/browser_rules_add-property_01.js": 6957, + "devtools/client/inspector/rules/test/browser_rules_add-property_02.js": 6494, + "devtools/client/inspector/rules/test/browser_rules_add-rule-and-property.js": 5929, + "devtools/client/inspector/rules/test/browser_rules_add-rule-button-state.js": 6145, + "devtools/client/inspector/rules/test/browser_rules_add-rule-edit-selector.js": 7112, + "devtools/client/inspector/rules/test/browser_rules_add-rule-iframes.js": 9178, + "devtools/client/inspector/rules/test/browser_rules_add-rule-namespace-elements.js": 8030, + "devtools/client/inspector/rules/test/browser_rules_add-rule-pseudo-class.js": 12486, + "devtools/client/inspector/rules/test/browser_rules_add-rule-then-property-edit-selector.js": 6960, + "devtools/client/inspector/rules/test/browser_rules_add-rule-with-menu.js": 5957, + "devtools/client/inspector/rules/test/browser_rules_add-rule.js": 10906, + "devtools/client/inspector/rules/test/browser_rules_authored_color.js": 9020, + "devtools/client/inspector/rules/test/browser_rules_blob_stylesheet.js": 5744, + "devtools/client/inspector/rules/test/browser_rules_colorUnit.js": 13117, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-and-image-tooltip_01.js": 5319, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-and-image-tooltip_02.js": 5534, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-appears-on-swatch-click.js": 5560, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-commit-on-ENTER.js": 5542, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-hides-on-tooltip.js": 5500, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-multiple-changes.js": 7877, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-release-outside-frame.js": 5367, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-revert-on-ESC.js": 5587, + "devtools/client/inspector/rules/test/browser_rules_colorpicker-swatch-displayed.js": 5516, + "devtools/client/inspector/rules/test/browser_rules_completion-existing-property_01.js": 13784, + "devtools/client/inspector/rules/test/browser_rules_completion-existing-property_02.js": 13155, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_01.js": 10286, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_02.js": 14681, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_03.js": 7107, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_04.js": 7836, + "devtools/client/inspector/rules/test/browser_rules_completion-new-property_multiline.js": 6840, + "devtools/client/inspector/rules/test/browser_rules_completion-popup-hidden-after-navigation.js": 6948, + "devtools/client/inspector/rules/test/browser_rules_computed-lists_02.js": 5610, + "devtools/client/inspector/rules/test/browser_rules_content_01.js": 5681, + "devtools/client/inspector/rules/test/browser_rules_content_02.js": 7191, + "devtools/client/inspector/rules/test/browser_rules_context-menu-show-mdn-docs-01.js": 6829, + "devtools/client/inspector/rules/test/browser_rules_context-menu-show-mdn-docs-02.js": 5747, + "devtools/client/inspector/rules/test/browser_rules_context-menu-show-mdn-docs-03.js": 10819, + "devtools/client/inspector/rules/test/browser_rules_cssom.js": 5630, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-appears-on-swatch-click.js": 5991, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-commit-on-ENTER.js": 6131, + "devtools/client/inspector/rules/test/browser_rules_cubicbezier-revert-on-ESC.js": 5488, + "devtools/client/inspector/rules/test/browser_rules_custom.js": 8084, + "devtools/client/inspector/rules/test/browser_rules_cycle-angle.js": 6628, + "devtools/client/inspector/rules/test/browser_rules_cycle-color.js": 7283, + "devtools/client/inspector/rules/test/browser_rules_edit-display-grid-property.js": 6155, + "devtools/client/inspector/rules/test/browser_rules_edit-property-cancel.js": 6319, + "devtools/client/inspector/rules/test/browser_rules_edit-property-click.js": 6309, + "devtools/client/inspector/rules/test/browser_rules_edit-property-commit.js": 8242, + "devtools/client/inspector/rules/test/browser_rules_edit-property-computed.js": 6506, + "devtools/client/inspector/rules/test/browser_rules_edit-property-increments.js": 14912, + "devtools/client/inspector/rules/test/browser_rules_edit-property-order.js": 10544, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_01.js": 6904, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_02.js": 6510, + "devtools/client/inspector/rules/test/browser_rules_edit-property-remove_03.js": 7009, + "devtools/client/inspector/rules/test/browser_rules_edit-property_01.js": 12199, + "devtools/client/inspector/rules/test/browser_rules_edit-property_02.js": 9845, + "devtools/client/inspector/rules/test/browser_rules_edit-property_03.js": 7037, + "devtools/client/inspector/rules/test/browser_rules_edit-property_04.js": 7129, + "devtools/client/inspector/rules/test/browser_rules_edit-property_05.js": 7936, + "devtools/client/inspector/rules/test/browser_rules_edit-property_06.js": 7251, + "devtools/client/inspector/rules/test/browser_rules_edit-property_07.js": 6499, + "devtools/client/inspector/rules/test/browser_rules_edit-property_08.js": 6868, + "devtools/client/inspector/rules/test/browser_rules_edit-property_09.js": 6157, + "devtools/client/inspector/rules/test/browser_rules_edit-selector-click-on-scrollbar.js": 6443, + "devtools/client/inspector/rules/test/browser_rules_edit-selector-click.js": 5861, + "devtools/client/inspector/rules/test/browser_rules_edit-selector-commit.js": 8941, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_01.js": 6984, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_02.js": 8130, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_03.js": 6395, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_04.js": 6718, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_05.js": 7992, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_06.js": 7501, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_07.js": 6723, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_08.js": 7249, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_09.js": 8756, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_10.js": 6863, + "devtools/client/inspector/rules/test/browser_rules_edit-selector_11.js": 6915, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_01.js": 6650, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_02.js": 6168, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_03.js": 6253, + "devtools/client/inspector/rules/test/browser_rules_edit-value-after-name_04.js": 6519, + "devtools/client/inspector/rules/test/browser_rules_editable-field-focus_01.js": 11676, + "devtools/client/inspector/rules/test/browser_rules_editable-field-focus_02.js": 8930, + "devtools/client/inspector/rules/test/browser_rules_eyedropper.js": 7004, + "devtools/client/inspector/rules/test/browser_rules_filtereditor-appears-on-swatch-click.js": 6053, + "devtools/client/inspector/rules/test/browser_rules_filtereditor-commit-on-ENTER.js": 5858, + "devtools/client/inspector/rules/test/browser_rules_filtereditor-revert-on-ESC.js": 5404, + "devtools/client/inspector/rules/test/browser_rules_grid-highlighter-on-navigate.js": 6884, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_01.js": 5335, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_02.js": 5870, + "devtools/client/inspector/rules/test/browser_rules_grid-toggle_03.js": 6164, + "devtools/client/inspector/rules/test/browser_rules_guessIndentation.js": 8217, + "devtools/client/inspector/rules/test/browser_rules_inherited-properties_01.js": 5792, + "devtools/client/inspector/rules/test/browser_rules_inherited-properties_03.js": 5565, + "devtools/client/inspector/rules/test/browser_rules_inline-source-map.js": 5633, + "devtools/client/inspector/rules/test/browser_rules_invalid-source-map.js": 6039, + "devtools/client/inspector/rules/test/browser_rules_invalid.js": 5386, + "devtools/client/inspector/rules/test/browser_rules_keybindings.js": 6454, + "devtools/client/inspector/rules/test/browser_rules_keyframeLineNumbers.js": 8416, + "devtools/client/inspector/rules/test/browser_rules_keyframes-rule_01.js": 8803, + "devtools/client/inspector/rules/test/browser_rules_keyframes-rule_02.js": 7797, + "devtools/client/inspector/rules/test/browser_rules_lineNumbers.js": 7116, + "devtools/client/inspector/rules/test/browser_rules_livepreview.js": 9232, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_01.js": 6799, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_02.js": 5401, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_03.js": 5527, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_04.js": 5469, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_05.js": 6818, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_06.js": 6599, + "devtools/client/inspector/rules/test/browser_rules_mark_overridden_07.js": 5912, + "devtools/client/inspector/rules/test/browser_rules_mathml-element.js": 6600, + "devtools/client/inspector/rules/test/browser_rules_media-queries.js": 5944, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-duplicates.js": 6928, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-priority.js": 6491, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_01.js": 6689, + "devtools/client/inspector/rules/test/browser_rules_multiple-properties-unfinished_02.js": 6887, + "devtools/client/inspector/rules/test/browser_rules_multiple_properties_01.js": 6168, + "devtools/client/inspector/rules/test/browser_rules_multiple_properties_02.js": 6495, + "devtools/client/inspector/rules/test/browser_rules_original-source-link.js": 8025, + "devtools/client/inspector/rules/test/browser_rules_pseudo-element_01.js": 11271, + "devtools/client/inspector/rules/test/browser_rules_pseudo-element_02.js": 7305, + "devtools/client/inspector/rules/test/browser_rules_pseudo_lock_options.js": 8469, + "devtools/client/inspector/rules/test/browser_rules_refresh-no-flicker.js": 5521, + "devtools/client/inspector/rules/test/browser_rules_refresh-on-attribute-change_01.js": 5735, + "devtools/client/inspector/rules/test/browser_rules_refresh-on-attribute-change_02.js": 7135, + "devtools/client/inspector/rules/test/browser_rules_refresh-on-style-change.js": 5584, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_01.js": 7474, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_02.js": 6040, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_03.js": 5679, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_04.js": 6613, + "devtools/client/inspector/rules/test/browser_rules_search-filter-computed-list_expander.js": 5921, + "devtools/client/inspector/rules/test/browser_rules_search-filter-overridden-property.js": 5768, + "devtools/client/inspector/rules/test/browser_rules_search-filter_01.js": 7616, + "devtools/client/inspector/rules/test/browser_rules_search-filter_02.js": 7393, + "devtools/client/inspector/rules/test/browser_rules_search-filter_03.js": 5911, + "devtools/client/inspector/rules/test/browser_rules_search-filter_04.js": 5879, + "devtools/client/inspector/rules/test/browser_rules_search-filter_05.js": 6337, + "devtools/client/inspector/rules/test/browser_rules_search-filter_06.js": 6230, + "devtools/client/inspector/rules/test/browser_rules_search-filter_07.js": 6987, + "devtools/client/inspector/rules/test/browser_rules_search-filter_08.js": 6497, + "devtools/client/inspector/rules/test/browser_rules_search-filter_09.js": 6628, + "devtools/client/inspector/rules/test/browser_rules_search-filter_10.js": 6538, + "devtools/client/inspector/rules/test/browser_rules_search-filter_escape-keypress.js": 5909, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter-on-navigate.js": 6709, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter_02.js": 6087, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter_03.js": 6281, + "devtools/client/inspector/rules/test/browser_rules_selector-highlighter_04.js": 5684, + "devtools/client/inspector/rules/test/browser_rules_selector_highlight.js": 8297, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter-computed-list_01.js": 8851, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_01.js": 8673, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_02.js": 6589, + "devtools/client/inspector/rules/test/browser_rules_strict-search-filter_03.js": 5521, + "devtools/client/inspector/rules/test/browser_rules_style-editor-link.js": 12118, + "devtools/client/inspector/rules/test/browser_rules_urls-clickable.js": 7582, + "devtools/client/inspector/rules/test/browser_rules_user-agent-styles-uneditable.js": 7050, + "devtools/client/inspector/rules/test/browser_rules_user-agent-styles.js": 29600, + "devtools/client/inspector/rules/test/browser_rules_user-property-reset.js": 9326, + "devtools/client/inspector/shared/test/browser_styleinspector_context-menu-copy-color_01.js": 21308, + "devtools/client/inspector/shared/test/browser_styleinspector_csslogic-content-stylesheets.js": 18638, + "devtools/client/inspector/shared/test/browser_styleinspector_refresh_when_active.js": 6977, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-background-image.js": 8333, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-closes-on-new-selection.js": 7171, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-longhand-fontfamily.js": 7167, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-multiple-background-images.js": 6913, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-shorthand-fontfamily.js": 5897, + "devtools/client/inspector/shared/test/browser_styleinspector_tooltip-size.js": 5940, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-01.js": 6472, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-02.js": 6840, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-03.js": 6061, + "devtools/client/inspector/shared/test/browser_styleinspector_transform-highlighter-04.js": 6201, + "devtools/client/inspector/test/browser_inspector_addNode_01.js": 9682, + "devtools/client/inspector/test/browser_inspector_addNode_02.js": 7458, + "devtools/client/inspector/test/browser_inspector_addNode_03.js": 8382, + "devtools/client/inspector/test/browser_inspector_addSidebarTab.js": 5517, + "devtools/client/inspector/test/browser_inspector_breadcrumbs.js": 11923, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_highlight_hover.js": 7351, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_keybinding.js": 7573, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_keyboard_trap.js": 5952, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_menu.js": 6754, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_mutations.js": 9901, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_namespaced.js": 5886, + "devtools/client/inspector/test/browser_inspector_breadcrumbs_visibility.js": 7954, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-01.js": 7892, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-02.js": 14815, + "devtools/client/inspector/test/browser_inspector_delete-selected-node-03.js": 7118, + "devtools/client/inspector/test/browser_inspector_destroy-after-navigation.js": 7455, + "devtools/client/inspector/test/browser_inspector_destroy-before-ready.js": 6915, + "devtools/client/inspector/test/browser_inspector_expand-collapse.js": 5385, + "devtools/client/inspector/test/browser_inspector_gcli-inspect-command.js": 8870, + "devtools/client/inspector/test/browser_inspector_highlighter-01.js": 7762, + "devtools/client/inspector/test/browser_inspector_highlighter-02.js": 11746, + "devtools/client/inspector/test/browser_inspector_highlighter-03.js": 9304, + "devtools/client/inspector/test/browser_inspector_highlighter-04.js": 5888, + "devtools/client/inspector/test/browser_inspector_highlighter-cancel.js": 10565, + "devtools/client/inspector/test/browser_inspector_highlighter-comments.js": 11245, + "devtools/client/inspector/test/browser_inspector_highlighter-cssgrid_01.js": 5761, + "devtools/client/inspector/test/browser_inspector_highlighter-csstransform_01.js": 6359, + "devtools/client/inspector/test/browser_inspector_highlighter-csstransform_02.js": 5928, + "devtools/client/inspector/test/browser_inspector_highlighter-embed.js": 6837, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-csp.js": 6082, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js": 6778, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-image.js": 5747, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-label.js": 6865, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-show-hide.js": 5761, + "devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-xul.js": 8460, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_01.js": 6311, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_02.js": 7287, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_03.js": 6546, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_04.js": 8028, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_05.js": 8955, + "devtools/client/inspector/test/browser_inspector_highlighter-geometry_06.js": 10458, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_01.js": 7562, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_02.js": 6256, + "devtools/client/inspector/test/browser_inspector_highlighter-hover_03.js": 7515, + "devtools/client/inspector/test/browser_inspector_highlighter-iframes.js": 7760, + "devtools/client/inspector/test/browser_inspector_highlighter-iframes_01.js": 9970, + "devtools/client/inspector/test/browser_inspector_highlighter-iframes_02.js": 8386, + "devtools/client/inspector/test/browser_inspector_highlighter-inline.js": 21092, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_01.js": 10313, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_02.js": 9157, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_03.js": 7084, + "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_04.js": 7394, + "devtools/client/inspector/test/browser_inspector_highlighter-measure_01.js": 5884, + "devtools/client/inspector/test/browser_inspector_highlighter-measure_02.js": 5903, + "devtools/client/inspector/test/browser_inspector_highlighter-options.js": 8394, + "devtools/client/inspector/test/browser_inspector_highlighter-preview.js": 9070, + "devtools/client/inspector/test/browser_inspector_highlighter-rect_01.js": 5657, + "devtools/client/inspector/test/browser_inspector_highlighter-rect_02.js": 6008, + "devtools/client/inspector/test/browser_inspector_highlighter-rulers_01.js": 5659, + "devtools/client/inspector/test/browser_inspector_highlighter-rulers_02.js": 5660, + "devtools/client/inspector/test/browser_inspector_highlighter-selector_01.js": 7152, + "devtools/client/inspector/test/browser_inspector_highlighter-selector_02.js": 5808, + "devtools/client/inspector/test/browser_inspector_highlighter-xbl.js": 7162, + "devtools/client/inspector/test/browser_inspector_highlighter-zoom.js": 9079, + "devtools/client/inspector/test/browser_inspector_iframe-navigation.js": 6417, + "devtools/client/inspector/test/browser_inspector_infobar_01.js": 12146, + "devtools/client/inspector/test/browser_inspector_infobar_02.js": 7496, + "devtools/client/inspector/test/browser_inspector_infobar_03.js": 6934, + "devtools/client/inspector/test/browser_inspector_infobar_textnode.js": 9024, + "devtools/client/inspector/test/browser_inspector_initialization.js": 15487, + "devtools/client/inspector/test/browser_inspector_invalidate.js": 6845, + "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js": 7032, + "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts.js": 11812, + "devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js": 8346, + "devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js": 7700, + "devtools/client/inspector/test/browser_inspector_menu-04-use-in-console.js": 8514, + "devtools/client/inspector/test/browser_inspector_menu-05-attribute-items.js": 7594, + "devtools/client/inspector/test/browser_inspector_menu-06-other.js": 13223, + "devtools/client/inspector/test/browser_inspector_navigate_to_errors.js": 17920, + "devtools/client/inspector/test/browser_inspector_navigation.js": 10599, + "devtools/client/inspector/test/browser_inspector_open_on_neterror.js": 9008, + "devtools/client/inspector/test/browser_inspector_pane-toggle-01.js": 5502, + "devtools/client/inspector/test/browser_inspector_pane-toggle-02.js": 6204, + "devtools/client/inspector/test/browser_inspector_pane-toggle-03.js": 6364, + "devtools/client/inspector/test/browser_inspector_pane-toggle-05.js": 5581, + "devtools/client/inspector/test/browser_inspector_picker-stop-on-destroy.js": 7292, + "devtools/client/inspector/test/browser_inspector_picker-stop-on-tool-change.js": 6665, + "devtools/client/inspector/test/browser_inspector_portrait_mode.js": 11807, + "devtools/client/inspector/test/browser_inspector_pseudoclass-lock.js": 11737, + "devtools/client/inspector/test/browser_inspector_pseudoclass-menu.js": 5955, + "devtools/client/inspector/test/browser_inspector_reload-01.js": 7024, + "devtools/client/inspector/test/browser_inspector_reload-02.js": 7472, + "devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js": 7393, + "devtools/client/inspector/test/browser_inspector_search-01.js": 20247, + "devtools/client/inspector/test/browser_inspector_search-02.js": 8974, + "devtools/client/inspector/test/browser_inspector_search-03.js": 8913, + "devtools/client/inspector/test/browser_inspector_search-04.js": 6800, + "devtools/client/inspector/test/browser_inspector_search-05.js": 14768, + "devtools/client/inspector/test/browser_inspector_search-06.js": 10631, + "devtools/client/inspector/test/browser_inspector_search-07.js": 6284, + "devtools/client/inspector/test/browser_inspector_search-08.js": 5777, + "devtools/client/inspector/test/browser_inspector_search-clear.js": 5810, + "devtools/client/inspector/test/browser_inspector_search-label.js": 7628, + "devtools/client/inspector/test/browser_inspector_search-navigation.js": 9089, + "devtools/client/inspector/test/browser_inspector_search-reserved.js": 8154, + "devtools/client/inspector/test/browser_inspector_search-selection.js": 12939, + "devtools/client/inspector/test/browser_inspector_search-sidebar.js": 8336, + "devtools/client/inspector/test/browser_inspector_search_keyboard_trap.js": 6893, + "devtools/client/inspector/test/browser_inspector_select-docshell.js": 7462, + "devtools/client/inspector/test/browser_inspector_select-last-selected.js": 20944, + "devtools/client/inspector/test/browser_inspector_sidebarstate.js": 12030, + "devtools/client/inspector/test/browser_inspector_startup.js": 7391, + "devtools/client/inspector/test/browser_inspector_switch-to-inspector-on-pick.js": 6604, + "devtools/client/inspector/test/browser_inspector_textbox-menu.js": 8490, + "devtools/client/layoutview/test/browser_layoutview.js": 6335, + "devtools/client/layoutview/test/browser_layoutview_editablemodel.js": 6802, + "devtools/client/layoutview/test/browser_layoutview_editablemodel_stylerules.js": 5375, + "devtools/client/layoutview/test/browser_layoutview_update-after-navigation.js": 7608, + "devtools/client/layoutview/test/browser_layoutview_update-after-reload.js": 6016, + "devtools/client/markupview/test/browser_markupview_anonymous_01.js": 8942, + "devtools/client/markupview/test/browser_markupview_anonymous_02.js": 10639, + "devtools/client/markupview/test/browser_markupview_anonymous_03.js": 6429, + "devtools/client/markupview/test/browser_markupview_copy_image_data.js": 5331, + "devtools/client/markupview/test/browser_markupview_css_completion_style_attribute.js": 8666, + "devtools/client/markupview/test/browser_markupview_dragdrop_autoscroll.js": 7414, + "devtools/client/markupview/test/browser_markupview_dragdrop_reorder.js": 10189, + "devtools/client/markupview/test/browser_markupview_events.js": 12519, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.0.js": 9521, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.1.js": 9805, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.11.1.js": 11170, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.2.js": 8346, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.3.js": 12293, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.4.js": 11845, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.6.js": 14280, + "devtools/client/markupview/test/browser_markupview_events_jquery_1.7.js": 12839, + "devtools/client/markupview/test/browser_markupview_events_jquery_2.1.1.js": 11102, + "devtools/client/markupview/test/browser_markupview_html_edit_01.js": 15480, + "devtools/client/markupview/test/browser_markupview_html_edit_02.js": 13363, + "devtools/client/markupview/test/browser_markupview_html_edit_03.js": 8849, + "devtools/client/markupview/test/browser_markupview_keybindings_03.js": 6313, + "devtools/client/markupview/test/browser_markupview_keybindings_04.js": 7730, + "devtools/client/markupview/test/browser_markupview_links_01.js": 8486, + "devtools/client/markupview/test/browser_markupview_links_04.js": 6595, + "devtools/client/markupview/test/browser_markupview_links_05.js": 7450, + "devtools/client/markupview/test/browser_markupview_links_06.js": 9595, + "devtools/client/markupview/test/browser_markupview_links_07.js": 7709, + "devtools/client/markupview/test/browser_markupview_load_01.js": 7448, + "devtools/client/markupview/test/browser_markupview_mutation_01.js": 8746, + "devtools/client/markupview/test/browser_markupview_navigation.js": 11594, + "devtools/client/markupview/test/browser_markupview_node_not_displayed_02.js": 7116, + "devtools/client/markupview/test/browser_markupview_pagesize_01.js": 6016, + "devtools/client/markupview/test/browser_markupview_pagesize_02.js": 7467, + "devtools/client/markupview/test/browser_markupview_search_01.js": 8957, + "devtools/client/markupview/test/browser_markupview_tag_edit_01.js": 9396, + "devtools/client/markupview/test/browser_markupview_tag_edit_04.js": 19454, + "devtools/client/markupview/test/browser_markupview_tag_edit_05.js": 6616, + "devtools/client/markupview/test/browser_markupview_tag_edit_06.js": 6848, + "devtools/client/markupview/test/browser_markupview_tag_edit_07.js": 6474, + "devtools/client/markupview/test/browser_markupview_tag_edit_08.js": 6711, + "devtools/client/markupview/test/browser_markupview_textcontent_edit_01.js": 7442, + "devtools/client/markupview/test/browser_markupview_toggle_01.js": 5656, + "devtools/client/markupview/test/browser_markupview_toggle_02.js": 5807, + "devtools/client/markupview/test/browser_markupview_toggle_03.js": 6069, + "devtools/client/markupview/test/browser_markupview_update-on-navigtion.js": 5346, + "devtools/client/memory/test/browser/browser_memory_allocationStackBreakdown_01.js": 7916, + "devtools/client/memory/test/browser/browser_memory_clear_snapshots.js": 7346, + "devtools/client/memory/test/browser/browser_memory_diff_01.js": 6208, + "devtools/client/memory/test/browser/browser_memory_displays_01.js": 5712, + "devtools/client/memory/test/browser/browser_memory_dominator_trees_01.js": 28072, + "devtools/client/memory/test/browser/browser_memory_dominator_trees_02.js": 8191, + "devtools/client/memory/test/browser/browser_memory_filter_01.js": 7655, + "devtools/client/memory/test/browser/browser_memory_individuals_01.js": 11178, + "devtools/client/memory/test/browser/browser_memory_keyboard-snapshot-list.js": 9456, + "devtools/client/memory/test/browser/browser_memory_keyboard.js": 6909, + "devtools/client/memory/test/browser/browser_memory_no_allocation_stacks.js": 5618, + "devtools/client/memory/test/browser/browser_memory_percents_01.js": 5487, + "devtools/client/memory/test/browser/browser_memory_simple_01.js": 6241, + "devtools/client/netmonitor/har/test/browser_net_har_copy_all_as_har.js": 6714, + "devtools/client/netmonitor/test/browser_net_aaa_leaktest.js": 6268, + "devtools/client/netmonitor/test/browser_net_accessibility-01.js": 20877, + "devtools/client/netmonitor/test/browser_net_accessibility-02.js": 21826, + "devtools/client/netmonitor/test/browser_net_api-calls.js": 7547, + "devtools/client/netmonitor/test/browser_net_autoscroll.js": 16230, + "devtools/client/netmonitor/test/browser_net_brotli.js": 5973, + "devtools/client/netmonitor/test/browser_net_cached-status.js": 8256, + "devtools/client/netmonitor/test/browser_net_cause.js": 10479, + "devtools/client/netmonitor/test/browser_net_cause_redirect.js": 7235, + "devtools/client/netmonitor/test/browser_net_complex-params.js": 10937, + "devtools/client/netmonitor/test/browser_net_content-type.js": 13087, + "devtools/client/netmonitor/test/browser_net_cors_requests.js": 5776, + "devtools/client/netmonitor/test/browser_net_curl-utils.js": 7863, + "devtools/client/netmonitor/test/browser_net_cyrillic-01.js": 5626, + "devtools/client/netmonitor/test/browser_net_cyrillic-02.js": 6001, + "devtools/client/netmonitor/test/browser_net_filter-01.js": 15506, + "devtools/client/netmonitor/test/browser_net_filter-02.js": 25709, + "devtools/client/netmonitor/test/browser_net_filter-03.js": 19457, + "devtools/client/netmonitor/test/browser_net_filter-04.js": 8791, + "devtools/client/netmonitor/test/browser_net_footer-summary.js": 18538, + "devtools/client/netmonitor/test/browser_net_frame.js": 14499, + "devtools/client/netmonitor/test/browser_net_html-preview.js": 8982, + "devtools/client/netmonitor/test/browser_net_icon-preview.js": 10695, + "devtools/client/netmonitor/test/browser_net_image-tooltip.js": 8387, + "devtools/client/netmonitor/test/browser_net_json-long.js": 20922, + "devtools/client/netmonitor/test/browser_net_json-malformed.js": 7327, + "devtools/client/netmonitor/test/browser_net_json_custom_mime.js": 6813, + "devtools/client/netmonitor/test/browser_net_json_text_mime.js": 5318, + "devtools/client/netmonitor/test/browser_net_jsonp.js": 5911, + "devtools/client/netmonitor/test/browser_net_large-response.js": 6462, + "devtools/client/netmonitor/test/browser_net_persistent_logs.js": 7637, + "devtools/client/netmonitor/test/browser_net_post-data-01.js": 6943, + "devtools/client/netmonitor/test/browser_net_prefs-reload.js": 26318, + "devtools/client/netmonitor/test/browser_net_raw_headers.js": 5838, + "devtools/client/netmonitor/test/browser_net_req-resp-bodies.js": 9034, + "devtools/client/netmonitor/test/browser_net_resend.js": 10550, + "devtools/client/netmonitor/test/browser_net_resend_cors.js": 9971, + "devtools/client/netmonitor/test/browser_net_resend_headers.js": 5434, + "devtools/client/netmonitor/test/browser_net_security-icon-click.js": 6261, + "devtools/client/netmonitor/test/browser_net_security-redirect.js": 5558, + "devtools/client/netmonitor/test/browser_net_security-state.js": 7043, + "devtools/client/netmonitor/test/browser_net_security-tab-deselect.js": 5989, + "devtools/client/netmonitor/test/browser_net_security-tab-visibility.js": 9336, + "devtools/client/netmonitor/test/browser_net_send-beacon-other-tab.js": 5631, + "devtools/client/netmonitor/test/browser_net_simple-request.js": 6095, + "devtools/client/netmonitor/test/browser_net_sort-02.js": 14225, + "devtools/client/netmonitor/test/browser_net_sort-03.js": 21650, + "devtools/client/netmonitor/test/browser_net_statistics-01.js": 10115, + "devtools/client/netmonitor/test/browser_net_statistics-02.js": 11453, + "devtools/client/netmonitor/test/browser_net_status-codes.js": 9069, + "devtools/client/netmonitor/test/browser_net_streaming-response.js": 6780, + "devtools/client/netmonitor/test/browser_net_throttle.js": 11105, + "devtools/client/netmonitor/test/browser_net_timing-division.js": 7890, + "devtools/client/performance/test/browser_aaa-run-first-leaktest.js": 9866, + "devtools/client/performance/test/browser_perf-button-states.js": 12083, + "devtools/client/performance/test/browser_perf-calltree-js-categories.js": 14077, + "devtools/client/performance/test/browser_perf-calltree-js-columns.js": 14322, + "devtools/client/performance/test/browser_perf-calltree-js-events.js": 10706, + "devtools/client/performance/test/browser_perf-calltree-memory-columns.js": 9855, + "devtools/client/performance/test/browser_perf-categories-js-calltree.js": 9545, + "devtools/client/performance/test/browser_perf-clear-01.js": 7170, + "devtools/client/performance/test/browser_perf-clear-02.js": 8398, + "devtools/client/performance/test/browser_perf-columns-js-calltree.js": 8625, + "devtools/client/performance/test/browser_perf-columns-memory-calltree.js": 6401, + "devtools/client/performance/test/browser_perf-console-record-01.js": 11551, + "devtools/client/performance/test/browser_perf-console-record-02.js": 21919, + "devtools/client/performance/test/browser_perf-console-record-03.js": 12776, + "devtools/client/performance/test/browser_perf-console-record-04.js": 15426, + "devtools/client/performance/test/browser_perf-console-record-05.js": 17277, + "devtools/client/performance/test/browser_perf-console-record-06.js": 25411, + "devtools/client/performance/test/browser_perf-console-record-07.js": 22141, + "devtools/client/performance/test/browser_perf-console-record-08.js": 44011, + "devtools/client/performance/test/browser_perf-console-record-09.js": 14914, + "devtools/client/performance/test/browser_perf-details-01-toggle.js": 11249, + "devtools/client/performance/test/browser_perf-details-01.js": 5668, + "devtools/client/performance/test/browser_perf-details-02-utility-fun.js": 11086, + "devtools/client/performance/test/browser_perf-details-02.js": 5704, + "devtools/client/performance/test/browser_perf-details-03-without-allocations.js": 14763, + "devtools/client/performance/test/browser_perf-details-03.js": 8933, + "devtools/client/performance/test/browser_perf-details-04-toolbar-buttons.js": 13690, + "devtools/client/performance/test/browser_perf-details-04.js": 8241, + "devtools/client/performance/test/browser_perf-details-05-preserve-view.js": 14152, + "devtools/client/performance/test/browser_perf-details-05.js": 7168, + "devtools/client/performance/test/browser_perf-details-06-rerender-on-selection.js": 10708, + "devtools/client/performance/test/browser_perf-details-07-bleed-events.js": 14146, + "devtools/client/performance/test/browser_perf-details-07.js": 5554, + "devtools/client/performance/test/browser_perf-details-calltree-render.js": 8273, + "devtools/client/performance/test/browser_perf-details-flamegraph-render.js": 7759, + "devtools/client/performance/test/browser_perf-details-memory-calltree-render.js": 8279, + "devtools/client/performance/test/browser_perf-details-memory-flamegraph-render.js": 7833, + "devtools/client/performance/test/browser_perf-details-render-00-waterfall.js": 12885, + "devtools/client/performance/test/browser_perf-details-render-01-js-calltree.js": 13590, + "devtools/client/performance/test/browser_perf-details-render-02-js-flamegraph.js": 13161, + "devtools/client/performance/test/browser_perf-details-render-03-memory-calltree.js": 12737, + "devtools/client/performance/test/browser_perf-details-render-04-memory-flamegraph.js": 12892, + "devtools/client/performance/test/browser_perf-details-waterfall-render.js": 7374, + "devtools/client/performance/test/browser_perf-docload.js": 10762, + "devtools/client/performance/test/browser_perf-events-calltree.js": 5509, + "devtools/client/performance/test/browser_perf-highlighted.js": 14003, + "devtools/client/performance/test/browser_perf-jit-view-01.js": 8367, + "devtools/client/performance/test/browser_perf-jit-view-02.js": 7636, + "devtools/client/performance/test/browser_perf-legacy-front-01.js": 7450, + "devtools/client/performance/test/browser_perf-legacy-front-04.js": 5391, + "devtools/client/performance/test/browser_perf-legacy-front-05.js": 6461, + "devtools/client/performance/test/browser_perf-loading-01.js": 10037, + "devtools/client/performance/test/browser_perf-loading-02.js": 13463, + "devtools/client/performance/test/browser_perf-markers-docload.js": 6309, + "devtools/client/performance/test/browser_perf-options-02-toggle-throw-alt.js": 9411, + "devtools/client/performance/test/browser_perf-options-enable-framerate-01.js": 11665, + "devtools/client/performance/test/browser_perf-options-enable-framerate-02.js": 11724, + "devtools/client/performance/test/browser_perf-options-enable-framerate.js": 5939, + "devtools/client/performance/test/browser_perf-options-enable-memory-01.js": 13652, + "devtools/client/performance/test/browser_perf-options-enable-memory-02.js": 13656, + "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-01.js": 10468, + "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-02.js": 10137, + "devtools/client/performance/test/browser_perf-options-invert-call-tree-01.js": 11183, + "devtools/client/performance/test/browser_perf-options-invert-call-tree-02.js": 9884, + "devtools/client/performance/test/browser_perf-options-invert-flame-graph-01.js": 10455, + "devtools/client/performance/test/browser_perf-options-invert-flame-graph-02.js": 10133, + "devtools/client/performance/test/browser_perf-options-propagate-allocations.js": 9993, + "devtools/client/performance/test/browser_perf-options-propagate-profiler.js": 9016, + "devtools/client/performance/test/browser_perf-options-show-idle-blocks-01.js": 10454, + "devtools/client/performance/test/browser_perf-options-show-idle-blocks-02.js": 10158, + "devtools/client/performance/test/browser_perf-options-show-platform-data-01.js": 19934, + "devtools/client/performance/test/browser_perf-options-show-platform-data-02.js": 11159, + "devtools/client/performance/test/browser_perf-overview-render-01.js": 12823, + "devtools/client/performance/test/browser_perf-overview-render-02.js": 13604, + "devtools/client/performance/test/browser_perf-overview-render-03.js": 10246, + "devtools/client/performance/test/browser_perf-overview-render-04.js": 12019, + "devtools/client/performance/test/browser_perf-overview-selection-01.js": 9812, + "devtools/client/performance/test/browser_perf-overview-selection-02.js": 13581, + "devtools/client/performance/test/browser_perf-overview-selection-03.js": 10164, + "devtools/client/performance/test/browser_perf-overview-time-interval.js": 9810, + "devtools/client/performance/test/browser_perf-private-browsing.js": 5318, + "devtools/client/performance/test/browser_perf-range-changed-render.js": 12015, + "devtools/client/performance/test/browser_perf-recording-notices-01.js": 9813, + "devtools/client/performance/test/browser_perf-recording-notices-02.js": 13456, + "devtools/client/performance/test/browser_perf-recording-notices-03.js": 10885, + "devtools/client/performance/test/browser_perf-recording-notices-04.js": 9252, + "devtools/client/performance/test/browser_perf-recording-selected-01.js": 14701, + "devtools/client/performance/test/browser_perf-recording-selected-02.js": 14413, + "devtools/client/performance/test/browser_perf-recording-selected-03.js": 14519, + "devtools/client/performance/test/browser_perf-recording-selected-04.js": 20688, + "devtools/client/performance/test/browser_perf-recordings-clear-01.js": 14176, + "devtools/client/performance/test/browser_perf-recordings-clear-02.js": 16005, + "devtools/client/performance/test/browser_perf-refresh.js": 11581, + "devtools/client/performance/test/browser_perf-states.js": 11786, + "devtools/client/performance/test/browser_perf-telemetry-01.js": 14935, + "devtools/client/performance/test/browser_perf-telemetry-02.js": 11723, + "devtools/client/performance/test/browser_perf-telemetry-03.js": 11817, + "devtools/client/performance/test/browser_perf-telemetry-04.js": 13129, + "devtools/client/performance/test/browser_perf-telemetry.js": 9802, + "devtools/client/performance/test/browser_perf-theme-toggle-01.js": 9172, + "devtools/client/performance/test/browser_perf-ui-recording.js": 10415, + "devtools/client/performance/test/browser_profiler_tree-view-11.js": 5719, + "devtools/client/performance/test/browser_timeline-waterfall-background.js": 14072, + "devtools/client/performance/test/browser_timeline-waterfall-generic.js": 14705, + "devtools/client/projecteditor/test/browser_projecteditor_delete_file.js": 6471, + "devtools/client/projecteditor/test/browser_projecteditor_editing_01.js": 6582, + "devtools/client/projecteditor/test/browser_projecteditor_external_change.js": 6551, + "devtools/client/projecteditor/test/browser_projecteditor_rename_file.js": 14087, + "devtools/client/projecteditor/test/browser_projecteditor_rename_file_01.js": 8327, + "devtools/client/projecteditor/test/browser_projecteditor_rename_file_02.js": 8269, + "devtools/client/projecteditor/test/browser_projecteditor_saveall.js": 6454, + "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js": 6078, + "devtools/client/responsivedesign/test/browser_responsivecomputedview.js": 9674, + "devtools/client/responsivedesign/test/browser_responsiveruleview.js": 8006, + "devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js": 8098, + "devtools/client/scratchpad/test/browser_scratchpad_disable_view_menu_items.js": 9542, + "devtools/client/scratchpad/test/browser_scratchpad_restore.js": 7220, + "devtools/client/scratchpad/test/browser_scratchpad_unsaved.js": 5477, + "devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js": 6448, + "devtools/client/shared/components/test/browser/browser_notification_box_basic.js": 6780, + "devtools/client/shared/test/browser_telemetry_button_eyedropper.js": 9253, + "devtools/client/shared/test/browser_telemetry_button_paintflashing.js": 6708, + "devtools/client/shared/test/browser_telemetry_button_responsive.js": 7615, + "devtools/client/shared/test/browser_telemetry_button_scratchpad.js": 11334, + "devtools/client/shared/test/browser_telemetry_button_tilt.js": 10512, + "devtools/client/shared/test/browser_telemetry_sidebar.js": 9719, + "devtools/client/shared/test/browser_telemetry_toolbox.js": 14304, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_inspector.js": 9297, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js": 8903, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js": 5753, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_netmonitor.js": 6660, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_storage.js": 6201, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_styleeditor.js": 5498, + "devtools/client/shared/test/browser_telemetry_toolboxtabs_webconsole.js": 7106, + "devtools/client/shared/test/browser_toolbar_basic.js": 6526, + "devtools/client/shared/test/browser_toolbar_webconsole_errors_count.js": 7241, + "devtools/client/sourceeditor/test/browser_codemirror.js": 7559, + "devtools/client/sourceeditor/test/browser_vimemacs.js": 47559, + "devtools/client/storage/test/browser_storage_basic.js": 12612, + "devtools/client/storage/test/browser_storage_cache_delete.js": 7658, + "devtools/client/storage/test/browser_storage_cookies_delete_all.js": 8287, + "devtools/client/storage/test/browser_storage_cookies_edit.js": 7942, + "devtools/client/storage/test/browser_storage_cookies_edit_keyboard.js": 7463, + "devtools/client/storage/test/browser_storage_cookies_tab_navigation.js": 5872, + "devtools/client/storage/test/browser_storage_delete.js": 9748, + "devtools/client/storage/test/browser_storage_delete_all.js": 10629, + "devtools/client/storage/test/browser_storage_delete_tree.js": 9771, + "devtools/client/storage/test/browser_storage_dynamic_updates.js": 9233, + "devtools/client/storage/test/browser_storage_dynamic_updates_cookies.js": 6523, + "devtools/client/storage/test/browser_storage_dynamic_updates_sessionStorage.js": 5750, + "devtools/client/storage/test/browser_storage_empty_objectstores.js": 5656, + "devtools/client/storage/test/browser_storage_indexeddb_delete.js": 5719, + "devtools/client/storage/test/browser_storage_indexeddb_duplicate_names.js": 5701, + "devtools/client/storage/test/browser_storage_localstorage_edit.js": 6711, + "devtools/client/storage/test/browser_storage_overflow.js": 16333, + "devtools/client/storage/test/browser_storage_sessionstorage_edit.js": 7891, + "devtools/client/storage/test/browser_storage_sidebar.js": 12879, + "devtools/client/storage/test/browser_storage_sidebar_update.js": 5920, + "devtools/client/storage/test/browser_storage_values.js": 9382, + "devtools/client/styleeditor/test/browser_styleeditor_autocomplete-disabled.js": 6928, + "devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js": 7332, + "devtools/client/styleeditor/test/browser_styleeditor_cmd_edit.js": 7580, + "devtools/client/styleeditor/test/browser_styleeditor_fetch-from-cache.js": 7084, + "devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js": 6339, + "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js": 5889, + "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_links.js": 5652, + "devtools/client/styleeditor/test/browser_styleeditor_navigate.js": 6149, + "devtools/client/styleeditor/test/browser_styleeditor_new.js": 5720, + "devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js": 6802, + "devtools/client/styleeditor/test/browser_styleeditor_reload.js": 6862, + "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_large.js": 6427, + "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_watching.js": 7553, + "devtools/client/styleeditor/test/browser_styleeditor_sourcemaps.js": 9371, + "devtools/client/styleeditor/test/browser_styleeditor_sync.js": 13270, + "devtools/client/styleeditor/test/browser_styleeditor_syncAddProperty.js": 7758, + "devtools/client/styleeditor/test/browser_styleeditor_syncAddRule.js": 8709, + "devtools/client/styleeditor/test/browser_styleeditor_syncAlreadyOpen.js": 7638, + "devtools/client/styleeditor/test/browser_styleeditor_syncEditSelector.js": 8106, + "devtools/client/styleeditor/test/browser_styleeditor_syncIntoRuleView.js": 9904, + "devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js": 5756, + "devtools/client/styleinspector/test/browser_computedview_browser-styles.js": 9308, + "devtools/client/styleinspector/test/browser_computedview_getNodeInfo.js": 5344, + "devtools/client/styleinspector/test/browser_computedview_keybindings_02.js": 5691, + "devtools/client/styleinspector/test/browser_computedview_matched-selectors_01.js": 5524, + "devtools/client/styleinspector/test/browser_computedview_no-results-placeholder.js": 5430, + "devtools/client/styleinspector/test/browser_computedview_original-source-link.js": 7871, + "devtools/client/styleinspector/test/browser_computedview_pseudo-element_01.js": 6383, + "devtools/client/styleinspector/test/browser_computedview_search-filter.js": 7042, + "devtools/client/styleinspector/test/browser_computedview_search-filter_clear.js": 8809, + "devtools/client/styleinspector/test/browser_computedview_search-filter_escape-keypress.js": 8739, + "devtools/client/styleinspector/test/browser_computedview_style-editor-link.js": 8654, + "devtools/client/styleinspector/test/browser_ruleview_add-property-and-reselect.js": 5882, + "devtools/client/styleinspector/test/browser_ruleview_add-rule_01.js": 18883, + "devtools/client/styleinspector/test/browser_ruleview_add-rule_pseudo_class.js": 8081, + "devtools/client/styleinspector/test/browser_ruleview_authored.js": 19178, + "devtools/client/styleinspector/test/browser_ruleview_colorUnit.js": 11302, + "devtools/client/styleinspector/test/browser_ruleview_colorpicker-multiple-changes.js": 6068, + "devtools/client/styleinspector/test/browser_ruleview_colorpicker-revert-on-ESC.js": 6092, + "devtools/client/styleinspector/test/browser_ruleview_colorpicker-swatch-displayed.js": 5498, + "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_01.js": 11660, + "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_02.js": 9026, + "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_01.js": 7798, + "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_02.js": 9446, + "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_03.js": 5361, + "devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js": 7766, + "devtools/client/styleinspector/test/browser_ruleview_copy_styles.js": 5640, + "devtools/client/styleinspector/test/browser_ruleview_custom.js": 5322, + "devtools/client/styleinspector/test/browser_ruleview_edit-property-increments.js": 8200, + "devtools/client/styleinspector/test/browser_ruleview_edit-property_01.js": 6699, + "devtools/client/styleinspector/test/browser_ruleview_edit-property_02.js": 5822, + "devtools/client/styleinspector/test/browser_ruleview_edit-selector-commit.js": 5572, + "devtools/client/styleinspector/test/browser_ruleview_edit-selector_02.js": 5687, + "devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_01.js": 5604, + "devtools/client/styleinspector/test/browser_ruleview_eyedropper.js": 6120, + "devtools/client/styleinspector/test/browser_ruleview_guessIndentation.js": 5549, + "devtools/client/styleinspector/test/browser_ruleview_keyframeLineNumbers.js": 5712, + "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_01.js": 6973, + "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_02.js": 6314, + "devtools/client/styleinspector/test/browser_ruleview_livepreview.js": 5638, + "devtools/client/styleinspector/test/browser_ruleview_original-source-link.js": 6729, + "devtools/client/styleinspector/test/browser_ruleview_pseudo-element_01.js": 8406, + "devtools/client/styleinspector/test/browser_ruleview_pseudo-element_02.js": 5555, + "devtools/client/styleinspector/test/browser_ruleview_pseudo_lock_options.js": 6569, + "devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js": 5493, + "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_01.js": 5896, + "devtools/client/styleinspector/test/browser_ruleview_search-filter_01.js": 5743, + "devtools/client/styleinspector/test/browser_ruleview_search-filter_02.js": 5637, + "devtools/client/styleinspector/test/browser_ruleview_selector_highlight.js": 6914, + "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter-computed-list_01.js": 6601, + "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_01.js": 6464, + "devtools/client/styleinspector/test/browser_ruleview_style-editor-link.js": 8055, + "devtools/client/styleinspector/test/browser_ruleview_urls-clickable.js": 6544, + "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles-uneditable.js": 5538, + "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles.js": 22345, + "devtools/client/styleinspector/test/browser_ruleview_user-property-reset.js": 6946, + "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_01.js": 13423, + "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js": 6980, + "devtools/client/styleinspector/test/browser_styleinspector_csslogic-content-stylesheets.js": 8538, + "devtools/client/styleinspector/test/browser_styleinspector_refresh_when_active.js": 5648, + "devtools/client/styleinspector/test/browser_styleinspector_tooltip-background-image.js": 5766, + "devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js": 6276, + "devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js": 5473, + "devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js": 5999, + "devtools/client/webconsole/net/test/mochitest/browser_net_basic.js": 7346, + "devtools/client/webconsole/net/test/mochitest/browser_net_params.js": 8092, + "devtools/client/webconsole/net/test/mochitest/browser_net_post.js": 13463, + "devtools/client/webconsole/net/test/mochitest/browser_net_response.js": 13290, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_batching.js": 12498, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_filters.js": 8292, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_keyboard_accessibility.js": 6584, + "devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_observer_notifications.js": 5927, + "devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js": 6880, + "devtools/client/webconsole/test/browser_bug_862916_console_dir_and_filter_off.js": 9331, + "devtools/client/webconsole/test/browser_bug_865871_variables_view_close_on_esc_key.js": 5556, + "devtools/client/webconsole/test/browser_bug_871156_ctrlw_close_tab.js": 5538, + "devtools/client/webconsole/test/browser_cached_messages.js": 7807, + "devtools/client/webconsole/test/browser_console_addonsdk_loader_exception.js": 6250, + "devtools/client/webconsole/test/browser_console_consolejsm_output.js": 9207, + "devtools/client/webconsole/test/browser_console_filters.js": 7985, + "devtools/client/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js": 12933, + "devtools/client/webconsole/test/browser_console_history_persist.js": 14505, + "devtools/client/webconsole/test/browser_console_iframe_messages.js": 8881, + "devtools/client/webconsole/test/browser_console_native_getters.js": 12508, + "devtools/client/webconsole/test/browser_console_nsiconsolemessage.js": 7781, + "devtools/client/webconsole/test/browser_console_optimized_out_vars.js": 8419, + "devtools/client/webconsole/test/browser_console_private_browsing.js": 13385, + "devtools/client/webconsole/test/browser_console_server_logging.js": 6682, + "devtools/client/webconsole/test/browser_console_variables_view.js": 5339, + "devtools/client/webconsole/test/browser_console_variables_view_dom_nodes.js": 5462, + "devtools/client/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js": 8928, + "devtools/client/webconsole/test/browser_console_variables_view_highlighter.js": 13896, + "devtools/client/webconsole/test/browser_console_variables_view_while_debugging.js": 6877, + "devtools/client/webconsole/test/browser_console_variables_view_while_debugging_and_inspecting.js": 10341, + "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe.js": 8646, + "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe2.js": 6504, + "devtools/client/webconsole/test/browser_jsterm_inspect.js": 12313, + "devtools/client/webconsole/test/browser_warn_user_about_replaced_api.js": 9617, + "devtools/client/webconsole/test/browser_webconsole_autocomplete_crossdomain_iframe.js": 6194, + "devtools/client/webconsole/test/browser_webconsole_autocomplete_in_debugger_stackframe.js": 7078, + "devtools/client/webconsole/test/browser_webconsole_bug_1050691_click_function_to_source.js": 5872, + "devtools/client/webconsole/test/browser_webconsole_bug_593003_iframe_wrong_hud.js": 11213, + "devtools/client/webconsole/test/browser_webconsole_bug_595350_multiple_windows_and_tabs.js": 12443, + "devtools/client/webconsole/test/browser_webconsole_bug_595934_message_categories.js": 11733, + "devtools/client/webconsole/test/browser_webconsole_bug_597103_deactivateHUDForContext_unfocused_window.js": 10313, + "devtools/client/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js": 7099, + "devtools/client/webconsole/test/browser_webconsole_bug_597756_reopen_closed_tab.js": 8357, + "devtools/client/webconsole/test/browser_webconsole_bug_613642_maintain_scroll.js": 6186, + "devtools/client/webconsole/test/browser_webconsole_bug_613642_prune_scroll.js": 6212, + "devtools/client/webconsole/test/browser_webconsole_bug_614793_jsterm_scroll.js": 9602, + "devtools/client/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js": 11251, + "devtools/client/webconsole/test/browser_webconsole_bug_632275_getters_document_width.js": 6846, + "devtools/client/webconsole/test/browser_webconsole_bug_644419_log_limits.js": 5670, + "devtools/client/webconsole/test/browser_webconsole_bug_658368_time_methods.js": 6592, + "devtools/client/webconsole/test/browser_webconsole_bug_659907_console_dir.js": 8414, + "devtools/client/webconsole/test/browser_webconsole_bug_752559_ineffective_iframe_sandbox_warning.js": 23971, + "devtools/client/webconsole/test/browser_webconsole_bug_766001_JS_Console_in_Debugger.js": 13530, + "devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js": 7014, + "devtools/client/webconsole/test/browser_webconsole_cached_autocomplete.js": 5787, + "devtools/client/webconsole/test/browser_webconsole_cd_iframe.js": 8071, + "devtools/client/webconsole/test/browser_webconsole_certificate_messages.js": 5450, + "devtools/client/webconsole/test/browser_webconsole_clear_method.js": 6906, + "devtools/client/webconsole/test/browser_webconsole_clickable_urls.js": 13224, + "devtools/client/webconsole/test/browser_webconsole_closure_inspection.js": 12893, + "devtools/client/webconsole/test/browser_webconsole_console_logging_api.js": 5561, + "devtools/client/webconsole/test/browser_webconsole_console_trace_duplicates.js": 5518, + "devtools/client/webconsole/test/browser_webconsole_count.js": 5331, + "devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js": 7124, + "devtools/client/webconsole/test/browser_webconsole_hsts_invalid-headers.js": 6108, + "devtools/client/webconsole/test/browser_webconsole_input_field_focus_on_panel_select.js": 6674, + "devtools/client/webconsole/test/browser_webconsole_inspect-parsed-documents.js": 5971, + "devtools/client/webconsole/test/browser_webconsole_jsterm.js": 6336, + "devtools/client/webconsole/test/browser_webconsole_live_filtering_on_search_strings.js": 5593, + "devtools/client/webconsole/test/browser_webconsole_netlogging.js": 20548, + "devtools/client/webconsole/test/browser_webconsole_netlogging_reset_filter.js": 5984, + "devtools/client/webconsole/test/browser_webconsole_open-links-without-callback.js": 5544, + "devtools/client/webconsole/test/browser_webconsole_output_01.js": 8287, + "devtools/client/webconsole/test/browser_webconsole_output_02.js": 12091, + "devtools/client/webconsole/test/browser_webconsole_output_03.js": 10914, + "devtools/client/webconsole/test/browser_webconsole_output_04.js": 9597, + "devtools/client/webconsole/test/browser_webconsole_output_05.js": 10954, + "devtools/client/webconsole/test/browser_webconsole_output_06.js": 16496, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js": 9101, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_02.js": 15394, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_03.js": 8259, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_04.js": 12485, + "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_05.js": 11204, + "devtools/client/webconsole/test/browser_webconsole_output_table.js": 5661, + "devtools/client/webconsole/test/browser_webconsole_shows_reqs_in_netmonitor.js": 5527, + "devtools/client/webconsole/test/browser_webconsole_split.js": 23370, + "devtools/client/webconsole/test/browser_webconsole_split_escape_key.js": 8298, + "devtools/client/webconsole/test/browser_webconsole_split_focus.js": 7356, + "devtools/client/webconsole/test/browser_webconsole_split_persist.js": 17739, + "devtools/client/webconsole/test/browser_webconsole_view_source.js": 12130, + "devtools/client/webide/test/browser_tabs.js": 10262, + "devtools/server/tests/browser/browser_markers-cycle-collection.js": 7846, + "devtools/server/tests/browser/browser_storage_dynamic_windows.js": 6285, + "devtools/server/tests/browser/browser_storage_listings.js": 6592, + "devtools/server/tests/browser/browser_webextension_inspected_window.js": 10884 } } \ No newline at end of file diff --git a/testing/runtimes/mochitest-e10s-browser-chrome.runtimes.json b/testing/runtimes/mochitest-e10s-browser-chrome.runtimes.json deleted file mode 100644 index ce0764bf781e..000000000000 --- a/testing/runtimes/mochitest-e10s-browser-chrome.runtimes.json +++ /dev/null @@ -1,477 +0,0 @@ -{ - "excluded_test_average": 747, - "runtimes": { - "addon-sdk/test/browser_sdk_loader_sdk_gui_modules.js": 2554, - "browser-test.js": 4211, - "browser/base/content/test/general/browser_PageMetaData_pushstate.js": 2840, - "browser/base/content/test/general/browser_URLBarSetURI.js": 4224, - "browser/base/content/test/general/browser_aboutAccounts.js": 2207, - "browser/base/content/test/general/browser_aboutHealthReport.js": 1912, - "browser/base/content/test/general/browser_action_keyword.js": 2802, - "browser/base/content/test/general/browser_alltabslistener.js": 2577, - "browser/base/content/test/general/browser_audioTabIcon.js": 17839, - "browser/base/content/test/general/browser_autocomplete_edit_completed.js": 1794, - "browser/base/content/test/general/browser_autocomplete_tag_star_visibility.js": 2040, - "browser/base/content/test/general/browser_bookmark_titles.js": 2479, - "browser/base/content/test/general/browser_bug1003461-switchtab-override.js": 1941, - "browser/base/content/test/general/browser_bug1025195_switchToTabHavingURI_aOpenParams.js": 4626, - "browser/base/content/test/general/browser_bug1045809.js": 2879, - "browser/base/content/test/general/browser_bug1070778.js": 1934, - "browser/base/content/test/general/browser_bug1124271_readerModePinnedTab.js": 1830, - "browser/base/content/test/general/browser_bug304198.js": 4190, - "browser/base/content/test/general/browser_bug386835.js": 4563, - "browser/base/content/test/general/browser_bug406216.js": 3727, - "browser/base/content/test/general/browser_bug416661.js": 1673, - "browser/base/content/test/general/browser_bug419612.js": 1718, - "browser/base/content/test/general/browser_bug422590.js": 5514, - "browser/base/content/test/general/browser_bug424101.js": 2908, - "browser/base/content/test/general/browser_bug427559.js": 1633, - "browser/base/content/test/general/browser_bug432599.js": 1750, - "browser/base/content/test/general/browser_bug460146.js": 3167, - "browser/base/content/test/general/browser_bug462673.js": 2900, - "browser/base/content/test/general/browser_bug495058.js": 5240, - "browser/base/content/test/general/browser_bug553455.js": 29013, - "browser/base/content/test/general/browser_bug561636.js": 8598, - "browser/base/content/test/general/browser_bug565575.js": 1906, - "browser/base/content/test/general/browser_bug567306.js": 3035, - "browser/base/content/test/general/browser_bug575561.js": 10151, - "browser/base/content/test/general/browser_bug575830.js": 1946, - "browser/base/content/test/general/browser_bug581242.js": 1856, - "browser/base/content/test/general/browser_bug590206.js": 10788, - "browser/base/content/test/general/browser_bug592338.js": 4832, - "browser/base/content/test/general/browser_bug623155.js": 2170, - "browser/base/content/test/general/browser_bug623893.js": 3575, - "browser/base/content/test/general/browser_bug647886.js": 1871, - "browser/base/content/test/general/browser_bug655584.js": 1745, - "browser/base/content/test/general/browser_bug676619.js": 11255, - "browser/base/content/test/general/browser_bug719271.js": 4136, - "browser/base/content/test/general/browser_bug734076.js": 3874, - "browser/base/content/test/general/browser_bug735471.js": 2333, - "browser/base/content/test/general/browser_bug763468_perwindowpb.js": 4683, - "browser/base/content/test/general/browser_bug767836_perwindowpb.js": 5688, - "browser/base/content/test/general/browser_bug817947.js": 3113, - "browser/base/content/test/general/browser_bug822367.js": 7886, - "browser/base/content/test/general/browser_bug882977.js": 1812, - "browser/base/content/test/general/browser_bug902156.js": 4439, - "browser/base/content/test/general/browser_bug963945.js": 3282, - "browser/base/content/test/general/browser_bug970746.js": 2266, - "browser/base/content/test/general/browser_contentAreaClick.js": 2285, - "browser/base/content/test/general/browser_contentSearchUI.js": 17017, - "browser/base/content/test/general/browser_contextmenu_childprocess.js": 3428, - "browser/base/content/test/general/browser_datareporting_notification.js": 3646, - "browser/base/content/test/general/browser_discovery.js": 2359, - "browser/base/content/test/general/browser_documentnavigation.js": 5610, - "browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js": 5938, - "browser/base/content/test/general/browser_e10s_chrome_process.js": 7021, - "browser/base/content/test/general/browser_e10s_switchbrowser.js": 10425, - "browser/base/content/test/general/browser_favicon_change_not_in_document.js": 1954, - "browser/base/content/test/general/browser_fxa_oauth.js": 4530, - "browser/base/content/test/general/browser_fxa_web_channel.js": 2648, - "browser/base/content/test/general/browser_fxaccounts.js": 2245, - "browser/base/content/test/general/browser_getshortcutoruri.js": 2530, - "browser/base/content/test/general/browser_identity_UI.js": 14514, - "browser/base/content/test/general/browser_locationBarCommand.js": 1841, - "browser/base/content/test/general/browser_locationBarExternalLoad.js": 2202, - "browser/base/content/test/general/browser_mcb_redirect.js": 5641, - "browser/base/content/test/general/browser_mixedContentFromOnunload.js": 2503, - "browser/base/content/test/general/browser_mixedcontent_securityflags.js": 2697, - "browser/base/content/test/general/browser_no_mcb_on_http_site.js": 2745, - "browser/base/content/test/general/browser_overflowScroll.js": 3765, - "browser/base/content/test/general/browser_pageInfo.js": 6077, - "browser/base/content/test/general/browser_parsable_script.js": 8368, - "browser/base/content/test/general/browser_plainTextLinks.js": 3040, - "browser/base/content/test/general/browser_popupUI.js": 1687, - "browser/base/content/test/general/browser_private_browsing_window.js": 2689, - "browser/base/content/test/general/browser_purgehistory_clears_sh.js": 2329, - "browser/base/content/test/general/browser_readerMode.js": 3268, - "browser/base/content/test/general/browser_remoteTroubleshoot.js": 5314, - "browser/base/content/test/general/browser_restore_isAppTab.js": 4997, - "browser/base/content/test/general/browser_sanitize-timespans.js": 4520, - "browser/base/content/test/general/browser_sanitizeDialog.js": 16259, - "browser/base/content/test/general/browser_selectpopup.js": 6571, - "browser/base/content/test/general/browser_ssl_error_reports.js": 4750, - "browser/base/content/test/general/browser_star_hsts.js": 1688, - "browser/base/content/test/general/browser_tabMatchesInAwesomebar.js": 12116, - "browser/base/content/test/general/browser_tab_detach_restore.js": 4382, - "browser/base/content/test/general/browser_tab_drag_drop_perwindow.js": 11280, - "browser/base/content/test/general/browser_tab_dragdrop.js": 3204, - "browser/base/content/test/general/browser_tab_dragdrop2.js": 4262, - "browser/base/content/test/general/browser_tabfocus.js": 4795, - "browser/base/content/test/general/browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js": 15207, - "browser/base/content/test/general/browser_trackingUI_1.js": 8163, - "browser/base/content/test/general/browser_trackingUI_2.js": 5834, - "browser/base/content/test/general/browser_trackingUI_4.js": 6840, - "browser/base/content/test/general/browser_trackingUI_5.js": 8658, - "browser/base/content/test/general/browser_trackingUI_telemetry.js": 10737, - "browser/base/content/test/general/browser_typeAheadFind.js": 2246, - "browser/base/content/test/general/browser_urlbarCopying.js": 4153, - "browser/base/content/test/general/browser_urlbarDelete.js": 2620, - "browser/base/content/test/general/browser_urlbarEnter.js": 1850, - "browser/base/content/test/general/browser_urlbarSearchSingleWordNotification.js": 12630, - "browser/base/content/test/general/browser_urlbarSearchSuggestionsNotification.js": 4686, - "browser/base/content/test/general/browser_urlbarStop.js": 1708, - "browser/base/content/test/general/browser_urlbar_autoFill_backspaced.js": 5482, - "browser/base/content/test/general/browser_urlbar_searchsettings.js": 1868, - "browser/base/content/test/general/browser_utilityOverlay.js": 1965, - "browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js": 22503, - "browser/base/content/test/general/browser_web_channel.js": 3565, - "browser/base/content/test/general/browser_windowactivation.js": 4270, - "browser/base/content/test/general/browser_wyciwyg_urlbarCopying.js": 1867, - "browser/base/content/test/plugins/browser_CTP_crashreporting.js": 4657, - "browser/base/content/test/plugins/browser_CTP_data_urls.js": 3902, - "browser/base/content/test/plugins/browser_CTP_drag_drop.js": 4455, - "browser/base/content/test/plugins/browser_CTP_notificationBar.js": 4082, - "browser/base/content/test/plugins/browser_CTP_outsideScrollArea.js": 1753, - "browser/base/content/test/plugins/browser_CTP_remove_navigate.js": 2657, - "browser/base/content/test/plugins/browser_CTP_zoom.js": 2166, - "browser/base/content/test/plugins/browser_blocking.js": 6704, - "browser/base/content/test/plugins/browser_blocklist_content.js": 2603, - "browser/base/content/test/plugins/browser_bug743421.js": 1641, - "browser/base/content/test/plugins/browser_bug812562.js": 1676, - "browser/base/content/test/plugins/browser_clearplugindata.js": 1781, - "browser/base/content/test/plugins/browser_pageInfo_plugins.js": 4447, - "browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js": 3329, - "browser/base/content/test/plugins/browser_plugin_infolink.js": 2380, - "browser/base/content/test/plugins/browser_pluginnotification.js": 9075, - "browser/base/content/test/plugins/browser_plugins_added_dynamically.js": 2045, - "browser/base/content/test/plugins/browser_private_clicktoplay.js": 8091, - "browser/base/content/test/referrer/browser_referrer_middle_click.js": 10838, - "browser/base/content/test/referrer/browser_referrer_open_link_in_private.js": 2921, - "browser/base/content/test/referrer/browser_referrer_open_link_in_tab.js": 1864, - "browser/base/content/test/referrer/browser_referrer_open_link_in_window.js": 2908, - "browser/base/content/test/referrer/browser_referrer_simple_click.js": 7930, - "browser/base/content/test/social/browser_aboutHome_activation.js": 5747, - "browser/base/content/test/social/browser_addons.js": 3848, - "browser/base/content/test/social/browser_blocklist.js": 1836, - "browser/base/content/test/social/browser_social_activation.js": 5577, - "browser/base/content/test/social/browser_social_chatwindow.js": 5925, - "browser/base/content/test/social/browser_social_chatwindow_resize.js": 6469, - "browser/base/content/test/social/browser_social_errorPage.js": 3738, - "browser/base/content/test/social/browser_social_flyout.js": 1625, - "browser/base/content/test/social/browser_social_marks.js": 14079, - "browser/base/content/test/social/browser_social_perwindowPB.js": 4656, - "browser/base/content/test/social/browser_social_status.js": 3687, - "browser/base/content/test/social/browser_social_window.js": 14805, - "browser/components/customizableui/test/browser_1003588_no_specials_in_panel.js": 5252, - "browser/components/customizableui/test/browser_1007336_lwthemes_in_customize_mode.js": 4551, - "browser/components/customizableui/test/browser_1008559_anchor_undo_restore.js": 9219, - "browser/components/customizableui/test/browser_1058573_showToolbarsDropdown.js": 3746, - "browser/components/customizableui/test/browser_1087303_button_preferences.js": 2962, - "browser/components/customizableui/test/browser_1089591_still_customizable_after_reset.js": 5446, - "browser/components/customizableui/test/browser_876926_customize_mode_wrapping.js": 9159, - "browser/components/customizableui/test/browser_876944_customize_mode_create_destroy.js": 3701, - "browser/components/customizableui/test/browser_878452_drag_to_panel.js": 5000, - "browser/components/customizableui/test/browser_880164_customization_context_menus.js": 14506, - "browser/components/customizableui/test/browser_880382_drag_wide_widgets_in_panel.js": 8888, - "browser/components/customizableui/test/browser_885052_customize_mode_observers_disabed.js": 4018, - "browser/components/customizableui/test/browser_885530_showInPrivateBrowsing.js": 8991, - "browser/components/customizableui/test/browser_889120_customize_tab_merging.js": 5357, - "browser/components/customizableui/test/browser_890140_orphaned_placeholders.js": 14225, - "browser/components/customizableui/test/browser_914863_disabled_help_quit_buttons.js": 3750, - "browser/components/customizableui/test/browser_918049_skipintoolbarset_dnd.js": 4348, - "browser/components/customizableui/test/browser_923857_customize_mode_event_wrapping_during_reset.js": 5440, - "browser/components/customizableui/test/browser_927717_customize_drag_empty_toolbar.js": 4145, - "browser/components/customizableui/test/browser_934113_menubar_removable.js": 3566, - "browser/components/customizableui/test/browser_934951_zoom_in_toolbar.js": 3091, - "browser/components/customizableui/test/browser_938980_navbar_collapsed.js": 12068, - "browser/components/customizableui/test/browser_940107_home_button_in_bookmarks_toolbar.js": 4183, - "browser/components/customizableui/test/browser_940307_panel_click_closure_handling.js": 1841, - "browser/components/customizableui/test/browser_940946_removable_from_navbar_customizemode.js": 3495, - "browser/components/customizableui/test/browser_944887_destroyWidget_should_destroy_in_palette.js": 3354, - "browser/components/customizableui/test/browser_956602_remove_special_widget.js": 3466, - "browser/components/customizableui/test/browser_962884_opt_in_disable_hyphens.js": 3897, - "browser/components/customizableui/test/browser_963639_customizing_attribute_non_customizable_toolbar.js": 4231, - "browser/components/customizableui/test/browser_967000_button_feeds.js": 3059, - "browser/components/customizableui/test/browser_967000_button_sync.js": 4501, - "browser/components/customizableui/test/browser_967000_button_tabView.js": 2012, - "browser/components/customizableui/test/browser_968565_insert_before_hidden_items.js": 4045, - "browser/components/customizableui/test/browser_969661_character_encoding_navbar_disabled.js": 4381, - "browser/components/customizableui/test/browser_970511_undo_restore_default.js": 11836, - "browser/components/customizableui/test/browser_973932_addonbar_currentset.js": 4552, - "browser/components/customizableui/test/browser_975719_customtoolbars_behaviour.js": 10552, - "browser/components/customizableui/test/browser_978084_dragEnd_after_move.js": 6170, - "browser/components/customizableui/test/browser_988072_sidebar_events.js": 2433, - "browser/components/customizableui/test/browser_993322_widget_notoolbar.js": 4008, - "browser/components/customizableui/test/browser_995164_registerArea_during_customize_mode.js": 9299, - "browser/components/customizableui/test/browser_bootstrapped_custom_toolbar.js": 9881, - "browser/components/loop/test/mochitest/browser_LoopContacts.js": 2779, - "browser/components/loop/test/mochitest/browser_fxa_login.js": 9740, - "browser/components/loop/test/mochitest/browser_mozLoop_context.js": 2544, - "browser/components/loop/test/mochitest/browser_toolbarbutton.js": 2713, - "browser/components/places/tests/browser/browser_0_library_left_pane_migration.js": 2116, - "browser/components/places/tests/browser/browser_410196_paste_into_tags.js": 2443, - "browser/components/places/tests/browser/browser_416459_cut.js": 1862, - "browser/components/places/tests/browser/browser_bookmarkProperties_addKeywordForThisSearch.js": 2108, - "browser/components/places/tests/browser/browser_bookmarklet_windowOpen.js": 1698, - "browser/components/places/tests/browser/browser_bookmarksProperties.js": 4611, - "browser/components/places/tests/browser/browser_forgetthissite_single.js": 2204, - "browser/components/places/tests/browser/browser_library_commands.js": 4602, - "browser/components/places/tests/browser/browser_library_infoBox.js": 1624, - "browser/components/places/tests/browser/browser_library_middleclick.js": 3430, - "browser/components/places/tests/browser/browser_library_views_liveupdate.js": 6792, - "browser/components/places/tests/browser/browser_sort_in_library.js": 2336, - "browser/components/places/tests/browser/browser_views_liveupdate.js": 3377, - "browser/components/preferences/in-content/tests/browser_advanced_update.js": 2216, - "browser/components/preferences/in-content/tests/browser_basic_rebuild_fonts_test.js": 1924, - "browser/components/preferences/in-content/tests/browser_bug1018066_resetScrollPosition.js": 1739, - "browser/components/preferences/in-content/tests/browser_bug1020245_openPreferences_to_paneContent.js": 6512, - "browser/components/preferences/in-content/tests/browser_bug410900.js": 1637, - "browser/components/preferences/in-content/tests/browser_bug731866.js": 3152, - "browser/components/preferences/in-content/tests/browser_connection.js": 2032, - "browser/components/preferences/in-content/tests/browser_connection_bug388287.js": 4611, - "browser/components/preferences/in-content/tests/browser_healthreport.js": 1710, - "browser/components/preferences/in-content/tests/browser_privacypane_1.js": 10682, - "browser/components/preferences/in-content/tests/browser_privacypane_3.js": 8812, - "browser/components/preferences/in-content/tests/browser_privacypane_4.js": 13372, - "browser/components/preferences/in-content/tests/browser_privacypane_5.js": 7670, - "browser/components/preferences/in-content/tests/browser_proxy_backup.js": 1984, - "browser/components/preferences/in-content/tests/browser_sanitizeOnShutdown_prefLocked.js": 3131, - "browser/components/preferences/in-content/tests/browser_searchsuggestions.js": 2653, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_DownloadLastDirWithCPS.js": 5391, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_about.js": 4419, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutHomeButtonAfterWindowClose.js": 2660, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_aboutSessionRestore.js": 2465, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cache.js": 2418, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_certexceptionsui.js": 1744, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_concurrent.js": 3048, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_cookieacceptdialog.js": 3889, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_crh.js": 3486, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir.js": 3168, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_c.js": 3255, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_downloadLastDir_toggle.js": 7264, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_geoprompt.js": 5222, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_lastpbcontextexited.js": 4100, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage.js": 2579, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_localStorage_before_after.js": 3485, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_noSessionRestoreMenuOption.js": 1884, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js": 1768, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_opendir.js": 1669, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placesTitleNoUpdate.js": 2484, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_placestitle.js": 5091, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_popupblocker.js": 6083, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_protocolhandler.js": 4222, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_sidebar.js": 9045, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_ui.js": 2325, - "browser/components/privatebrowsing/test/browser/browser_privatebrowsing_urlbarfocus.js": 2567, - "browser/components/search/test/browser_healthreport.js": 3865, - "browser/components/search/test/browser_searchbar_keyboard_navigation.js": 2472, - "browser/components/search/test/browser_searchbar_smallpanel_keyboard_navigation.js": 2219, - "browser/components/search/test/browser_webapi.js": 12806, - "browser/components/sessionstore/test/browser_339445.js": 2476, - "browser/components/sessionstore/test/browser_354894_perwindowpb.js": 20909, - "browser/components/sessionstore/test/browser_393716.js": 1845, - "browser/components/sessionstore/test/browser_394759_behavior.js": 19185, - "browser/components/sessionstore/test/browser_394759_perwindowpb.js": 5535, - "browser/components/sessionstore/test/browser_423132.js": 2137, - "browser/components/sessionstore/test/browser_463206.js": 1775, - "browser/components/sessionstore/test/browser_480893.js": 1758, - "browser/components/sessionstore/test/browser_490040.js": 5122, - "browser/components/sessionstore/test/browser_491168.js": 2529, - "browser/components/sessionstore/test/browser_495495.js": 4187, - "browser/components/sessionstore/test/browser_500328.js": 2244, - "browser/components/sessionstore/test/browser_522545.js": 21877, - "browser/components/sessionstore/test/browser_524745.js": 1851, - "browser/components/sessionstore/test/browser_586068-apptabs.js": 4347, - "browser/components/sessionstore/test/browser_586068-apptabs_ondemand.js": 2807, - "browser/components/sessionstore/test/browser_586068-browser_state_interrupted.js": 8385, - "browser/components/sessionstore/test/browser_586068-cascade.js": 4242, - "browser/components/sessionstore/test/browser_586068-multi_window.js": 6779, - "browser/components/sessionstore/test/browser_586068-reload.js": 7318, - "browser/components/sessionstore/test/browser_586068-select.js": 4549, - "browser/components/sessionstore/test/browser_586068-window_state.js": 6371, - "browser/components/sessionstore/test/browser_586068-window_state_override.js": 5057, - "browser/components/sessionstore/test/browser_590268.js": 8449, - "browser/components/sessionstore/test/browser_595601-restore_hidden.js": 10689, - "browser/components/sessionstore/test/browser_599909.js": 2039, - "browser/components/sessionstore/test/browser_600545.js": 8697, - "browser/components/sessionstore/test/browser_601955.js": 5448, - "browser/components/sessionstore/test/browser_607016.js": 2212, - "browser/components/sessionstore/test/browser_615394-SSWindowState_events.js": 27244, - "browser/components/sessionstore/test/browser_618151.js": 2007, - "browser/components/sessionstore/test/browser_625016.js": 2100, - "browser/components/sessionstore/test/browser_635418.js": 5097, - "browser/components/sessionstore/test/browser_636279.js": 2921, - "browser/components/sessionstore/test/browser_637020.js": 3204, - "browser/components/sessionstore/test/browser_644409-scratchpads.js": 3774, - "browser/components/sessionstore/test/browser_659591.js": 1627, - "browser/components/sessionstore/test/browser_662743.js": 3843, - "browser/components/sessionstore/test/browser_687710_2.js": 2074, - "browser/components/sessionstore/test/browser_705597.js": 3071, - "browser/components/sessionstore/test/browser_911547.js": 1990, - "browser/components/sessionstore/test/browser_aboutSessionRestore.js": 2066, - "browser/components/sessionstore/test/browser_async_duplicate_tab.js": 2474, - "browser/components/sessionstore/test/browser_async_flushes.js": 2615, - "browser/components/sessionstore/test/browser_async_remove_tab.js": 7131, - "browser/components/sessionstore/test/browser_backup_recovery.js": 6746, - "browser/components/sessionstore/test/browser_broadcast.js": 8086, - "browser/components/sessionstore/test/browser_cleaner.js": 8011, - "browser/components/sessionstore/test/browser_cookies.js": 16823, - "browser/components/sessionstore/test/browser_crashedTabs.js": 19032, - "browser/components/sessionstore/test/browser_dying_cache.js": 2558, - "browser/components/sessionstore/test/browser_formdata.js": 7023, - "browser/components/sessionstore/test/browser_formdata_cc.js": 21573, - "browser/components/sessionstore/test/browser_formdata_format.js": 10607, - "browser/components/sessionstore/test/browser_formdata_xpath.js": 2359, - "browser/components/sessionstore/test/browser_frame_history.js": 4759, - "browser/components/sessionstore/test/browser_frametree.js": 2651, - "browser/components/sessionstore/test/browser_history_persist.js": 2527, - "browser/components/sessionstore/test/browser_pageStyle.js": 6164, - "browser/components/sessionstore/test/browser_privatetabs.js": 4930, - "browser/components/sessionstore/test/browser_replace_load.js": 2288, - "browser/components/sessionstore/test/browser_restore_redirect.js": 1819, - "browser/components/sessionstore/test/browser_scrollPositions.js": 2405, - "browser/components/sessionstore/test/browser_sessionHistory.js": 8139, - "browser/components/sessionstore/test/browser_sessionStorage.js": 6320, - "browser/components/sessionstore/test/browser_switch_remoteness.js": 4237, - "browser/components/translation/test/browser_translation_bing.js": 2784, - "browser/components/translation/test/browser_translation_exceptions.js": 4250, - "browser/components/translation/test/browser_translation_yandex.js": 2448, - "browser/components/uitour/test/browser_trackingProtection.js": 3656, - "browser/modules/test/browser_BrowserUITelemetry_buckets.js": 4349, - "browser/modules/test/browser_SelfSupportBackend.js": 5837, - "docshell/test/browser/browser_bug441169.js": 1897, - "docshell/test/browser/browser_timelineMarkers-02.js": 6703, - "docshell/test/browser/browser_timelineMarkers-03.js": 6079, - "docshell/test/browser/browser_uriFixupIntegration.js": 1827, - "docshell/test/navigation/browser_test-content-chromeflags.js": 2854, - "dom/base/test/browser_messagemanager_loadprocessscript.js": 3010, - "dom/base/test/browser_use_counters.js": 11644, - "dom/html/test/browser_DOMDocElementInserted.js": 1762, - "dom/html/test/browser_bug1108547.js": 12538, - "dom/html/test/browser_bug592641.js": 1674, - "dom/ipc/tests/browser_domainPolicy.js": 9844, - "dom/manifest/test/browser_ManifestFinder_browserHasManifestLink.js": 3823, - "dom/manifest/test/browser_ManifestObtainer_obtain.js": 20330, - "dom/security/test/csp/browser_test_web_manifest.js": 8897, - "dom/workers/test/serviceworkers/browser_force_refresh.js": 3102, - "layout/base/tests/browser_disableDialogs_onbeforeunload.js": 3828, - "netwerk/test/browser/browser_child_resource.js": 11619, - "security/manager/ssl/tests/mochitest/browser/browser_bug627234_perwindowpb.js": 3917, - "testing/mochitest/tests/browser/browser_BrowserTestUtils.js": 2136, - "testing/mochitest/tests/browser/browser_async.js": 10051, - "testing/mochitest/tests/browser/browser_browserLoaded_content_loaded.js": 2567, - "testing/mochitest/tests/browser/browser_waitForFocus.js": 3369, - "toolkit/components/aboutperformance/tests/browser/browser_aboutperformance.js": 14162, - "toolkit/components/addoncompat/tests/browser/browser_addonShims.js": 7348, - "toolkit/components/passwordmgr/test/browser/browser_DOMFormHasPassword.js": 2141, - "toolkit/components/passwordmgr/test/browser/browser_context_menu.js": 5928, - "toolkit/components/passwordmgr/test/browser/browser_passwordmgrdlg.js": 7758, - "toolkit/components/perfmonitoring/tests/browser/browser_AddonWatcher.js": 14837, - "toolkit/components/perfmonitoring/tests/browser/browser_compartments.js": 2440, - "toolkit/components/startup/tests/browser/browser_crash_detection.js": 35043, - "toolkit/components/thumbnails/test/browser_thumbnails_bg_bad_url.js": 1636, - "toolkit/components/thumbnails/test/browser_thumbnails_bg_destroy_browser.js": 2561, - "toolkit/components/thumbnails/test/browser_thumbnails_bug818225.js": 1867, - "toolkit/components/thumbnails/test/browser_thumbnails_privacy.js": 8904, - "toolkit/components/thumbnails/test/browser_thumbnails_storage.js": 4256, - "toolkit/components/viewsource/test/browser/browser_bug464222.js": 2931, - "toolkit/components/viewsource/test/browser/browser_bug713810.js": 2197, - "toolkit/components/viewsource/test/browser/browser_contextmenu.js": 2038, - "toolkit/components/viewsource/test/browser/browser_gotoline.js": 1639, - "toolkit/content/tests/browser/browser_bug1170531.js": 3442, - "toolkit/content/tests/browser/browser_content_url_annotation.js": 1926, - "toolkit/content/tests/browser/browser_mediaPlayback.js": 2241, - "toolkit/content/tests/browser/browser_mediaPlayback_mute.js": 9962, - "toolkit/modules/tests/browser/browser_RemotePageManager.js": 8349, - "toolkit/modules/tests/browser/browser_RemoteWebNavigation.js": 2925, - "toolkit/modules/tests/browser/browser_WebRequest.js": 3540, - "toolkit/modules/tests/browser/browser_WebRequest_filtering.js": 1864, - "toolkit/mozapps/extensions/test/browser/browser_bug557943.js": 2647, - "toolkit/mozapps/extensions/test/browser/browser_bug562854.js": 4289, - "toolkit/mozapps/extensions/test/browser/browser_bug562899.js": 3338, - "toolkit/mozapps/extensions/test/browser/browser_bug567127.js": 1799, - "toolkit/mozapps/extensions/test/browser/browser_bug567137.js": 5013, - "toolkit/mozapps/extensions/test/browser/browser_bug572561.js": 4223, - "toolkit/mozapps/extensions/test/browser/browser_bug577990.js": 11223, - "toolkit/mozapps/extensions/test/browser/browser_bug580298.js": 2531, - "toolkit/mozapps/extensions/test/browser/browser_bug581076.js": 7356, - "toolkit/mozapps/extensions/test/browser/browser_bug586574.js": 2597, - "toolkit/mozapps/extensions/test/browser/browser_bug587970.js": 2140, - "toolkit/mozapps/extensions/test/browser/browser_bug590347.js": 2431, - "toolkit/mozapps/extensions/test/browser/browser_bug591465.js": 5415, - "toolkit/mozapps/extensions/test/browser/browser_bug591663.js": 3859, - "toolkit/mozapps/extensions/test/browser/browser_bug596336.js": 5289, - "toolkit/mozapps/extensions/test/browser/browser_bug608316.js": 2270, - "toolkit/mozapps/extensions/test/browser/browser_bug610764.js": 2493, - "toolkit/mozapps/extensions/test/browser/browser_bug618502.js": 3113, - "toolkit/mozapps/extensions/test/browser/browser_bug679604.js": 2850, - "toolkit/mozapps/extensions/test/browser/browser_bug714593.js": 2361, - "toolkit/mozapps/extensions/test/browser/browser_cancelCompatCheck.js": 16712, - "toolkit/mozapps/extensions/test/browser/browser_debug_button.js": 5992, - "toolkit/mozapps/extensions/test/browser/browser_details.js": 19215, - "toolkit/mozapps/extensions/test/browser/browser_dragdrop.js": 5582, - "toolkit/mozapps/extensions/test/browser/browser_eula.js": 2989, - "toolkit/mozapps/extensions/test/browser/browser_globalwarnings.js": 3013, - "toolkit/mozapps/extensions/test/browser/browser_gmpProvider.js": 25182, - "toolkit/mozapps/extensions/test/browser/browser_hotfix.js": 2868, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings.js": 8018, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_custom.js": 3102, - "toolkit/mozapps/extensions/test/browser/browser_inlinesettings_info.js": 6554, - "toolkit/mozapps/extensions/test/browser/browser_install.js": 13749, - "toolkit/mozapps/extensions/test/browser/browser_installssl.js": 19433, - "toolkit/mozapps/extensions/test/browser/browser_list.js": 9622, - "toolkit/mozapps/extensions/test/browser/browser_manualupdates.js": 4487, - "toolkit/mozapps/extensions/test/browser/browser_pluginprefs.js": 2249, - "toolkit/mozapps/extensions/test/browser/browser_recentupdates.js": 5972, - "toolkit/mozapps/extensions/test/browser/browser_searching.js": 16018, - "toolkit/mozapps/extensions/test/browser/browser_select_compatoverrides.js": 2219, - "toolkit/mozapps/extensions/test/browser/browser_select_confirm.js": 2392, - "toolkit/mozapps/extensions/test/browser/browser_select_selection.js": 2508, - "toolkit/mozapps/extensions/test/browser/browser_select_update.js": 2513, - "toolkit/mozapps/extensions/test/browser/browser_sorting.js": 4389, - "toolkit/mozapps/extensions/test/browser/browser_sorting_plugins.js": 2520, - "toolkit/mozapps/extensions/test/browser/browser_updatessl.js": 23691, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug557943.js": 2424, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562854.js": 3732, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562899.js": 2931, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug562992.js": 1691, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug567137.js": 4712, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug572561.js": 3593, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug577990.js": 9281, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug580298.js": 2234, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug581076.js": 6196, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug586574.js": 2407, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug587970.js": 1726, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug590347.js": 2051, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591465.js": 4933, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug591663.js": 3218, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug596336.js": 4889, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug608316.js": 2149, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug610764.js": 2141, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug618502.js": 2328, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug679604.js": 2233, - "toolkit/mozapps/extensions/test/browser/test-window/browser_bug714593.js": 1970, - "toolkit/mozapps/extensions/test/browser/test-window/browser_debug_button.js": 5317, - "toolkit/mozapps/extensions/test/browser/test-window/browser_details.js": 18056, - "toolkit/mozapps/extensions/test/browser/test-window/browser_dragdrop.js": 3891, - "toolkit/mozapps/extensions/test/browser/test-window/browser_eula.js": 2525, - "toolkit/mozapps/extensions/test/browser/test-window/browser_globalwarnings.js": 2797, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings.js": 7320, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_custom.js": 2855, - "toolkit/mozapps/extensions/test/browser/test-window/browser_inlinesettings_info.js": 6187, - "toolkit/mozapps/extensions/test/browser/test-window/browser_install.js": 12333, - "toolkit/mozapps/extensions/test/browser/test-window/browser_list.js": 9874, - "toolkit/mozapps/extensions/test/browser/test-window/browser_manualupdates.js": 4217, - "toolkit/mozapps/extensions/test/browser/test-window/browser_pluginprefs.js": 2261, - "toolkit/mozapps/extensions/test/browser/test-window/browser_recentupdates.js": 5563, - "toolkit/mozapps/extensions/test/browser/test-window/browser_searching.js": 14966, - "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting.js": 4540, - "toolkit/mozapps/extensions/test/browser/test-window/browser_sorting_plugins.js": 2573, - "toolkit/mozapps/extensions/test/xpinstall/browser_auth.js": 3526, - "toolkit/mozapps/extensions/test/xpinstall/browser_auth4.js": 1996, - "toolkit/mozapps/extensions/test/xpinstall/browser_cancel.js": 1659, - "toolkit/mozapps/extensions/test/xpinstall/browser_concurrent_installs.js": 2683, - "toolkit/mozapps/extensions/test/xpinstall/browser_cookies2.js": 1732, - "toolkit/mozapps/extensions/test/xpinstall/browser_hash.js": 1676, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash.js": 1791, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash3.js": 1739, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash5.js": 1836, - "toolkit/mozapps/extensions/test/xpinstall/browser_httphash6.js": 2126, - "toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway.js": 1621, - "toolkit/mozapps/extensions/test/xpinstall/browser_navigateaway4.js": 1669, - "toolkit/mozapps/extensions/test/xpinstall/browser_relative.js": 1700, - "toolkit/mozapps/extensions/test/xpinstall/browser_signed_multiple.js": 2065, - "toolkit/mozapps/extensions/test/xpinstall/browser_signed_naming.js": 1783, - "toolkit/mozapps/extensions/test/xpinstall/browser_unsigned_trigger_iframe.js": 1729 - } -} \ No newline at end of file diff --git a/testing/runtimes/mochitest-e10s-devtools-chrome.runtimes.json b/testing/runtimes/mochitest-e10s-devtools-chrome.runtimes.json deleted file mode 100644 index 37621b5f5f91..000000000000 --- a/testing/runtimes/mochitest-e10s-devtools-chrome.runtimes.json +++ /dev/null @@ -1,677 +0,0 @@ -{ - "excluded_test_average": 1680, - "runtimes": { - "devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js": 12285, - "devtools/client/animationinspector/test/browser_animation_iterationCount_hidden_by_default.js": 5435, - "devtools/client/animationinspector/test/browser_animation_panel_exists.js": 4363, - "devtools/client/animationinspector/test/browser_animation_participate_in_inspector_update.js": 8931, - "devtools/client/animationinspector/test/browser_animation_play_pause_button.js": 6211, - "devtools/client/animationinspector/test/browser_animation_playerFronts_are_refreshed.js": 5595, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_appear_on_panel_init.js": 8908, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_compositor_icon.js": 5493, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_destroy.js": 5814, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_disables_on_finished.js": 9653, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_dont_show_time_after_duration.js": 7312, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_have_control_buttons.js": 6095, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_meta_data.js": 5636, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_delayed.js": 5410, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_enabled.js": 8588, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_scrubber_moves.js": 6014, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_state_after_pause.js": 5654, - "devtools/client/animationinspector/test/browser_animation_playerWidgets_target_nodes.js": 8359, - "devtools/client/animationinspector/test/browser_animation_rate_select_shows_presets.js": 5730, - "devtools/client/animationinspector/test/browser_animation_refresh_on_added_animation.js": 8991, - "devtools/client/animationinspector/test/browser_animation_refresh_on_removed_animation.js": 12190, - "devtools/client/animationinspector/test/browser_animation_refresh_when_active.js": 9913, - "devtools/client/animationinspector/test/browser_animation_same_nb_of_playerWidgets_and_playerFronts.js": 9449, - "devtools/client/animationinspector/test/browser_animation_setting_currentTime_works_and_pauses.js": 6998, - "devtools/client/animationinspector/test/browser_animation_setting_playbackRate_works.js": 5559, - "devtools/client/animationinspector/test/browser_animation_shows_player_on_valid_node.js": 8780, - "devtools/client/animationinspector/test/browser_animation_target_highlight_select.js": 13841, - "devtools/client/animationinspector/test/browser_animation_timeline_displays_with_pref.js": 4629, - "devtools/client/animationinspector/test/browser_animation_timeline_header.js": 5449, - "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_exists.js": 5453, - "devtools/client/animationinspector/test/browser_animation_timeline_scrubber_movable.js": 4118, - "devtools/client/animationinspector/test/browser_animation_timeline_shows_delay.js": 4794, - "devtools/client/animationinspector/test/browser_animation_timeline_shows_iterations.js": 4800, - "devtools/client/animationinspector/test/browser_animation_timeline_ui.js": 5451, - "devtools/client/animationinspector/test/browser_animation_toggle_button_resets_on_navigate.js": 6372, - "devtools/client/animationinspector/test/browser_animation_toggle_button_toggles_animations.js": 6716, - "devtools/client/animationinspector/test/browser_animation_toggle_button_updates_playerWidgets.js": 6231, - "devtools/client/animationinspector/test/browser_animation_toolbar_exists.js": 5268, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_changes.js": 6050, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_data_changes.js": 10907, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_rate_changes.js": 6160, - "devtools/client/animationinspector/test/browser_animation_ui_updates_when_animation_time_changes.js": 6306, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-highlight.js": 4223, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-search.js": 3325, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-01.js": 4689, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-call-stack-02.js": 4009, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-clear.js": 3030, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-img-thumbnails-02.js": 3493, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-record-02.js": 3055, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-reload-02.js": 3316, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-slider-02.js": 3935, - "devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js": 3796, - "devtools/client/debugger/test/browser_dbg_aaa_run_first_leaktest.js": 4702, - "devtools/client/debugger/test/browser_dbg_addon-panels.js": 3745, - "devtools/client/debugger/test/browser_dbg_addon-sources.js": 4264, - "devtools/client/debugger/test/browser_dbg_auto-pretty-print-01.js": 3642, - "devtools/client/debugger/test/browser_dbg_blackboxing-01.js": 3107, - "devtools/client/debugger/test/browser_dbg_blackboxing-02.js": 3357, - "devtools/client/debugger/test/browser_dbg_blackboxing-03.js": 3337, - "devtools/client/debugger/test/browser_dbg_blackboxing-04.js": 3350, - "devtools/client/debugger/test/browser_dbg_blackboxing-06.js": 3374, - "devtools/client/debugger/test/browser_dbg_breadcrumbs-access.js": 3612, - "devtools/client/debugger/test/browser_dbg_break-in-anon.js": 3008, - "devtools/client/debugger/test/browser_dbg_break-on-dom-01.js": 3399, - "devtools/client/debugger/test/browser_dbg_break-on-dom-02.js": 5571, - "devtools/client/debugger/test/browser_dbg_break-on-dom-03.js": 3066, - "devtools/client/debugger/test/browser_dbg_break-on-dom-04.js": 3189, - "devtools/client/debugger/test/browser_dbg_break-on-dom-05.js": 3368, - "devtools/client/debugger/test/browser_dbg_break-on-dom-06.js": 4827, - "devtools/client/debugger/test/browser_dbg_break-on-dom-08.js": 3440, - "devtools/client/debugger/test/browser_dbg_breakpoints-actual-location.js": 3252, - "devtools/client/debugger/test/browser_dbg_breakpoints-actual-location2.js": 4019, - "devtools/client/debugger/test/browser_dbg_breakpoints-condition-thrown-message.js": 4274, - "devtools/client/debugger/test/browser_dbg_breakpoints-contextmenu-add.js": 3551, - "devtools/client/debugger/test/browser_dbg_breakpoints-contextmenu.js": 10987, - "devtools/client/debugger/test/browser_dbg_breakpoints-editor.js": 3506, - "devtools/client/debugger/test/browser_dbg_breakpoints-highlight.js": 3460, - "devtools/client/debugger/test/browser_dbg_breakpoints-new-script.js": 3579, - "devtools/client/debugger/test/browser_dbg_breakpoints-other-tabs.js": 5073, - "devtools/client/debugger/test/browser_dbg_breakpoints-pane.js": 3671, - "devtools/client/debugger/test/browser_dbg_breakpoints-reload.js": 3893, - "devtools/client/debugger/test/browser_dbg_bug-896139.js": 3970, - "devtools/client/debugger/test/browser_dbg_closure-inspection.js": 7462, - "devtools/client/debugger/test/browser_dbg_cmd-blackbox.js": 4720, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-01.js": 9986, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-02.js": 4160, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-03.js": 3447, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-04.js": 4374, - "devtools/client/debugger/test/browser_dbg_conditional-breakpoints-05.js": 5768, - "devtools/client/debugger/test/browser_dbg_console-eval.js": 3458, - "devtools/client/debugger/test/browser_dbg_console-named-eval.js": 3284, - "devtools/client/debugger/test/browser_dbg_controller-evaluate-01.js": 3531, - "devtools/client/debugger/test/browser_dbg_controller-evaluate-02.js": 3443, - "devtools/client/debugger/test/browser_dbg_editor-contextmenu.js": 3222, - "devtools/client/debugger/test/browser_dbg_editor-mode.js": 3422, - "devtools/client/debugger/test/browser_dbg_file-reload.js": 3426, - "devtools/client/debugger/test/browser_dbg_function-display-name.js": 3522, - "devtools/client/debugger/test/browser_dbg_host-layout.js": 13617, - "devtools/client/debugger/test/browser_dbg_location-changes-01-simple.js": 3793, - "devtools/client/debugger/test/browser_dbg_location-changes-02-blank.js": 3289, - "devtools/client/debugger/test/browser_dbg_on-pause-highlight.js": 3018, - "devtools/client/debugger/test/browser_dbg_optimized-out-vars.js": 3544, - "devtools/client/debugger/test/browser_dbg_pause-exceptions-01.js": 4931, - "devtools/client/debugger/test/browser_dbg_pause-exceptions-02.js": 4469, - "devtools/client/debugger/test/browser_dbg_pause-no-step.js": 3212, - "devtools/client/debugger/test/browser_dbg_pause-warning.js": 5125, - "devtools/client/debugger/test/browser_dbg_pretty-print-03.js": 3312, - "devtools/client/debugger/test/browser_dbg_pretty-print-04.js": 3253, - "devtools/client/debugger/test/browser_dbg_pretty-print-08.js": 3538, - "devtools/client/debugger/test/browser_dbg_pretty-print-09.js": 3389, - "devtools/client/debugger/test/browser_dbg_pretty-print-11.js": 3761, - "devtools/client/debugger/test/browser_dbg_pretty-print-on-paused.js": 3629, - "devtools/client/debugger/test/browser_dbg_progress-listener-bug.js": 3059, - "devtools/client/debugger/test/browser_dbg_reload-same-script.js": 5718, - "devtools/client/debugger/test/browser_dbg_scripts-switching-01.js": 3888, - "devtools/client/debugger/test/browser_dbg_scripts-switching-02.js": 3897, - "devtools/client/debugger/test/browser_dbg_search-basic-01.js": 4636, - "devtools/client/debugger/test/browser_dbg_search-basic-02.js": 4903, - "devtools/client/debugger/test/browser_dbg_search-basic-03.js": 4004, - "devtools/client/debugger/test/browser_dbg_search-global-01.js": 4780, - "devtools/client/debugger/test/browser_dbg_search-global-02.js": 4264, - "devtools/client/debugger/test/browser_dbg_search-global-04.js": 3504, - "devtools/client/debugger/test/browser_dbg_search-global-05.js": 5042, - "devtools/client/debugger/test/browser_dbg_search-global-06.js": 6285, - "devtools/client/debugger/test/browser_dbg_search-popup-jank.js": 4340, - "devtools/client/debugger/test/browser_dbg_search-sources-01.js": 4648, - "devtools/client/debugger/test/browser_dbg_search-sources-02.js": 4809, - "devtools/client/debugger/test/browser_dbg_search-sources-03.js": 3349, - "devtools/client/debugger/test/browser_dbg_search-symbols.js": 6866, - "devtools/client/debugger/test/browser_dbg_searchbox-help-popup-01.js": 3335, - "devtools/client/debugger/test/browser_dbg_searchbox-help-popup-02.js": 3231, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-01.js": 8966, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-02.js": 4395, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-03.js": 3662, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-04.js": 4565, - "devtools/client/debugger/test/browser_dbg_server-conditional-bp-05.js": 5054, - "devtools/client/debugger/test/browser_dbg_source-maps-01.js": 3566, - "devtools/client/debugger/test/browser_dbg_source-maps-02.js": 4368, - "devtools/client/debugger/test/browser_dbg_source-maps-03.js": 3616, - "devtools/client/debugger/test/browser_dbg_sources-cache.js": 3633, - "devtools/client/debugger/test/browser_dbg_sources-contextmenu-02.js": 3429, - "devtools/client/debugger/test/browser_dbg_split-console-paused-reload.js": 7696, - "devtools/client/debugger/test/browser_dbg_stack-01.js": 3200, - "devtools/client/debugger/test/browser_dbg_stack-02.js": 3551, - "devtools/client/debugger/test/browser_dbg_stack-04.js": 3208, - "devtools/client/debugger/test/browser_dbg_stack-05.js": 3535, - "devtools/client/debugger/test/browser_dbg_stack-06.js": 3542, - "devtools/client/debugger/test/browser_dbg_stack-07.js": 4639, - "devtools/client/debugger/test/browser_dbg_step-out.js": 4322, - "devtools/client/debugger/test/browser_dbg_terminate-on-tab-close.js": 3123, - "devtools/client/debugger/test/browser_dbg_variables-view-06.js": 3670, - "devtools/client/debugger/test/browser_dbg_variables-view-accessibility.js": 3376, - "devtools/client/debugger/test/browser_dbg_variables-view-data.js": 3071, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-cancel.js": 3467, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-getset-01.js": 14260, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-getset-02.js": 4382, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-value.js": 7150, - "devtools/client/debugger/test/browser_dbg_variables-view-edit-watch.js": 6109, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-01.js": 9750, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-02.js": 10102, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-03.js": 7860, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-04.js": 7244, - "devtools/client/debugger/test/browser_dbg_variables-view-filter-05.js": 7558, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-01.js": 6207, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-02.js": 4285, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-parameters-03.js": 9279, - "devtools/client/debugger/test/browser_dbg_variables-view-frame-with.js": 4060, - "devtools/client/debugger/test/browser_dbg_variables-view-frozen-sealed-nonext.js": 3177, - "devtools/client/debugger/test/browser_dbg_variables-view-hide-non-enums.js": 3127, - "devtools/client/debugger/test/browser_dbg_variables-view-large-array-buffer.js": 8637, - "devtools/client/debugger/test/browser_dbg_variables-view-override-01.js": 7491, - "devtools/client/debugger/test/browser_dbg_variables-view-override-02.js": 3469, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-01.js": 6266, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-02.js": 4727, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-03.js": 3812, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-04.js": 3835, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-05.js": 3849, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-06.js": 3925, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-07.js": 5613, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-08.js": 4042, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-09.js": 4526, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-10.js": 4507, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-11.js": 5817, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-12.js": 5605, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-13.js": 6666, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-15.js": 4846, - "devtools/client/debugger/test/browser_dbg_variables-view-popup-16.js": 10729, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-01.js": 18626, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-02.js": 22085, - "devtools/client/debugger/test/browser_dbg_variables-view-reexpand-03.js": 4911, - "devtools/client/debugger/test/browser_dbg_variables-view-webidl.js": 8910, - "devtools/client/debugger/test/browser_dbg_watch-expressions-01.js": 3766, - "devtools/client/debugger/test/browser_dbg_watch-expressions-02.js": 10682, - "devtools/client/eyedropper/test/browser_eyedropper_cmd.js": 3182, - "devtools/client/fontinspector/test/browser_fontinspector.js": 6435, - "devtools/client/fontinspector/test/browser_fontinspector_edit-previews-show-all.js": 3196, - "devtools/client/fontinspector/test/browser_fontinspector_edit-previews.js": 3370, - "devtools/client/fontinspector/test/browser_fontinspector_theme-change.js": 3385, - "devtools/client/framework/test/browser_devtools_api.js": 4474, - "devtools/client/framework/test/browser_keybindings_01.js": 4229, - "devtools/client/framework/test/browser_new_activation_workflow.js": 3242, - "devtools/client/framework/test/browser_toolbox_hosts.js": 7420, - "devtools/client/framework/test/browser_toolbox_hosts_size.js": 5263, - "devtools/client/framework/test/browser_toolbox_options.js": 5315, - "devtools/client/framework/test/browser_toolbox_options_disable_buttons.js": 4162, - "devtools/client/framework/test/browser_toolbox_tabsswitch_shortcuts.js": 6124, - "devtools/client/framework/test/browser_toolbox_theme_registration.js": 4537, - "devtools/client/framework/test/browser_toolbox_toggle.js": 9755, - "devtools/client/framework/test/browser_toolbox_tool_ready.js": 5447, - "devtools/client/framework/test/browser_toolbox_tool_remote_reopen.js": 6195, - "devtools/client/framework/test/browser_toolbox_view_source_04.js": 3819, - "devtools/client/framework/test/browser_toolbox_window_reload_target.js": 13519, - "devtools/client/framework/test/browser_toolbox_window_shortcuts.js": 4591, - "devtools/client/framework/test/browser_toolbox_window_title_changes.js": 4718, - "devtools/client/inspector/test/browser_inspector_breadcrumbs.js": 7618, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_keybinding.js": 4622, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_menu.js": 3268, - "devtools/client/inspector/test/browser_inspector_breadcrumbs_mutations.js": 4294, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-01.js": 3268, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-02.js": 4676, - "devtools/client/inspector/test/browser_inspector_delete-selected-node-03.js": 3243, - "devtools/client/inspector/test/browser_inspector_destroy-after-navigation.js": 3433, - "devtools/client/inspector/test/browser_inspector_highlighter-01.js": 3125, - "devtools/client/inspector/test/browser_inspector_highlighter-02.js": 4140, - "devtools/client/inspector/test/browser_inspector_highlighter-03.js": 3761, - "devtools/client/inspector/test/browser_inspector_highlighter-comments.js": 4330, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_01.js": 3014, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_02.js": 3799, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_03.js": 3189, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_04.js": 3257, - "devtools/client/inspector/test/browser_inspector_highlighter-geometry_05.js": 4029, - "devtools/client/inspector/test/browser_inspector_highlighter-hover_01.js": 4410, - "devtools/client/inspector/test/browser_inspector_highlighter-hover_03.js": 3088, - "devtools/client/inspector/test/browser_inspector_highlighter-iframes.js": 3891, - "devtools/client/inspector/test/browser_inspector_highlighter-inline.js": 6529, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_01.js": 4026, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_02.js": 3727, - "devtools/client/inspector/test/browser_inspector_highlighter-keybinding_03.js": 3033, - "devtools/client/inspector/test/browser_inspector_highlighter-options.js": 3563, - "devtools/client/inspector/test/browser_inspector_highlighter-selector_01.js": 3143, - "devtools/client/inspector/test/browser_inspector_highlighter-xbl.js": 3242, - "devtools/client/inspector/test/browser_inspector_highlighter-zoom.js": 3550, - "devtools/client/inspector/test/browser_inspector_iframe-navigation.js": 3034, - "devtools/client/inspector/test/browser_inspector_infobar_01.js": 4162, - "devtools/client/inspector/test/browser_inspector_initialization.js": 7620, - "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts-copy-outerhtml.js": 3210, - "devtools/client/inspector/test/browser_inspector_keyboard-shortcuts.js": 3678, - "devtools/client/inspector/test/browser_inspector_menu-01-sensitivity.js": 5592, - "devtools/client/inspector/test/browser_inspector_menu-02-copy-items.js": 3605, - "devtools/client/inspector/test/browser_inspector_menu-03-paste-items.js": 4583, - "devtools/client/inspector/test/browser_inspector_menu-04-other.js": 4594, - "devtools/client/inspector/test/browser_inspector_navigation.js": 4824, - "devtools/client/inspector/test/browser_inspector_pane-toggle-03.js": 3182, - "devtools/client/inspector/test/browser_inspector_picker-stop-on-destroy.js": 3890, - "devtools/client/inspector/test/browser_inspector_pseudoclass-lock.js": 4801, - "devtools/client/inspector/test/browser_inspector_reload-01.js": 3442, - "devtools/client/inspector/test/browser_inspector_reload-02.js": 3501, - "devtools/client/inspector/test/browser_inspector_remove-iframe-during-load.js": 3505, - "devtools/client/inspector/test/browser_inspector_search-01.js": 8325, - "devtools/client/inspector/test/browser_inspector_search-02.js": 6056, - "devtools/client/inspector/test/browser_inspector_search-03.js": 6210, - "devtools/client/inspector/test/browser_inspector_search-04.js": 3960, - "devtools/client/inspector/test/browser_inspector_search-05.js": 4576, - "devtools/client/inspector/test/browser_inspector_search-navigation.js": 7580, - "devtools/client/inspector/test/browser_inspector_search-reserved.js": 5117, - "devtools/client/inspector/test/browser_inspector_select-docshell.js": 3170, - "devtools/client/inspector/test/browser_inspector_select-last-selected.js": 8788, - "devtools/client/inspector/test/browser_inspector_sidebarstate.js": 5631, - "devtools/client/markupview/test/browser_markupview_anonymous_01.js": 6561, - "devtools/client/markupview/test/browser_markupview_anonymous_03.js": 3108, - "devtools/client/markupview/test/browser_markupview_anonymous_04.js": 3090, - "devtools/client/markupview/test/browser_markupview_copy_image_data.js": 3715, - "devtools/client/markupview/test/browser_markupview_css_completion_style_attribute.js": 5810, - "devtools/client/markupview/test/browser_markupview_dragdrop_autoscroll.js": 3706, - "devtools/client/markupview/test/browser_markupview_dragdrop_invalidNodes.js": 3846, - "devtools/client/markupview/test/browser_markupview_dragdrop_isDragging.js": 3591, - "devtools/client/markupview/test/browser_markupview_dragdrop_reorder.js": 6069, - "devtools/client/markupview/test/browser_markupview_dragdrop_textSelection.js": 3274, - "devtools/client/markupview/test/browser_markupview_events_form.js": 3195, - "devtools/client/markupview/test/browser_markupview_html_edit_01.js": 8015, - "devtools/client/markupview/test/browser_markupview_html_edit_02.js": 6846, - "devtools/client/markupview/test/browser_markupview_html_edit_03.js": 5282, - "devtools/client/markupview/test/browser_markupview_image_tooltip.js": 3050, - "devtools/client/markupview/test/browser_markupview_keybindings_03.js": 3109, - "devtools/client/markupview/test/browser_markupview_keybindings_04.js": 3617, - "devtools/client/markupview/test/browser_markupview_links_01.js": 5603, - "devtools/client/markupview/test/browser_markupview_links_02.js": 3271, - "devtools/client/markupview/test/browser_markupview_links_03.js": 3065, - "devtools/client/markupview/test/browser_markupview_links_04.js": 4575, - "devtools/client/markupview/test/browser_markupview_links_05.js": 5228, - "devtools/client/markupview/test/browser_markupview_links_06.js": 5071, - "devtools/client/markupview/test/browser_markupview_links_07.js": 6044, - "devtools/client/markupview/test/browser_markupview_load_01.js": 5818, - "devtools/client/markupview/test/browser_markupview_mutation_01.js": 5638, - "devtools/client/markupview/test/browser_markupview_mutation_02.js": 3287, - "devtools/client/markupview/test/browser_markupview_navigation.js": 8900, - "devtools/client/markupview/test/browser_markupview_node_not_displayed_02.js": 5025, - "devtools/client/markupview/test/browser_markupview_pagesize_01.js": 3990, - "devtools/client/markupview/test/browser_markupview_pagesize_02.js": 4256, - "devtools/client/markupview/test/browser_markupview_search_01.js": 3916, - "devtools/client/markupview/test/browser_markupview_tag_edit_01.js": 5996, - "devtools/client/markupview/test/browser_markupview_tag_edit_03.js": 3172, - "devtools/client/markupview/test/browser_markupview_tag_edit_04.js": 7513, - "devtools/client/markupview/test/browser_markupview_tag_edit_05.js": 4448, - "devtools/client/markupview/test/browser_markupview_tag_edit_06.js": 4533, - "devtools/client/markupview/test/browser_markupview_tag_edit_07.js": 4185, - "devtools/client/markupview/test/browser_markupview_tag_edit_08.js": 4083, - "devtools/client/markupview/test/browser_markupview_tag_edit_09.js": 3023, - "devtools/client/markupview/test/browser_markupview_tag_edit_10.js": 3015, - "devtools/client/markupview/test/browser_markupview_tag_edit_12.js": 3299, - "devtools/client/markupview/test/browser_markupview_textcontent_edit_01.js": 4529, - "devtools/client/markupview/test/browser_markupview_toggle_01.js": 3518, - "devtools/client/markupview/test/browser_markupview_toggle_02.js": 3432, - "devtools/client/markupview/test/browser_markupview_toggle_03.js": 3911, - "devtools/client/markupview/test/browser_markupview_update-on-navigtion.js": 3412, - "devtools/client/netmonitor/har/test/browser_net_har_copy_all_as_har.js": 5050, - "devtools/client/netmonitor/test/browser_net_aaa_leaktest.js": 4466, - "devtools/client/netmonitor/test/browser_net_accessibility-01.js": 14089, - "devtools/client/netmonitor/test/browser_net_accessibility-02.js": 13951, - "devtools/client/netmonitor/test/browser_net_api-calls.js": 3769, - "devtools/client/netmonitor/test/browser_net_autoscroll.js": 17125, - "devtools/client/netmonitor/test/browser_net_cached-status.js": 4320, - "devtools/client/netmonitor/test/browser_net_complex-params.js": 5646, - "devtools/client/netmonitor/test/browser_net_content-type.js": 6607, - "devtools/client/netmonitor/test/browser_net_copy_image_as_data_uri.js": 5469, - "devtools/client/netmonitor/test/browser_net_copy_params.js": 5270, - "devtools/client/netmonitor/test/browser_net_copy_response.js": 5451, - "devtools/client/netmonitor/test/browser_net_curl-utils.js": 4021, - "devtools/client/netmonitor/test/browser_net_details-no-duplicated-content.js": 4427, - "devtools/client/netmonitor/test/browser_net_filter-01.js": 11388, - "devtools/client/netmonitor/test/browser_net_filter-02.js": 15579, - "devtools/client/netmonitor/test/browser_net_filter-03.js": 14030, - "devtools/client/netmonitor/test/browser_net_filter-04.js": 5661, - "devtools/client/netmonitor/test/browser_net_footer-summary.js": 10625, - "devtools/client/netmonitor/test/browser_net_html-preview.js": 4762, - "devtools/client/netmonitor/test/browser_net_icon-preview.js": 7639, - "devtools/client/netmonitor/test/browser_net_image-tooltip.js": 7950, - "devtools/client/netmonitor/test/browser_net_json-long.js": 10611, - "devtools/client/netmonitor/test/browser_net_json-malformed.js": 3980, - "devtools/client/netmonitor/test/browser_net_persistent_logs.js": 4192, - "devtools/client/netmonitor/test/browser_net_post-data-01.js": 3433, - "devtools/client/netmonitor/test/browser_net_prefs-reload.js": 14402, - "devtools/client/netmonitor/test/browser_net_req-resp-bodies.js": 3823, - "devtools/client/netmonitor/test/browser_net_security-icon-click.js": 3128, - "devtools/client/netmonitor/test/browser_net_security-redirect.js": 3060, - "devtools/client/netmonitor/test/browser_net_security-state.js": 3960, - "devtools/client/netmonitor/test/browser_net_security-tab-deselect.js": 3380, - "devtools/client/netmonitor/test/browser_net_security-tab-visibility.js": 4390, - "devtools/client/netmonitor/test/browser_net_security-warnings.js": 3099, - "devtools/client/netmonitor/test/browser_net_sort-01.js": 10997, - "devtools/client/netmonitor/test/browser_net_sort-02.js": 11033, - "devtools/client/netmonitor/test/browser_net_sort-03.js": 13254, - "devtools/client/netmonitor/test/browser_net_statistics-01.js": 4561, - "devtools/client/netmonitor/test/browser_net_statistics-02.js": 5159, - "devtools/client/netmonitor/test/browser_net_status-codes.js": 4756, - "devtools/client/netmonitor/test/browser_net_timing-division.js": 5709, - "devtools/client/performance/test/browser_aaa-run-first-leaktest.js": 6152, - "devtools/client/performance/test/browser_markers-cycle-collection.js": 5901, - "devtools/client/performance/test/browser_perf-categories-js-calltree.js": 11122, - "devtools/client/performance/test/browser_perf-clear-01.js": 10881, - "devtools/client/performance/test/browser_perf-clear-02.js": 13033, - "devtools/client/performance/test/browser_perf-columns-js-calltree.js": 12169, - "devtools/client/performance/test/browser_perf-columns-memory-calltree.js": 10493, - "devtools/client/performance/test/browser_perf-compatibility-02.js": 5219, - "devtools/client/performance/test/browser_perf-compatibility-04.js": 5296, - "devtools/client/performance/test/browser_perf-compatibility-05.js": 7262, - "devtools/client/performance/test/browser_perf-compatibility-07.js": 5999, - "devtools/client/performance/test/browser_perf-compatibility-08.js": 7686, - "devtools/client/performance/test/browser_perf-console-record-01.js": 7559, - "devtools/client/performance/test/browser_perf-console-record-02.js": 7377, - "devtools/client/performance/test/browser_perf-console-record-03.js": 7227, - "devtools/client/performance/test/browser_perf-console-record-04.js": 11190, - "devtools/client/performance/test/browser_perf-console-record-05.js": 15306, - "devtools/client/performance/test/browser_perf-console-record-06.js": 8975, - "devtools/client/performance/test/browser_perf-console-record-07.js": 7043, - "devtools/client/performance/test/browser_perf-console-record-08.js": 13759, - "devtools/client/performance/test/browser_perf-console-record-09.js": 4380, - "devtools/client/performance/test/browser_perf-data-massaging-01.js": 6852, - "devtools/client/performance/test/browser_perf-data-samples.js": 4822, - "devtools/client/performance/test/browser_perf-details-01.js": 8388, - "devtools/client/performance/test/browser_perf-details-02.js": 8504, - "devtools/client/performance/test/browser_perf-details-03.js": 15137, - "devtools/client/performance/test/browser_perf-details-04.js": 16618, - "devtools/client/performance/test/browser_perf-details-05.js": 10399, - "devtools/client/performance/test/browser_perf-details-06.js": 10739, - "devtools/client/performance/test/browser_perf-details-07.js": 8359, - "devtools/client/performance/test/browser_perf-details-calltree-render.js": 11891, - "devtools/client/performance/test/browser_perf-details-flamegraph-render.js": 10649, - "devtools/client/performance/test/browser_perf-details-memory-calltree-render.js": 7665, - "devtools/client/performance/test/browser_perf-details-memory-flamegraph-render.js": 10418, - "devtools/client/performance/test/browser_perf-details-waterfall-render.js": 10655, - "devtools/client/performance/test/browser_perf-events-calltree.js": 6564, - "devtools/client/performance/test/browser_perf-front-profiler-02.js": 4033, - "devtools/client/performance/test/browser_perf-front-profiler-03.js": 5716, - "devtools/client/performance/test/browser_perf-front-profiler-04.js": 5436, - "devtools/client/performance/test/browser_perf-highlighted.js": 10630, - "devtools/client/performance/test/browser_perf-legacy-front-01.js": 10014, - "devtools/client/performance/test/browser_perf-legacy-front-02.js": 5759, - "devtools/client/performance/test/browser_perf-legacy-front-03.js": 8029, - "devtools/client/performance/test/browser_perf-legacy-front-04.js": 8179, - "devtools/client/performance/test/browser_perf-legacy-front-05.js": 7571, - "devtools/client/performance/test/browser_perf-legacy-front-06.js": 8666, - "devtools/client/performance/test/browser_perf-loading-01.js": 7323, - "devtools/client/performance/test/browser_perf-loading-02.js": 18693, - "devtools/client/performance/test/browser_perf-options-01.js": 3151, - "devtools/client/performance/test/browser_perf-options-02.js": 5712, - "devtools/client/performance/test/browser_perf-options-allocations.js": 7957, - "devtools/client/performance/test/browser_perf-options-enable-framerate.js": 9407, - "devtools/client/performance/test/browser_perf-options-enable-memory-01.js": 11105, - "devtools/client/performance/test/browser_perf-options-enable-memory-02.js": 11196, - "devtools/client/performance/test/browser_perf-options-enable-optimizations.js": 10844, - "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-01.js": 8596, - "devtools/client/performance/test/browser_perf-options-flatten-tree-recursion-02.js": 8817, - "devtools/client/performance/test/browser_perf-options-invert-call-tree-01.js": 8583, - "devtools/client/performance/test/browser_perf-options-invert-call-tree-02.js": 8443, - "devtools/client/performance/test/browser_perf-options-invert-flame-graph-01.js": 8844, - "devtools/client/performance/test/browser_perf-options-invert-flame-graph-02.js": 8861, - "devtools/client/performance/test/browser_perf-options-profiler.js": 10289, - "devtools/client/performance/test/browser_perf-options-show-idle-blocks-01.js": 8890, - "devtools/client/performance/test/browser_perf-options-show-idle-blocks-02.js": 8851, - "devtools/client/performance/test/browser_perf-options-show-platform-data-01.js": 10140, - "devtools/client/performance/test/browser_perf-options-show-platform-data-02.js": 9360, - "devtools/client/performance/test/browser_perf-overview-render-01.js": 12768, - "devtools/client/performance/test/browser_perf-overview-render-02.js": 32680, - "devtools/client/performance/test/browser_perf-overview-render-03.js": 32403, - "devtools/client/performance/test/browser_perf-overview-render-04.js": 9354, - "devtools/client/performance/test/browser_perf-overview-selection-01.js": 10565, - "devtools/client/performance/test/browser_perf-overview-selection-02.js": 16062, - "devtools/client/performance/test/browser_perf-overview-selection-03.js": 10611, - "devtools/client/performance/test/browser_perf-overview-time-interval.js": 9961, - "devtools/client/performance/test/browser_perf-recording-model-01.js": 4653, - "devtools/client/performance/test/browser_perf-refresh.js": 7192, - "devtools/client/performance/test/browser_perf-states.js": 9006, - "devtools/client/performance/test/browser_perf-theme-toggle-01.js": 21376, - "devtools/client/performance/test/browser_profiler_tree-view-11.js": 9208, - "devtools/client/performance/test/browser_timeline-filters-02.js": 4277, - "devtools/client/performance/test/browser_timeline-waterfall-background.js": 9482, - "devtools/client/performance/test/browser_timeline-waterfall-generic.js": 12514, - "devtools/client/projecteditor/test/browser_projecteditor_editing_01.js": 3894, - "devtools/client/projecteditor/test/browser_projecteditor_external_change.js": 4204, - "devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js": 3363, - "devtools/client/projecteditor/test/browser_projecteditor_rename_file.js": 10015, - "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_01.js": 4249, - "devtools/client/projecteditor/test/browser_projecteditor_tree_selection_02.js": 3197, - "devtools/client/responsivedesign/test/browser_responsive_cmd.js": 3534, - "devtools/client/scratchpad/test/browser_scratchpad_close_toolbox.js": 4668, - "devtools/client/scratchpad/test/browser_scratchpad_disable_view_menu_items.js": 6413, - "devtools/client/scratchpad/test/browser_scratchpad_restore.js": 4266, - "devtools/client/scratchpad/test/browser_scratchpad_wrong_window_focus.js": 3698, - "devtools/client/shared/test/browser_css_color.js": 6403, - "devtools/client/shared/test/browser_tableWidget_basic.js": 14071, - "devtools/client/shared/test/browser_tableWidget_keyboard_interaction.js": 4252, - "devtools/client/shared/test/browser_tableWidget_mouse_interaction.js": 4687, - "devtools/client/shared/test/browser_telemetry_button_eyedropper.js": 5156, - "devtools/client/shared/test/browser_telemetry_button_scratchpad.js": 6860, - "devtools/client/shared/test/browser_telemetry_sidebar.js": 7034, - "devtools/client/shared/test/browser_telemetry_toolbox.js": 7094, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_canvasdebugger.js": 3061, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_inspector.js": 4774, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsdebugger.js": 3864, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_jsprofiler.js": 3158, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_netmonitor.js": 3373, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_options.js": 3140, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_storage.js": 3065, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_styleeditor.js": 3227, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_webaudioeditor.js": 3440, - "devtools/client/shared/test/browser_telemetry_toolboxtabs_webconsole.js": 3229, - "devtools/client/shared/test/browser_toolbar_basic.js": 4254, - "devtools/client/sourceeditor/test/browser_codemirror.js": 5309, - "devtools/client/sourceeditor/test/browser_vimemacs.js": 39690, - "devtools/client/storage/test/browser_storage_basic.js": 11208, - "devtools/client/storage/test/browser_storage_dynamic_updates.js": 5698, - "devtools/client/storage/test/browser_storage_sidebar.js": 6482, - "devtools/client/storage/test/browser_storage_values.js": 5715, - "devtools/client/styleeditor/test/browser_styleeditor_autocomplete-disabled.js": 5491, - "devtools/client/styleeditor/test/browser_styleeditor_autocomplete.js": 5536, - "devtools/client/styleeditor/test/browser_styleeditor_bug_740541_iframes.js": 3905, - "devtools/client/styleeditor/test/browser_styleeditor_enabled.js": 3151, - "devtools/client/styleeditor/test/browser_styleeditor_fetch-from-cache.js": 3384, - "devtools/client/styleeditor/test/browser_styleeditor_inline_friendly_names.js": 4430, - "devtools/client/styleeditor/test/browser_styleeditor_loading.js": 3197, - "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar.js": 4079, - "devtools/client/styleeditor/test/browser_styleeditor_media_sidebar_sourcemaps.js": 3669, - "devtools/client/styleeditor/test/browser_styleeditor_missing_stylesheet.js": 3810, - "devtools/client/styleeditor/test/browser_styleeditor_navigate.js": 5021, - "devtools/client/styleeditor/test/browser_styleeditor_new.js": 3673, - "devtools/client/styleeditor/test/browser_styleeditor_private_perwindowpb.js": 3410, - "devtools/client/styleeditor/test/browser_styleeditor_reload.js": 5506, - "devtools/client/styleeditor/test/browser_styleeditor_scroll.js": 3556, - "devtools/client/styleeditor/test/browser_styleeditor_selectstylesheet.js": 3101, - "devtools/client/styleeditor/test/browser_styleeditor_sourcemap_large.js": 3765, - "devtools/client/styleeditor/test/browser_styleeditor_sourcemaps.js": 6856, - "devtools/client/styleeditor/test/browser_styleeditor_sv_keynav.js": 3194, - "devtools/client/styleeditor/test/browser_styleeditor_transition_rule.js": 4177, - "devtools/client/styleeditor/test/browser_styleeditor_xul.js": 2991, - "devtools/client/styleinspector/test/browser_computedview_browser-styles.js": 6954, - "devtools/client/styleinspector/test/browser_computedview_cycle_color.js": 3019, - "devtools/client/styleinspector/test/browser_computedview_getNodeInfo.js": 3409, - "devtools/client/styleinspector/test/browser_computedview_keybindings_01.js": 3028, - "devtools/client/styleinspector/test/browser_computedview_keybindings_02.js": 3492, - "devtools/client/styleinspector/test/browser_computedview_matched-selectors-toggle.js": 3181, - "devtools/client/styleinspector/test/browser_computedview_matched-selectors_01.js": 3465, - "devtools/client/styleinspector/test/browser_computedview_media-queries.js": 3129, - "devtools/client/styleinspector/test/browser_computedview_no-results-placeholder.js": 3428, - "devtools/client/styleinspector/test/browser_computedview_original-source-link.js": 5657, - "devtools/client/styleinspector/test/browser_computedview_pseudo-element_01.js": 3960, - "devtools/client/styleinspector/test/browser_computedview_refresh-on-style-change_01.js": 3170, - "devtools/client/styleinspector/test/browser_computedview_search-filter.js": 4907, - "devtools/client/styleinspector/test/browser_computedview_search-filter_clear.js": 6346, - "devtools/client/styleinspector/test/browser_computedview_search-filter_context-menu.js": 3311, - "devtools/client/styleinspector/test/browser_computedview_search-filter_escape-keypress.js": 6283, - "devtools/client/styleinspector/test/browser_computedview_select-and-copy-styles.js": 3541, - "devtools/client/styleinspector/test/browser_computedview_style-editor-link.js": 6256, - "devtools/client/styleinspector/test/browser_ruleview_add-property-and-reselect.js": 3944, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_01.js": 3257, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_02.js": 3054, - "devtools/client/styleinspector/test/browser_ruleview_add-property-cancel_03.js": 3226, - "devtools/client/styleinspector/test/browser_ruleview_add-property-svg.js": 3054, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_01.js": 10543, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_02.js": 3033, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_03.js": 3038, - "devtools/client/styleinspector/test/browser_ruleview_add-rule_pseudo_class.js": 4949, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js": 3056, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-appears-on-swatch-click.js": 3168, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-commit-on-ENTER.js": 3180, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-edit-gradient.js": 3132, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-multiple-changes.js": 4742, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-revert-on-ESC.js": 3007, - "devtools/client/styleinspector/test/browser_ruleview_colorpicker-swatch-displayed.js": 2992, - "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_01.js": 7150, - "devtools/client/styleinspector/test/browser_ruleview_completion-existing-property_02.js": 6351, - "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_01.js": 5761, - "devtools/client/styleinspector/test/browser_ruleview_completion-new-property_02.js": 6863, - "devtools/client/styleinspector/test/browser_ruleview_completion-popup-hidden-after-navigation.js": 3690, - "devtools/client/styleinspector/test/browser_ruleview_computed-lists_02.js": 3025, - "devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-01.js": 3151, - "devtools/client/styleinspector/test/browser_ruleview_context-menu-show-mdn-docs-03.js": 5211, - "devtools/client/styleinspector/test/browser_ruleview_copy_styles.js": 3941, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-appears-on-swatch-click.js": 3578, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-commit-on-ENTER.js": 3267, - "devtools/client/styleinspector/test/browser_ruleview_cubicbezier-revert-on-ESC.js": 3193, - "devtools/client/styleinspector/test/browser_ruleview_custom.js": 3492, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-commit.js": 3232, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-computed.js": 3063, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-increments.js": 5351, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-order.js": 3218, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_02.js": 3014, - "devtools/client/styleinspector/test/browser_ruleview_edit-property-remove_03.js": 3001, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_01.js": 4301, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_02.js": 3586, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_03.js": 3035, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_04.js": 3215, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_05.js": 3143, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_06.js": 3088, - "devtools/client/styleinspector/test/browser_ruleview_edit-property_07.js": 3025, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector-commit.js": 3685, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_01.js": 3025, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_02.js": 3451, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_04.js": 3173, - "devtools/client/styleinspector/test/browser_ruleview_edit-selector_05.js": 3339, - "devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_01.js": 5020, - "devtools/client/styleinspector/test/browser_ruleview_editable-field-focus_02.js": 4495, - "devtools/client/styleinspector/test/browser_ruleview_eyedropper.js": 4495, - "devtools/client/styleinspector/test/browser_ruleview_filtereditor-appears-on-swatch-click.js": 3361, - "devtools/client/styleinspector/test/browser_ruleview_filtereditor-commit-on-ENTER.js": 3237, - "devtools/client/styleinspector/test/browser_ruleview_inherited-properties_01.js": 3073, - "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_01.js": 5374, - "devtools/client/styleinspector/test/browser_ruleview_keyframes-rule_02.js": 5456, - "devtools/client/styleinspector/test/browser_ruleview_livepreview.js": 3550, - "devtools/client/styleinspector/test/browser_ruleview_mark_overridden_02.js": 3010, - "devtools/client/styleinspector/test/browser_ruleview_mark_overridden_05.js": 3117, - "devtools/client/styleinspector/test/browser_ruleview_mathml-element.js": 3253, - "devtools/client/styleinspector/test/browser_ruleview_media-queries.js": 3170, - "devtools/client/styleinspector/test/browser_ruleview_multiple-properties-duplicates.js": 2995, - "devtools/client/styleinspector/test/browser_ruleview_multiple-properties-unfinished_01.js": 3042, - "devtools/client/styleinspector/test/browser_ruleview_original-source-link.js": 4489, - "devtools/client/styleinspector/test/browser_ruleview_pseudo-element_01.js": 5061, - "devtools/client/styleinspector/test/browser_ruleview_pseudo_lock_options.js": 4203, - "devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_01.js": 3063, - "devtools/client/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js": 3510, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_01.js": 3208, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_06.js": 3112, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_08.js": 3140, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_clear.js": 2991, - "devtools/client/styleinspector/test/browser_ruleview_search-filter-computed-list_expander.js": 3027, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_01.js": 3156, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_02.js": 3341, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_04.js": 4286, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_05.js": 3036, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_06.js": 2991, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_10.js": 3121, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_12.js": 3259, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_13.js": 3200, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_14.js": 3142, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_15.js": 3267, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_16.js": 3121, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_clear.js": 3014, - "devtools/client/styleinspector/test/browser_ruleview_search-filter_escape-keypress.js": 2991, - "devtools/client/styleinspector/test/browser_ruleview_select-and-copy-styles.js": 3085, - "devtools/client/styleinspector/test/browser_ruleview_selector-highlighter_03.js": 3176, - "devtools/client/styleinspector/test/browser_ruleview_selector_highlight.js": 4295, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter-computed-list_01.js": 4602, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_01.js": 4434, - "devtools/client/styleinspector/test/browser_ruleview_strict-search-filter_02.js": 3170, - "devtools/client/styleinspector/test/browser_ruleview_urls-clickable.js": 4005, - "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles-uneditable.js": 3134, - "devtools/client/styleinspector/test/browser_ruleview_user-agent-styles.js": 12622, - "devtools/client/styleinspector/test/browser_ruleview_user-property-reset.js": 4361, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_01.js": 15029, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-color_02.js": 3239, - "devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js": 4815, - "devtools/client/styleinspector/test/browser_styleinspector_csslogic-content-stylesheets.js": 6067, - "devtools/client/styleinspector/test/browser_styleinspector_refresh_when_active.js": 3717, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-background-image.js": 3584, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-longhand-fontfamily.js": 3358, - "devtools/client/styleinspector/test/browser_styleinspector_tooltip-multiple-background-images.js": 3178, - "devtools/client/styleinspector/test/browser_styleinspector_transform-highlighter-02.js": 3165, - "devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js": 4615, - "devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js": 9590, - "devtools/client/webaudioeditor/test/browser_wa_graph-click.js": 3540, - "devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js": 3590, - "devtools/client/webaudioeditor/test/browser_wa_graph-render-03.js": 3155, - "devtools/client/webaudioeditor/test/browser_wa_graph-selected.js": 3174, - "devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js": 3328, - "devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js": 3316, - "devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js": 3929, - "devtools/client/webaudioeditor/test/browser_wa_inspector-width.js": 4094, - "devtools/client/webaudioeditor/test/browser_wa_inspector.js": 3112, - "devtools/client/webaudioeditor/test/browser_wa_navigate.js": 4187, - "devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js": 3664, - "devtools/client/webaudioeditor/test/browser_wa_properties-view-params-objects.js": 3260, - "devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js": 5903, - "devtools/client/webaudioeditor/test/browser_wa_properties-view.js": 3110, - "devtools/client/webaudioeditor/test/browser_wa_reset-02.js": 3262, - "devtools/client/webaudioeditor/test/browser_wa_reset-03.js": 3970, - "devtools/client/webaudioeditor/test/browser_webaudio-actor-destroy-node.js": 8216, - "devtools/client/webconsole/test/browser_bug1045902_console_csp_ignore_reflected_xss_message.js": 4790, - "devtools/client/webconsole/test/browser_bug_862916_console_dir_and_filter_off.js": 5124, - "devtools/client/webconsole/test/browser_console_consolejsm_output.js": 3307, - "devtools/client/webconsole/test/browser_console_hide_jsterm_when_devtools_chrome_enabled_false.js": 4596, - "devtools/client/webconsole/test/browser_console_history_persist.js": 6898, - "devtools/client/webconsole/test/browser_console_keyboard_accessibility.js": 3390, - "devtools/client/webconsole/test/browser_console_native_getters.js": 5387, - "devtools/client/webconsole/test/browser_console_server_logging.js": 5517, - "devtools/client/webconsole/test/browser_console_variables_view_dont_sort_non_sortable_classes_properties.js": 4498, - "devtools/client/webconsole/test/browser_console_variables_view_highlighter.js": 6285, - "devtools/client/webconsole/test/browser_eval_in_debugger_stackframe2.js": 3583, - "devtools/client/webconsole/test/browser_jsterm_inspect.js": 6663, - "devtools/client/webconsole/test/browser_warn_user_about_replaced_api.js": 3542, - "devtools/client/webconsole/test/browser_webconsole_bug_594477_clickable_output.js": 3085, - "devtools/client/webconsole/test/browser_webconsole_bug_597460_filter_scroll.js": 3832, - "devtools/client/webconsole/test/browser_webconsole_bug_601667_filter_buttons.js": 3340, - "devtools/client/webconsole/test/browser_webconsole_bug_613642_maintain_scroll.js": 3035, - "devtools/client/webconsole/test/browser_webconsole_bug_622303_persistent_filters.js": 3624, - "devtools/client/webconsole/test/browser_webconsole_bug_658368_time_methods.js": 3263, - "devtools/client/webconsole/test/browser_webconsole_bug_659907_console_dir.js": 4742, - "devtools/client/webconsole/test/browser_webconsole_bug_782653_CSS_links_in_Style_Editor.js": 3443, - "devtools/client/webconsole/test/browser_webconsole_cached_autocomplete.js": 4445, - "devtools/client/webconsole/test/browser_webconsole_hpkp_invalid-headers.js": 4754, - "devtools/client/webconsole/test/browser_webconsole_network_panel.js": 4361, - "devtools/client/webconsole/test/browser_webconsole_output_02.js": 6708, - "devtools/client/webconsole/test/browser_webconsole_output_03.js": 6087, - "devtools/client/webconsole/test/browser_webconsole_output_04.js": 5134, - "devtools/client/webconsole/test/browser_webconsole_output_05.js": 5136, - "devtools/client/webconsole/test/browser_webconsole_output_06.js": 6408, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_01.js": 4636, - "devtools/client/webconsole/test/browser_webconsole_output_dom_elements_03.js": 3176, - "devtools/client/webconsole/test/browser_webconsole_split.js": 8112, - "devtools/client/webconsole/test/browser_webconsole_split_escape_key.js": 3379, - "devtools/client/webconsole/test/browser_webconsole_trackingprotection_errors.js": 3341, - "devtools/server/tests/browser/browser_markers-cycle-collection.js": 6062, - "devtools/server/tests/browser/browser_perf-samples-01.js": 3560 - } -} \ No newline at end of file diff --git a/testing/runtimes/mochitest-media-e10s.runtimes.json b/testing/runtimes/mochitest-media-e10s.runtimes.json new file mode 100644 index 000000000000..3ae35312eb33 --- /dev/null +++ b/testing/runtimes/mochitest-media-e10s.runtimes.json @@ -0,0 +1,318 @@ +{ + "excluded_test_average": 584, + "runtimes": { + "Main app process exited normally": 341984, + "dom/media/mediasource/test/test_AudioChange_mp4.html": 9348, + "dom/media/mediasource/test/test_BufferedSeek_mp4.html": 2356, + "dom/media/mediasource/test/test_BufferingWait.html": 4700, + "dom/media/mediasource/test/test_BufferingWait_mp4.html": 6328, + "dom/media/mediasource/test/test_DrainOnMissingData_mp4.html": 1927, + "dom/media/mediasource/test/test_Eviction_mp4.html": 2337, + "dom/media/mediasource/test/test_FrameSelection_mp4.html": 3445, + "dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek.html": 2302, + "dom/media/mediasource/test/test_HaveMetadataUnbufferedSeek_mp4.html": 1878, + "dom/media/mediasource/test/test_LoadedDataFired_mp4.html": 1969, + "dom/media/mediasource/test/test_MediaSource.html": 4656, + "dom/media/mediasource/test/test_MediaSource_memory_reporting.html": 3949, + "dom/media/mediasource/test/test_MediaSource_mp4.html": 2821, + "dom/media/mediasource/test/test_PlayEvents.html": 6231, + "dom/media/mediasource/test/test_ResumeAfterClearing_mp4.html": 5251, + "dom/media/mediasource/test/test_SeekNoData_mp4.html": 4373, + "dom/media/mediasource/test/test_SeekToEnd_mp4.html": 2081, + "dom/media/mediasource/test/test_SeekTwice_mp4.html": 6168, + "dom/media/mediasource/test/test_SplitAppend.html": 4647, + "dom/media/mediasource/test/test_SplitAppendDelay.html": 5661, + "dom/media/mediasource/test/test_SplitAppendDelay_mp4.html": 3808, + "dom/media/mediasource/test/test_SplitAppend_mp4.html": 2641, + "dom/media/mediasource/test/test_Threshold_mp4.html": 11771, + "dom/media/mediasource/test/test_TimestampOffset_mp4.html": 9424, + "dom/media/mediasource/test/test_WaitingOnMissingData.html": 4579, + "dom/media/mediasource/test/test_WaitingOnMissingDataEnded_mp4.html": 4149, + "dom/media/mediasource/test/test_WaitingOnMissingData_mp4.html": 12654, + "dom/media/mediasource/test/test_WaitingToEndedTransition_mp4.html": 5452, + "dom/media/test/test_VideoPlaybackQuality.html": 6425, + "dom/media/test/test_access_control.html": 7205, + "dom/media/test/test_aspectratio_mp4.html": 2482, + "dom/media/test/test_audio1.html": 1667, + "dom/media/test/test_autoplay_contentEditable.html": 3051, + "dom/media/test/test_background_video_no_suspend_disabled.html": 16282, + "dom/media/test/test_background_video_no_suspend_short_vid.html": 14338, + "dom/media/test/test_background_video_suspend.html": 15367, + "dom/media/test/test_background_video_suspend_ends.html": 14220, + "dom/media/test/test_buffered.html": 5602, + "dom/media/test/test_bug1018933.html": 1479, + "dom/media/test/test_bug1113600.html": 11019, + "dom/media/test/test_bug1242338.html": 4338, + "dom/media/test/test_bug448534.html": 2217, + "dom/media/test/test_bug465498.html": 9813, + "dom/media/test/test_bug495145.html": 21199, + "dom/media/test/test_bug495300.html": 4116, + "dom/media/test/test_bug686942.html": 6173, + "dom/media/test/test_bug874897.html": 2604, + "dom/media/test/test_bug879717.html": 2941, + "dom/media/test/test_bug895091.html": 2461, + "dom/media/test/test_chaining.html": 14415, + "dom/media/test/test_clone_media_element.html": 22705, + "dom/media/test/test_closing_connections.html": 5233, + "dom/media/test/test_cueless_webm_seek-1.html": 3060, + "dom/media/test/test_cueless_webm_seek-2.html": 2980, + "dom/media/test/test_delay_load.html": 2135, + "dom/media/test/test_dormant_playback.html": 3139, + "dom/media/test/test_eme_canvas_blocked.html": 7431, + "dom/media/test/test_eme_non_mse_fails.html": 1458, + "dom/media/test/test_eme_playback.html": 34730, + "dom/media/test/test_eme_request_notifications.html": 1392, + "dom/media/test/test_eme_stream_capture_blocked_case1.html": 6058, + "dom/media/test/test_eme_stream_capture_blocked_case2.html": 7110, + "dom/media/test/test_eme_stream_capture_blocked_case3.html": 6720, + "dom/media/test/test_eme_waitingforkey.html": 33190, + "dom/media/test/test_fastSeek-forwards.html": 2112, + "dom/media/test/test_fastSeek.html": 2315, + "dom/media/test/test_fragment_noplay.html": 11859, + "dom/media/test/test_fragment_play.html": 74338, + "dom/media/test/test_info_leak.html": 8174, + "dom/media/test/test_load.html": 11141, + "dom/media/test/test_load_candidates.html": 2499, + "dom/media/test/test_load_same_resource.html": 2874, + "dom/media/test/test_load_source.html": 3867, + "dom/media/test/test_loop.html": 22891, + "dom/media/test/test_media_selection.html": 10305, + "dom/media/test/test_media_sniffer.html": 5052, + "dom/media/test/test_mediarecorder_bitrate.html": 2289, + "dom/media/test/test_mediarecorder_principals.html": 2315, + "dom/media/test/test_mediarecorder_record_4ch_audiocontext.html": 1445, + "dom/media/test/test_mediarecorder_record_audiocontext.html": 1362, + "dom/media/test/test_mediarecorder_record_audionode.html": 1819, + "dom/media/test/test_mediarecorder_record_changing_video_resolution.html": 1645, + "dom/media/test/test_mediatrack_consuming_mediaresource.html": 7957, + "dom/media/test/test_mediatrack_replay_from_end.html": 8597, + "dom/media/test/test_metadata.html": 2651, + "dom/media/test/test_mixed_principals.html": 29107, + "dom/media/test/test_mozHasAudio.html": 1452, + "dom/media/test/test_new_audio.html": 5731, + "dom/media/test/test_paused_after_ended.html": 9715, + "dom/media/test/test_play_events.html": 9588, + "dom/media/test/test_play_events_2.html": 9558, + "dom/media/test/test_play_promise_1.html": 1939, + "dom/media/test/test_play_promise_12.html": 2432, + "dom/media/test/test_play_promise_13.html": 2214, + "dom/media/test/test_play_promise_14.html": 2287, + "dom/media/test/test_play_promise_16.html": 2615, + "dom/media/test/test_play_promise_18.html": 2366, + "dom/media/test/test_play_promise_2.html": 1919, + "dom/media/test/test_play_promise_3.html": 1947, + "dom/media/test/test_play_promise_6.html": 2308, + "dom/media/test/test_play_promise_7.html": 1491, + "dom/media/test/test_play_promise_8.html": 1750, + "dom/media/test/test_play_twice.html": 16766, + "dom/media/test/test_playback.html": 89110, + "dom/media/test/test_playback_errors.html": 1725, + "dom/media/test/test_playback_rate.html": 8757, + "dom/media/test/test_playback_rate_playpause.html": 2986, + "dom/media/test/test_playback_reactivate.html": 21458, + "dom/media/test/test_played.html": 21013, + "dom/media/test/test_preload_actions.html": 30330, + "dom/media/test/test_preload_suspend.html": 2815, + "dom/media/test/test_progress.html": 4194, + "dom/media/test/test_reactivate.html": 3672, + "dom/media/test/test_replay_metadata.html": 16567, + "dom/media/test/test_reset_src.html": 15540, + "dom/media/test/test_resolution_change.html": 7130, + "dom/media/test/test_seek-1.html": 13681, + "dom/media/test/test_seek-10.html": 4243, + "dom/media/test/test_seek-11.html": 3966, + "dom/media/test/test_seek-12.html": 3728, + "dom/media/test/test_seek-13.html": 3898, + "dom/media/test/test_seek-14.html": 7487, + "dom/media/test/test_seek-2.html": 24471, + "dom/media/test/test_seek-3.html": 3703, + "dom/media/test/test_seek-4.html": 3583, + "dom/media/test/test_seek-5.html": 13449, + "dom/media/test/test_seek-6.html": 4197, + "dom/media/test/test_seek-7.html": 3261, + "dom/media/test/test_seek-8.html": 3768, + "dom/media/test/test_seek-9.html": 3399, + "dom/media/test/test_seekToNextFrame.html": 15135, + "dom/media/test/test_seek_negative.html": 10131, + "dom/media/test/test_seek_out_of_range.html": 10572, + "dom/media/test/test_seekable1.html": 2000, + "dom/media/test/test_streams_gc.html": 1411, + "dom/media/test/test_streams_tracks.html": 5981, + "dom/media/test/test_texttrackcue.html": 5136, + "dom/media/test/test_texttrackevents_video.html": 9504, + "dom/media/test/test_timeupdate_small_files.html": 12465, + "dom/media/test/test_trackelementevent.html": 1785, + "dom/media/test/test_trackelementsrc.html": 4665, + "dom/media/test/test_video_dimensions.html": 1815, + "dom/media/test/test_video_in_audio_element.html": 3241, + "dom/media/test/test_video_to_canvas.html": 3690, + "dom/media/test/test_webvtt_empty_displaystate.html": 1750, + "dom/media/tests/mochitest/identity/test_fingerprints.html": 1762, + "dom/media/tests/mochitest/identity/test_getIdentityAssertion.html": 1344, + "dom/media/tests/mochitest/identity/test_loginNeeded.html": 2365, + "dom/media/tests/mochitest/identity/test_peerConnection_asymmetricIsolation.html": 6473, + "dom/media/tests/mochitest/identity/test_peerConnection_peerIdentity.html": 7710, + "dom/media/tests/mochitest/identity/test_setIdentityProvider.html": 6310, + "dom/media/tests/mochitest/identity/test_setIdentityProviderWithErrors.html": 6057, + "dom/media/tests/mochitest/test_a_noOp.html": 2515, + "dom/media/tests/mochitest/test_dataChannel_basicAudio.html": 5865, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html": 7423, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html": 8060, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoNoBundle.html": 8549, + "dom/media/tests/mochitest/test_dataChannel_basicDataOnly.html": 1500, + "dom/media/tests/mochitest/test_dataChannel_basicVideo.html": 4804, + "dom/media/tests/mochitest/test_dataChannel_bug1013809.html": 4822, + "dom/media/tests/mochitest/test_enumerateDevices.html": 3023, + "dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html": 11104, + "dom/media/tests/mochitest/test_getUserMedia_audioCapture.html": 3307, + "dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html": 2731, + "dom/media/tests/mochitest/test_getUserMedia_basicVideo_playAfterLoadedmetadata.html": 2495, + "dom/media/tests/mochitest/test_getUserMedia_bug1223696.html": 3281, + "dom/media/tests/mochitest/test_getUserMedia_callbacks.html": 2972, + "dom/media/tests/mochitest/test_getUserMedia_constraints.html": 5560, + "dom/media/tests/mochitest/test_getUserMedia_getTrackById.html": 1692, + "dom/media/tests/mochitest/test_getUserMedia_gumWithinGum.html": 1869, + "dom/media/tests/mochitest/test_getUserMedia_loadedmetadata.html": 2382, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_audio.html": 7119, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_tracks.html": 5522, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_video.html": 10779, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamClone.html": 9461, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamConstructors.html": 5688, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamTrackClone.html": 7248, + "dom/media/tests/mochitest/test_getUserMedia_peerIdentity.html": 4164, + "dom/media/tests/mochitest/test_getUserMedia_playAudioTwice.html": 3936, + "dom/media/tests/mochitest/test_getUserMedia_playVideoAudioTwice.html": 4136, + "dom/media/tests/mochitest/test_getUserMedia_playVideoTwice.html": 3034, + "dom/media/tests/mochitest/test_getUserMedia_stopAudioStream.html": 2266, + "dom/media/tests/mochitest/test_getUserMedia_stopAudioStreamWithFollowupAudio.html": 4492, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStream.html": 2384, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStreamWithFollowupVideoAudio.html": 4639, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoStream.html": 2311, + "dom/media/tests/mochitest/test_getUserMedia_trackEnded.html": 2190, + "dom/media/tests/mochitest/test_ondevicechange.html": 10060, + "dom/media/tests/mochitest/test_peerConnection_addAudioTrackToExistingVideoStream.html": 11089, + "dom/media/tests/mochitest/test_peerConnection_addDataChannel.html": 7676, + "dom/media/tests/mochitest/test_peerConnection_addDataChannelNoBundle.html": 8379, + "dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html": 4419, + "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStream.html": 8411, + "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html": 9481, + "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStream.html": 7261, + "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStreamNoBundle.html": 5377, + "dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html": 8868, + "dom/media/tests/mochitest/test_peerConnection_answererAddSecondAudioStream.html": 8687, + "dom/media/tests/mochitest/test_peerConnection_audioRenegotiationInactiveAnswer.html": 9598, + "dom/media/tests/mochitest/test_peerConnection_basicAudio.html": 5743, + "dom/media/tests/mochitest/test_peerConnection_basicAudioDynamicPtMissingRtpmap.html": 6001, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelay.html": 6449, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelayTCP.html": 6462, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATSrflx.html": 7011, + "dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html": 6171, + "dom/media/tests/mochitest/test_peerConnection_basicAudioRequireEOC.html": 5790, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html": 6826, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html": 6975, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundle.html": 7271, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundleNoRtcpMux.html": 7824, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoRtcpMux.html": 7469, + "dom/media/tests/mochitest/test_peerConnection_basicH264Video.html": 5421, + "dom/media/tests/mochitest/test_peerConnection_basicScreenshare.html": 4576, + "dom/media/tests/mochitest/test_peerConnection_basicVideo.html": 2731, + "dom/media/tests/mochitest/test_peerConnection_basicWindowshare.html": 3293, + "dom/media/tests/mochitest/test_peerConnection_bug1013809.html": 4341, + "dom/media/tests/mochitest/test_peerConnection_bug1042791.html": 2761, + "dom/media/tests/mochitest/test_peerConnection_bug827843.html": 3576, + "dom/media/tests/mochitest/test_peerConnection_callbacks.html": 3514, + "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_2d.html": 3905, + "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_webgl.html": 2272, + "dom/media/tests/mochitest/test_peerConnection_capturedVideo.html": 9032, + "dom/media/tests/mochitest/test_peerConnection_close.html": 1633, + "dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html": 1699, + "dom/media/tests/mochitest/test_peerConnection_constructedStream.html": 10280, + "dom/media/tests/mochitest/test_peerConnection_forwarding_basicAudioVideoCombined.html": 9580, + "dom/media/tests/mochitest/test_peerConnection_insertDTMF.html": 6532, + "dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html": 8643, + "dom/media/tests/mochitest/test_peerConnection_localRollback.html": 6115, + "dom/media/tests/mochitest/test_peerConnection_mapLikeToLegacyStatsMapping.html": 5650, + "dom/media/tests/mochitest/test_peerConnection_multiple_captureStream_canvas_2d.html": 4132, + "dom/media/tests/mochitest/test_peerConnection_noTrickleAnswer.html": 4256, + "dom/media/tests/mochitest/test_peerConnection_noTrickleOffer.html": 5886, + "dom/media/tests/mochitest/test_peerConnection_noTrickleOfferAnswer.html": 5925, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html": 4989, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html": 3700, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html": 4089, + "dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html": 3455, + "dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html": 8842, + "dom/media/tests/mochitest/test_peerConnection_remoteRollback.html": 6121, + "dom/media/tests/mochitest/test_peerConnection_removeAudioTrack.html": 7367, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrack.html": 8147, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrackNoBundle.html": 8243, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrack.html": 6025, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrackNoBundle.html": 3817, + "dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html": 3276, + "dom/media/tests/mochitest/test_peerConnection_renderAfterRenegotiation.html": 1451, + "dom/media/tests/mochitest/test_peerConnection_replaceTrack.html": 12235, + "dom/media/tests/mochitest/test_peerConnection_replaceVideoThenRenegotiate.html": 7866, + "dom/media/tests/mochitest/test_peerConnection_restartIce.html": 8151, + "dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html": 8573, + "dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html": 7924, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundle.html": 10016, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundleNoRtcpMux.html": 11878, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoRtcpMux.html": 11093, + "dom/media/tests/mochitest/test_peerConnection_scaleResolution.html": 11715, + "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInHaveLocalOffer.html": 2342, + "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInStable.html": 2368, + "dom/media/tests/mochitest/test_peerConnection_setLocalOfferInHaveRemoteOffer.html": 3341, + "dom/media/tests/mochitest/test_peerConnection_setParameters.html": 4621, + "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInHaveRemoteOffer.html": 1893, + "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInStable.html": 2797, + "dom/media/tests/mochitest/test_peerConnection_setRemoteOfferInHaveLocalOffer.html": 2827, + "dom/media/tests/mochitest/test_peerConnection_simulcastOffer.html": 15297, + "dom/media/tests/mochitest/test_peerConnection_syncSetDescription.html": 3399, + "dom/media/tests/mochitest/test_peerConnection_trackDisabling.html": 4865, + "dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html": 5496, + "dom/media/tests/mochitest/test_peerConnection_twoAudioStreams.html": 5139, + "dom/media/tests/mochitest/test_peerConnection_twoAudioTracksInOneStream.html": 6630, + "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreams.html": 5371, + "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreamsCombined.html": 6260, + "dom/media/tests/mochitest/test_peerConnection_twoVideoStreams.html": 8079, + "dom/media/tests/mochitest/test_peerConnection_twoVideoTracksInOneStream.html": 4975, + "dom/media/tests/mochitest/test_peerConnection_verifyAudioAfterRenegotiation.html": 10718, + "dom/media/tests/mochitest/test_peerConnection_verifyVideoAfterRenegotiation.html": 5421, + "dom/media/tests/mochitest/test_peerConnection_videoRenegotiationInactiveAnswer.html": 11893, + "dom/media/tests/mochitest/test_peerConnection_webAudio.html": 2377, + "dom/media/webaudio/test/blink/test_biquadFilterNodeAllPass.html": 1707, + "dom/media/webaudio/test/test_AudioBuffer.html": 3250, + "dom/media/webaudio/test/test_audioBufferSourceNodeDetached.html": 2981, + "dom/media/webaudio/test/test_audioContextSuspendResumeClose.html": 3812, + "dom/media/webaudio/test/test_bug1027864.html": 6948, + "dom/media/webaudio/test/test_bug1113634.html": 1323, + "dom/media/webaudio/test/test_bug964376.html": 1362, + "dom/media/webaudio/test/test_bug966247.html": 1627, + "dom/media/webaudio/test/test_delayNodeTailIncrease.html": 1843, + "dom/media/webaudio/test/test_delayNodeTailWithDisconnect.html": 2619, + "dom/media/webaudio/test/test_delayNodeTailWithGain.html": 1862, + "dom/media/webaudio/test/test_delayNodeTailWithReconnect.html": 3047, + "dom/media/webaudio/test/test_dynamicsCompressorNode.html": 2358, + "dom/media/webaudio/test/test_mediaDecoding.html": 2097, + "dom/media/webaudio/test/test_mediaElementAudioSourceNodeFidelity.html": 2988, + "dom/media/webaudio/test/test_mediaElementAudioSourceNodeVideo.html": 2334, + "dom/media/webaudio/test/test_mediaStreamAudioDestinationNode.html": 2213, + "dom/media/webaudio/test/test_mediaStreamAudioSourceNodeNoGC.html": 5505, + "dom/media/webaudio/test/test_pannerNodeAbove.html": 1308, + "dom/media/webaudio/test/test_pannerNodeTail.html": 3040, + "dom/media/webaudio/test/test_scriptProcessorNodeNotConnected.html": 4171, + "dom/media/webaudio/test/test_waveShaper.html": 1314, + "dom/media/webspeech/recognition/test/test_abort.html": 5461, + "dom/media/webspeech/recognition/test/test_audio_capture_error.html": 1712, + "dom/media/webspeech/recognition/test/test_call_start_from_end_handler.html": 1730, + "dom/media/webspeech/recognition/test/test_recognition_service_error.html": 1702, + "dom/media/webspeech/recognition/test/test_success_without_recognition_service.html": 1743, + "dom/media/webspeech/recognition/test/test_timeout.html": 10217, + "dom/media/webspeech/synth/test/startup/test_voiceschanged.html": 1589, + "dom/media/webspeech/synth/test/test_bfcache.html": 2814, + "dom/media/webspeech/synth/test/test_global_queue.html": 1841, + "dom/media/webspeech/synth/test/test_global_queue_pause.html": 2030, + "dom/media/webspeech/synth/test/test_indirect_service_events.html": 2536, + "dom/media/webspeech/synth/test/test_speech_cancel.html": 1566, + "dom/media/webspeech/synth/test/test_speech_queue.html": 6645 + } +} \ No newline at end of file diff --git a/testing/runtimes/mochitest-media.runtimes.json b/testing/runtimes/mochitest-media.runtimes.json index e79ee5a8a8d7..2d588797d748 100644 --- a/testing/runtimes/mochitest-media.runtimes.json +++ b/testing/runtimes/mochitest-media.runtimes.json @@ -1,270 +1,319 @@ { - "excluded_test_average": 418, + "excluded_test_average": 986, "runtimes": { - "dom/media/mediasource/test/test_BufferedSeek.html": 1753, - "dom/media/mediasource/test/test_BufferingWait.html": 1630, - "dom/media/mediasource/test/test_BufferingWait_mp4.html": 16224, - "dom/media/mediasource/test/test_DrainOnMissingData_mp4.html": 1210, - "dom/media/mediasource/test/test_MediaSource.html": 4436, - "dom/media/mediasource/test/test_MediaSource_memory_reporting.html": 4188, - "dom/media/mediasource/test/test_MediaSource_mp4.html": 1881, - "dom/media/mediasource/test/test_PlayEvents.html": 3980, - "dom/media/mediasource/test/test_SeekNoData_mp4.html": 3285, - "dom/media/mediasource/test/test_SeekTwice_mp4.html": 4836, - "dom/media/mediasource/test/test_SplitAppend.html": 4439, - "dom/media/mediasource/test/test_SplitAppendDelay.html": 5416, - "dom/media/mediasource/test/test_SplitAppendDelay_mp4.html": 2745, - "dom/media/mediasource/test/test_SplitAppend_mp4.html": 1886, - "dom/media/mediasource/test/test_TimestampOffset_mp4.html": 9904, - "dom/media/mediasource/test/test_WaitingOnMissingData_mp4.html": 10193, - "dom/media/mediasource/test/test_WaitingToEndedTransition_mp4.html": 4251, - "dom/media/test/test_VideoPlaybackQuality.html": 5586, - "dom/media/test/test_access_control.html": 10308, - "dom/media/test/test_audio1.html": 1393, - "dom/media/test/test_autoplay_contentEditable.html": 2161, - "dom/media/test/test_buffered.html": 3486, - "dom/media/test/test_bug1113600.html": 11993, - "dom/media/test/test_bug1242338.html": 3179, - "dom/media/test/test_bug448534.html": 1320, - "dom/media/test/test_bug465498.html": 12920, - "dom/media/test/test_bug495145.html": 24352, - "dom/media/test/test_bug495300.html": 3010, - "dom/media/test/test_bug654550.html": 1574, - "dom/media/test/test_bug686942.html": 4507, - "dom/media/test/test_bug874897.html": 1595, - "dom/media/test/test_bug879717.html": 9413, - "dom/media/test/test_bug895091.html": 1912, - "dom/media/test/test_chaining.html": 12604, - "dom/media/test/test_clone_media_element.html": 49170, - "dom/media/test/test_closing_connections.html": 7569, - "dom/media/test/test_cueless_webm_seek-1.html": 3064, - "dom/media/test/test_cueless_webm_seek-2.html": 2989, - "dom/media/test/test_delay_load.html": 1862, - "dom/media/test/test_dormant_playback.html": 1791, - "dom/media/test/test_eme_canvas_blocked.html": 5441, - "dom/media/test/test_eme_persistent_sessions.html": 1303, - "dom/media/test/test_eme_playback.html": 22647, - "dom/media/test/test_eme_stream_capture_blocked_case1.html": 4047, - "dom/media/test/test_eme_stream_capture_blocked_case2.html": 5220, - "dom/media/test/test_eme_stream_capture_blocked_case3.html": 4918, - "dom/media/test/test_fastSeek-forwards.html": 1901, - "dom/media/test/test_fastSeek.html": 1905, - "dom/media/test/test_fragment_noplay.html": 9794, - "dom/media/test/test_fragment_play.html": 70123, - "dom/media/test/test_imagecapture.html": 1814, - "dom/media/test/test_info_leak.html": 8293, - "dom/media/test/test_invalid_reject.html": 1282, - "dom/media/test/test_load.html": 8694, - "dom/media/test/test_load_candidates.html": 2458, - "dom/media/test/test_load_same_resource.html": 2480, - "dom/media/test/test_load_source.html": 9730, - "dom/media/test/test_loop.html": 35260, - "dom/media/test/test_media_selection.html": 8261, - "dom/media/test/test_media_sniffer.html": 3555, - "dom/media/test/test_mediarecorder_bitrate.html": 4877, - "dom/media/test/test_mediarecorder_record_4ch_audiocontext.html": 1349, - "dom/media/test/test_mediarecorder_record_audiocontext.html": 1275, - "dom/media/test/test_mediarecorder_record_audionode.html": 1742, - "dom/media/test/test_mediarecorder_record_no_timeslice.html": 3393, - "dom/media/test/test_mediarecorder_record_startstopstart.html": 1216, - "dom/media/test/test_mediarecorder_record_timeslice.html": 1465, - "dom/media/test/test_mediarecorder_reload_crash.html": 1671, - "dom/media/test/test_mediatrack_consuming_mediaresource.html": 10381, - "dom/media/test/test_mediatrack_parsing_ogg.html": 1593, - "dom/media/test/test_mediatrack_replay_from_end.html": 10324, - "dom/media/test/test_metadata.html": 1997, - "dom/media/test/test_mozHasAudio.html": 1293, - "dom/media/test/test_new_audio.html": 5584, - "dom/media/test/test_paused_after_ended.html": 12783, - "dom/media/test/test_play_events.html": 12884, - "dom/media/test/test_play_events_2.html": 12854, - "dom/media/test/test_play_twice.html": 24079, - "dom/media/test/test_playback.html": 89996, - "dom/media/test/test_playback_errors.html": 1554, - "dom/media/test/test_playback_rate.html": 30778, - "dom/media/test/test_playback_rate_playpause.html": 3056, - "dom/media/test/test_playback_reactivate.html": 22592, - "dom/media/test/test_played.html": 83622, - "dom/media/test/test_preload_actions.html": 29958, - "dom/media/test/test_preload_suspend.html": 2506, - "dom/media/test/test_progress.html": 16056, - "dom/media/test/test_reactivate.html": 39834, - "dom/media/test/test_replay_metadata.html": 24117, - "dom/media/test/test_reset_src.html": 16518, - "dom/media/test/test_resolution_change.html": 7320, - "dom/media/test/test_seek-1.html": 12300, - "dom/media/test/test_seek-10.html": 3623, - "dom/media/test/test_seek-11.html": 3386, - "dom/media/test/test_seek-12.html": 3221, - "dom/media/test/test_seek-13.html": 3334, - "dom/media/test/test_seek-2.html": 21326, - "dom/media/test/test_seek-3.html": 3247, - "dom/media/test/test_seek-4.html": 3123, - "dom/media/test/test_seek-5.html": 12195, - "dom/media/test/test_seek-6.html": 3527, - "dom/media/test/test_seek-7.html": 2809, - "dom/media/test/test_seek-8.html": 3235, - "dom/media/test/test_seek-9.html": 2916, - "dom/media/test/test_seek_negative.html": 12864, - "dom/media/test/test_seek_out_of_range.html": 12953, - "dom/media/test/test_seekable1.html": 2121, - "dom/media/test/test_standalone.html": 1543, - "dom/media/test/test_streams_element_capture_createObjectURL.html": 1305, - "dom/media/test/test_streams_individual_pause.html": 1808, - "dom/media/test/test_streams_tracks.html": 9212, - "dom/media/test/test_texttrackcue.html": 4436, - "dom/media/test/test_texttrackevents_video.html": 8710, - "dom/media/test/test_timeupdate_small_files.html": 15393, - "dom/media/test/test_video_dimensions.html": 2749, - "dom/media/test/test_video_in_audio_element.html": 6630, - "dom/media/test/test_video_to_canvas.html": 10679, - "dom/media/tests/mochitest/identity/test_fingerprints.html": 1317, - "dom/media/tests/mochitest/identity/test_getIdentityAssertion.html": 1238, - "dom/media/tests/mochitest/identity/test_loginNeeded.html": 1836, - "dom/media/tests/mochitest/identity/test_peerConnection_asymmetricIsolation.html": 2671, - "dom/media/tests/mochitest/identity/test_peerConnection_peerIdentity.html": 2153, - "dom/media/tests/mochitest/identity/test_setIdentityProvider.html": 1592, - "dom/media/tests/mochitest/identity/test_setIdentityProviderWithErrors.html": 1489, - "dom/media/tests/mochitest/ipc/test_ipc.html": 11641, - "dom/media/tests/mochitest/test_dataChannel_basicAudio.html": 5040, - "dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html": 4262, - "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html": 4054, - "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoNoBundle.html": 4298, - "dom/media/tests/mochitest/test_dataChannel_basicDataOnly.html": 1556, - "dom/media/tests/mochitest/test_dataChannel_basicVideo.html": 2484, - "dom/media/tests/mochitest/test_dataChannel_bug1013809.html": 3134, - "dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html": 3696, - "dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html": 1553, - "dom/media/tests/mochitest/test_getUserMedia_bug1223696.html": 2445, - "dom/media/tests/mochitest/test_getUserMedia_constraints.html": 2760, - "dom/media/tests/mochitest/test_getUserMedia_gumWithinGum.html": 1175, - "dom/media/tests/mochitest/test_getUserMedia_loadedmetadata.html": 1186, - "dom/media/tests/mochitest/test_getUserMedia_mediaStreamClone.html": 4394, - "dom/media/tests/mochitest/test_getUserMedia_mediaStreamConstructors.html": 2722, - "dom/media/tests/mochitest/test_getUserMedia_mediaStreamTrackClone.html": 2914, - "dom/media/tests/mochitest/test_getUserMedia_peerIdentity.html": 1892, - "dom/media/tests/mochitest/test_getUserMedia_playAudioTwice.html": 1897, - "dom/media/tests/mochitest/test_getUserMedia_playVideoAudioTwice.html": 1962, - "dom/media/tests/mochitest/test_getUserMedia_playVideoTwice.html": 1404, - "dom/media/tests/mochitest/test_getUserMedia_stopAudioStream.html": 1255, - "dom/media/tests/mochitest/test_getUserMedia_stopAudioStreamWithFollowupAudio.html": 1803, - "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStream.html": 1279, - "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStreamWithFollowupVideoAudio.html": 1887, - "dom/media/tests/mochitest/test_peerConnection_addDataChannel.html": 3927, - "dom/media/tests/mochitest/test_peerConnection_addDataChannelNoBundle.html": 4422, - "dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html": 2118, - "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStream.html": 4500, - "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html": 4868, - "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStream.html": 4209, - "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStreamNoBundle.html": 4095, - "dom/media/tests/mochitest/test_peerConnection_answererAddSecondAudioStream.html": 4434, - "dom/media/tests/mochitest/test_peerConnection_audioRenegotiationInactiveAnswer.html": 5819, - "dom/media/tests/mochitest/test_peerConnection_basicAudio.html": 3111, - "dom/media/tests/mochitest/test_peerConnection_basicAudioDynamicPtMissingRtpmap.html": 3158, - "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelay.html": 4080, - "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelayTCP.html": 4380, - "dom/media/tests/mochitest/test_peerConnection_basicAudioNATSrflx.html": 3964, - "dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html": 3251, - "dom/media/tests/mochitest/test_peerConnection_basicAudioRequireEOC.html": 3246, - "dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html": 3972, - "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html": 3811, - "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundle.html": 3864, - "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundleNoRtcpMux.html": 4154, - "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoRtcpMux.html": 3988, - "dom/media/tests/mochitest/test_peerConnection_basicH264Video.html": 2433, - "dom/media/tests/mochitest/test_peerConnection_basicScreenshare.html": 4075, - "dom/media/tests/mochitest/test_peerConnection_basicVideo.html": 2183, - "dom/media/tests/mochitest/test_peerConnection_basicWindowshare.html": 2784, - "dom/media/tests/mochitest/test_peerConnection_bug1013809.html": 2924, - "dom/media/tests/mochitest/test_peerConnection_bug1042791.html": 1291, - "dom/media/tests/mochitest/test_peerConnection_bug827843.html": 2939, - "dom/media/tests/mochitest/test_peerConnection_callbacks.html": 2019, - "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_2d.html": 2628, - "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_webgl.html": 2576, - "dom/media/tests/mochitest/test_peerConnection_capturedVideo.html": 6118, - "dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html": 1900, - "dom/media/tests/mochitest/test_peerConnection_forwarding_basicAudioVideoCombined.html": 3795, - "dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html": 4839, - "dom/media/tests/mochitest/test_peerConnection_localRollback.html": 3237, - "dom/media/tests/mochitest/test_peerConnection_multiple_captureStream_canvas_2d.html": 2764, - "dom/media/tests/mochitest/test_peerConnection_noTrickleAnswer.html": 3052, - "dom/media/tests/mochitest/test_peerConnection_noTrickleOffer.html": 3136, - "dom/media/tests/mochitest/test_peerConnection_noTrickleOfferAnswer.html": 3190, - "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html": 2351, - "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html": 2292, - "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html": 2647, - "dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html": 2313, - "dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html": 4743, - "dom/media/tests/mochitest/test_peerConnection_remoteRollback.html": 3274, - "dom/media/tests/mochitest/test_peerConnection_removeAudioTrack.html": 4141, - "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrack.html": 4517, - "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrackNoBundle.html": 4628, - "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrack.html": 3566, - "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrackNoBundle.html": 3165, - "dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html": 2829, - "dom/media/tests/mochitest/test_peerConnection_replaceTrack.html": 7135, - "dom/media/tests/mochitest/test_peerConnection_replaceVideoThenRenegotiate.html": 4312, - "dom/media/tests/mochitest/test_peerConnection_restartIce.html": 5264, - "dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html": 4380, - "dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html": 4462, - "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundle.html": 5897, - "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundleNoRtcpMux.html": 6143, - "dom/media/tests/mochitest/test_peerConnection_restartIceNoRtcpMux.html": 5697, - "dom/media/tests/mochitest/test_peerConnection_scaleResolution.html": 8597, - "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInHaveLocalOffer.html": 1769, - "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInStable.html": 1879, - "dom/media/tests/mochitest/test_peerConnection_setLocalOfferInHaveRemoteOffer.html": 1910, - "dom/media/tests/mochitest/test_peerConnection_setParameters.html": 2504, - "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInHaveRemoteOffer.html": 1733, - "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInStable.html": 1882, - "dom/media/tests/mochitest/test_peerConnection_setRemoteOfferInHaveLocalOffer.html": 1898, - "dom/media/tests/mochitest/test_peerConnection_simulcastOffer.html": 6490, - "dom/media/tests/mochitest/test_peerConnection_syncSetDescription.html": 2714, - "dom/media/tests/mochitest/test_peerConnection_trackDisabling.html": 3152, - "dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html": 3644, - "dom/media/tests/mochitest/test_peerConnection_twoAudioStreams.html": 3342, - "dom/media/tests/mochitest/test_peerConnection_twoAudioTracksInOneStream.html": 3662, - "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreams.html": 6054, - "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreamsCombined.html": 5751, - "dom/media/tests/mochitest/test_peerConnection_twoVideoStreams.html": 4286, - "dom/media/tests/mochitest/test_peerConnection_twoVideoTracksInOneStream.html": 3632, - "dom/media/tests/mochitest/test_peerConnection_verifyAudioAfterRenegotiation.html": 5232, - "dom/media/tests/mochitest/test_peerConnection_verifyVideoAfterRenegotiation.html": 3542, - "dom/media/tests/mochitest/test_peerConnection_videoRenegotiationInactiveAnswer.html": 5001, - "dom/media/tests/mochitest/test_peerConnection_webAudio.html": 1946, - "dom/media/webaudio/test/test_AudioBuffer.html": 3442, - "dom/media/webaudio/test/test_AudioNodeDevtoolsAPI.html": 1184, - "dom/media/webaudio/test/test_WebAudioMemoryReporting.html": 1699, - "dom/media/webaudio/test/test_audioBufferSourceNodeDetached.html": 3940, - "dom/media/webaudio/test/test_audioContextSuspendResumeClose.html": 3068, - "dom/media/webaudio/test/test_bug1027864.html": 7421, - "dom/media/webaudio/test/test_bug875221.html": 1452, - "dom/media/webaudio/test/test_bug875402.html": 1384, - "dom/media/webaudio/test/test_currentTime.html": 1168, - "dom/media/webaudio/test/test_delayNodeTailIncrease.html": 1258, - "dom/media/webaudio/test/test_delayNodeTailWithDisconnect.html": 1989, - "dom/media/webaudio/test/test_delayNodeTailWithGain.html": 1221, - "dom/media/webaudio/test/test_delayNodeTailWithReconnect.html": 2469, - "dom/media/webaudio/test/test_dynamicsCompressorNode.html": 1169, - "dom/media/webaudio/test/test_mediaDecoding.html": 1734, - "dom/media/webaudio/test/test_mediaElementAudioSourceNodeFidelity.html": 2288, - "dom/media/webaudio/test/test_mediaStreamAudioDestinationNode.html": 2163, - "dom/media/webaudio/test/test_oscillatorNode2.html": 1193, - "dom/media/webaudio/test/test_pannerNodeTail.html": 2429, - "dom/media/webaudio/test/test_scriptProcessorNodeNotConnected.html": 4154, - "dom/media/webspeech/recognition/test/test_abort.html": 4522, - "dom/media/webspeech/recognition/test/test_audio_capture_error.html": 1869, - "dom/media/webspeech/recognition/test/test_call_start_from_end_handler.html": 1849, - "dom/media/webspeech/recognition/test/test_nested_eventloop.html": 1300, - "dom/media/webspeech/recognition/test/test_recognition_service_error.html": 1819, - "dom/media/webspeech/recognition/test/test_success_without_recognition_service.html": 1823, - "dom/media/webspeech/recognition/test/test_timeout.html": 5978, - "dom/media/webspeech/synth/test/startup/test_voiceschanged.html": 1533, - "dom/media/webspeech/synth/test/test_bfcache.html": 1799, - "dom/media/webspeech/synth/test/test_global_queue.html": 1525, - "dom/media/webspeech/synth/test/test_global_queue_pause.html": 1761, - "dom/media/webspeech/synth/test/test_indirect_service_events.html": 2437, - "dom/media/webspeech/synth/test/test_speech_cancel.html": 1279, - "dom/media/webspeech/synth/test/test_speech_queue.html": 5749 + "(SimpleTest/TestRunner.js)": 14172, + "Main app process exited normally": 36320, + "dom/media/mediasource/test/test_AudioChange_mp4.html": 7933, + "dom/media/mediasource/test/test_BufferedSeek.html": 2604, + "dom/media/mediasource/test/test_BufferingWait.html": 3927, + "dom/media/mediasource/test/test_BufferingWait_mp4.html": 4992, + "dom/media/mediasource/test/test_Eviction_mp4.html": 16733, + "dom/media/mediasource/test/test_FrameSelection_mp4.html": 3326, + "dom/media/mediasource/test/test_MediaSource.html": 5447, + "dom/media/mediasource/test/test_MediaSource_memory_reporting.html": 5924, + "dom/media/mediasource/test/test_MediaSource_mp4.html": 2423, + "dom/media/mediasource/test/test_PlayEvents.html": 4419, + "dom/media/mediasource/test/test_ResumeAfterClearing_mp4.html": 3649, + "dom/media/mediasource/test/test_SeekNoData_mp4.html": 3749, + "dom/media/mediasource/test/test_SeekTwice_mp4.html": 5234, + "dom/media/mediasource/test/test_SplitAppend.html": 5241, + "dom/media/mediasource/test/test_SplitAppendDelay.html": 6382, + "dom/media/mediasource/test/test_SplitAppendDelay_mp4.html": 3274, + "dom/media/mediasource/test/test_SplitAppend_mp4.html": 2259, + "dom/media/mediasource/test/test_Threshold_mp4.html": 9893, + "dom/media/mediasource/test/test_TimestampOffset_mp4.html": 8002, + "dom/media/mediasource/test/test_WaitingOnMissingData.html": 3880, + "dom/media/mediasource/test/test_WaitingOnMissingDataEnded_mp4.html": 3487, + "dom/media/mediasource/test/test_WaitingOnMissingData_mp4.html": 10757, + "dom/media/mediasource/test/test_WaitingToEndedTransition_mp4.html": 4647, + "dom/media/test/test_VideoPlaybackQuality.html": 4947, + "dom/media/test/test_access_control.html": 10799, + "dom/media/test/test_autoplay_contentEditable.html": 2755, + "dom/media/test/test_background_video_no_suspend_disabled.html": 12886, + "dom/media/test/test_background_video_no_suspend_short_vid.html": 12305, + "dom/media/test/test_background_video_suspend.html": 12433, + "dom/media/test/test_background_video_suspend_ends.html": 12382, + "dom/media/test/test_buffered.html": 4861, + "dom/media/test/test_bug1113600.html": 9962, + "dom/media/test/test_bug1242338.html": 3793, + "dom/media/test/test_bug448534.html": 2140, + "dom/media/test/test_bug465498.html": 9168, + "dom/media/test/test_bug495145.html": 18939, + "dom/media/test/test_bug495300.html": 3639, + "dom/media/test/test_bug686942.html": 5387, + "dom/media/test/test_bug874897.html": 2458, + "dom/media/test/test_bug879717.html": 2795, + "dom/media/test/test_chaining.html": 12803, + "dom/media/test/test_clone_media_element.html": 20321, + "dom/media/test/test_closing_connections.html": 4324, + "dom/media/test/test_cueless_webm_seek-1.html": 2883, + "dom/media/test/test_cueless_webm_seek-2.html": 2821, + "dom/media/test/test_dormant_playback.html": 2410, + "dom/media/test/test_eme_canvas_blocked.html": 6294, + "dom/media/test/test_eme_playback.html": 29650, + "dom/media/test/test_eme_stream_capture_blocked_case1.html": 4955, + "dom/media/test/test_eme_stream_capture_blocked_case2.html": 6055, + "dom/media/test/test_eme_stream_capture_blocked_case3.html": 5618, + "dom/media/test/test_eme_waitingforkey.html": 28600, + "dom/media/test/test_fastSeek.html": 2077, + "dom/media/test/test_fragment_noplay.html": 9845, + "dom/media/test/test_fragment_play.html": 64205, + "dom/media/test/test_info_leak.html": 7296, + "dom/media/test/test_load.html": 8546, + "dom/media/test/test_load_candidates.html": 2435, + "dom/media/test/test_load_same_resource.html": 2493, + "dom/media/test/test_load_source.html": 3375, + "dom/media/test/test_loop.html": 20034, + "dom/media/test/test_media_selection.html": 8367, + "dom/media/test/test_media_sniffer.html": 4100, + "dom/media/test/test_mediatrack_consuming_mediaresource.html": 7090, + "dom/media/test/test_mediatrack_replay_from_end.html": 7837, + "dom/media/test/test_metadata.html": 2223, + "dom/media/test/test_mixed_principals.html": 24477, + "dom/media/test/test_new_audio.html": 5230, + "dom/media/test/test_paused_after_ended.html": 8555, + "dom/media/test/test_play_events.html": 8395, + "dom/media/test/test_play_events_2.html": 8326, + "dom/media/test/test_play_promise_12.html": 2355, + "dom/media/test/test_play_promise_14.html": 2099, + "dom/media/test/test_play_promise_16.html": 2316, + "dom/media/test/test_play_promise_18.html": 2285, + "dom/media/test/test_play_promise_6.html": 2216, + "dom/media/test/test_play_twice.html": 14229, + "dom/media/test/test_playback.html": 76179, + "dom/media/test/test_playback_rate.html": 7902, + "dom/media/test/test_playback_rate_playpause.html": 2984, + "dom/media/test/test_playback_reactivate.html": 18530, + "dom/media/test/test_played.html": 18215, + "dom/media/test/test_preload_actions.html": 26225, + "dom/media/test/test_preload_suspend.html": 2497, + "dom/media/test/test_progress.html": 3962, + "dom/media/test/test_reactivate.html": 3526, + "dom/media/test/test_replay_metadata.html": 14580, + "dom/media/test/test_reset_src.html": 13129, + "dom/media/test/test_resolution_change.html": 6441, + "dom/media/test/test_seek-1.html": 11931, + "dom/media/test/test_seek-10.html": 3667, + "dom/media/test/test_seek-11.html": 3453, + "dom/media/test/test_seek-12.html": 3227, + "dom/media/test/test_seek-13.html": 3398, + "dom/media/test/test_seek-14.html": 6461, + "dom/media/test/test_seek-2.html": 21295, + "dom/media/test/test_seek-3.html": 3197, + "dom/media/test/test_seek-4.html": 3393, + "dom/media/test/test_seek-5.html": 11744, + "dom/media/test/test_seek-6.html": 3660, + "dom/media/test/test_seek-7.html": 2849, + "dom/media/test/test_seek-8.html": 3267, + "dom/media/test/test_seek-9.html": 2993, + "dom/media/test/test_seekToNextFrame.html": 12736, + "dom/media/test/test_seek_negative.html": 9139, + "dom/media/test/test_seek_out_of_range.html": 9314, + "dom/media/test/test_streams_tracks.html": 5382, + "dom/media/test/test_texttrackcue.html": 4182, + "dom/media/test/test_texttrackevents_video.html": 8116, + "dom/media/test/test_timeupdate_small_files.html": 11065, + "dom/media/test/test_trackelementsrc.html": 3896, + "dom/media/test/test_video_in_audio_element.html": 2261, + "dom/media/test/test_video_to_canvas.html": 2844, + "dom/media/tests/mochitest/identity/test_peerConnection_asymmetricIsolation.html": 2595, + "dom/media/tests/mochitest/identity/test_peerConnection_peerIdentity.html": 2442, + "dom/media/tests/mochitest/identity/test_setIdentityProvider.html": 2351, + "dom/media/tests/mochitest/identity/test_setIdentityProviderWithErrors.html": 2230, + "dom/media/tests/mochitest/test_a_noOp.html": 3419, + "dom/media/tests/mochitest/test_dataChannel_basicAudio.html": 5367, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html": 5580, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoCombined.html": 6117, + "dom/media/tests/mochitest/test_dataChannel_basicAudioVideoNoBundle.html": 6193, + "dom/media/tests/mochitest/test_dataChannel_basicDataOnly.html": 7244, + "dom/media/tests/mochitest/test_dataChannel_basicVideo.html": 3232, + "dom/media/tests/mochitest/test_dataChannel_bug1013809.html": 4337, + "dom/media/tests/mochitest/test_dataChannel_noOffer.html": 3451, + "dom/media/tests/mochitest/test_enumerateDevices.html": 5292, + "dom/media/tests/mochitest/test_getUserMedia_active_autoplay.html": 3659, + "dom/media/tests/mochitest/test_getUserMedia_addTrackRemoveTrack.html": 10408, + "dom/media/tests/mochitest/test_getUserMedia_addtrack_removetrack_events.html": 3699, + "dom/media/tests/mochitest/test_getUserMedia_audioCapture.html": 2784, + "dom/media/tests/mochitest/test_getUserMedia_basicAudio.html": 3392, + "dom/media/tests/mochitest/test_getUserMedia_basicScreenshare.html": 2862, + "dom/media/tests/mochitest/test_getUserMedia_basicVideo.html": 2929, + "dom/media/tests/mochitest/test_getUserMedia_basicVideoAudio.html": 3220, + "dom/media/tests/mochitest/test_getUserMedia_basicVideo_playAfterLoadedmetadata.html": 4502, + "dom/media/tests/mochitest/test_getUserMedia_bug1223696.html": 6041, + "dom/media/tests/mochitest/test_getUserMedia_callbacks.html": 5040, + "dom/media/tests/mochitest/test_getUserMedia_constraints.html": 7750, + "dom/media/tests/mochitest/test_getUserMedia_getTrackById.html": 4125, + "dom/media/tests/mochitest/test_getUserMedia_gumWithinGum.html": 4396, + "dom/media/tests/mochitest/test_getUserMedia_loadedmetadata.html": 4541, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_audio.html": 6601, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_tracks.html": 5187, + "dom/media/tests/mochitest/test_getUserMedia_mediaElementCapture_video.html": 9516, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamClone.html": 15222, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamConstructors.html": 9331, + "dom/media/tests/mochitest/test_getUserMedia_mediaStreamTrackClone.html": 11248, + "dom/media/tests/mochitest/test_getUserMedia_peerIdentity.html": 6813, + "dom/media/tests/mochitest/test_getUserMedia_playAudioTwice.html": 6611, + "dom/media/tests/mochitest/test_getUserMedia_playVideoAudioTwice.html": 6338, + "dom/media/tests/mochitest/test_getUserMedia_playVideoTwice.html": 5253, + "dom/media/tests/mochitest/test_getUserMedia_spinEventLoop.html": 2976, + "dom/media/tests/mochitest/test_getUserMedia_stopAudioStream.html": 4339, + "dom/media/tests/mochitest/test_getUserMedia_stopAudioStreamWithFollowupAudio.html": 6850, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStream.html": 4884, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoAudioStreamWithFollowupVideoAudio.html": 7404, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoStream.html": 4830, + "dom/media/tests/mochitest/test_getUserMedia_stopVideoStreamWithFollowupVideo.html": 3397, + "dom/media/tests/mochitest/test_getUserMedia_trackCloneCleanup.html": 3077, + "dom/media/tests/mochitest/test_getUserMedia_trackEnded.html": 4713, + "dom/media/tests/mochitest/test_ondevicechange.html": 8529, + "dom/media/tests/mochitest/test_peerConnection_addAudioTrackToExistingVideoStream.html": 10081, + "dom/media/tests/mochitest/test_peerConnection_addDataChannel.html": 6529, + "dom/media/tests/mochitest/test_peerConnection_addDataChannelNoBundle.html": 7030, + "dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html": 7175, + "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStream.html": 7185, + "dom/media/tests/mochitest/test_peerConnection_addSecondAudioStreamNoBundle.html": 7709, + "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStream.html": 5092, + "dom/media/tests/mochitest/test_peerConnection_addSecondVideoStreamNoBundle.html": 3405, + "dom/media/tests/mochitest/test_peerConnection_addtrack_removetrack_events.html": 8255, + "dom/media/tests/mochitest/test_peerConnection_answererAddSecondAudioStream.html": 7126, + "dom/media/tests/mochitest/test_peerConnection_audioRenegotiationInactiveAnswer.html": 9008, + "dom/media/tests/mochitest/test_peerConnection_basicAudio.html": 5295, + "dom/media/tests/mochitest/test_peerConnection_basicAudioDynamicPtMissingRtpmap.html": 5307, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelay.html": 5687, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATRelayTCP.html": 5660, + "dom/media/tests/mochitest/test_peerConnection_basicAudioNATSrflx.html": 5939, + "dom/media/tests/mochitest/test_peerConnection_basicAudioPcmaPcmuOnly.html": 5565, + "dom/media/tests/mochitest/test_peerConnection_basicAudioRequireEOC.html": 10048, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideo.html": 5610, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoCombined.html": 5672, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundle.html": 5805, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoBundleNoRtcpMux.html": 5994, + "dom/media/tests/mochitest/test_peerConnection_basicAudioVideoNoRtcpMux.html": 5836, + "dom/media/tests/mochitest/test_peerConnection_basicH264Video.html": 4095, + "dom/media/tests/mochitest/test_peerConnection_basicScreenshare.html": 3590, + "dom/media/tests/mochitest/test_peerConnection_basicVideo.html": 3691, + "dom/media/tests/mochitest/test_peerConnection_basicWindowshare.html": 2678, + "dom/media/tests/mochitest/test_peerConnection_bug1013809.html": 4001, + "dom/media/tests/mochitest/test_peerConnection_bug1042791.html": 2516, + "dom/media/tests/mochitest/test_peerConnection_bug1064223.html": 3289, + "dom/media/tests/mochitest/test_peerConnection_bug1227781.html": 3080, + "dom/media/tests/mochitest/test_peerConnection_bug822674.html": 3055, + "dom/media/tests/mochitest/test_peerConnection_bug825703.html": 3574, + "dom/media/tests/mochitest/test_peerConnection_bug827843.html": 7751, + "dom/media/tests/mochitest/test_peerConnection_bug834153.html": 3457, + "dom/media/tests/mochitest/test_peerConnection_callbacks.html": 6208, + "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_2d.html": 3683, + "dom/media/tests/mochitest/test_peerConnection_captureStream_canvas_webgl.html": 6849, + "dom/media/tests/mochitest/test_peerConnection_capturedVideo.html": 6239, + "dom/media/tests/mochitest/test_peerConnection_close.html": 4746, + "dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html": 5050, + "dom/media/tests/mochitest/test_peerConnection_constructedStream.html": 6567, + "dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html": 3535, + "dom/media/tests/mochitest/test_peerConnection_forwarding_basicAudioVideoCombined.html": 6883, + "dom/media/tests/mochitest/test_peerConnection_insertDTMF.html": 5185, + "dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html": 7357, + "dom/media/tests/mochitest/test_peerConnection_localRollback.html": 5333, + "dom/media/tests/mochitest/test_peerConnection_multiple_captureStream_canvas_2d.html": 5186, + "dom/media/tests/mochitest/test_peerConnection_noTrickleAnswer.html": 3941, + "dom/media/tests/mochitest/test_peerConnection_noTrickleOffer.html": 5222, + "dom/media/tests/mochitest/test_peerConnection_noTrickleOfferAnswer.html": 5232, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveAudio.html": 4628, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideo.html": 8450, + "dom/media/tests/mochitest/test_peerConnection_offerRequiresReceiveVideoAudio.html": 3840, + "dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html": 9428, + "dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html": 7604, + "dom/media/tests/mochitest/test_peerConnection_remoteRollback.html": 5372, + "dom/media/tests/mochitest/test_peerConnection_removeAudioTrack.html": 6696, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrack.html": 7217, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddAudioTrackNoBundle.html": 7206, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrack.html": 7943, + "dom/media/tests/mochitest/test_peerConnection_removeThenAddVideoTrackNoBundle.html": 2718, + "dom/media/tests/mochitest/test_peerConnection_removeVideoTrack.html": 4998, + "dom/media/tests/mochitest/test_peerConnection_renderAfterRenegotiation.html": 2110, + "dom/media/tests/mochitest/test_peerConnection_replaceTrack.html": 9788, + "dom/media/tests/mochitest/test_peerConnection_replaceVideoThenRenegotiate.html": 11008, + "dom/media/tests/mochitest/test_peerConnection_restartIce.html": 6085, + "dom/media/tests/mochitest/test_peerConnection_restartIceLocalAndRemoteRollback.html": 6723, + "dom/media/tests/mochitest/test_peerConnection_restartIceLocalRollback.html": 6709, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundle.html": 7463, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoBundleNoRtcpMux.html": 8001, + "dom/media/tests/mochitest/test_peerConnection_restartIceNoRtcpMux.html": 7706, + "dom/media/tests/mochitest/test_peerConnection_scaleResolution.html": 9955, + "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInHaveLocalOffer.html": 4827, + "dom/media/tests/mochitest/test_peerConnection_setLocalAnswerInStable.html": 5810, + "dom/media/tests/mochitest/test_peerConnection_setLocalOfferInHaveRemoteOffer.html": 6196, + "dom/media/tests/mochitest/test_peerConnection_setParameters.html": 3737, + "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInHaveRemoteOffer.html": 5241, + "dom/media/tests/mochitest/test_peerConnection_setRemoteAnswerInStable.html": 5645, + "dom/media/tests/mochitest/test_peerConnection_setRemoteOfferInHaveLocalOffer.html": 5696, + "dom/media/tests/mochitest/test_peerConnection_simulcastOffer.html": 13242, + "dom/media/tests/mochitest/test_peerConnection_syncSetDescription.html": 2438, + "dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html": 4474, + "dom/media/tests/mochitest/test_peerConnection_toJSON.html": 3542, + "dom/media/tests/mochitest/test_peerConnection_trackDisabling.html": 3269, + "dom/media/tests/mochitest/test_peerConnection_trackDisabling_clones.html": 5158, + "dom/media/tests/mochitest/test_peerConnection_twoAudioStreams.html": 4285, + "dom/media/tests/mochitest/test_peerConnection_twoAudioTracksInOneStream.html": 5393, + "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreams.html": 7058, + "dom/media/tests/mochitest/test_peerConnection_twoAudioVideoStreamsCombined.html": 7478, + "dom/media/tests/mochitest/test_peerConnection_twoVideoStreams.html": 5152, + "dom/media/tests/mochitest/test_peerConnection_twoVideoTracksInOneStream.html": 2751, + "dom/media/tests/mochitest/test_peerConnection_verifyAudioAfterRenegotiation.html": 9818, + "dom/media/tests/mochitest/test_peerConnection_verifyVideoAfterRenegotiation.html": 4894, + "dom/media/tests/mochitest/test_peerConnection_videoRenegotiationInactiveAnswer.html": 10240, + "dom/media/tests/mochitest/test_peerConnection_webAudio.html": 2279, + "dom/media/tests/mochitest/test_selftest.html": 3334, + "dom/media/webaudio/test/blink/test_biquadFilterNodeAllPass.html": 2235, + "dom/media/webaudio/test/blink/test_iirFilterNode.html": 1989, + "dom/media/webaudio/test/test_AudioBuffer.html": 7560, + "dom/media/webaudio/test/test_AudioNodeDevtoolsAPI.html": 5133, + "dom/media/webaudio/test/test_ScriptProcessorCollected1.html": 4011, + "dom/media/webaudio/test/test_WebAudioMemoryReporting.html": 2594, + "dom/media/webaudio/test/test_analyserNodeOutput.html": 2036, + "dom/media/webaudio/test/test_audioBufferSourceNodeDetached.html": 6965, + "dom/media/webaudio/test/test_audioContextSuspendResumeClose.html": 4991, + "dom/media/webaudio/test/test_bug1027864.html": 12874, + "dom/media/webaudio/test/test_bug866737.html": 2230, + "dom/media/webaudio/test/test_bug875221.html": 3379, + "dom/media/webaudio/test/test_bug875402.html": 3253, + "dom/media/webaudio/test/test_bug964376.html": 2349, + "dom/media/webaudio/test/test_bug966247.html": 10376, + "dom/media/webaudio/test/test_convolverNodeDelay.html": 2561, + "dom/media/webaudio/test/test_delayNode.html": 2129, + "dom/media/webaudio/test/test_delayNodeTailIncrease.html": 3521, + "dom/media/webaudio/test/test_delayNodeTailWithDisconnect.html": 3904, + "dom/media/webaudio/test/test_delayNodeTailWithGain.html": 3150, + "dom/media/webaudio/test/test_delayNodeTailWithReconnect.html": 4324, + "dom/media/webaudio/test/test_dynamicsCompressorNode.html": 3266, + "dom/media/webaudio/test/test_maxChannelCount.html": 2293, + "dom/media/webaudio/test/test_mediaDecoding.html": 4323, + "dom/media/webaudio/test/test_mediaElementAudioSourceNode.html": 2024, + "dom/media/webaudio/test/test_mediaElementAudioSourceNodeFidelity.html": 2819, + "dom/media/webaudio/test/test_mediaElementAudioSourceNodeVideo.html": 4320, + "dom/media/webaudio/test/test_mediaStreamAudioDestinationNode.html": 3101, + "dom/media/webaudio/test/test_mediaStreamAudioSourceNodeNoGC.html": 9747, + "dom/media/webaudio/test/test_oscillatorNode2.html": 4684, + "dom/media/webaudio/test/test_pannerNodeAbove.html": 2093, + "dom/media/webaudio/test/test_pannerNodeTail.html": 5026, + "dom/media/webaudio/test/test_periodicWaveBandLimiting.html": 2294, + "dom/media/webaudio/test/test_scriptProcessorNode.html": 2902, + "dom/media/webaudio/test/test_scriptProcessorNodeNotConnected.html": 4687, + "dom/media/webaudio/test/test_scriptProcessorNodePassThrough.html": 2060, + "dom/media/webaudio/test/test_sequentialBufferSourceWithResampling.html": 2180, + "dom/media/webaudio/test/test_waveShaper.html": 2117, + "dom/media/webspeech/recognition/test/test_abort.html": 4146, + "dom/media/webspeech/recognition/test/test_audio_capture_error.html": 2299, + "dom/media/webspeech/recognition/test/test_recognition_service_error.html": 2541, + "dom/media/webspeech/recognition/test/test_success_without_recognition_service.html": 2324, + "dom/media/webspeech/recognition/test/test_timeout.html": 10821, + "dom/media/webspeech/synth/test/startup/test_voiceschanged.html": 2275, + "dom/media/webspeech/synth/test/test_bfcache.html": 4391, + "dom/media/webspeech/synth/test/test_global_queue.html": 4323, + "dom/media/webspeech/synth/test/test_global_queue_cancel.html": 3166, + "dom/media/webspeech/synth/test/test_global_queue_pause.html": 4655, + "dom/media/webspeech/synth/test/test_indirect_service_events.html": 4333, + "dom/media/webspeech/synth/test/test_speech_cancel.html": 3720, + "dom/media/webspeech/synth/test/test_speech_error.html": 2155, + "dom/media/webspeech/synth/test/test_speech_queue.html": 8880, + "dom/media/webspeech/synth/test/test_speech_simple.html": 2453 } } \ No newline at end of file From fa8e1aa59fbb10190433299fa37e8e9ba4cf51f3 Mon Sep 17 00:00:00 2001 From: Hammad Akhtar Date: Wed, 21 Dec 2016 13:34:04 +0530 Subject: [PATCH 14/94] Bug 1302804 - Ensure that tasks in a taskgraph do not have duplicate gecko.v2 routes; r=dustin MozReview-Commit-ID: B4Ok4WhqBVq --HG-- extra : rebase_source : a2c7908714a8cff4d0eebb73010798cdebb5eb8a --- taskcluster/taskgraph/generator.py | 7 ++++++- taskcluster/taskgraph/util/verify.py | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/taskcluster/taskgraph/generator.py b/taskcluster/taskgraph/generator.py index 926b007592af..d4711f54149b 100644 --- a/taskcluster/taskgraph/generator.py +++ b/taskcluster/taskgraph/generator.py @@ -12,7 +12,11 @@ from .graph import Graph from .taskgraph import TaskGraph from .optimize import optimize_task_graph from .util.python_path import find_object -from .util.verify import verify_docs, verify_task_graph_symbol +from .util.verify import ( + verify_docs, + verify_task_graph_symbol, + verify_gecko_v2_routes, +) logger = logging.getLogger(__name__) @@ -218,6 +222,7 @@ class TaskGraphGenerator(object): {l: all_tasks[l] for l in target_graph.nodes}, target_graph) target_task_graph.for_each_task(verify_task_graph_symbol, scratch_pad={}) + target_task_graph.for_each_task(verify_gecko_v2_routes, scratch_pad={}) yield 'target_task_graph', target_task_graph logger.info("Generating optimized task graph") diff --git a/taskcluster/taskgraph/util/verify.py b/taskcluster/taskgraph/util/verify.py index 8810968c7d1d..a0ab30c554ea 100644 --- a/taskcluster/taskgraph/util/verify.py +++ b/taskcluster/taskgraph/util/verify.py @@ -65,3 +65,23 @@ def verify_task_graph_symbol(task, taskgraph, scratch_pad): ) else: scratch_pad[key] = task.label + + +def verify_gecko_v2_routes(task, taskgraph, scratch_pad): + """ + This function ensures that any two + tasks have distinct index.v2.routes + """ + route_prefix = "index.gecko.v2" + task_dict = task.task + routes = task_dict.get('routes', []) + + for route in routes: + if route.startswith(route_prefix): + if route in scratch_pad: + raise Exception( + "conflict between {}:{} for route: {}" + .format(task.label, scratch_pad[route], route) + ) + else: + scratch_pad[route] = task.label From 7e20b1d8c26ca976622d0090ce70b20311e236f9 Mon Sep 17 00:00:00 2001 From: Rob Wood Date: Tue, 22 Nov 2016 12:12:44 -0500 Subject: [PATCH 15/94] Bug 1311814 - TC linux64 talos configs (restricted to try only);r=wcosta MozReview-Commit-ID: Chn2Pu82X4x --HG-- extra : rebase_source : d7efb2343811462ff7046b122173a5473e5500a1 --- taskcluster/ci/desktop-test/test-sets.yml | 9 ++ taskcluster/ci/desktop-test/tests.yml | 162 ++++++++++++++++++++++ taskcluster/taskgraph/transforms/task.py | 2 + 3 files changed, 173 insertions(+) diff --git a/taskcluster/ci/desktop-test/test-sets.yml b/taskcluster/ci/desktop-test/test-sets.yml index 96402567e275..ccb59d5907e5 100644 --- a/taskcluster/ci/desktop-test/test-sets.yml +++ b/taskcluster/ci/desktop-test/test-sets.yml @@ -65,6 +65,15 @@ all-tests-opt: - web-platform-tests-wdspec - xpcshell - mochitest-valgrind + - talos-chrome + - talos-dromaeojs + - talos-g1 + - talos-g2 + - talos-g3 + - talos-g4 + - talos-other + - talos-svgr + - talos-tp5o stylo-tests: - cppunit diff --git a/taskcluster/ci/desktop-test/tests.yml b/taskcluster/ci/desktop-test/tests.yml index 981631521d22..fe9dc8f7321a 100644 --- a/taskcluster/ci/desktop-test/tests.yml +++ b/taskcluster/ci/desktop-test/tests.yml @@ -642,6 +642,168 @@ reftest-stylo: extra-options: - --reftest-suite=reftest-stylo +talos-chrome: + description: "Talos chrome" + suite: talos + talos-try-name: chromez + treeherder-symbol: tc-T(c) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=chromez + +talos-dromaeojs: + description: "Talos dromaeojs" + suite: talos + talos-try-name: dromaeojs + treeherder-symbol: tc-T(d) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=dromaeojs + +talos-g1: + description: "Talos g1" + suite: talos + talos-try-name: g1 + treeherder-symbol: tc-T(g1) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=g1 + +talos-g2: + description: "Talos g2" + suite: talos + talos-try-name: g2 + treeherder-symbol: tc-T(g2) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=g2 + +talos-g3: + description: "Talos g3" + suite: talos + talos-try-name: g3 + treeherder-symbol: tc-T(g3) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=g3 + +talos-g4: + description: "Talos g4" + suite: talos + talos-try-name: g4 + treeherder-symbol: tc-T(g4) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=g4 + +talos-other: + description: "Talos other" + suite: talos + talos-try-name: other + treeherder-symbol: tc-T(o) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=other + +talos-svgr: + description: "Talos svgr" + suite: talos + talos-try-name: svgr + treeherder-symbol: tc-T(s) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=svgr + +talos-tp5o: + description: "Talos tp5o" + suite: talos + talos-try-name: tp5o + treeherder-symbol: tc-T(tp) + run-on-projects: [] + max-run-time: 3600 + mozharness: + script: talos_script.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - talos/linux_config.py + - remove_executables.py + extra-options: + - --suite=tp5o + web-platform-tests: description: "Web platform test run" suite: web-platform-tests diff --git a/taskcluster/taskgraph/transforms/task.py b/taskcluster/taskgraph/transforms/task.py index 538206e30fc7..70ffec7667fe 100644 --- a/taskcluster/taskgraph/transforms/task.py +++ b/taskcluster/taskgraph/transforms/task.py @@ -289,6 +289,8 @@ GROUP_NAMES = { 'tc-M-V': 'Mochitests on Valgrind executed by TaskCluster', 'tc-R': 'Reftests executed by TaskCluster', 'tc-R-e10s': 'Reftests executed by TaskCluster with e10s', + 'tc-T': 'Talos performance tests executed by TaskCluster', + 'tc-T-e10s': 'Talos performance tests executed by TaskCluster with e10s', 'tc-VP': 'VideoPuppeteer tests executed by TaskCluster', 'tc-W': 'Web platform tests executed by TaskCluster', 'tc-W-e10s': 'Web platform tests executed by TaskCluster with e10s', From 3e8bda6ab3b95d18feb60459fe4bac7465033f68 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 16:24:30 +0800 Subject: [PATCH 16/94] Bug 1324371. Part 1 - remove IsAudioSeekComplete(). r=kaku We don't need to wait for pending audio requests before finish seeking. MozReview-Commit-ID: BWoivb9Gjux --HG-- extra : rebase_source : c044c8066d7dfe8b324762145977a5d7ea84702f extra : intermediate-source : afa7a29babfeaa8df1a10e606c090d03e4fab789 extra : source : aeb0ed38110fdfc172e25d4895e81d2a4f8a1300 --- dom/media/MediaDecoderStateMachine.cpp | 29 +++++--------------------- 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index ceb4165673ec..a36c6aa951ad 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1326,10 +1326,7 @@ private: void HandleAudioDecoded(MediaData* aAudio) override { - MOZ_ASSERT(aAudio); - MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); mMaster->Push(aAudio); - MaybeFinishSeek(); } void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) override @@ -1356,11 +1353,8 @@ private: switch (aType) { case MediaData::AUDIO_DATA: { - // We don't really handle audio deocde error here. Let MDSM to trigger further - // audio decoding tasks if it needs to play audio, and MDSM will then receive - // the decoding state from MediaDecoderReader. - - MaybeFinishSeek(); + // We don't care about audio decode errors in this state which will be + // handled by other states after seeking. break; } case MediaData::VIDEO_DATA: @@ -1399,11 +1393,7 @@ private: void HandleAudioWaited(MediaData::Type aType) override { - MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); - - // We don't make an audio decode request here, instead, let MDSM to - // trigger further audio decode tasks if MDSM itself needs to play audio. - MaybeFinishSeek(); + // We don't care about audio in this state. } void HandleVideoWaited(MediaData::Type aType) override @@ -1424,9 +1414,7 @@ private: switch(aRejection.mType) { case MediaData::AUDIO_DATA: { - // We don't make an audio decode request here, instead, let MDSM to - // trigger further audio decode tasks if MDSM itself needs to play audio. - MaybeFinishSeek(); + // We don't care about audio in this state. break; } case MediaData::VIDEO_DATA: @@ -1468,13 +1456,6 @@ private: return Reader()->IsRequestingVideoData() || Reader()->IsWaitingVideoData(); } - bool IsAudioSeekComplete() const - { - // Don't finish seek until there are no pending requests. Otherwise, we might - // lose audio samples for the promise is resolved asynchronously. - return !Reader()->IsRequestingAudioData() && !Reader()->IsWaitingAudioData(); - } - bool IsVideoSeekComplete() const { // Don't finish seek until there are no pending requests. Otherwise, we might @@ -1498,7 +1479,7 @@ private: void MaybeFinishSeek() { - if (IsAudioSeekComplete() && IsVideoSeekComplete()) { + if (IsVideoSeekComplete()) { UpdateSeekTargetTime(); auto time = mSeekJob.mTarget->GetTime().ToMicroseconds(); From e997f22de540591f9167a27f2fdc837422587038 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 16:53:50 +0800 Subject: [PATCH 17/94] Bug 1324371. Part 2 - remove IsVideoSeekComplete() and finish seek without waiting for pending video requests. r=kaku MozReview-Commit-ID: 8GRbxJEG33j --HG-- extra : rebase_source : d6eed748d1b349ede275add493e351492368706e extra : intermediate-source : b29d6a645eeea72524cd86343a929d52a6f0368e extra : source : 17a7121d86a6c2ab82acdedec7ad2747db9aded0 --- dom/media/MediaDecoderStateMachine.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index a36c6aa951ad..1769d9441c70 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1456,13 +1456,6 @@ private: return Reader()->IsRequestingVideoData() || Reader()->IsWaitingVideoData(); } - bool IsVideoSeekComplete() const - { - // Don't finish seek until there are no pending requests. Otherwise, we might - // lose video samples for the promise is resolved asynchronously. - return !IsVideoRequestPending() && !NeedMoreVideo(); - } - // Update the seek target's time before resolving this seek task, the updated // time will be used in the MDSM::SeekCompleted() to update the MDSM's position. void UpdateSeekTargetTime() @@ -1479,7 +1472,7 @@ private: void MaybeFinishSeek() { - if (IsVideoSeekComplete()) { + if (!NeedMoreVideo()) { UpdateSeekTargetTime(); auto time = mSeekJob.mTarget->GetTime().ToMicroseconds(); From 99a35fd82702d6c571683de2cfe7c555df50a790 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 17:03:16 +0800 Subject: [PATCH 18/94] Bug 1324371. Part 3 - inline IsVideoRequestPending() which has only one caller. r=kaku MozReview-Commit-ID: 7bBDRQV9zJ1 --HG-- extra : rebase_source : fbea123a24facc894f2dde6d71227df3b49ccdb1 extra : intermediate-source : a0476aee581e92ce668c156e77098024632e361a extra : source : 3ffc5fc0eb0b4a5143d9ea2890636025532bbdc5 --- dom/media/MediaDecoderStateMachine.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index 1769d9441c70..c6529528ffc2 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1278,7 +1278,9 @@ private: return aSampleTime <= currentTime; }); - if (!IsVideoRequestPending() && NeedMoreVideo()) { + if (NeedMoreVideo() && + !Reader()->IsRequestingVideoData() && + !Reader()->IsWaitingVideoData()) { RequestVideoData(); } @@ -1451,11 +1453,6 @@ private: !VideoQueue().IsFinished(); } - bool IsVideoRequestPending() const - { - return Reader()->IsRequestingVideoData() || Reader()->IsWaitingVideoData(); - } - // Update the seek target's time before resolving this seek task, the updated // time will be used in the MDSM::SeekCompleted() to update the MDSM's position. void UpdateSeekTargetTime() From fe9d3677499155e157ba47fdc09c7503c8f834c9 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 17:18:03 +0800 Subject: [PATCH 19/94] Bug 1324371. Part 4 - assert NeedMoreVideo() in some functions. r=kaku Because !mSeekJob.mPromise.IsEmpty() now always implies NeedMoreVideo(). MozReview-Commit-ID: BN0NZzaBlCF --HG-- extra : rebase_source : ab570336cef7fd6841835d981696d03c3cdb1f60 extra : intermediate-source : 415774b6eca227442d6773bb989443befc8d6822 extra : source : 0fc219d031b6dd0b32979a571cc87422ae1f2af9 --- dom/media/MediaDecoderStateMachine.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index c6529528ffc2..6ae2ff667d4d 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1335,12 +1335,11 @@ private: { MOZ_ASSERT(aVideo); MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); + MOZ_ASSERT(NeedMoreVideo()); if (aVideo->mTime > mCurrentTime) { mMaster->Push(aVideo); - } - - if (NeedMoreVideo()) { + } else { RequestVideoData(); return; } @@ -1351,6 +1350,7 @@ private: void HandleNotDecoded(MediaData::Type aType, const MediaResult& aError) override { MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); + MOZ_ASSERT(NeedMoreVideo()); switch (aType) { case MediaData::AUDIO_DATA: @@ -1401,17 +1401,14 @@ private: void HandleVideoWaited(MediaData::Type aType) override { MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); - - if (NeedMoreVideo()) { - RequestVideoData(); - return; - } - MaybeFinishSeek(); + MOZ_ASSERT(NeedMoreVideo()); + RequestVideoData(); } void HandleNotWaited(const WaitForDataRejectValue& aRejection) override { MOZ_ASSERT(!mSeekJob.mPromise.IsEmpty(), "Seek shouldn't be finished"); + MOZ_ASSERT(NeedMoreVideo()); switch(aRejection.mType) { case MediaData::AUDIO_DATA: @@ -1421,12 +1418,8 @@ private: } case MediaData::VIDEO_DATA: { - if (NeedMoreVideo()) { - // Error out if we can't finish video seeking. - mMaster->DecodeError(NS_ERROR_DOM_MEDIA_CANCELED); - return; - } - MaybeFinishSeek(); + // Error out if we can't finish video seeking. + mMaster->DecodeError(NS_ERROR_DOM_MEDIA_CANCELED); break; } default: From 959b5605397419513e1522d6f2026365cc7281ae Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 17:29:01 +0800 Subject: [PATCH 20/94] Bug 1324371. Part 5 - add FinishSeek() and remove MaybeFinishSeek(). r=kaku MozReview-Commit-ID: FvbLdPQWZ82 --HG-- extra : rebase_source : 414a68922ed1f813dc73ae0ff794faa5b603bdc3 extra : intermediate-source : 5b1230b2af7799f098c43479964756fb2f299f3e extra : source : f8c4263f206e44666e21eaaff9c47d833d7635c3 --- dom/media/MediaDecoderStateMachine.cpp | 67 +++++++++++--------------- 1 file changed, 29 insertions(+), 38 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index 6ae2ff667d4d..e4257430122a 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1278,13 +1278,12 @@ private: return aSampleTime <= currentTime; }); - if (NeedMoreVideo() && - !Reader()->IsRequestingVideoData() && - !Reader()->IsWaitingVideoData()) { + if (!NeedMoreVideo()) { + FinishSeek(); + } else if (!Reader()->IsRequestingVideoData() && + !Reader()->IsWaitingVideoData()) { RequestVideoData(); } - - MaybeFinishSeek(); // Might resolve mSeekTaskPromise and modify audio queue. } class AysncNextFrameSeekTask : public Runnable @@ -1339,12 +1338,10 @@ private: if (aVideo->mTime > mCurrentTime) { mMaster->Push(aVideo); + FinishSeek(); } else { RequestVideoData(); - return; } - - MaybeFinishSeek(); } void HandleNotDecoded(MediaData::Type aType, const MediaResult& aError) override @@ -1363,29 +1360,26 @@ private: { if (aError == NS_ERROR_DOM_MEDIA_END_OF_STREAM) { VideoQueue().Finish(); + FinishSeek(); + break; } // Video seek not finished. - if (NeedMoreVideo()) { - switch (aError.Code()) { - case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA: - Reader()->WaitForData(MediaData::VIDEO_DATA); - break; - case NS_ERROR_DOM_MEDIA_CANCELED: - RequestVideoData(); - break; - case NS_ERROR_DOM_MEDIA_END_OF_STREAM: - MOZ_ASSERT(false, "Shouldn't want more data for ended video."); - break; - default: - // Raise an error since we can't finish video seek anyway. - mMaster->DecodeError(aError); - break; - } - return; + switch (aError.Code()) { + case NS_ERROR_DOM_MEDIA_WAITING_FOR_DATA: + Reader()->WaitForData(MediaData::VIDEO_DATA); + break; + case NS_ERROR_DOM_MEDIA_CANCELED: + RequestVideoData(); + break; + case NS_ERROR_DOM_MEDIA_END_OF_STREAM: + MOZ_ASSERT(false, "Shouldn't want more data for ended video."); + break; + default: + // Raise an error since we can't finish video seek anyway. + mMaster->DecodeError(aError); + break; } - - MaybeFinishSeek(); break; } default: @@ -1460,18 +1454,15 @@ private: } } - void MaybeFinishSeek() + void FinishSeek() { - if (!NeedMoreVideo()) { - UpdateSeekTargetTime(); - - auto time = mSeekJob.mTarget->GetTime().ToMicroseconds(); - DiscardFrames(AudioQueue(), [time] (int64_t aSampleTime) { - return aSampleTime < time; - }); - - SeekCompleted(); - } + MOZ_ASSERT(!NeedMoreVideo()); + UpdateSeekTargetTime(); + auto time = mSeekJob.mTarget->GetTime().ToMicroseconds(); + DiscardFrames(AudioQueue(), [time] (int64_t aSampleTime) { + return aSampleTime < time; + }); + SeekCompleted(); } /* From d585e07803c102f8d5bc48a98bacd08566afe336 Mon Sep 17 00:00:00 2001 From: JW Wang Date: Mon, 19 Dec 2016 17:40:10 +0800 Subject: [PATCH 21/94] Bug 1324371. Part 6 - assert |VideoQueue().AtEndOfStream()|. r=kaku UpdateSeekTargetTime() is called only when NeedMoreVideo() is false. if |data| is null, both |VideoQueue().IsFinished()| and |VideoQueue().GetSize() == 0| must be true and therefore |VideoQueue().AtEndOfStream()| must also be true. MozReview-Commit-ID: DZKiVtt6iIM --HG-- extra : rebase_source : 084bc4d2cc8118a794cc97675d41f7010dccbe99 extra : intermediate-source : e03bfa7a48d5e3210ac00f801103b1b869b9ac2a extra : source : d2facb5bd27127c5c3eba0b44e0cc06fb212eabd --- dom/media/MediaDecoderStateMachine.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dom/media/MediaDecoderStateMachine.cpp b/dom/media/MediaDecoderStateMachine.cpp index e4257430122a..9d0233d88155 100644 --- a/dom/media/MediaDecoderStateMachine.cpp +++ b/dom/media/MediaDecoderStateMachine.cpp @@ -1447,10 +1447,9 @@ private: RefPtr data = VideoQueue().PeekFront(); if (data) { mSeekJob.mTarget->SetTime(TimeUnit::FromMicroseconds(data->mTime)); - } else if (VideoQueue().AtEndOfStream()) { - mSeekJob.mTarget->SetTime(mDuration); } else { - MOZ_ASSERT(false, "No data!"); + MOZ_ASSERT(VideoQueue().AtEndOfStream()); + mSeekJob.mTarget->SetTime(mDuration); } } From 18f92dfc31559908de8c648dc06886ed504be108 Mon Sep 17 00:00:00 2001 From: cku Date: Sat, 17 Dec 2016 11:06:44 +0800 Subject: [PATCH 22/94] Bug 1320032 - Early return if the size of mask surface will be empty. r=mstange MozReview-Commit-ID: Bd0ddkyNCMr --HG-- extra : rebase_source : 4c706e57c8c60d4beeabf7e03418aa513d897336 --- layout/painting/FrameLayerBuilder.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/layout/painting/FrameLayerBuilder.cpp b/layout/painting/FrameLayerBuilder.cpp index 225682a445cf..64633687c2fb 100644 --- a/layout/painting/FrameLayerBuilder.cpp +++ b/layout/painting/FrameLayerBuilder.cpp @@ -3906,6 +3906,7 @@ ContainerState::SetupMaskLayerForCSSMask(Layer* aLayer, std::min(itemRect.height, maxSize)); if (surfaceSize.IsEmpty()) { + // Return early if we know that the size of this mask surface is empty. return; } @@ -6294,6 +6295,11 @@ ContainerState::CreateMaskLayer(Layer *aLayer, gfx::Matrix maskTransform = Matrix::Scaling(surfaceSize.width / boundingRect.Width(), surfaceSize.height / boundingRect.Height()); + if (surfaceSize.IsEmpty()) { + // Return early if we know that the size of this mask surface is empty. + return nullptr; + } + gfx::Point p = boundingRect.TopLeft(); maskTransform.PreTranslate(-p.x, -p.y); // imageTransform is only used when the clip is painted to the mask From 391ce2359c0594ce77b30f46ca630eee904600f9 Mon Sep 17 00:00:00 2001 From: Tobias Schneider Date: Tue, 20 Dec 2016 16:02:57 -0800 Subject: [PATCH 23/94] Bug 1324209 - Safely iterate over mIntersectionObservers in nsDocument::NotifyIntersectionObservers. r=mstange MozReview-Commit-ID: KxKbhbaS2gA --HG-- extra : rebase_source : 5761cc95fa30895a598b8159f0c274413cf28dbb --- dom/base/DOMIntersectionObserver.cpp | 4 +++- dom/base/crashtests/1324209.html | 27 +++++++++++++++++++++++++++ dom/base/crashtests/crashtests.list | 1 + dom/base/nsDocument.cpp | 3 ++- 4 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 dom/base/crashtests/1324209.html diff --git a/dom/base/DOMIntersectionObserver.cpp b/dom/base/DOMIntersectionObserver.cpp index cac77d144e1b..6104c84c58ad 100644 --- a/dom/base/DOMIntersectionObserver.cpp +++ b/dom/base/DOMIntersectionObserver.cpp @@ -207,7 +207,9 @@ DOMIntersectionObserver::Disconnect() mObservationTargets.Clear(); if (mOwner) { nsIDocument* document = mOwner->GetExtantDoc(); - document->RemoveIntersectionObserver(this); + if (document) { + document->RemoveIntersectionObserver(this); + } } } diff --git a/dom/base/crashtests/1324209.html b/dom/base/crashtests/1324209.html new file mode 100644 index 000000000000..99628e38d3a3 --- /dev/null +++ b/dom/base/crashtests/1324209.html @@ -0,0 +1,27 @@ + + + + + + +
+
+ + diff --git a/dom/base/crashtests/crashtests.list b/dom/base/crashtests/crashtests.list index 625858bc5793..b83ff60eacfd 100644 --- a/dom/base/crashtests/crashtests.list +++ b/dom/base/crashtests/crashtests.list @@ -208,3 +208,4 @@ load xhr_html_nullresponse.html load 1230422.html load 1251361.html load 1304437.html +pref(dom.IntersectionObserver.enabled,true) load 1324209.html diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index c928e6067d07..ec2e9007a974 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -12402,7 +12402,8 @@ nsDocument::ScheduleIntersectionObserverNotification() void nsDocument::NotifyIntersectionObservers() { - for (const auto& observer : mIntersectionObservers) { + nsTArray> observers(mIntersectionObservers); + for (const auto& observer : observers) { observer->Notify(); } } From 979c1ea93b9491bc75df5854aa984c9a133f8b66 Mon Sep 17 00:00:00 2001 From: Jalen Adams Date: Tue, 20 Dec 2016 19:24:10 -0500 Subject: [PATCH 24/94] Bug 1324173 - Remove colon from end of section titles. r=jaws MozReview-Commit-ID: 2U1JllEERC5 --HG-- extra : rebase_source : da48a3b2dcfb59be811984617d2b30c5304bc2d4 --- browser/components/preferences/in-content/advanced.xul | 4 ++-- browser/locales/en-US/chrome/browser/preferences/advanced.dtd | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/browser/components/preferences/in-content/advanced.xul b/browser/components/preferences/in-content/advanced.xul index 43ca367d435f..272d2547bd03 100644 --- a/browser/components/preferences/in-content/advanced.xul +++ b/browser/components/preferences/in-content/advanced.xul @@ -350,7 +350,7 @@ #ifdef MOZ_UPDATER - + #endif - + - + @@ -96,7 +96,7 @@ - + From 3251aeb9ddc17d9aa90ec0fef92b0e63809f4129 Mon Sep 17 00:00:00 2001 From: Ting-Yu Lin Date: Tue, 20 Dec 2016 15:54:18 +0800 Subject: [PATCH 25/94] Bug 1324713 - Fix integer overflow in CreateClipPathCircle(). r=dholbert Before this patch, we did a sum-of-squares operation with nscoord variables, which could overflow (to a negative value), and that would then produce NaN when sqrt()'ed. We'll now avoid this by using 'double' variables & NS_hypot. Without this patch, clip-path-circle-021.html will be rendered as a rectangle. MozReview-Commit-ID: 70xNvDdHUJc --HG-- extra : rebase_source : 5d1d7eb788de9bde7bcc0dddbfc8a808fa40bea2 --- .../clip-path/clip-path-circle-021-ref.html | 16 +++++++++++++++ .../clip-path/clip-path-circle-021.html | 20 +++++++++++++++++++ .../svg-integration/clip-path/reftest.list | 1 + layout/svg/nsCSSClipPathInstance.cpp | 10 +++++++--- 4 files changed, 44 insertions(+), 3 deletions(-) create mode 100644 layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021-ref.html create mode 100644 layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021.html diff --git a/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021-ref.html b/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021-ref.html new file mode 100644 index 000000000000..c87ded532f92 --- /dev/null +++ b/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021-ref.html @@ -0,0 +1,16 @@ + + + + + CSS Masking: Test clip-path property and circle function on circle 021 + + + + +

The test passes if there is a green circle.

+
+ + diff --git a/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021.html b/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021.html new file mode 100644 index 000000000000..a9229e6ea7e9 --- /dev/null +++ b/layout/reftests/svg/svg-integration/clip-path/clip-path-circle-021.html @@ -0,0 +1,20 @@ + + + + + CSS Masking: Test clip-path property and circle function on circle 021 + + + + + + + + +

The test passes if there is a green circle.

+
+ + diff --git a/layout/reftests/svg/svg-integration/clip-path/reftest.list b/layout/reftests/svg/svg-integration/clip-path/reftest.list index fbc0f37f79ab..a54e8cbf712a 100644 --- a/layout/reftests/svg/svg-integration/clip-path/reftest.list +++ b/layout/reftests/svg/svg-integration/clip-path/reftest.list @@ -38,6 +38,7 @@ default-preferences pref(layout.css.clip-path-shapes.enabled,true) == clip-path-circle-018.html clip-path-circle-010-ref.html == clip-path-circle-019.html clip-path-circle-002-ref.html == clip-path-circle-020.html clip-path-circle-002-ref.html +== clip-path-circle-021.html clip-path-circle-021-ref.html == clip-path-ellipse-001.html clip-path-ellipse-001-ref.html == clip-path-ellipse-002.html clip-path-ellipse-001-ref.html diff --git a/layout/svg/nsCSSClipPathInstance.cpp b/layout/svg/nsCSSClipPathInstance.cpp index 506cf13528fb..b4e971bca7be 100644 --- a/layout/svg/nsCSSClipPathInstance.cpp +++ b/layout/svg/nsCSSClipPathInstance.cpp @@ -13,6 +13,7 @@ #include "mozilla/gfx/PathHelpers.h" #include "nsCSSRendering.h" #include "nsIFrame.h" +#include "nsMathUtils.h" #include "nsRenderingContext.h" #include "nsRuleNode.h" #include "nsSVGElement.h" @@ -250,8 +251,6 @@ nsCSSClipPathInstance::CreateClipPathCircle(DrawTarget* aDrawTarget, const nsTArray& coords = basicShape->Coordinates(); MOZ_ASSERT(coords.Length() == 1, "wrong number of arguments"); - float referenceLength = sqrt((aRefBox.width * aRefBox.width + - aRefBox.height * aRefBox.height) / 2.0); nscoord r = 0; if (coords[0].GetUnit() == eStyleUnit_Enumerated) { nscoord horizontal, vertical; @@ -265,7 +264,12 @@ nsCSSClipPathInstance::CreateClipPathCircle(DrawTarget* aDrawTarget, r = horizontal < vertical ? horizontal : vertical; } } else { - r = nsRuleNode::ComputeCoordPercentCalc(coords[0], referenceLength); + // We resolve percent value for circle() as defined here: + // https://drafts.csswg.org/css-shapes/#funcdef-circle + const double sqrt2 = std::sqrt(2.0); + double referenceLength = NS_hypot(aRefBox.width, aRefBox.height) / sqrt2; + r = nsRuleNode::ComputeCoordPercentCalc(coords[0], + NSToCoordRound(referenceLength)); } nscoord appUnitsPerDevPixel = From 73a9a94cfdbaea1d5e299ecb03fce3fb1a6bb728 Mon Sep 17 00:00:00 2001 From: Sebastian Hengst Date: Wed, 21 Dec 2016 19:03:29 +0100 Subject: [PATCH 26/94] Backed out changeset 38ddff02f4db (bug 1324209) for failing own crashtest. r=backout --- dom/base/DOMIntersectionObserver.cpp | 4 +--- dom/base/crashtests/1324209.html | 27 --------------------------- dom/base/crashtests/crashtests.list | 1 - dom/base/nsDocument.cpp | 3 +-- 4 files changed, 2 insertions(+), 33 deletions(-) delete mode 100644 dom/base/crashtests/1324209.html diff --git a/dom/base/DOMIntersectionObserver.cpp b/dom/base/DOMIntersectionObserver.cpp index 6104c84c58ad..cac77d144e1b 100644 --- a/dom/base/DOMIntersectionObserver.cpp +++ b/dom/base/DOMIntersectionObserver.cpp @@ -207,9 +207,7 @@ DOMIntersectionObserver::Disconnect() mObservationTargets.Clear(); if (mOwner) { nsIDocument* document = mOwner->GetExtantDoc(); - if (document) { - document->RemoveIntersectionObserver(this); - } + document->RemoveIntersectionObserver(this); } } diff --git a/dom/base/crashtests/1324209.html b/dom/base/crashtests/1324209.html deleted file mode 100644 index 99628e38d3a3..000000000000 --- a/dom/base/crashtests/1324209.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - -
-
- - diff --git a/dom/base/crashtests/crashtests.list b/dom/base/crashtests/crashtests.list index 6c1c0f9b4406..4628ea5fd99b 100644 --- a/dom/base/crashtests/crashtests.list +++ b/dom/base/crashtests/crashtests.list @@ -208,4 +208,3 @@ load xhr_html_nullresponse.html load 1230422.html load 1251361.html load 1304437.html -pref(dom.IntersectionObserver.enabled,true) load 1324209.html diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp index a71ccabd4a72..1b026f953ab1 100644 --- a/dom/base/nsDocument.cpp +++ b/dom/base/nsDocument.cpp @@ -12469,8 +12469,7 @@ nsDocument::ScheduleIntersectionObserverNotification() void nsDocument::NotifyIntersectionObservers() { - nsTArray> observers(mIntersectionObservers); - for (const auto& observer : observers) { + for (const auto& observer : mIntersectionObservers) { observer->Notify(); } } From 3ea2cb4d67f3d83826cdc44adfafdfc201caee34 Mon Sep 17 00:00:00 2001 From: Andreas Tolfsen Date: Fri, 16 Dec 2016 14:07:05 +0000 Subject: [PATCH 27/94] Bug 1323982 - Remove web progress listener once sawLoad is seen; r=whimboo The web progress `onStateChange` callback sometimes gets called multiple times. To ensure we do not end up removing the web progress listener multiple times, causing an exception to be thrown if it has already been removed, we remove the listener as part of the cleanup step when the DOMContentLoaded event listener is removed. MozReview-Commit-ID: Lm3sfjohyLR --HG-- extra : rebase_source : ba63fe8af685f1dc88e62f01108e284f1b96bbe6 --- testing/marionette/listener.js | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/testing/marionette/listener.js b/testing/marionette/listener.js index cf1d602a2ce7..aca425fe9656 100644 --- a/testing/marionette/listener.js +++ b/testing/marionette/listener.js @@ -902,7 +902,7 @@ function pollForReadyState(msg, start = undefined, callback = undefined) { callback = () => {}; } - let checkLoad = function() { + let checkLoad = () => { navTimer.cancel(); let doc = curContainer.frame.document; @@ -1020,42 +1020,41 @@ function get(msg) { // Prevent DOMContentLoaded events from frames from invoking this // code, unless the event is coming from the frame associated with // the current window (i.e. someone has used switch_to_frame). - onDOMContentLoaded = function onDOMContentLoaded(event) { - let frameEl = event.originalTarget.defaultView.frameElement; + onDOMContentLoaded = ev => { + let frameEl = ev.originalTarget.defaultView.frameElement; let correctFrame = !frameEl || frameEl == curContainer.frame.frameElement; - // If the page we're at fired DOMContentLoaded and appears - // to be the one we asked to load, then we definitely - // saw the load occur. We need this because for error - // pages, like about:neterror for unsupported protocols, - // we don't end up opening a channel that our - // WebProgressListener can monitor. + // If the page we're at fired DOMContentLoaded and appears to + // be the one we asked to load, then we definitely saw the load + // occur. We need this because for error pages, like about:neterror + // for unsupported protocols, we don't end up opening a channel that + // our WebProgressListener can monitor. if (curContainer.frame.location == requestedURL) { sawLoad = true; } - // We also need to make sure that if the requested URL is not about:blank - // the DOMContentLoaded we saw isn't for the initial about:blank of a newly - // created docShell. + // We also need to make sure that if the requested URL is not + // about:blank the DOMContentLoaded we saw isn't for the initial + // about:blank of a newly created docShell. let loadedRequestedURI = (requestedURL == "about:blank") || docShell.hasLoadedNonBlankURI; if (correctFrame && sawLoad && loadedRequestedURI) { - webProgress.removeProgressListener(loadListener); pollForReadyState(msg, start, () => { + webProgress.removeProgressListener(loadListener); removeEventListener("DOMContentLoaded", onDOMContentLoaded, false); }); } }; if (typeof pageTimeout != "undefined") { - let onTimeout = function() { + let onTimeout = () => { if (loadEventExpected) { removeEventListener("DOMContentLoaded", onDOMContentLoaded, false); } webProgress.removeProgressListener(loadListener); sendError(new TimeoutError("Error loading page, timed out (onDOMContentLoaded)"), command_id); - } + }; navTimer.initWithCallback(onTimeout, pageTimeout, Ci.nsITimer.TYPE_ONE_SHOT); } From ce5e230f3a7a42c35473a2be2ee9e27438d4a149 Mon Sep 17 00:00:00 2001 From: Milan Sreckovic Date: Tue, 20 Dec 2016 11:43:45 -0500 Subject: [PATCH 28/94] Bug 1323834: Evaluate some information outside the loop, then use it repeatedly. r=dvander MozReview-Commit-ID: IpndTclvfQf --HG-- extra : rebase_source : a8683789dd15ba80ebe1be6caef7831e3768f46a --- widget/GfxInfoBase.cpp | 98 +++++++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 45 deletions(-) diff --git a/widget/GfxInfoBase.cpp b/widget/GfxInfoBase.cpp index 742f91b027cd..b5b2c69d13ef 100644 --- a/widget/GfxInfoBase.cpp +++ b/widget/GfxInfoBase.cpp @@ -667,8 +667,45 @@ GfxInfoBase::FindBlocklistedDeviceInList(const nsTArray& info, { int32_t status = nsIGfxInfo::FEATURE_STATUS_UNKNOWN; + // Get the adapters once then reuse below + nsAutoString adapterVendorID[2]; + nsAutoString adapterDeviceID[2]; + nsAutoString adapterDriverVersionString[2]; + bool adapterInfoFailed[2]; + + adapterInfoFailed[0] = (NS_FAILED(GetAdapterVendorID(adapterVendorID[0])) || + NS_FAILED(GetAdapterDeviceID(adapterDeviceID[0])) || + NS_FAILED(GetAdapterDriverVersion(adapterDriverVersionString[0]))); + adapterInfoFailed[1] = (NS_FAILED(GetAdapterVendorID2(adapterVendorID[1])) || + NS_FAILED(GetAdapterDeviceID2(adapterDeviceID[1])) || + NS_FAILED(GetAdapterDriverVersion2(adapterDriverVersionString[1]))); + // No point in going on if we don't have adapter info + if (adapterInfoFailed[0] && adapterInfoFailed[1]) { + return 0; + } + +#if defined(XP_WIN) || defined(ANDROID) + uint64_t driverVersion[2] = {0, 0}; + if (!adapterInfoFailed[0]) { + ParseDriverVersion(adapterDriverVersionString[0], &driverVersion[0]); + } + if (!adapterInfoFailed[1]) { + ParseDriverVersion(adapterDriverVersionString[1], &driverVersion[1]); + } +#endif + uint32_t i = 0; for (; i < info.Length(); i++) { + // If we don't have the info for this GPU, no need to check further. + // It is unclear that we would ever have a mixture of 1st and 2nd + // GPU, but leaving the code in for that possibility for now. + // (Actually, currently mGpu2 will never be true, so this can + // be optimized out.) + uint32_t infoIndex = info[i].mGpu2 ? 1 : 0; + if (adapterInfoFailed[infoIndex]) { + continue; + } + // Do the operating system check first, no point in getting the driver // info if we won't need to use it. if (!MatchingOperatingSystems(info[i].mOperatingSystem, os)) { @@ -679,40 +716,15 @@ GfxInfoBase::FindBlocklistedDeviceInList(const nsTArray& info, continue; } - // XXX: it would be better not to do this everytime round the loop - nsAutoString adapterVendorID; - nsAutoString adapterDeviceID; - nsAutoString adapterDriverVersionString; - if (info[i].mGpu2) { - if (NS_FAILED(GetAdapterVendorID2(adapterVendorID)) || - NS_FAILED(GetAdapterDeviceID2(adapterDeviceID)) || - NS_FAILED(GetAdapterDriverVersion2(adapterDriverVersionString))) - { - return 0; - } - } else { - if (NS_FAILED(GetAdapterVendorID(adapterVendorID)) || - NS_FAILED(GetAdapterDeviceID(adapterDeviceID)) || - NS_FAILED(GetAdapterDriverVersion(adapterDriverVersionString))) - { - return 0; - } - } - -#if defined(XP_WIN) || defined(ANDROID) - uint64_t driverVersion; - ParseDriverVersion(adapterDriverVersionString, &driverVersion); -#endif - if (!info[i].mAdapterVendor.Equals(GfxDriverInfo::GetDeviceVendor(VendorAll), nsCaseInsensitiveStringComparator()) && - !info[i].mAdapterVendor.Equals(adapterVendorID, nsCaseInsensitiveStringComparator())) { + !info[i].mAdapterVendor.Equals(adapterVendorID[infoIndex], nsCaseInsensitiveStringComparator())) { continue; } if (info[i].mDevices != GfxDriverInfo::allDevices && info[i].mDevices->Length()) { bool deviceMatches = false; for (uint32_t j = 0; j < info[i].mDevices->Length(); j++) { - if ((*info[i].mDevices)[j].Equals(adapterDeviceID, nsCaseInsensitiveStringComparator())) { + if ((*info[i].mDevices)[j].Equals(adapterDeviceID[infoIndex], nsCaseInsensitiveStringComparator())) { deviceMatches = true; break; } @@ -741,37 +753,37 @@ GfxInfoBase::FindBlocklistedDeviceInList(const nsTArray& info, #if defined(XP_WIN) || defined(ANDROID) switch (info[i].mComparisonOp) { case DRIVER_LESS_THAN: - match = driverVersion < info[i].mDriverVersion; + match = driverVersion[infoIndex] < info[i].mDriverVersion; break; case DRIVER_BUILD_ID_LESS_THAN: - match = (driverVersion & 0xFFFF) < info[i].mDriverVersion; + match = (driverVersion[infoIndex] & 0xFFFF) < info[i].mDriverVersion; break; case DRIVER_LESS_THAN_OR_EQUAL: - match = driverVersion <= info[i].mDriverVersion; + match = driverVersion[infoIndex] <= info[i].mDriverVersion; break; case DRIVER_BUILD_ID_LESS_THAN_OR_EQUAL: - match = (driverVersion & 0xFFFF) <= info[i].mDriverVersion; + match = (driverVersion[infoIndex] & 0xFFFF) <= info[i].mDriverVersion; break; case DRIVER_GREATER_THAN: - match = driverVersion > info[i].mDriverVersion; + match = driverVersion[infoIndex] > info[i].mDriverVersion; break; case DRIVER_GREATER_THAN_OR_EQUAL: - match = driverVersion >= info[i].mDriverVersion; + match = driverVersion[infoIndex] >= info[i].mDriverVersion; break; case DRIVER_EQUAL: - match = driverVersion == info[i].mDriverVersion; + match = driverVersion[infoIndex] == info[i].mDriverVersion; break; case DRIVER_NOT_EQUAL: - match = driverVersion != info[i].mDriverVersion; + match = driverVersion[infoIndex] != info[i].mDriverVersion; break; case DRIVER_BETWEEN_EXCLUSIVE: - match = driverVersion > info[i].mDriverVersion && driverVersion < info[i].mDriverVersionMax; + match = driverVersion[infoIndex] > info[i].mDriverVersion && driverVersion[infoIndex] < info[i].mDriverVersionMax; break; case DRIVER_BETWEEN_INCLUSIVE: - match = driverVersion >= info[i].mDriverVersion && driverVersion <= info[i].mDriverVersionMax; + match = driverVersion[infoIndex] >= info[i].mDriverVersion && driverVersion[infoIndex] <= info[i].mDriverVersionMax; break; case DRIVER_BETWEEN_INCLUSIVE_START: - match = driverVersion >= info[i].mDriverVersion && driverVersion < info[i].mDriverVersionMax; + match = driverVersion[infoIndex] >= info[i].mDriverVersion && driverVersion[infoIndex] < info[i].mDriverVersionMax; break; case DRIVER_COMPARISON_IGNORED: // We don't have a comparison op, so we match everything. @@ -810,15 +822,11 @@ GfxInfoBase::FindBlocklistedDeviceInList(const nsTArray& info, // ignore this special rule. See bug 1008759. if (status == nsIGfxInfo::FEATURE_STATUS_UNKNOWN && (aFeature == nsIGfxInfo::FEATURE_DIRECT2D)) { - nsAutoString adapterVendorID2; - nsAutoString adapterDeviceID2; - if ((!NS_FAILED(GetAdapterVendorID2(adapterVendorID2))) && - (!NS_FAILED(GetAdapterDeviceID2(adapterDeviceID2)))) - { + if (!adapterInfoFailed[1]) { nsAString &nvVendorID = (nsAString &)GfxDriverInfo::GetDeviceVendor(VendorNVIDIA); const nsString nv310mDeviceId = NS_LITERAL_STRING("0x0A70"); - if (nvVendorID.Equals(adapterVendorID2, nsCaseInsensitiveStringComparator()) && - nv310mDeviceId.Equals(adapterDeviceID2, nsCaseInsensitiveStringComparator())) { + if (nvVendorID.Equals(adapterVendorID[1], nsCaseInsensitiveStringComparator()) && + nv310mDeviceId.Equals(adapterDeviceID[1], nsCaseInsensitiveStringComparator())) { status = nsIGfxInfo::FEATURE_BLOCKED_DEVICE; aFailureId = "FEATURE_FAILURE_D2D_NV310M_BLOCK"; } From 984f8e2ad4592417a5ac34af06a489889e7e2f70 Mon Sep 17 00:00:00 2001 From: Jonas Finnemann Jensen Date: Wed, 21 Dec 2016 19:36:24 +0100 Subject: [PATCH 29/94] Bug 1325132 - Set correct docker image hashes; r=garndt In bug 1324414 we added a HASH file containing the image hash, but we accidentally set the wrong hashes. MozReview-Commit-ID: GbX3dAppp7U --HG-- extra : rebase_source : 3b1141a087583dbbbe918b7f433210092db29532 --- testing/docker/base-build/HASH | 2 +- testing/docker/base-test/HASH | 2 +- testing/docker/centos6-build-upd/HASH | 2 +- testing/docker/centos6-build/HASH | 2 +- testing/docker/decision/HASH | 2 +- testing/docker/image_builder/HASH | 2 +- testing/docker/tester/HASH | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/testing/docker/base-build/HASH b/testing/docker/base-build/HASH index 4b9a50851900..886642c9efd2 100644 --- a/testing/docker/base-build/HASH +++ b/testing/docker/base-build/HASH @@ -1 +1 @@ -sha256:65b337ec35f59d77ccc81780c76d35716a9fd0b20d1910bc93bd771814ef9e25 +sha256:e3fa6fef48461c8a3977f2e328024a1c505b6e78a5f692b964488b45df3a1a2f diff --git a/testing/docker/base-test/HASH b/testing/docker/base-test/HASH index 8615a2b83019..5dbaf406123f 100644 --- a/testing/docker/base-test/HASH +++ b/testing/docker/base-test/HASH @@ -1 +1 @@ -sha256:3c26645174f3f9765f226ec3e3fa44321b7beee0ca447a47ba7ef8937b639c18 +sha256:6c7d846a691dcdd8613231c572ff0a7e28313770a1c4d01a84ada076d81ce531 diff --git a/testing/docker/centos6-build-upd/HASH b/testing/docker/centos6-build-upd/HASH index eb34d8dc6b45..15d3d5b7c631 100644 --- a/testing/docker/centos6-build-upd/HASH +++ b/testing/docker/centos6-build-upd/HASH @@ -1 +1 @@ -sha256:6e9abe28cec9a768b940ecd726e4f394bc9bd9179ed78d170213352d56f72320 +sha256:63f1b29d40b63f1f9232661190decb906200f9e8a9209eecbc7a9433344a9f96 diff --git a/testing/docker/centos6-build/HASH b/testing/docker/centos6-build/HASH index 3346b522ace2..6e45b25ba62a 100644 --- a/testing/docker/centos6-build/HASH +++ b/testing/docker/centos6-build/HASH @@ -1 +1 @@ -sha256:fc8388461531114d1f6e3bea71110c26bfd85030768a03b4dd2211605a16ac41 +sha256:4142a0d594062c2d7221b61be14915c52e3776b96680780413afebc45f594654 diff --git a/testing/docker/decision/HASH b/testing/docker/decision/HASH index 502e47d5fccf..02ef7dafb2a0 100644 --- a/testing/docker/decision/HASH +++ b/testing/docker/decision/HASH @@ -1 +1 @@ -sha256:9db282317340838f0015335d74ed56c4ee0dbad588be33e6999928a181548587 +sha256:0f59f922d86c471e208b7ea08ab077fc68c3920ed5e6895d69a23e8f3457dc24 diff --git a/testing/docker/image_builder/HASH b/testing/docker/image_builder/HASH index a16fce7d47f0..142eb789196b 100644 --- a/testing/docker/image_builder/HASH +++ b/testing/docker/image_builder/HASH @@ -1 +1 @@ -sha256:13b80a7a6b8e10c6096aba5a435529fbc99b405f56012e57cc6835facf4b40fb +sha256:94b020d9d5eb0be3c21883a480abb8cc6e29b476438af2cdc6ab0c99ae51efb9 diff --git a/testing/docker/tester/HASH b/testing/docker/tester/HASH index 2e42b8d8ba9e..2bc175684713 100644 --- a/testing/docker/tester/HASH +++ b/testing/docker/tester/HASH @@ -1 +1 @@ -sha256:99aaab7460be0cce3f93abfa703adad51a74755566367c906460829f3483e567 +sha256:d576f5fb0a65cd5414357b5aa218706e117ca34203361ba19e240a8556780c5f From 53cbc44a0b030c766fc0e95472b5ed26a9d6cd29 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sun, 18 Dec 2016 18:38:01 -0800 Subject: [PATCH 30/94] Bug 1324251 - Unconditionally parse windows drive letters in file paths; r=valentin MozReview-Commit-ID: 6nBPHYHNprF --HG-- extra : rebase_source : 650d277eef3afe1f7637769bc05176dcb89e920c --- netwerk/base/nsStandardURL.cpp | 11 +++++++++++ netwerk/base/nsURLParsers.cpp | 5 ++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/netwerk/base/nsStandardURL.cpp b/netwerk/base/nsStandardURL.cpp index f27bbd5ab69f..c6779b2945dd 100644 --- a/netwerk/base/nsStandardURL.cpp +++ b/netwerk/base/nsStandardURL.cpp @@ -980,6 +980,17 @@ nsStandardURL::BuildNormalizedSpec(const char *spec) buf[i] = '\0'; + // https://url.spec.whatwg.org/#path-state (1.4.1.2) + // https://url.spec.whatwg.org/#windows-drive-letter + if (SegmentIs(buf, mScheme, "file")) { + char* path = &buf[mPath.mPos]; + if (mPath.mLen >= 3 && path[0] == '/' + && nsCRT::IsAsciiAlpha(path[1]) + && path[2] == '|') { + buf[mPath.mPos + 2] = ':'; + } + } + if (mDirectory.mLen > 1) { netCoalesceFlags coalesceFlag = NET_COALESCE_NORMAL; if (SegmentIs(buf,mScheme,"ftp")) { diff --git a/netwerk/base/nsURLParsers.cpp b/netwerk/base/nsURLParsers.cpp index b75ee0c4d4db..682e5d915f99 100644 --- a/netwerk/base/nsURLParsers.cpp +++ b/netwerk/base/nsURLParsers.cpp @@ -381,7 +381,7 @@ nsNoAuthURLParser::ParseAfterScheme(const char *spec, int32_t specLen, const char *p = nullptr; if (specLen > 2) { // looks like there is an authority section -#if defined(XP_WIN) + // if the authority looks like a drive number then we // really want to treat it as part of the path // [a-zA-Z][:|]{/\} @@ -391,8 +391,7 @@ nsNoAuthURLParser::ParseAfterScheme(const char *spec, int32_t specLen, ((specLen == 4) || (spec[4] == '/') || (spec[4] == '\\'))) { pos = 1; break; - } -#endif + } // Ignore apparent authority; path is everything after it for (p = spec + 2; p < spec + specLen; ++p) { if (*p == '/' || *p == '?' || *p == '#') From 6a9db075ab51de04d3b2740d8ef1b7d89bf38a19 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Sun, 18 Dec 2016 22:54:42 -0800 Subject: [PATCH 31/94] Bug 1324251 - Test updates for windows drive letters; r=valentin MozReview-Commit-ID: 73qntNmXmAk --HG-- extra : rebase_source : d23b187ee0805965013aa5633294b72102fe2ee3 --- layout/style/test/test_bug379440.html | 4 ++-- testing/web-platform/meta/url/a-element-xhtml.xhtml.ini | 6 ------ testing/web-platform/meta/url/a-element.html.ini | 6 ------ testing/web-platform/meta/url/url-constructor.html.ini | 6 ------ 4 files changed, 2 insertions(+), 20 deletions(-) diff --git a/layout/style/test/test_bug379440.html b/layout/style/test/test_bug379440.html index 2935b7d71c94..edb137ec5d2e 100644 --- a/layout/style/test/test_bug379440.html +++ b/layout/style/test/test_bug379440.html @@ -56,10 +56,10 @@ function cur(id) { return document.defaultView.getComputedStyle($(id), "").cursor; } -is(cur("t1"), 'url("file:///tmp/foo"), url("file:///c|/"), ' + +is(cur("t1"), 'url("file:///tmp/foo"), url("file:///c:/"), ' + 'url("http://example.com/"), crosshair', "Serialize unloadable URLs using their specified value"); -is(cur("t2"), 'url("file:///tmp/foo"), url("file:///c|/"), crosshair', +is(cur("t2"), 'url("file:///tmp/foo"), url("file:///c:/"), crosshair', "Serialize unloadable URLs using their specified value"); is(cur("t3"), 'url("http://example.com/"), crosshair', "URI + fallback"); is(cur("t4"), "auto", "Must have a fallback"); diff --git a/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini b/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini index 2457b5a184c8..f5105c75b02f 100644 --- a/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini +++ b/testing/web-platform/meta/url/a-element-xhtml.xhtml.ini @@ -111,12 +111,6 @@ [Parsing: against ] expected: FAIL - [Parsing: against ] - expected: FAIL - - [Parsing: against ] - expected: FAIL - [Parsing: against ] expected: FAIL diff --git a/testing/web-platform/meta/url/a-element.html.ini b/testing/web-platform/meta/url/a-element.html.ini index bc64cbf369c2..7cd127bcb002 100644 --- a/testing/web-platform/meta/url/a-element.html.ini +++ b/testing/web-platform/meta/url/a-element.html.ini @@ -105,12 +105,6 @@ [Parsing: against ] expected: FAIL - [Parsing: against ] - expected: FAIL - - [Parsing: against ] - expected: FAIL - [Parsing: against ] expected: FAIL diff --git a/testing/web-platform/meta/url/url-constructor.html.ini b/testing/web-platform/meta/url/url-constructor.html.ini index a240bb6755bf..7a3f4c310cb7 100644 --- a/testing/web-platform/meta/url/url-constructor.html.ini +++ b/testing/web-platform/meta/url/url-constructor.html.ini @@ -51,12 +51,6 @@ [Parsing: against ] expected: FAIL - [Parsing: against ] - expected: FAIL - - [Parsing: against ] - expected: FAIL - [Parsing: against ] expected: FAIL From ddd0e3be33b9cee75fad95e0b88e8d4623092264 Mon Sep 17 00:00:00 2001 From: Nihanth Subramanya Date: Tue, 20 Dec 2016 18:34:53 +0530 Subject: [PATCH 32/94] Bug 1322201 - Ensure correct usage of "login" vs "log in" in captive portal strings. r=flod MozReview-Commit-ID: 1kfSFGSanWe --HG-- extra : rebase_source : f5c66065b4bd5ba194aa7f64d70783c056308bf4 --- browser/locales/en-US/chrome/browser/browser.properties | 8 +++----- browser/locales/en-US/chrome/overrides/netError.dtd | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties index c61c6d24b86c..005301423f54 100644 --- a/browser/locales/en-US/chrome/browser/browser.properties +++ b/browser/locales/en-US/chrome/browser/browser.properties @@ -732,12 +732,10 @@ decoder.noHWAccelerationVista.message = To improve video quality, you may need t decoder.noPulseAudio.message = To play audio, you may need to install the required PulseAudio software. decoder.unsupportedLibavcodec.message = libavcodec may be vulnerable or is not supported, and should be updated to play video. -# LOCALIZATION NOTE (captivePortal.infoMessage, -# captivePortal.infoMessage2): +# LOCALIZATION NOTE (captivePortal.infoMessage2): # Shown in a notification bar when we detect a captive portal is blocking network access -# and requires the user to log in before browsing. %1$S is replaced with brandShortName. -captivePortal.infoMessage = This network may require you to login to use the internet. %1$S has opened the login page for you. -captivePortal.infoMessage2 = This network may require you to login to use the internet. +# and requires the user to log in before browsing. +captivePortal.infoMessage2 = This network may require you to log in to use the internet. # LOCALIZATION NOTE (captivePortal.showLoginPage): # The label for a button shown in the info bar in all tabs except the login page tab. # The button shows the portal login page tab when clicked. diff --git a/browser/locales/en-US/chrome/overrides/netError.dtd b/browser/locales/en-US/chrome/overrides/netError.dtd index 30dd2346abfe..bb293bbaf1eb 100644 --- a/browser/locales/en-US/chrome/overrides/netError.dtd +++ b/browser/locales/en-US/chrome/overrides/netError.dtd @@ -51,9 +51,9 @@

&brandShortName; can’t load this page for some reason.

"> - + This network may require you to login to access the internet.

+

This network may require you to log in to access the internet.

"> From a443eb66e962a5889aae1c9431028ad8a098c970 Mon Sep 17 00:00:00 2001 From: Mythmon Date: Mon, 10 Oct 2016 16:14:56 -0700 Subject: [PATCH 33/94] Bug 1308656 - Add shield-recipe-client as system add-on r=Gijs,rhelmer MozReview-Commit-ID: KNTGKOFXDlH --HG-- extra : rebase_source : 5b7ac9e5a1c004b1123b852e7b59729357a1dae8 --- browser/extensions/moz.build | 1 + .../shield-recipe-client/bootstrap.js | 102 ++++++ .../shield-recipe-client/data/EventEmitter.js | 60 +++ .../shield-recipe-client/install.rdf.in | 24 ++ .../extensions/shield-recipe-client/jar.mn | 9 + .../lib/CleanupManager.jsm | 21 ++ .../lib/EnvExpressions.jsm | 65 ++++ .../shield-recipe-client/lib/Heartbeat.jsm | 346 ++++++++++++++++++ .../shield-recipe-client/lib/NormandyApi.jsm | 99 +++++ .../lib/NormandyDriver.jsm | 141 +++++++ .../shield-recipe-client/lib/RecipeRunner.jsm | 162 ++++++++ .../shield-recipe-client/lib/Sampling.jsm | 81 ++++ .../lib/SandboxManager.jsm | 65 ++++ .../shield-recipe-client/lib/Storage.jsm | 134 +++++++ .../extensions/shield-recipe-client/moz.build | 22 ++ .../node_modules/jexl/LICENSE.txt | 19 + .../node_modules/jexl/lib/Jexl.js | 225 ++++++++++++ .../node_modules/jexl/lib/Lexer.js | 244 ++++++++++++ .../jexl/lib/evaluator/Evaluator.js | 153 ++++++++ .../jexl/lib/evaluator/handlers.js | 159 ++++++++ .../node_modules/jexl/lib/grammar.js | 66 ++++ .../node_modules/jexl/lib/parser/Parser.js | 188 ++++++++++ .../node_modules/jexl/lib/parser/handlers.js | 210 +++++++++++ .../node_modules/jexl/lib/parser/states.js | 154 ++++++++ .../shield-recipe-client/test/.eslintrc.js | 16 + .../shield-recipe-client/test/TestUtils.jsm | 21 ++ .../shield-recipe-client/test/browser.ini | 5 + .../test/browser_EventEmitter.js | 92 +++++ .../test/browser_Heartbeat.js | 188 ++++++++++ .../test/browser_Storage.js | 37 ++ .../test/browser_driver_uuids.js | 26 ++ .../test/browser_env_expressions.js | 56 +++ .../client/debugger/test/mochitest/head.js | 3 +- layout/tools/reftest/reftest-preferences.js | 1 + testing/profiles/prefs_general.js | 3 +- testing/talos/talos/config.py | 2 + .../talos/talos/xtalos/xperf_whitelist.json | 1 + testing/xpcshell/head.js | 3 +- 38 files changed, 3200 insertions(+), 4 deletions(-) create mode 100644 browser/extensions/shield-recipe-client/bootstrap.js create mode 100644 browser/extensions/shield-recipe-client/data/EventEmitter.js create mode 100644 browser/extensions/shield-recipe-client/install.rdf.in create mode 100644 browser/extensions/shield-recipe-client/jar.mn create mode 100644 browser/extensions/shield-recipe-client/lib/CleanupManager.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/EnvExpressions.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/Heartbeat.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/NormandyApi.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/Sampling.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/SandboxManager.jsm create mode 100644 browser/extensions/shield-recipe-client/lib/Storage.jsm create mode 100644 browser/extensions/shield-recipe-client/moz.build create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/LICENSE.txt create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/Jexl.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/Lexer.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/Evaluator.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/handlers.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/grammar.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/Parser.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/handlers.js create mode 100644 browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/states.js create mode 100644 browser/extensions/shield-recipe-client/test/.eslintrc.js create mode 100644 browser/extensions/shield-recipe-client/test/TestUtils.jsm create mode 100644 browser/extensions/shield-recipe-client/test/browser.ini create mode 100644 browser/extensions/shield-recipe-client/test/browser_EventEmitter.js create mode 100644 browser/extensions/shield-recipe-client/test/browser_Heartbeat.js create mode 100644 browser/extensions/shield-recipe-client/test/browser_Storage.js create mode 100644 browser/extensions/shield-recipe-client/test/browser_driver_uuids.js create mode 100644 browser/extensions/shield-recipe-client/test/browser_env_expressions.js diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build index 9dee8913b54c..9ce3943aac99 100644 --- a/browser/extensions/moz.build +++ b/browser/extensions/moz.build @@ -10,6 +10,7 @@ DIRS += [ 'pdfjs', 'pocket', 'webcompat', + 'shield-recipe-client', ] # Only include the following system add-ons if building Aurora or Nightly diff --git a/browser/extensions/shield-recipe-client/bootstrap.js b/browser/extensions/shield-recipe-client/bootstrap.js new file mode 100644 index 000000000000..9afa3b7c5db5 --- /dev/null +++ b/browser/extensions/shield-recipe-client/bootstrap.js @@ -0,0 +1,102 @@ +/* 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/. */ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Preferences.jsm"); + +const REASONS = { + APP_STARTUP: 1, // The application is starting up. + APP_SHUTDOWN: 2, // The application is shutting down. + ADDON_ENABLE: 3, // The add-on is being enabled. + ADDON_DISABLE: 4, // The add-on is being disabled. (Also sent during uninstallation) + ADDON_INSTALL: 5, // The add-on is being installed. + ADDON_UNINSTALL: 6, // The add-on is being uninstalled. + ADDON_UPGRADE: 7, // The add-on is being upgraded. + ADDON_DOWNGRADE: 8, //The add-on is being downgraded. +}; + +const PREF_BRANCH = "extensions.shield-recipe-client."; +const PREFS = { + api_url: "https://self-repair.mozilla.org/api/v1", + dev_mode: false, + enabled: true, + startup_delay_seconds: 300, +}; +const PREF_DEV_MODE = "extensions.shield-recipe-client.dev_mode"; +const PREF_SELF_SUPPORT_ENABLED = "browser.selfsupport.enabled"; + +let shouldRun = true; + +this.install = function() { + // Self Repair only checks its pref on start, so if we disable it, wait until + // next startup to run, unless the dev_mode preference is set. + if (Preferences.get(PREF_SELF_SUPPORT_ENABLED, true)) { + Preferences.set(PREF_SELF_SUPPORT_ENABLED, false); + if (!Services.prefs.getBoolPref(PREF_DEV_MODE, false)) { + shouldRun = false; + } + } +}; + +this.startup = function() { + setDefaultPrefs(); + + if (!shouldRun) { + return; + } + + Cu.import("resource://shield-recipe-client/lib/RecipeRunner.jsm"); + RecipeRunner.init(); +}; + +this.shutdown = function(data, reason) { + Cu.import("resource://shield-recipe-client/lib/CleanupManager.jsm"); + + CleanupManager.cleanup(); + + if (reason === REASONS.ADDON_DISABLE || reason === REASONS.ADDON_UNINSTALL) { + Services.prefs.setBoolPref(PREF_SELF_SUPPORT_ENABLED, true); + } + + const modules = [ + "data/EventEmitter.js", + "lib/CleanupManager.jsm", + "lib/EnvExpressions.jsm", + "lib/Heartbeat.jsm", + "lib/NormandyApi.jsm", + "lib/NormandyDriver.jsm", + "lib/RecipeRunner.jsm", + "lib/Sampling.jsm", + "lib/SandboxManager.jsm", + "lib/Storage.jsm", + ]; + for (const module in modules) { + Cu.unload(`resource://shield-recipe-client/${module}`); + } +}; + +this.uninstall = function() { +}; + +function setDefaultPrefs() { + const branch = Services.prefs.getDefaultBranch(PREF_BRANCH); + for (const [key, val] of Object.entries(PREFS)) { + // If someone beat us to setting a default, don't overwrite it. + if (branch.getPrefType(key) !== branch.PREF_INVALID) + continue; + switch (typeof val) { + case "boolean": + branch.setBoolPref(key, val); + break; + case "number": + branch.setIntPref(key, val); + break; + case "string": + branch.setCharPref(key, val); + break; + } + } +} diff --git a/browser/extensions/shield-recipe-client/data/EventEmitter.js b/browser/extensions/shield-recipe-client/data/EventEmitter.js new file mode 100644 index 000000000000..bcbf1770eaac --- /dev/null +++ b/browser/extensions/shield-recipe-client/data/EventEmitter.js @@ -0,0 +1,60 @@ +/* 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/. */ + +// This file is meant to run inside action sandboxes + +"use strict"; + + +this.EventEmitter = function(driver) { + if (!driver) { + throw new Error("driver must be provided"); + } + + const listeners = {}; + + return { + emit(eventName, event) { + // Fire events async + Promise.resolve() + .then(() => { + if (!(eventName in listeners)) { + driver.log(`EventEmitter: Event fired with no listeners: ${eventName}`); + return; + } + // freeze event to prevent handlers from modifying it + const frozenEvent = Object.freeze(event); + // Clone callbacks array to avoid problems with mutation while iterating + const callbacks = Array.from(listeners[eventName]); + for (const cb of callbacks) { + cb(frozenEvent); + } + }); + }, + + on(eventName, callback) { + if (!(eventName in listeners)) { + listeners[eventName] = []; + } + listeners[eventName].push(callback); + }, + + off(eventName, callback) { + if (eventName in listeners) { + const index = listeners[eventName].indexOf(callback); + if (index !== -1) { + listeners[eventName].splice(index, 1); + } + } + }, + + once(eventName, callback) { + const inner = event => { + callback(event); + this.off(eventName, inner); + }; + this.on(eventName, inner); + }, + }; +}; diff --git a/browser/extensions/shield-recipe-client/install.rdf.in b/browser/extensions/shield-recipe-client/install.rdf.in new file mode 100644 index 000000000000..f852537f49af --- /dev/null +++ b/browser/extensions/shield-recipe-client/install.rdf.in @@ -0,0 +1,24 @@ + + +#filter substitution + + + + shield-recipe-client@mozilla.org + 2 + true + false + 1.0.0 + Shield Recipe Client + Client to download and run recipes for SHIELD, Heartbeat, etc. + true + + + + {ec8030f7-c20a-464f-9b0e-13a3a9e97384} + @MOZ_APP_VERSION@ + @MOZ_APP_MAXVERSION@ + + + + diff --git a/browser/extensions/shield-recipe-client/jar.mn b/browser/extensions/shield-recipe-client/jar.mn new file mode 100644 index 000000000000..f29105e65702 --- /dev/null +++ b/browser/extensions/shield-recipe-client/jar.mn @@ -0,0 +1,9 @@ +# 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/. + +[features/shield-recipe-client@mozilla.org] chrome.jar: +% resource shield-recipe-client %content/ + content/lib/ (./lib/*) + content/data/ (./data/*) + content/node_modules/jexl/ (./node_modules/jexl/*) diff --git a/browser/extensions/shield-recipe-client/lib/CleanupManager.jsm b/browser/extensions/shield-recipe-client/lib/CleanupManager.jsm new file mode 100644 index 000000000000..b2ebae69c433 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/CleanupManager.jsm @@ -0,0 +1,21 @@ +/* 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/. */ + +"use strict"; + +this.EXPORTED_SYMBOLS = ["CleanupManager"]; + +const cleanupHandlers = []; + +this.CleanupManager = { + addCleanupHandler(handler) { + cleanupHandlers.push(handler); + }, + + cleanup() { + for (const handler of cleanupHandlers) { + handler(); + } + }, +}; diff --git a/browser/extensions/shield-recipe-client/lib/EnvExpressions.jsm b/browser/extensions/shield-recipe-client/lib/EnvExpressions.jsm new file mode 100644 index 000000000000..d233554dd9cc --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/EnvExpressions.jsm @@ -0,0 +1,65 @@ +/* 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/. */ + +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/TelemetryArchive.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); +Cu.import("resource://shield-recipe-client/lib/Sampling.jsm"); +Cu.import("resource://gre/modules/Log.jsm"); + +this.EXPORTED_SYMBOLS = ["EnvExpressions"]; + +XPCOMUtils.defineLazyGetter(this, "nodeRequire", () => { + const {Loader, Require} = Cu.import("resource://gre/modules/commonjs/toolkit/loader.js", {}); + const loader = new Loader({ + paths: { + "": "resource://shield-recipe-client/node_modules/", + }, + }); + return new Require(loader, {}); +}); + +XPCOMUtils.defineLazyGetter(this, "jexl", () => { + const {Jexl} = nodeRequire("jexl/lib/Jexl.js"); + const jexl = new Jexl(); + jexl.addTransforms({ + date: dateString => new Date(dateString), + stableSample: Sampling.stableSample, + }); + return jexl; +}); + +const getLatestTelemetry = Task.async(function *() { + const pings = yield TelemetryArchive.promiseArchivedPingList(); + + // get most recent ping per type + const mostRecentPings = {}; + for (const ping of pings) { + if (ping.type in mostRecentPings) { + if (mostRecentPings[ping.type].timeStampCreated < ping.timeStampCreated) { + mostRecentPings[ping.type] = ping; + } + } else { + mostRecentPings[ping.type] = ping; + } + } + + const telemetry = {}; + for (const key in mostRecentPings) { + const ping = mostRecentPings[key]; + telemetry[ping.type] = yield TelemetryArchive.promiseArchivedPingById(ping.id); + } + return telemetry; +}); + +this.EnvExpressions = { + eval(expr, extraContext = {}) { + const context = Object.assign({telemetry: getLatestTelemetry()}, extraContext); + const onelineExpr = expr.replace(/[\t\n\r]/g, " "); + return jexl.eval(onelineExpr, context); + }, +}; diff --git a/browser/extensions/shield-recipe-client/lib/Heartbeat.jsm b/browser/extensions/shield-recipe-client/lib/Heartbeat.jsm new file mode 100644 index 000000000000..8742c347c6e3 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/Heartbeat.jsm @@ -0,0 +1,346 @@ +/* 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/. */ + +"use strict"; + +const {utils: Cu} = Components; + +Cu.import("resource://gre/modules/Preferences.jsm"); +Cu.import("resource://gre/modules/TelemetryController.jsm"); +Cu.import("resource://gre/modules/Timer.jsm"); /* globals setTimeout, clearTimeout */ +Cu.import("resource://gre/modules/Log.jsm"); +Cu.import("resource://shield-recipe-client/lib/CleanupManager.jsm"); + +Cu.importGlobalProperties(["URL"]); /* globals URL */ + +this.EXPORTED_SYMBOLS = ["Heartbeat"]; + +const log = Log.repository.getLogger("shield-recipe-client"); +const PREF_SURVEY_DURATION = "browser.uitour.surveyDuration"; +const NOTIFICATION_TIME = 3000; + +/** + * Show the Heartbeat UI to request user feedback. + * + * @param chromeWindow + * The chrome window that the heartbeat notification is displayed in. + * @param eventEmitter + * An EventEmitter instance to report status to. + * @param sandboxManager + * The manager for the sandbox this was called from. Heartbeat will + * increment the hold counter on the manager. + * @param {Object} options Options object. + * @param {String} options.message + * The message, or question, to display on the notification. + * @param {String} options.thanksMessage + * The thank you message to display after user votes. + * @param {String} options.flowId + * An identifier for this rating flow. Please note that this is only used to + * identify the notification box. + * @param {String} [options.engagementButtonLabel=null] + * The text of the engagement button to use instad of stars. If this is null + * or invalid, rating stars are used. + * @param {String} [options.learnMoreMessage=null] + * The label of the learn more link. No link will be shown if this is null. + * @param {String} [options.learnMoreUrl=null] + * The learn more URL to open when clicking on the learn more link. No learn more + * will be shown if this is an invalid URL. + * @param {String} [options.surveyId] + * An ID for the survey, reflected in the Telemetry ping. + * @param {Number} [options.surveyVersion] + * Survey's version number, reflected in the Telemetry ping. + * @param {boolean} [options.testing] + * Whether this is a test survey, reflected in the Telemetry ping. + * @param {String} [options.postAnswerURL=null] + * The url to visit after the user answers the question. + */ +this.Heartbeat = class { + constructor(chromeWindow, eventEmitter, sandboxManager, options) { + if (typeof options.flowId !== "string") { + throw new Error("flowId must be a string"); + } + + if (!options.flowId) { + throw new Error("flowId must not be an empty string"); + } + + if (typeof options.message !== "string") { + throw new Error("message must be a string"); + } + + if (!options.message) { + throw new Error("message must not be an empty string"); + } + + if (!sandboxManager) { + throw new Error("sandboxManager must be provided"); + } + + if (options.postAnswerUrl) { + options.postAnswerUrl = new URL(options.postAnswerUrl); + } else { + options.postAnswerUrl = null; + } + + if (options.learnMoreUrl) { + try { + options.learnMoreUrl = new URL(options.learnMoreUrl); + } catch (e) { + options.learnMoreUrl = null; + } + } + + this.chromeWindow = chromeWindow; + this.eventEmitter = eventEmitter; + this.sandboxManager = sandboxManager; + this.options = options; + this.surveyResults = {}; + this.buttons = null; + + // so event handlers are consistent + this.handleWindowClosed = this.handleWindowClosed.bind(this); + + if (this.options.engagementButtonLabel) { + this.buttons = [{ + label: this.options.engagementButtonLabel, + callback: () => { + // Let the consumer know user engaged. + this.maybeNotifyHeartbeat("Engaged"); + + this.userEngaged({ + type: "button", + flowId: this.options.flowId, + }); + + // Return true so that the notification bar doesn't close itself since + // we have a thank you message to show. + return true; + }, + }]; + } + + this.notificationBox = this.chromeWindow.document.querySelector("#high-priority-global-notificationbox"); + this.notice = this.notificationBox.appendNotification( + this.options.message, + "heartbeat-" + this.options.flowId, + "chrome://browser/skin/heartbeat-icon.svg", + this.notificationBox.PRIORITY_INFO_HIGH, + this.buttons, + eventType => { + if (eventType !== "removed") { + return; + } + this.maybeNotifyHeartbeat("NotificationClosed"); + } + ); + + // Holds the rating UI + const frag = this.chromeWindow.document.createDocumentFragment(); + + // Build the heartbeat stars + if (!this.options.engagementButtonLabel) { + const numStars = this.options.engagementButtonLabel ? 0 : 5; + const ratingContainer = this.chromeWindow.document.createElement("hbox"); + ratingContainer.id = "star-rating-container"; + + for (let i = 0; i < numStars; i++) { + // create a star rating element + const ratingElement = this.chromeWindow.document.createElement("toolbarbutton"); + + // style it + const starIndex = numStars - i; + ratingElement.className = "plain star-x"; + ratingElement.id = "star" + starIndex; + ratingElement.setAttribute("data-score", starIndex); + + // Add the click handler + ratingElement.addEventListener("click", ev => { + const rating = parseInt(ev.target.getAttribute("data-score")); + this.maybeNotifyHeartbeat("Voted", {score: rating}); + this.userEngaged({type: "stars", score: rating, flowId: this.options.flowId}); + }); + + ratingContainer.appendChild(ratingElement); + } + + frag.appendChild(ratingContainer); + } + + this.messageImage = this.chromeWindow.document.getAnonymousElementByAttribute(this.notice, "anonid", "messageImage"); + this.messageImage.classList.add("heartbeat", "pulse-onshow"); + + this.messageText = this.chromeWindow.document.getAnonymousElementByAttribute(this.notice, "anonid", "messageText"); + this.messageText.classList.add("heartbeat"); + + // Make sure the stars are not pushed to the right by the spacer. + const rightSpacer = this.chromeWindow.document.createElement("spacer"); + rightSpacer.flex = 20; + frag.appendChild(rightSpacer); + + // collapse the space before the stars + this.messageText.flex = 0; + const leftSpacer = this.messageText.nextSibling; + leftSpacer.flex = 0; + + // Add Learn More Link + if (this.options.learnMoreMessage && this.options.learnMoreUrl) { + const learnMore = this.chromeWindow.document.createElement("label"); + learnMore.className = "text-link"; + learnMore.href = this.options.learnMoreUrl.toString(); + learnMore.setAttribute("value", this.options.learnMoreMessage); + learnMore.addEventListener("click", () => this.maybeNotifyHeartbeat("LearnMore")); + frag.appendChild(learnMore); + } + + // Append the fragment and apply the styling + this.notice.appendChild(frag); + this.notice.classList.add("heartbeat"); + + // Let the consumer know the notification was shown. + this.maybeNotifyHeartbeat("NotificationOffered"); + this.chromeWindow.addEventListener("SSWindowClosing", this.handleWindowClosed); + + const surveyDuration = Preferences.get(PREF_SURVEY_DURATION, 300) * 1000; + this.surveyEndTimer = setTimeout(() => { + this.maybeNotifyHeartbeat("SurveyExpired"); + this.close(); + }, surveyDuration); + + this.sandboxManager.addHold("heartbeat"); + CleanupManager.addCleanupHandler(() => this.close()); + } + + maybeNotifyHeartbeat(name, data = {}) { + if (this.pingSent) { + log.warn("Heartbeat event recieved after Telemetry ping sent. name:", name, "data:", data); + return; + } + + const timestamp = Date.now(); + let sendPing = false; + let cleanup = false; + + const phases = { + NotificationOffered: () => { + this.surveyResults.flowId = this.options.flowId; + this.surveyResults.offeredTS = timestamp; + }, + LearnMore: () => { + if (!this.surveyResults.learnMoreTS) { + this.surveyResults.learnMoreTS = timestamp; + } + }, + Engaged: () => { + this.surveyResults.engagedTS = timestamp; + }, + Voted: () => { + this.surveyResults.votedTS = timestamp; + this.surveyResults.score = data.score; + }, + SurveyExpired: () => { + this.surveyResults.expiredTS = timestamp; + }, + NotificationClosed: () => { + this.surveyResults.closedTS = timestamp; + cleanup = true; + sendPing = true; + }, + WindowClosed: () => { + this.surveyResults.windowClosedTS = timestamp; + cleanup = true; + sendPing = true; + }, + default: () => { + log.error("Unrecognized Heartbeat event:", name); + }, + }; + + (phases[name] || phases.default)(); + + data.timestamp = timestamp; + data.flowId = this.options.flowId; + this.eventEmitter.emit(name, Cu.cloneInto(data, this.sandboxManager.sandbox)); + + if (sendPing) { + // Send the ping to Telemetry + const payload = Object.assign({version: 1}, this.surveyResults); + for (const meta of ["surveyId", "surveyVersion", "testing"]) { + if (this.options.hasOwnProperty(meta)) { + payload[meta] = this.options[meta]; + } + } + + log.debug("Sending telemetry"); + TelemetryController.submitExternalPing("heartbeat", payload, { + addClientId: true, + addEnvironment: true, + }); + + // only for testing + this.eventEmitter.emit("TelemetrySent", Cu.cloneInto(payload, this.sandboxManager.sandbox)); + + // Survey is complete, clear out the expiry timer & survey configuration + if (this.surveyEndTimer) { + clearTimeout(this.surveyEndTimer); + this.surveyEndTimer = null; + } + + this.pingSent = true; + this.surveyResults = null; + } + + if (cleanup) { + this.cleanup(); + } + } + + userEngaged(engagementParams) { + // Make the heartbeat icon pulse twice + this.notice.label = this.options.thanksMessage; + this.messageImage.classList.remove("pulse-onshow"); + this.messageImage.classList.add("pulse-twice"); + + // Remove all the children of the notice (rating container, and the flex) + while (this.notice.firstChild) { + this.notice.firstChild.remove(); + } + + // Open the engagement tab if we have a valid engagement URL. + if (this.options.postAnswerUrl) { + for (const key in engagementParams) { + this.options.postAnswerUrl.searchParams.append(key, engagementParams[key]); + } + // Open the engagement URL in a new tab. + this.chromeWindow.gBrowser.selectedTab = this.chromeWindow.gBrowser.addTab(this.options.postAnswerUrl.toString()); + } + + if (this.surveyEndTimer) { + clearTimeout(this.surveyEndTimer); + this.surveyEndTimer = null; + } + + setTimeout(() => this.close(), NOTIFICATION_TIME); + } + + handleWindowClosed() { + this.maybeNotifyHeartbeat("WindowClosed"); + } + + close() { + this.notificationBox.removeNotification(this.notice); + this.cleanup(); + } + + cleanup() { + this.sandboxManager.removeHold("heartbeat"); + // remove listeners + this.chromeWindow.removeEventListener("SSWindowClosing", this.handleWindowClosed); + // remove references for garbage collection + this.chromeWindow = null; + this.notificationBox = null; + this.notification = null; + this.eventEmitter = null; + this.sandboxManager = null; + } +}; diff --git a/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm b/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm new file mode 100644 index 000000000000..2bf97b2111af --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/NormandyApi.jsm @@ -0,0 +1,99 @@ +/* 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/. */ +/* globals URLSearchParams */ + +"use strict"; + +const {utils: Cu, classes: Cc, interfaces: Ci} = Components; +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Task.jsm"); +Cu.import("resource://gre/modules/CanonicalJSON.jsm"); +Cu.import("resource://gre/modules/Log.jsm"); + +this.EXPORTED_SYMBOLS = ["NormandyApi"]; + +const log = Log.repository.getLogger("extensions.shield-recipe-client"); +const prefs = Services.prefs.getBranch("extensions.shield-recipe-client."); + +this.NormandyApi = { + apiCall(method, endpoint, data = {}) { + const api_url = prefs.getCharPref("api_url"); + let url = `${api_url}/${endpoint}`; + method = method.toLowerCase(); + + if (method === "get") { + if (data === {}) { + const paramObj = new URLSearchParams(); + for (const key in data) { + paramObj.append(key, data[key]); + } + url += "?" + paramObj.toString(); + } + data = undefined; + } + + const headers = {"Accept": "application/json"}; + return fetch(url, { + body: JSON.stringify(data), + headers, + }); + }, + + get(endpoint, data) { + return this.apiCall("get", endpoint, data); + }, + + post(endpoint, data) { + return this.apiCall("post", endpoint, data); + }, + + fetchRecipes: Task.async(function* (filters = {}) { + const recipeResponse = yield this.get("recipe/signed/", filters); + const rawText = yield recipeResponse.text(); + const recipesWithSigs = JSON.parse(rawText); + + const verifiedRecipes = []; + + for (const {recipe, signature: {signature, x5u}} of recipesWithSigs) { + const serialized = CanonicalJSON.stringify(recipe); + if (!rawText.includes(serialized)) { + log.debug(rawText, serialized); + throw new Error("Canonical recipe serialization does not match!"); + } + + const certChainResponse = yield fetch(x5u); + const certChain = yield certChainResponse.text(); + const builtSignature = `p384ecdsa=${signature}`; + + const verifier = Cc["@mozilla.org/security/contentsignatureverifier;1"] + .createInstance(Ci.nsIContentSignatureVerifier); + + if (!verifier.verifyContentSignature(serialized, builtSignature, certChain, "normandy.content-signature.mozilla.org")) { + throw new Error("Recipe signature is not valid"); + } + verifiedRecipes.push(recipe); + } + + log.debug(`Fetched ${verifiedRecipes.length} recipes from the server:`, verifiedRecipes.map(r => r.name).join(", ")); + + return verifiedRecipes; + }), + + /** + * Fetch metadata about this client determined by the server. + * @return {object} Metadata specified by the server + */ + classifyClient() { + return this.get("classify_client/") + .then(response => response.json()) + .then(clientData => { + clientData.request_time = new Date(clientData.request_time); + return clientData; + }); + }, + + fetchAction(name) { + return this.get(`action/${name}/`).then(req => req.json()); + }, +}; diff --git a/browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm b/browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm new file mode 100644 index 000000000000..edb68e5082a5 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/NormandyDriver.jsm @@ -0,0 +1,141 @@ +/* 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/. */ + +"use strict"; +/* globals Components */ + +const {classes: Cc, interfaces: Ci, utils: Cu} = Components; + +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Preferences.jsm"); +Cu.import("resource:///modules/ShellService.jsm"); +Cu.import("resource://gre/modules/AddonManager.jsm"); +Cu.import("resource://gre/modules/Timer.jsm"); /* globals setTimeout, clearTimeout */ +Cu.import("resource://gre/modules/Log.jsm"); +Cu.import("resource://shield-recipe-client/lib/Storage.jsm"); +Cu.import("resource://shield-recipe-client/lib/Heartbeat.jsm"); + +const {generateUUID} = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator); + +this.EXPORTED_SYMBOLS = ["NormandyDriver"]; + +const log = Log.repository.getLogger("extensions.shield-recipe-client"); +const actionLog = Log.repository.getLogger("extensions.shield-recipe-client.actions"); + +this.NormandyDriver = function(sandboxManager, extraContext = {}) { + if (!sandboxManager) { + throw new Error("sandboxManager is required"); + } + const {sandbox} = sandboxManager; + + return { + testing: false, + + get locale() { + return Cc["@mozilla.org/chrome/chrome-registry;1"] + .getService(Ci.nsIXULChromeRegistry) + .getSelectedLocale("browser"); + }, + + log(message, level = "debug") { + const levels = ["debug", "info", "warn", "error"]; + if (levels.indexOf(level) === -1) { + throw new Error(`Invalid log level "${level}"`); + } + actionLog[level](message); + }, + + showHeartbeat(options) { + log.info(`Showing heartbeat prompt "${options.message}"`); + const aWindow = Services.wm.getMostRecentWindow("navigator:browser"); + + if (!aWindow) { + return sandbox.Promise.reject(new sandbox.Error("No window to show heartbeat in")); + } + + const sandboxedDriver = Cu.cloneInto(this, sandbox, {cloneFunctions: true}); + const ee = new sandbox.EventEmitter(sandboxedDriver).wrappedJSObject; + const internalOptions = Object.assign({}, options, {testing: this.testing}); + new Heartbeat(aWindow, ee, sandboxManager, internalOptions); + return sandbox.Promise.resolve(ee); + }, + + saveHeartbeatFlow() { + // no-op required by spec + }, + + client() { + const appinfo = { + version: Services.appinfo.version, + channel: Services.appinfo.defaultUpdateChannel, + isDefaultBrowser: ShellService.isDefaultBrowser() || null, + searchEngine: null, + syncSetup: Preferences.isSet("services.sync.username"), + plugins: {}, + doNotTrack: Preferences.get("privacy.donottrackheader.enabled", false), + }; + + const searchEnginePromise = new Promise(resolve => { + Services.search.init(rv => { + if (Components.isSuccessCode(rv)) { + appinfo.searchEngine = Services.search.defaultEngine.identifier; + } + resolve(); + }); + }); + + const pluginsPromise = new Promise(resolve => { + AddonManager.getAddonsByTypes(["plugin"], plugins => { + plugins.forEach(plugin => appinfo.plugins[plugin.name] = plugin); + resolve(); + }); + }); + + return new sandbox.Promise(resolve => { + Promise.all([searchEnginePromise, pluginsPromise]).then(() => { + resolve(Cu.cloneInto(appinfo, sandbox)); + }); + }); + }, + + uuid() { + let ret = generateUUID().toString(); + ret = ret.slice(1, ret.length - 1); + return ret; + }, + + createStorage(keyPrefix) { + let storage; + try { + storage = Storage.makeStorage(keyPrefix, sandbox); + } catch (e) { + log.error(e.stack); + throw e; + } + return storage; + }, + + location() { + const location = Cu.cloneInto({countryCode: extraContext.country}, sandbox); + return sandbox.Promise.resolve(location); + }, + + setTimeout(cb, time) { + if (typeof cb !== "function") { + throw new sandbox.Error(`setTimeout must be called with a function, got "${typeof cb}"`); + } + const token = setTimeout(() => { + cb(); + sandboxManager.removeHold(`setTimeout-${token}`); + }, time); + sandboxManager.addHold(`setTimeout-${token}`); + return Cu.cloneInto(token, sandbox); + }, + + clearTimeout(token) { + clearTimeout(token); + sandboxManager.removeHold(`setTimeout-${token}`); + }, + }; +}; diff --git a/browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm b/browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm new file mode 100644 index 000000000000..798c91ac5a95 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/RecipeRunner.jsm @@ -0,0 +1,162 @@ +/* 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/. */ + +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/Services.jsm"); +Cu.import("resource://gre/modules/Timer.jsm"); /* globals setTimeout */ +Cu.import("resource://gre/modules/Task.jsm"); +Cu.import("resource://gre/modules/Log.jsm"); +Cu.import("resource://shield-recipe-client/lib/NormandyDriver.jsm"); +Cu.import("resource://shield-recipe-client/lib/EnvExpressions.jsm"); +Cu.import("resource://shield-recipe-client/lib/NormandyApi.jsm"); +Cu.import("resource://shield-recipe-client/lib/SandboxManager.jsm"); +Cu.importGlobalProperties(["fetch"]); /* globals fetch */ + +this.EXPORTED_SYMBOLS = ["RecipeRunner"]; + +const log = Log.repository.getLogger("extensions.shield-recipe-client"); +const prefs = Services.prefs.getBranch("extensions.shield-recipe-client."); + +this.RecipeRunner = { + init() { + if (!this.checkPrefs()) { + return; + } + + let delay; + if (prefs.getBoolPref("dev_mode")) { + delay = 0; + } else { + // startup delay is in seconds + delay = prefs.getIntPref("startup_delay_seconds") * 1000; + } + + setTimeout(this.start.bind(this), delay); + }, + + checkPrefs() { + // Only run if Unified Telemetry is enabled. + if (!Services.prefs.getBoolPref("toolkit.telemetry.unified")) { + log.info("Disabling RecipeRunner because Unified Telemetry is disabled."); + return false; + } + + if (!prefs.getBoolPref("enabled")) { + log.info("Recipe Client is disabled."); + return false; + } + + const apiUrl = prefs.getCharPref("api_url"); + if (!apiUrl || !apiUrl.startsWith("https://")) { + log.error(`Non HTTPS URL provided for extensions.shield-recipe-client.api_url: ${apiUrl}`); + return false; + } + + return true; + }, + + start: Task.async(function* () { + let recipes; + try { + recipes = yield NormandyApi.fetchRecipes({enabled: true}); + } catch (e) { + const apiUrl = prefs.getCharPref("api_url"); + log.error(`Could not fetch recipes from ${apiUrl}: "${e}"`); + return; + } + + let extraContext; + try { + extraContext = yield this.getExtraContext(); + } catch (e) { + log.warning(`Couldn't get extra filter context: ${e}`); + extraContext = {}; + } + + const recipesToRun = []; + + for (const recipe of recipes) { + if (yield this.checkFilter(recipe, extraContext)) { + recipesToRun.push(recipe); + } + } + + if (recipesToRun.length === 0) { + log.debug("No recipes to execute"); + } else { + for (const recipe of recipesToRun) { + try { + log.debug(`Executing recipe "${recipe.name}" (action=${recipe.action})`); + yield this.executeRecipe(recipe, extraContext); + } catch (e) { + log.error(`Could not execute recipe ${recipe.name}:`, e); + } + } + } + }), + + getExtraContext() { + return NormandyApi.classifyClient() + .then(clientData => ({normandy: clientData})); + }, + + /** + * Evaluate a recipe's filter expression against the environment. + * @param {object} recipe + * @param {string} recipe.filter The expression to evaluate against the environment. + * @param {object} extraContext Any extra context to provide to the filter environment. + * @return {boolean} The result of evaluating the filter, cast to a bool. + */ + checkFilter(recipe, extraContext) { + return EnvExpressions.eval(recipe.filter_expression, extraContext) + .then(result => { + return !!result; + }) + .catch(error => { + log.error(`Error checking filter for "${recipe.name}"`); + log.error(`Filter: "${recipe.filter_expression}"`); + log.error(`Error: "${error}"`); + }); + }, + + /** + * Execute a recipe by fetching it action and executing it. + * @param {Object} recipe A recipe to execute + * @promise Resolves when the action has executed + */ + executeRecipe: Task.async(function* (recipe, extraContext) { + const sandboxManager = new SandboxManager(); + const {sandbox} = sandboxManager; + + const action = yield NormandyApi.fetchAction(recipe.action); + const response = yield fetch(action.implementation_url); + + const actionScript = yield response.text(); + const prepScript = ` + var pendingAction = null; + + function registerAction(name, Action) { + let a = new Action(sandboxedDriver, sandboxedRecipe); + pendingAction = a.execute() + .catch(err => sandboxedDriver.log(err, 'error')); + }; + + window.registerAction = registerAction; + window.setTimeout = sandboxedDriver.setTimeout; + window.clearTimeout = sandboxedDriver.clearTimeout; + `; + + const driver = new NormandyDriver(sandboxManager, extraContext); + sandbox.sandboxedDriver = Cu.cloneInto(driver, sandbox, {cloneFunctions: true}); + sandbox.sandboxedRecipe = Cu.cloneInto(recipe, sandbox); + + Cu.evalInSandbox(prepScript, sandbox); + Cu.evalInSandbox(actionScript, sandbox); + + sandboxManager.addHold("recipeExecution"); + sandbox.pendingAction.then(() => sandboxManager.removeHold("recipeExecution")); + }), +}; diff --git a/browser/extensions/shield-recipe-client/lib/Sampling.jsm b/browser/extensions/shield-recipe-client/lib/Sampling.jsm new file mode 100644 index 000000000000..f0632957106e --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/Sampling.jsm @@ -0,0 +1,81 @@ +/* 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/. */ + +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/Log.jsm"); +Cu.importGlobalProperties(["crypto", "TextEncoder"]); + +this.EXPORTED_SYMBOLS = ["Sampling"]; + +const log = Log.repository.getLogger("extensions.shield-recipe-client"); + +/** + * Map from the range [0, 1] to [0, max(sha256)]. + * @param {number} frac A float from 0.0 to 1.0. + * @return {string} A 48 bit number represented in hex, padded to 12 characters. + */ +function fractionToKey(frac) { + const hashBits = 48; + const hashLength = hashBits / 4; + + if (frac < 0 || frac > 1) { + throw new Error(`frac must be between 0 and 1 inclusive (got ${frac})`); + } + + const mult = Math.pow(2, hashBits) - 1; + const inDecimal = Math.floor(frac * mult); + let hexDigits = inDecimal.toString(16); + if (hexDigits.length < hashLength) { + // Left pad with zeroes + // If N zeroes are needed, generate an array of nulls N+1 elements long, + // and inserts zeroes between each null. + hexDigits = Array(hashLength - hexDigits.length + 1).join("0") + hexDigits; + } + + // Saturate at 2**48 - 1 + if (hexDigits.length > hashLength) { + hexDigits = Array(hashLength + 1).join("f"); + } + + return hexDigits; +} + +function bufferToHex(buffer) { + const hexCodes = []; + const view = new DataView(buffer); + for (let i = 0; i < view.byteLength; i += 4) { + // Using getUint32 reduces the number of iterations needed (we process 4 bytes each time) + const value = view.getUint32(i); + // toString(16) will give the hex representation of the number without padding + hexCodes.push(value.toString(16).padStart(8, "0")); + } + + // Join all the hex strings into one + return hexCodes.join(""); +} + +this.Sampling = { + stableSample(input, rate) { + const hasher = crypto.subtle; + + return hasher.digest("SHA-256", new TextEncoder("utf-8").encode(JSON.stringify(input))) + .then(hash => { + // truncate hash to 12 characters (2^48) + const inputHash = bufferToHex(hash).slice(0, 12); + const samplePoint = fractionToKey(rate); + + if (samplePoint.length !== 12 || inputHash.length !== 12) { + throw new Error("Unexpected hash length"); + } + + return inputHash < samplePoint; + + }) + .catch(error => { + log.error(`Error: ${error}`); + }); + }, +}; diff --git a/browser/extensions/shield-recipe-client/lib/SandboxManager.jsm b/browser/extensions/shield-recipe-client/lib/SandboxManager.jsm new file mode 100644 index 000000000000..7cc75c3fd757 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/SandboxManager.jsm @@ -0,0 +1,65 @@ +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/Services.jsm"); + +this.EXPORTED_SYMBOLS = ["SandboxManager"]; + +this.SandboxManager = class { + constructor() { + this._sandbox = makeSandbox(); + this.holds = []; + } + + get sandbox() { + if (this._sandbox) { + return this._sandbox; + } + throw new Error("Tried to use sandbox after it was nuked"); + } + + addHold(name) { + this.holds.push(name); + } + + removeHold(name) { + const index = this.holds.indexOf(name); + if (index === -1) { + throw new Error(`Tried to remove non-existant hold "${name}"`); + } + this.holds.splice(index, 1); + this.tryCleanup(); + } + + tryCleanup() { + if (this.holds.length === 0) { + const sandbox = this._sandbox; + this._sandbox = null; + Cu.nukeSandbox(sandbox); + } + } + + isNuked() { + // Do this in a promise, so other async things can resolve. + return new Promise((resolve, reject) => { + if (!this._sandbox) { + resolve(); + } else { + reject(new Error(`Sandbox is not nuked. Holds left: ${this.holds}`)); + } + }); + } +}; + + +function makeSandbox() { + const sandbox = new Cu.Sandbox(null, { + wantComponents: false, + wantGlobalProperties: ["URL", "URLSearchParams"], + }); + + sandbox.window = Cu.cloneInto({}, sandbox); + + const url = "resource://shield-recipe-client/data/EventEmitter.js"; + Services.scriptloader.loadSubScript(url, sandbox); + + return sandbox; +} diff --git a/browser/extensions/shield-recipe-client/lib/Storage.jsm b/browser/extensions/shield-recipe-client/lib/Storage.jsm new file mode 100644 index 000000000000..8cb2d59426a9 --- /dev/null +++ b/browser/extensions/shield-recipe-client/lib/Storage.jsm @@ -0,0 +1,134 @@ +/* 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/. */ + +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/XPCOMUtils.jsm"); +Cu.import("resource://gre/modules/Log.jsm"); + +XPCOMUtils.defineLazyModuleGetter(this, "JSONFile", "resource://gre/modules/JSONFile.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "Task", "resource://gre/modules/Task.jsm"); + +this.EXPORTED_SYMBOLS = ["Storage"]; + +const log = Log.repository.getLogger("extensions.shield-recipe-client"); +let storePromise; + +function loadStorage() { + if (storePromise === undefined) { + const path = OS.Path.join(OS.Constants.Path.profileDir, "shield-recipe-client.json"); + const storage = new JSONFile({path}); + storePromise = Task.spawn(function* () { + yield storage.load(); + return storage; + }); + } + return storePromise; +} + +this.Storage = { + makeStorage(prefix, sandbox) { + if (!sandbox) { + throw new Error("No sandbox passed"); + } + + const storageInterface = { + /** + * Sets an item in the prefixed storage. + * @returns {Promise} + * @resolves With the stored value, or null. + * @rejects Javascript exception. + */ + getItem(keySuffix) { + return new sandbox.Promise((resolve, reject) => { + loadStorage() + .then(store => { + const namespace = store.data[prefix] || {}; + const value = namespace[keySuffix] || null; + resolve(Cu.cloneInto(value, sandbox)); + }) + .catch(err => { + log.error(err); + reject(new sandbox.Error()); + }); + }); + }, + + /** + * Sets an item in the prefixed storage. + * @returns {Promise} + * @resolves When the operation is completed succesfully + * @rejects Javascript exception. + */ + setItem(keySuffix, value) { + return new sandbox.Promise((resolve, reject) => { + loadStorage() + .then(store => { + if (!(prefix in store.data)) { + store.data[prefix] = {}; + } + store.data[prefix][keySuffix] = value; + store.saveSoon(); + resolve(); + }) + .catch(err => { + log.error(err); + reject(new sandbox.Error()); + }); + }); + }, + + /** + * Removes a single item from the prefixed storage. + * @returns {Promise} + * @resolves When the operation is completed succesfully + * @rejects Javascript exception. + */ + removeItem(keySuffix) { + return new sandbox.Promise((resolve, reject) => { + loadStorage() + .then(store => { + if (!(prefix in store.data)) { + return; + } + delete store.data[prefix][keySuffix]; + store.saveSoon(); + resolve(); + }) + .catch(err => { + log.error(err); + reject(new sandbox.Error()); + }); + }); + }, + + /** + * Clears all storage for the prefix. + * @returns {Promise} + * @resolves When the operation is completed succesfully + * @rejects Javascript exception. + */ + clear() { + return new sandbox.Promise((resolve, reject) => { + return loadStorage() + .then(store => { + store.data[prefix] = {}; + store.saveSoon(); + resolve(); + }) + .catch(err => { + log.error(err); + reject(new sandbox.Error()); + }); + }); + }, + }; + + return Cu.cloneInto(storageInterface, sandbox, { + cloneFunctions: true, + }); + }, +}; diff --git a/browser/extensions/shield-recipe-client/moz.build b/browser/extensions/shield-recipe-client/moz.build new file mode 100644 index 000000000000..891b139e3811 --- /dev/null +++ b/browser/extensions/shield-recipe-client/moz.build @@ -0,0 +1,22 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +DEFINES['MOZ_APP_VERSION'] = CONFIG['MOZ_APP_VERSION'] +DEFINES['MOZ_APP_MAXVERSION'] = CONFIG['MOZ_APP_MAXVERSION'] + +FINAL_TARGET_FILES.features['shield-recipe-client@mozilla.org'] += [ + 'bootstrap.js', +] + +FINAL_TARGET_PP_FILES.features['shield-recipe-client@mozilla.org'] += [ + 'install.rdf.in' +] + +BROWSER_CHROME_MANIFESTS += [ + 'test/browser.ini', +] + +JAR_MANIFESTS += ['jar.mn'] diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/LICENSE.txt b/browser/extensions/shield-recipe-client/node_modules/jexl/LICENSE.txt new file mode 100644 index 000000000000..e86cb4730df5 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2015 TechnologyAdvice + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Jexl.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Jexl.js new file mode 100644 index 000000000000..d516b67e8d98 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Jexl.js @@ -0,0 +1,225 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var Evaluator = require('./evaluator/Evaluator'), + Lexer = require('./Lexer'), + Parser = require('./parser/Parser'), + defaultGrammar = require('./grammar').elements; + +/** + * Jexl is the Javascript Expression Language, capable of parsing and + * evaluating basic to complex expression strings, combined with advanced + * xpath-like drilldown into native Javascript objects. + * @constructor + */ +function Jexl() { + this._customGrammar = null; + this._lexer = null; + this._transforms = {}; +} + +/** + * Adds a binary operator to Jexl at the specified precedence. The higher the + * precedence, the earlier the operator is applied in the order of operations. + * For example, * has a higher precedence than +, because multiplication comes + * before division. + * + * Please see grammar.js for a listing of all default operators and their + * precedence values in order to choose the appropriate precedence for the + * new operator. + * @param {string} operator The operator string to be added + * @param {number} precedence The operator's precedence + * @param {function} fn A function to run to calculate the result. The function + * will be called with two arguments: left and right, denoting the values + * on either side of the operator. It should return either the resulting + * value, or a Promise that resolves with the resulting value. + */ +Jexl.prototype.addBinaryOp = function(operator, precedence, fn) { + this._addGrammarElement(operator, { + type: 'binaryOp', + precedence: precedence, + eval: fn + }); +}; + +/** + * Adds a unary operator to Jexl. Unary operators are currently only supported + * on the left side of the value on which it will operate. + * @param {string} operator The operator string to be added + * @param {function} fn A function to run to calculate the result. The function + * will be called with one argument: the literal value to the right of the + * operator. It should return either the resulting value, or a Promise + * that resolves with the resulting value. + */ +Jexl.prototype.addUnaryOp = function(operator, fn) { + this._addGrammarElement(operator, { + type: 'unaryOp', + weight: Infinity, + eval: fn + }); +}; + +/** + * Adds or replaces a transform function in this Jexl instance. + * @param {string} name The name of the transform function, as it will be used + * within Jexl expressions + * @param {function} fn The function to be executed when this transform is + * invoked. It will be provided with two arguments: + * - {*} value: The value to be transformed + * - {{}} args: The arguments for this transform + * - {function} cb: A callback function to be called with an error + * if the transform fails, or a null first argument and the + * transformed value as the second argument on success. + */ +Jexl.prototype.addTransform = function(name, fn) { + this._transforms[name] = fn; +}; + +/** + * Syntactic sugar for calling {@link #addTransform} repeatedly. This function + * accepts a map of one or more transform names to their transform function. + * @param {{}} map A map of transform names to transform functions + */ +Jexl.prototype.addTransforms = function(map) { + for (var key in map) { + if (map.hasOwnProperty(key)) + this._transforms[key] = map[key]; + } +}; + +/** + * Retrieves a previously set transform function. + * @param {string} name The name of the transform function + * @returns {function} The transform function + */ +Jexl.prototype.getTransform = function(name) { + return this._transforms[name]; +}; + +/** + * Evaluates a Jexl string within an optional context. + * @param {string} expression The Jexl expression to be evaluated + * @param {Object} [context] A mapping of variables to values, which will be + * made accessible to the Jexl expression when evaluating it + * @param {function} [cb] An optional callback function to be executed when + * evaluation is complete. It will be supplied with two arguments: + * - {Error|null} err: Present if an error occurred + * - {*} result: The result of the evaluation + * @returns {Promise<*>} resolves with the result of the evaluation. Note that + * if a callback is supplied, the returned promise will already have + * a '.catch' attached to it in order to pass the error to the callback. + */ +Jexl.prototype.eval = function(expression, context, cb) { + if (typeof context === 'function') { + cb = context; + context = {}; + } + else if (!context) + context = {}; + var valPromise = this._eval(expression, context); + if (cb) { + // setTimeout is used for the callback to break out of the Promise's + // try/catch in case the callback throws. + var called = false; + return valPromise.then(function(val) { + called = true; + setTimeout(cb.bind(null, null, val), 0); + }).catch(function(err) { + if (!called) + setTimeout(cb.bind(null, err), 0); + }); + } + return valPromise; +}; + +/** + * Removes a binary or unary operator from the Jexl grammar. + * @param {string} operator The operator string to be removed + */ +Jexl.prototype.removeOp = function(operator) { + var grammar = this._getCustomGrammar(); + if (grammar[operator] && (grammar[operator].type == 'binaryOp' || + grammar[operator].type == 'unaryOp')) { + delete grammar[operator]; + this._lexer = null; + } +}; + +/** + * Adds an element to the grammar map used by this Jexl instance, cloning + * the default grammar first if necessary. + * @param {string} str The key string to be added + * @param {{type: }} obj A map of configuration options for this + * grammar element + * @private + */ +Jexl.prototype._addGrammarElement = function(str, obj) { + var grammar = this._getCustomGrammar(); + grammar[str] = obj; + this._lexer = null; +}; + +/** + * Evaluates a Jexl string in the given context. + * @param {string} exp The Jexl expression to be evaluated + * @param {Object} [context] A mapping of variables to values, which will be + * made accessible to the Jexl expression when evaluating it + * @returns {Promise<*>} resolves with the result of the evaluation. + * @private + */ +Jexl.prototype._eval = function(exp, context) { + var self = this, + grammar = this._getGrammar(), + parser = new Parser(grammar), + evaluator = new Evaluator(grammar, this._transforms, context); + return Promise.resolve().then(function() { + parser.addTokens(self._getLexer().tokenize(exp)); + return evaluator.eval(parser.complete()); + }); +}; + +/** + * Gets the custom grammar object, creating it first if necessary. New custom + * grammars are created by executing a shallow clone of the default grammar + * map. The returned map is available to be changed. + * @returns {{}} a customizable grammar map. + * @private + */ +Jexl.prototype._getCustomGrammar = function() { + if (!this._customGrammar) { + this._customGrammar = {}; + for (var key in defaultGrammar) { + if (defaultGrammar.hasOwnProperty(key)) + this._customGrammar[key] = defaultGrammar[key]; + } + } + return this._customGrammar; +}; + +/** + * Gets the grammar map currently being used by Jexl; either the default map, + * or a locally customized version. The returned map should never be changed + * in any way. + * @returns {{}} the grammar map currently in use. + * @private + */ +Jexl.prototype._getGrammar = function() { + return this._customGrammar || defaultGrammar; +}; + +/** + * Gets a Lexer instance as a singleton in reference to this Jexl instance. + * @returns {Lexer} an instance of Lexer, initialized with a grammar + * appropriate to this Jexl instance. + * @private + */ +Jexl.prototype._getLexer = function() { + if (!this._lexer) + this._lexer = new Lexer(this._getGrammar()); + return this._lexer; +}; + +module.exports = new Jexl(); +module.exports.Jexl = Jexl; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Lexer.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Lexer.js new file mode 100644 index 000000000000..c5590e86779a --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/Lexer.js @@ -0,0 +1,244 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var numericRegex = /^-?(?:(?:[0-9]*\.[0-9]+)|[0-9]+)$/, + identRegex = /^[a-zA-Z_\$][a-zA-Z0-9_\$]*$/, + escEscRegex = /\\\\/, + preOpRegexElems = [ + // Strings + "'(?:(?:\\\\')?[^'])*'", + '"(?:(?:\\\\")?[^"])*"', + // Whitespace + '\\s+', + // Booleans + '\\btrue\\b', + '\\bfalse\\b' + ], + postOpRegexElems = [ + // Identifiers + '\\b[a-zA-Z_\\$][a-zA-Z0-9_\\$]*\\b', + // Numerics (without negative symbol) + '(?:(?:[0-9]*\\.[0-9]+)|[0-9]+)' + ], + minusNegatesAfter = ['binaryOp', 'unaryOp', 'openParen', 'openBracket', + 'question', 'colon']; + +/** + * Lexer is a collection of stateless, statically-accessed functions for the + * lexical parsing of a Jexl string. Its responsibility is to identify the + * "parts of speech" of a Jexl expression, and tokenize and label each, but + * to do only the most minimal syntax checking; the only errors the Lexer + * should be concerned with are if it's unable to identify the utility of + * any of its tokens. Errors stemming from these tokens not being in a + * sensible configuration should be left for the Parser to handle. + * @type {{}} + */ +function Lexer(grammar) { + this._grammar = grammar; +} + +/** + * Splits a Jexl expression string into an array of expression elements. + * @param {string} str A Jexl expression string + * @returns {Array} An array of substrings defining the functional + * elements of the expression. + */ +Lexer.prototype.getElements = function(str) { + var regex = this._getSplitRegex(); + return str.split(regex).filter(function(elem) { + // Remove empty strings + return elem; + }); +}; + +/** + * Converts an array of expression elements into an array of tokens. Note that + * the resulting array may not equal the element array in length, as any + * elements that consist only of whitespace get appended to the previous + * token's "raw" property. For the structure of a token object, please see + * {@link Lexer#tokenize}. + * @param {Array} elements An array of Jexl expression elements to be + * converted to tokens + * @returns {Array<{type, value, raw}>} an array of token objects. + */ +Lexer.prototype.getTokens = function(elements) { + var tokens = [], + negate = false; + for (var i = 0; i < elements.length; i++) { + if (this._isWhitespace(elements[i])) { + if (tokens.length) + tokens[tokens.length - 1].raw += elements[i]; + } + else if (elements[i] === '-' && this._isNegative(tokens)) + negate = true; + else { + if (negate) { + elements[i] = '-' + elements[i]; + negate = false; + } + tokens.push(this._createToken(elements[i])); + } + } + // Catch a - at the end of the string. Let the parser handle that issue. + if (negate) + tokens.push(this._createToken('-')); + return tokens; +}; + +/** + * Converts a Jexl string into an array of tokens. Each token is an object + * in the following format: + * + * { + * type: , + * [name]: , + * value: , + * raw: + * } + * + * Type is one of the following: + * + * literal, identifier, binaryOp, unaryOp + * + * OR, if the token is a control character its type is the name of the element + * defined in the Grammar. + * + * Name appears only if the token is a control string found in + * {@link grammar#elements}, and is set to the name of the element. + * + * Value is the value of the token in the correct type (boolean or numeric as + * appropriate). Raw is the string representation of this value taken directly + * from the expression string, including any trailing spaces. + * @param {string} str The Jexl string to be tokenized + * @returns {Array<{type, value, raw}>} an array of token objects. + * @throws {Error} if the provided string contains an invalid token. + */ +Lexer.prototype.tokenize = function(str) { + var elements = this.getElements(str); + return this.getTokens(elements); +}; + +/** + * Creates a new token object from an element of a Jexl string. See + * {@link Lexer#tokenize} for a description of the token object. + * @param {string} element The element from which a token should be made + * @returns {{value: number|boolean|string, [name]: string, type: string, + * raw: string}} a token object describing the provided element. + * @throws {Error} if the provided string is not a valid expression element. + * @private + */ +Lexer.prototype._createToken = function(element) { + var token = { + type: 'literal', + value: element, + raw: element + }; + if (element[0] == '"' || element[0] == "'") + token.value = this._unquote(element); + else if (element.match(numericRegex)) + token.value = parseFloat(element); + else if (element === 'true' || element === 'false') + token.value = element === 'true'; + else if (this._grammar[element]) + token.type = this._grammar[element].type; + else if (element.match(identRegex)) + token.type = 'identifier'; + else + throw new Error("Invalid expression token: " + element); + return token; +}; + +/** + * Escapes a string so that it can be treated as a string literal within a + * regular expression. + * @param {string} str The string to be escaped + * @returns {string} the RegExp-escaped string. + * @see https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions + * @private + */ +Lexer.prototype._escapeRegExp = function(str) { + str = str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + if (str.match(identRegex)) + str = '\\b' + str + '\\b'; + return str; +}; + +/** + * Gets a RegEx object appropriate for splitting a Jexl string into its core + * elements. + * @returns {RegExp} An element-splitting RegExp object + * @private + */ +Lexer.prototype._getSplitRegex = function() { + if (!this._splitRegex) { + var elemArray = Object.keys(this._grammar); + // Sort by most characters to least, then regex escape each + elemArray = elemArray.sort(function(a ,b) { + return b.length - a.length; + }).map(function(elem) { + return this._escapeRegExp(elem); + }, this); + this._splitRegex = new RegExp('(' + [ + preOpRegexElems.join('|'), + elemArray.join('|'), + postOpRegexElems.join('|') + ].join('|') + ')'); + } + return this._splitRegex; +}; + +/** + * Determines whether the addition of a '-' token should be interpreted as a + * negative symbol for an upcoming number, given an array of tokens already + * processed. + * @param {Array} tokens An array of tokens already processed + * @returns {boolean} true if adding a '-' should be considered a negative + * symbol; false otherwise + * @private + */ +Lexer.prototype._isNegative = function(tokens) { + if (!tokens.length) + return true; + return minusNegatesAfter.some(function(type) { + return type === tokens[tokens.length - 1].type; + }); +}; + +/** + * A utility function to determine if a string consists of only space + * characters. + * @param {string} str A string to be tested + * @returns {boolean} true if the string is empty or consists of only spaces; + * false otherwise. + * @private + */ +Lexer.prototype._isWhitespace = function(str) { + for (var i = 0; i < str.length; i++) { + if (str[i] != ' ') + return false; + } + return true; +}; + +/** + * Removes the beginning and trailing quotes from a string, unescapes any + * escaped quotes on its interior, and unescapes any escaped escape characters. + * Note that this function is not defensive; it assumes that the provided + * string is not empty, and that its first and last characters are actually + * quotes. + * @param {string} str A string whose first and last characters are quotes + * @returns {string} a string with the surrounding quotes stripped and escapes + * properly processed. + * @private + */ +Lexer.prototype._unquote = function(str) { + var quote = str[0], + escQuoteRegex = new RegExp('\\\\' + quote, 'g'); + return str.substr(1, str.length - 2) + .replace(escQuoteRegex, quote) + .replace(escEscRegex, '\\'); +}; + +module.exports = Lexer; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/Evaluator.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/Evaluator.js new file mode 100644 index 000000000000..c63dacd23987 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/Evaluator.js @@ -0,0 +1,153 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var handlers = require('./handlers'); + +/** + * The Evaluator takes a Jexl expression tree as generated by the + * {@link Parser} and calculates its value within a given context. The + * collection of transforms, context, and a relative context to be used as the + * root for relative identifiers, are all specific to an Evaluator instance. + * When any of these things change, a new instance is required. However, a + * single instance can be used to simultaneously evaluate many different + * expressions, and does not have to be reinstantiated for each. + * @param {{}} grammar A grammar map against which to evaluate the expression + * tree + * @param {{}} [transforms] A map of transform names to transform functions. A + * transform function takes two arguments: + * - {*} val: A value to be transformed + * - {{}} args: A map of argument keys to their evaluated values, as + * specified in the expression string + * The transform function should return either the transformed value, or + * a Promises/A+ Promise object that resolves with the value and rejects + * or throws only when an unrecoverable error occurs. Transforms should + * generally return undefined when they don't make sense to be used on the + * given value type, rather than throw/reject. An error is only + * appropriate when the transform would normally return a value, but + * cannot due to some other failure. + * @param {{}} [context] A map of variable keys to their values. This will be + * accessed to resolve the value of each non-relative identifier. Any + * Promise values will be passed to the expression as their resolved + * value. + * @param {{}|Array<{}|Array>} [relativeContext] A map or array to be accessed + * to resolve the value of a relative identifier. + * @constructor + */ +var Evaluator = function(grammar, transforms, context, relativeContext) { + this._grammar = grammar; + this._transforms = transforms || {}; + this._context = context || {}; + this._relContext = relativeContext || this._context; +}; + +/** + * Evaluates an expression tree within the configured context. + * @param {{}} ast An expression tree object + * @returns {Promise<*>} resolves with the resulting value of the expression. + */ +Evaluator.prototype.eval = function(ast) { + var self = this; + return Promise.resolve().then(function() { + return handlers[ast.type].call(self, ast); + }); +}; + +/** + * Simultaneously evaluates each expression within an array, and delivers the + * response as an array with the resulting values at the same indexes as their + * originating expressions. + * @param {Array} arr An array of expression strings to be evaluated + * @returns {Promise>} resolves with the result array + */ +Evaluator.prototype.evalArray = function(arr) { + return Promise.all(arr.map(function(elem) { + return this.eval(elem); + }, this)); +}; + +/** + * Simultaneously evaluates each expression within a map, and delivers the + * response as a map with the same keys, but with the evaluated result for each + * as their value. + * @param {{}} map A map of expression names to expression trees to be + * evaluated + * @returns {Promise<{}>} resolves with the result map. + */ +Evaluator.prototype.evalMap = function(map) { + var keys = Object.keys(map), + result = {}; + var asts = keys.map(function(key) { + return this.eval(map[key]); + }, this); + return Promise.all(asts).then(function(vals) { + vals.forEach(function(val, idx) { + result[keys[idx]] = val; + }); + return result; + }); +}; + +/** + * Applies a filter expression with relative identifier elements to a subject. + * The intent is for the subject to be an array of subjects that will be + * individually used as the relative context against the provided expression + * tree. Only the elements whose expressions result in a truthy value will be + * included in the resulting array. + * + * If the subject is not an array of values, it will be converted to a single- + * element array before running the filter. + * @param {*} subject The value to be filtered; usually an array. If this value is + * not an array, it will be converted to an array with this value as the + * only element. + * @param {{}} expr The expression tree to run against each subject. If the + * tree evaluates to a truthy result, then the value will be included in + * the returned array; otherwise, it will be eliminated. + * @returns {Promise} resolves with an array of values that passed the + * expression filter. + * @private + */ +Evaluator.prototype._filterRelative = function(subject, expr) { + var promises = []; + if (!Array.isArray(subject)) + subject = [subject]; + subject.forEach(function(elem) { + var evalInst = new Evaluator(this._grammar, this._transforms, + this._context, elem); + promises.push(evalInst.eval(expr)); + }, this); + return Promise.all(promises).then(function(values) { + var results = []; + values.forEach(function(value, idx) { + if (value) + results.push(subject[idx]); + }); + return results; + }); +}; + +/** + * Applies a static filter expression to a subject value. If the filter + * expression evaluates to boolean true, the subject is returned; if false, + * undefined. + * + * For any other resulting value of the expression, this function will attempt + * to respond with the property at that name or index of the subject. + * @param {*} subject The value to be filtered. Usually an Array (for which + * the expression would generally resolve to a numeric index) or an + * Object (for which the expression would generally resolve to a string + * indicating a property name) + * @param {{}} expr The expression tree to run against the subject + * @returns {Promise<*>} resolves with the value of the drill-down. + * @private + */ +Evaluator.prototype._filterStatic = function(subject, expr) { + return this.eval(expr).then(function(res) { + if (typeof res === 'boolean') + return res ? subject : undefined; + return subject[res]; + }); +}; + +module.exports = Evaluator; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/handlers.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/handlers.js new file mode 100644 index 000000000000..6ff219f9d363 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/evaluator/handlers.js @@ -0,0 +1,159 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +/** + * Evaluates an ArrayLiteral by returning its value, with each element + * independently run through the evaluator. + * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an + * ObjectLiteral as the top node + * @returns {Promise.<[]>} resolves to a map contained evaluated values. + * @private + */ +exports.ArrayLiteral = function(ast) { + return this.evalArray(ast.value); +}; + +/** + * Evaluates a BinaryExpression node by running the Grammar's evaluator for + * the given operator. + * @param {{type: 'BinaryExpression', operator: , left: {}, + * right: {}}} ast An expression tree with a BinaryExpression as the top + * node + * @returns {Promise<*>} resolves with the value of the BinaryExpression. + * @private + */ +exports.BinaryExpression = function(ast) { + var self = this; + return Promise.all([ + this.eval(ast.left), + this.eval(ast.right) + ]).then(function(arr) { + return self._grammar[ast.operator].eval(arr[0], arr[1]); + }); +}; + +/** + * Evaluates a ConditionalExpression node by first evaluating its test branch, + * and resolving with the consequent branch if the test is truthy, or the + * alternate branch if it is not. If there is no consequent branch, the test + * result will be used instead. + * @param {{type: 'ConditionalExpression', test: {}, consequent: {}, + * alternate: {}}} ast An expression tree with a ConditionalExpression as + * the top node + * @private + */ +exports.ConditionalExpression = function(ast) { + var self = this; + return this.eval(ast.test).then(function(res) { + if (res) { + if (ast.consequent) + return self.eval(ast.consequent); + return res; + } + return self.eval(ast.alternate); + }); +}; + +/** + * Evaluates a FilterExpression by applying it to the subject value. + * @param {{type: 'FilterExpression', relative: , expr: {}, + * subject: {}}} ast An expression tree with a FilterExpression as the top + * node + * @returns {Promise<*>} resolves with the value of the FilterExpression. + * @private + */ +exports.FilterExpression = function(ast) { + var self = this; + return this.eval(ast.subject).then(function(subject) { + if (ast.relative) + return self._filterRelative(subject, ast.expr); + return self._filterStatic(subject, ast.expr); + }); +}; + +/** + * Evaluates an Identifier by either stemming from the evaluated 'from' + * expression tree or accessing the context provided when this Evaluator was + * constructed. + * @param {{type: 'Identifier', value: , [from]: {}}} ast An expression + * tree with an Identifier as the top node + * @returns {Promise<*>|*} either the identifier's value, or a Promise that + * will resolve with the identifier's value. + * @private + */ +exports.Identifier = function(ast) { + if (ast.from) { + return this.eval(ast.from).then(function(context) { + if (context === undefined) + return undefined; + if (Array.isArray(context)) + context = context[0]; + return context[ast.value]; + }); + } + else { + return ast.relative ? this._relContext[ast.value] : + this._context[ast.value]; + } +}; + +/** + * Evaluates a Literal by returning its value property. + * @param {{type: 'Literal', value: }} ast An expression + * tree with a Literal as its only node + * @returns {string|number|boolean} The value of the Literal node + * @private + */ +exports.Literal = function(ast) { + return ast.value; +}; + +/** + * Evaluates an ObjectLiteral by returning its value, with each key + * independently run through the evaluator. + * @param {{type: 'ObjectLiteral', value: <{}>}} ast An expression tree with an + * ObjectLiteral as the top node + * @returns {Promise<{}>} resolves to a map contained evaluated values. + * @private + */ +exports.ObjectLiteral = function(ast) { + return this.evalMap(ast.value); +}; + +/** + * Evaluates a Transform node by applying a function from the transforms map + * to the subject value. + * @param {{type: 'Transform', name: , subject: {}}} ast An + * expression tree with a Transform as the top node + * @returns {Promise<*>|*} the value of the transformation, or a Promise that + * will resolve with the transformed value. + * @private + */ +exports.Transform = function(ast) { + var transform = this._transforms[ast.name]; + if (!transform) + throw new Error("Transform '" + ast.name + "' is not defined."); + return Promise.all([ + this.eval(ast.subject), + this.evalArray(ast.args || []) + ]).then(function(arr) { + return transform.apply(null, [arr[0]].concat(arr[1])); + }); +}; + +/** + * Evaluates a Unary expression by passing the right side through the + * operator's eval function. + * @param {{type: 'UnaryExpression', operator: , right: {}}} ast An + * expression tree with a UnaryExpression as the top node + * @returns {Promise<*>} resolves with the value of the UnaryExpression. + * @constructor + */ +exports.UnaryExpression = function(ast) { + var self = this; + return this.eval(ast.right).then(function(right) { + return self._grammar[ast.operator].eval(right); + }); +}; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/grammar.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/grammar.js new file mode 100644 index 000000000000..4b6838a88065 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/grammar.js @@ -0,0 +1,66 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +/** + * A map of all expression elements to their properties. Note that changes + * here may require changes in the Lexer or Parser. + * @type {{}} + */ +exports.elements = { + '.': {type: 'dot'}, + '[': {type: 'openBracket'}, + ']': {type: 'closeBracket'}, + '|': {type: 'pipe'}, + '{': {type: 'openCurl'}, + '}': {type: 'closeCurl'}, + ':': {type: 'colon'}, + ',': {type: 'comma'}, + '(': {type: 'openParen'}, + ')': {type: 'closeParen'}, + '?': {type: 'question'}, + '+': {type: 'binaryOp', precedence: 30, + eval: function(left, right) { return left + right; }}, + '-': {type: 'binaryOp', precedence: 30, + eval: function(left, right) { return left - right; }}, + '*': {type: 'binaryOp', precedence: 40, + eval: function(left, right) { return left * right; }}, + '/': {type: 'binaryOp', precedence: 40, + eval: function(left, right) { return left / right; }}, + '//': {type: 'binaryOp', precedence: 40, + eval: function(left, right) { return Math.floor(left / right); }}, + '%': {type: 'binaryOp', precedence: 50, + eval: function(left, right) { return left % right; }}, + '^': {type: 'binaryOp', precedence: 50, + eval: function(left, right) { return Math.pow(left, right); }}, + '==': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left == right; }}, + '!=': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left != right; }}, + '>': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left > right; }}, + '>=': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left >= right; }}, + '<': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left < right; }}, + '<=': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { return left <= right; }}, + '&&': {type: 'binaryOp', precedence: 10, + eval: function(left, right) { return left && right; }}, + '||': {type: 'binaryOp', precedence: 10, + eval: function(left, right) { return left || right; }}, + 'in': {type: 'binaryOp', precedence: 20, + eval: function(left, right) { + if (typeof right === 'string') + return right.indexOf(left) !== -1; + if (Array.isArray(right)) { + return right.some(function(elem) { + return elem == left; + }); + } + return false; + }}, + '!': {type: 'unaryOp', precedence: Infinity, + eval: function(right) { return !right; }} +}; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/Parser.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/Parser.js new file mode 100644 index 000000000000..07693d5c0850 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/Parser.js @@ -0,0 +1,188 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var handlers = require('./handlers'), + states = require('./states').states; + +/** + * The Parser is a state machine that converts tokens from the {@link Lexer} + * into an Abstract Syntax Tree (AST), capable of being evaluated in any + * context by the {@link Evaluator}. The Parser expects that all tokens + * provided to it are legal and typed properly according to the grammar, but + * accepts that the tokens may still be in an invalid order or in some other + * unparsable configuration that requires it to throw an Error. + * @param {{}} grammar The grammar map to use to parse Jexl strings + * @param {string} [prefix] A string prefix to prepend to the expression string + * for error messaging purposes. This is useful for when a new Parser is + * instantiated to parse an subexpression, as the parent Parser's + * expression string thus far can be passed for a more user-friendly + * error message. + * @param {{}} [stopMap] A mapping of token types to any truthy value. When the + * token type is encountered, the parser will return the mapped value + * instead of boolean false. + * @constructor + */ +function Parser(grammar, prefix, stopMap) { + this._grammar = grammar; + this._state = 'expectOperand'; + this._tree = null; + this._exprStr = prefix || ''; + this._relative = false; + this._stopMap = stopMap || {}; +} + +/** + * Processes a new token into the AST and manages the transitions of the state + * machine. + * @param {{type: }} token A token object, as provided by the + * {@link Lexer#tokenize} function. + * @throws {Error} if a token is added when the Parser has been marked as + * complete by {@link #complete}, or if an unexpected token type is added. + * @returns {boolean|*} the stopState value if this parser encountered a token + * in the stopState mapb; false if tokens can continue. + */ +Parser.prototype.addToken = function(token) { + if (this._state == 'complete') + throw new Error('Cannot add a new token to a completed Parser'); + var state = states[this._state], + startExpr = this._exprStr; + this._exprStr += token.raw; + if (state.subHandler) { + if (!this._subParser) + this._startSubExpression(startExpr); + var stopState = this._subParser.addToken(token); + if (stopState) { + this._endSubExpression(); + if (this._parentStop) + return stopState; + this._state = stopState; + } + } + else if (state.tokenTypes[token.type]) { + var typeOpts = state.tokenTypes[token.type], + handleFunc = handlers[token.type]; + if (typeOpts.handler) + handleFunc = typeOpts.handler; + if (handleFunc) + handleFunc.call(this, token); + if (typeOpts.toState) + this._state = typeOpts.toState; + } + else if (this._stopMap[token.type]) + return this._stopMap[token.type]; + else { + throw new Error('Token ' + token.raw + ' (' + token.type + + ') unexpected in expression: ' + this._exprStr); + } + return false; +}; + +/** + * Processes an array of tokens iteratively through the {@link #addToken} + * function. + * @param {Array<{type: }>} tokens An array of tokens, as provided by + * the {@link Lexer#tokenize} function. + */ +Parser.prototype.addTokens = function(tokens) { + tokens.forEach(this.addToken, this); +}; + +/** + * Marks this Parser instance as completed and retrieves the full AST. + * @returns {{}|null} a full expression tree, ready for evaluation by the + * {@link Evaluator#eval} function, or null if no tokens were passed to + * the parser before complete was called + * @throws {Error} if the parser is not in a state where it's legal to end + * the expression, indicating that the expression is incomplete + */ +Parser.prototype.complete = function() { + if (this._cursor && !states[this._state].completable) + throw new Error('Unexpected end of expression: ' + this._exprStr); + if (this._subParser) + this._endSubExpression(); + this._state = 'complete'; + return this._cursor ? this._tree : null; +}; + +/** + * Indicates whether the expression tree contains a relative path identifier. + * @returns {boolean} true if a relative identifier exists; false otherwise. + */ +Parser.prototype.isRelative = function() { + return this._relative; +}; + +/** + * Ends a subexpression by completing the subParser and passing its result + * to the subHandler configured in the current state. + * @private + */ +Parser.prototype._endSubExpression = function() { + states[this._state].subHandler.call(this, this._subParser.complete()); + this._subParser = null; +}; + +/** + * Places a new tree node at the current position of the cursor (to the 'right' + * property) and then advances the cursor to the new node. This function also + * handles setting the parent of the new node. + * @param {{type: }} node A node to be added to the AST + * @private + */ +Parser.prototype._placeAtCursor = function(node) { + if (!this._cursor) + this._tree = node; + else { + this._cursor.right = node; + this._setParent(node, this._cursor); + } + this._cursor = node; +}; + +/** + * Places a tree node before the current position of the cursor, replacing + * the node that the cursor currently points to. This should only be called in + * cases where the cursor is known to exist, and the provided node already + * contains a pointer to what's at the cursor currently. + * @param {{type: }} node A node to be added to the AST + * @private + */ +Parser.prototype._placeBeforeCursor = function(node) { + this._cursor = this._cursor._parent; + this._placeAtCursor(node); +}; + +/** + * Sets the parent of a node by creating a non-enumerable _parent property + * that points to the supplied parent argument. + * @param {{type: }} node A node of the AST on which to set a new + * parent + * @param {{type: }} parent An existing node of the AST to serve as the + * parent of the new node + * @private + */ +Parser.prototype._setParent = function(node, parent) { + Object.defineProperty(node, '_parent', { + value: parent, + writable: true + }); +}; + +/** + * Prepares the Parser to accept a subexpression by (re)instantiating the + * subParser. + * @param {string} [exprStr] The expression string to prefix to the new Parser + * @private + */ +Parser.prototype._startSubExpression = function(exprStr) { + var endStates = states[this._state].endStates; + if (!endStates) { + this._parentStop = true; + endStates = this._stopMap; + } + this._subParser = new Parser(this._grammar, exprStr, endStates); +}; + +module.exports = Parser; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/handlers.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/handlers.js new file mode 100644 index 000000000000..3f98e4124b05 --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/handlers.js @@ -0,0 +1,210 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +/** + * Handles a subexpression that's used to define a transform argument's value. + * @param {{type: }} ast The subexpression tree + */ +exports.argVal = function(ast) { + this._cursor.args.push(ast); +}; + +/** + * Handles new array literals by adding them as a new node in the AST, + * initialized with an empty array. + */ +exports.arrayStart = function() { + this._placeAtCursor({ + type: 'ArrayLiteral', + value: [] + }); +}; + +/** + * Handles a subexpression representing an element of an array literal. + * @param {{type: }} ast The subexpression tree + */ +exports.arrayVal = function(ast) { + if (ast) + this._cursor.value.push(ast); +}; + +/** + * Handles tokens of type 'binaryOp', indicating an operation that has two + * inputs: a left side and a right side. + * @param {{type: }} token A token object + */ +exports.binaryOp = function(token) { + var precedence = this._grammar[token.value].precedence || 0, + parent = this._cursor._parent; + while (parent && parent.operator && + this._grammar[parent.operator].precedence >= precedence) { + this._cursor = parent; + parent = parent._parent; + } + var node = { + type: 'BinaryExpression', + operator: token.value, + left: this._cursor + }; + this._setParent(this._cursor, node); + this._cursor = parent; + this._placeAtCursor(node); +}; + +/** + * Handles successive nodes in an identifier chain. More specifically, it + * sets values that determine how the following identifier gets placed in the + * AST. + */ +exports.dot = function() { + this._nextIdentEncapsulate = this._cursor && + (this._cursor.type != 'BinaryExpression' || + (this._cursor.type == 'BinaryExpression' && this._cursor.right)) && + this._cursor.type != 'UnaryExpression'; + this._nextIdentRelative = !this._cursor || + (this._cursor && !this._nextIdentEncapsulate); + if (this._nextIdentRelative) + this._relative = true; +}; + +/** + * Handles a subexpression used for filtering an array returned by an + * identifier chain. + * @param {{type: }} ast The subexpression tree + */ +exports.filter = function(ast) { + this._placeBeforeCursor({ + type: 'FilterExpression', + expr: ast, + relative: this._subParser.isRelative(), + subject: this._cursor + }); +}; + +/** + * Handles identifier tokens by adding them as a new node in the AST. + * @param {{type: }} token A token object + */ +exports.identifier = function(token) { + var node = { + type: 'Identifier', + value: token.value + }; + if (this._nextIdentEncapsulate) { + node.from = this._cursor; + this._placeBeforeCursor(node); + this._nextIdentEncapsulate = false; + } + else { + if (this._nextIdentRelative) + node.relative = true; + this._placeAtCursor(node); + } +}; + +/** + * Handles literal values, such as strings, booleans, and numerics, by adding + * them as a new node in the AST. + * @param {{type: }} token A token object + */ +exports.literal = function(token) { + this._placeAtCursor({ + type: 'Literal', + value: token.value + }); +}; + +/** + * Queues a new object literal key to be written once a value is collected. + * @param {{type: }} token A token object + */ +exports.objKey = function(token) { + this._curObjKey = token.value; +}; + +/** + * Handles new object literals by adding them as a new node in the AST, + * initialized with an empty object. + */ +exports.objStart = function() { + this._placeAtCursor({ + type: 'ObjectLiteral', + value: {} + }); +}; + +/** + * Handles an object value by adding its AST to the queued key on the object + * literal node currently at the cursor. + * @param {{type: }} ast The subexpression tree + */ +exports.objVal = function(ast) { + this._cursor.value[this._curObjKey] = ast; +}; + +/** + * Handles traditional subexpressions, delineated with the groupStart and + * groupEnd elements. + * @param {{type: }} ast The subexpression tree + */ +exports.subExpression = function(ast) { + this._placeAtCursor(ast); +}; + +/** + * Handles a completed alternate subexpression of a ternary operator. + * @param {{type: }} ast The subexpression tree + */ +exports.ternaryEnd = function(ast) { + this._cursor.alternate = ast; +}; + +/** + * Handles a completed consequent subexpression of a ternary operator. + * @param {{type: }} ast The subexpression tree + */ +exports.ternaryMid = function(ast) { + this._cursor.consequent = ast; +}; + +/** + * Handles the start of a new ternary expression by encapsulating the entire + * AST in a ConditionalExpression node, and using the existing tree as the + * test element. + */ +exports.ternaryStart = function() { + this._tree = { + type: 'ConditionalExpression', + test: this._tree + }; + this._cursor = this._tree; +}; + +/** + * Handles identifier tokens when used to indicate the name of a transform to + * be applied. + * @param {{type: }} token A token object + */ +exports.transform = function(token) { + this._placeBeforeCursor({ + type: 'Transform', + name: token.value, + args: [], + subject: this._cursor + }); +}; + +/** + * Handles token of type 'unaryOp', indicating that the operation has only + * one input: a right side. + * @param {{type: }} token A token object + */ +exports.unaryOp = function(token) { + this._placeAtCursor({ + type: 'UnaryExpression', + operator: token.value + }); +}; diff --git a/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/states.js b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/states.js new file mode 100644 index 000000000000..cb9afce6006e --- /dev/null +++ b/browser/extensions/shield-recipe-client/node_modules/jexl/lib/parser/states.js @@ -0,0 +1,154 @@ +/* + * Jexl + * Copyright (c) 2015 TechnologyAdvice + */ + +var h = require('./handlers'); + +/** + * A mapping of all states in the finite state machine to a set of instructions + * for handling or transitioning into other states. Each state can be handled + * in one of two schemes: a tokenType map, or a subHandler. + * + * Standard expression elements are handled through the tokenType object. This + * is an object map of all legal token types to encounter in this state (and + * any unexpected token types will generate a thrown error) to an options + * object that defines how they're handled. The available options are: + * + * {string} toState: The name of the state to which to transition + * immediately after handling this token + * {string} handler: The handler function to call when this token type is + * encountered in this state. If omitted, the default handler + * matching the token's "type" property will be called. If the handler + * function does not exist, no call will be made and no error will be + * generated. This is useful for tokens whose sole purpose is to + * transition to other states. + * + * States that consume a subexpression should define a subHandler, the + * function to be called with an expression tree argument when the + * subexpression is complete. Completeness is determined through the + * endStates object, which maps tokens on which an expression should end to the + * state to which to transition once the subHandler function has been called. + * + * Additionally, any state in which it is legal to mark the AST as completed + * should have a 'completable' property set to boolean true. Attempting to + * call {@link Parser#complete} in any state without this property will result + * in a thrown Error. + * + * @type {{}} + */ +exports.states = { + expectOperand: { + tokenTypes: { + literal: {toState: 'expectBinOp'}, + identifier: {toState: 'identifier'}, + unaryOp: {}, + openParen: {toState: 'subExpression'}, + openCurl: {toState: 'expectObjKey', handler: h.objStart}, + dot: {toState: 'traverse'}, + openBracket: {toState: 'arrayVal', handler: h.arrayStart} + } + }, + expectBinOp: { + tokenTypes: { + binaryOp: {toState: 'expectOperand'}, + pipe: {toState: 'expectTransform'}, + dot: {toState: 'traverse'}, + question: {toState: 'ternaryMid', handler: h.ternaryStart} + }, + completable: true + }, + expectTransform: { + tokenTypes: { + identifier: {toState: 'postTransform', handler: h.transform} + } + }, + expectObjKey: { + tokenTypes: { + identifier: {toState: 'expectKeyValSep', handler: h.objKey}, + closeCurl: {toState: 'expectBinOp'} + } + }, + expectKeyValSep: { + tokenTypes: { + colon: {toState: 'objVal'} + } + }, + postTransform: { + tokenTypes: { + openParen: {toState: 'argVal'}, + binaryOp: {toState: 'expectOperand'}, + dot: {toState: 'traverse'}, + openBracket: {toState: 'filter'}, + pipe: {toState: 'expectTransform'} + }, + completable: true + }, + postTransformArgs: { + tokenTypes: { + binaryOp: {toState: 'expectOperand'}, + dot: {toState: 'traverse'}, + openBracket: {toState: 'filter'}, + pipe: {toState: 'expectTransform'} + }, + completable: true + }, + identifier: { + tokenTypes: { + binaryOp: {toState: 'expectOperand'}, + dot: {toState: 'traverse'}, + openBracket: {toState: 'filter'}, + pipe: {toState: 'expectTransform'}, + question: {toState: 'ternaryMid', handler: h.ternaryStart} + }, + completable: true + }, + traverse: { + tokenTypes: { + 'identifier': {toState: 'identifier'} + } + }, + filter: { + subHandler: h.filter, + endStates: { + closeBracket: 'identifier' + } + }, + subExpression: { + subHandler: h.subExpression, + endStates: { + closeParen: 'expectBinOp' + } + }, + argVal: { + subHandler: h.argVal, + endStates: { + comma: 'argVal', + closeParen: 'postTransformArgs' + } + }, + objVal: { + subHandler: h.objVal, + endStates: { + comma: 'expectObjKey', + closeCurl: 'expectBinOp' + } + }, + arrayVal: { + subHandler: h.arrayVal, + endStates: { + comma: 'arrayVal', + closeBracket: 'expectBinOp' + } + }, + ternaryMid: { + subHandler: h.ternaryMid, + endStates: { + colon: 'ternaryEnd' + } + }, + ternaryEnd: { + subHandler: h.ternaryEnd, + completable: true + } +}; diff --git a/browser/extensions/shield-recipe-client/test/.eslintrc.js b/browser/extensions/shield-recipe-client/test/.eslintrc.js new file mode 100644 index 000000000000..2901cac2e92a --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/.eslintrc.js @@ -0,0 +1,16 @@ +"use strict"; + +module.exports = { + globals: { + Assert: false, + BrowserTestUtils: false, + add_task: false, + is: false, + isnot: false, + ok: false, + }, + rules: { + "spaced-comment": 2, + "space-before-function-paren": 2, + } +}; diff --git a/browser/extensions/shield-recipe-client/test/TestUtils.jsm b/browser/extensions/shield-recipe-client/test/TestUtils.jsm new file mode 100644 index 000000000000..1dd5ce409283 --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/TestUtils.jsm @@ -0,0 +1,21 @@ +/* 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/. */ + +"use strict"; + +/* eslint-disable no-console */ +this.EXPORTED_SYMBOLS = ["TestUtils"]; + +this.TestUtils = { + promiseTest(test) { + return function(assert, done) { + test(assert) + .catch(err => { + console.error(err); + assert.ok(false, err); + }) + .then(() => done()); + }; + }, +}; diff --git a/browser/extensions/shield-recipe-client/test/browser.ini b/browser/extensions/shield-recipe-client/test/browser.ini new file mode 100644 index 000000000000..07ce5a896d4a --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser.ini @@ -0,0 +1,5 @@ +[browser_driver_uuids.js] +[browser_env_expressions.js] +[browser_EventEmitter.js] +[browser_Storage.js] +[browser_Heartbeat.js] diff --git a/browser/extensions/shield-recipe-client/test/browser_EventEmitter.js b/browser/extensions/shield-recipe-client/test/browser_EventEmitter.js new file mode 100644 index 000000000000..ea10ffb8d3ff --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_EventEmitter.js @@ -0,0 +1,92 @@ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/Log.jsm", this); +Cu.import("resource://shield-recipe-client/lib/NormandyDriver.jsm", this); +Cu.import("resource://shield-recipe-client/lib/SandboxManager.jsm", this); + +const sandboxManager = new SandboxManager(); +sandboxManager.addHold("test running"); +const driver = new NormandyDriver(sandboxManager); +const sandboxedDriver = Cu.cloneInto(driver, sandboxManager.sandbox, {cloneFunctions: true}); +const eventEmitter = new sandboxManager.sandbox.EventEmitter(sandboxedDriver).wrappedJSObject; + + +const evidence = { + a: 0, + b: 0, + c: 0, + log: "", +}; + +function listenerA(x = 1) { + evidence.a += x; + evidence.log += "a"; +} + +function listenerB(x = 1) { + evidence.b += x; + evidence.log += "b"; +} + +function listenerC(x = 1) { + evidence.c += x; + evidence.log += "c"; +} + +add_task(function* () { + // Fire an unrelated event, to make sure nothing goes wrong + eventEmitter.on("nothing"); + + // bind listeners + eventEmitter.on("event", listenerA); + eventEmitter.on("event", listenerB); + eventEmitter.once("event", listenerC); + + // one event for all listeners + eventEmitter.emit("event"); + // another event for a and b, since c should have turned off already + eventEmitter.emit("event", 10); + + // make sure events haven't actually fired yet, just queued + Assert.deepEqual(evidence, { + a: 0, + b: 0, + c: 0, + log: "", + }, "events are fired async"); + + // Spin the event loop to run events, so we can safely "off" + yield Promise.resolve(); + + // Check intermediate event results + Assert.deepEqual(evidence, { + a: 11, + b: 11, + c: 1, + log: "abcab", + }, "intermediate events are fired"); + + // one more event for a + eventEmitter.off("event", listenerB); + eventEmitter.emit("event", 100); + + // And another unrelated event + eventEmitter.on("nothing"); + + // Spin the event loop to run events + yield Promise.resolve(); + + Assert.deepEqual(evidence, { + a: 111, + b: 11, + c: 1, + log: "abcaba", // events are in order + }, "events fired as expected"); + + sandboxManager.removeHold("test running"); + + yield sandboxManager.isNuked() + .then(() => ok(true, "sandbox is nuked")) + .catch(e => ok(false, "sandbox is nuked", e)); +}); diff --git a/browser/extensions/shield-recipe-client/test/browser_Heartbeat.js b/browser/extensions/shield-recipe-client/test/browser_Heartbeat.js new file mode 100644 index 000000000000..133709b085ff --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_Heartbeat.js @@ -0,0 +1,188 @@ +"use strict"; + +const {utils: Cu} = Components; + +Cu.import("resource://gre/modules/Services.jsm", this); +Cu.import("resource://shield-recipe-client/lib/Heartbeat.jsm", this); +Cu.import("resource://shield-recipe-client/lib/SandboxManager.jsm", this); +Cu.import("resource://shield-recipe-client/lib/NormandyDriver.jsm", this); + +/** + * Assert an array is in non-descending order, and that every element is a number + */ +function assertOrdered(arr) { + for (let i = 0; i < arr.length; i++) { + Assert.equal(typeof arr[i], "number", `element ${i} is type "number"`); + } + for (let i = 0; i < arr.length - 1; i++) { + Assert.lessOrEqual(arr[i], arr[i + 1], + `element ${i} is less than or equal to element ${i + 1}`); + } +} + +/* Close every notification in a target window and notification box */ +function closeAllNotifications(targetWindow, notificationBox) { + if (notificationBox.allNotifications.length === 0) { + return Promise.resolve(); + } + + + return new Promise(resolve => { + const notificationSet = new Set(notificationBox.allNotifications); + + const observer = new targetWindow.MutationObserver(mutations => { + for (const mutation of mutations) { + for (let i = 0; i < mutation.removedNodes.length; i++) { + const node = mutation.removedNodes.item(i); + if (notificationSet.has(node)) { + notificationSet.delete(node); + } + } + } + if (notificationSet.size === 0) { + Assert.equal(notificationBox.allNotifications.length, 0, "No notifications left"); + observer.disconnect(); + resolve(); + } + }); + + observer.observe(notificationBox, {childList: true}); + + for (const notification of notificationBox.allNotifications) { + notification.close(); + } + }); +} + +/* Check that the correct telmetry was sent */ +function assertTelemetrySent(hb, eventNames) { + return new Promise(resolve => { + hb.eventEmitter.once("TelemetrySent", payload => { + const events = [0]; + for (const name of eventNames) { + Assert.equal(typeof payload[name], "number", `payload field ${name} is a number`); + events.push(payload[name]); + } + events.push(Date.now()); + + assertOrdered(events); + resolve(); + }); + }); +} + + +const sandboxManager = new SandboxManager(); +const driver = new NormandyDriver(sandboxManager); +sandboxManager.addHold("test running"); +const sandboxedDriver = Cu.cloneInto(driver, sandboxManager.sandbox, {cloneFunctions: true}); + + +// Several of the behaviors of heartbeat prompt are mutually exclusive, so checks are broken up +// into three batches. + +/* Batch #1 - General UI, Stars, and telemetry data */ +add_task(function* () { + const eventEmitter = new sandboxManager.sandbox.EventEmitter(sandboxedDriver).wrappedJSObject; + const targetWindow = Services.wm.getMostRecentWindow("navigator:browser"); + const notificationBox = targetWindow.document.querySelector("#high-priority-global-notificationbox"); + + const preCount = notificationBox.childElementCount; + const hb = new Heartbeat(targetWindow, eventEmitter, sandboxManager, { + testing: true, + flowId: "test", + message: "test", + engagementButtonLabel: undefined, + learnMoreMessage: "Learn More", + learnMoreUrl: "https://example.org/learnmore", + }); + + // Check UI + const learnMoreEl = hb.notice.querySelector(".text-link"); + const messageEl = targetWindow.document.getAnonymousElementByAttribute(hb.notice, "anonid", "messageText"); + Assert.equal(notificationBox.childElementCount, preCount + 1, "Correct number of notifications open"); + Assert.equal(hb.notice.querySelectorAll(".star-x").length, 5, "Correct number of stars"); + Assert.equal(hb.notice.querySelectorAll(".notification-button").length, 0, "Engagement button not shown"); + Assert.equal(learnMoreEl.href, "https://example.org/learnmore", "Learn more url correct"); + Assert.equal(learnMoreEl.value, "Learn More", "Learn more label correct"); + Assert.equal(messageEl.textContent, "test", "Message is correct"); + + // Check that when clicking the learn more link, a tab opens with the right URL + const tabOpenPromise = BrowserTestUtils.waitForNewTab(targetWindow.gBrowser); + learnMoreEl.click(); + const tab = yield tabOpenPromise; + const tabUrl = yield BrowserTestUtils.browserLoaded( + tab.linkedBrowser, true, url => url && url !== "about:blank"); + + Assert.equal(tabUrl, "https://example.org/learnmore", "Learn more link opened the right url"); + + const telemetrySentPromise = assertTelemetrySent(hb, ["offeredTS", "learnMoreTS", "closedTS"]); + // Close notification to trigger telemetry to be sent + yield closeAllNotifications(targetWindow, notificationBox); + yield telemetrySentPromise; + yield BrowserTestUtils.removeTab(tab); +}); + + +// Batch #2 - Engagement buttons +add_task(function* () { + const eventEmitter = new sandboxManager.sandbox.EventEmitter(sandboxedDriver).wrappedJSObject; + const targetWindow = Services.wm.getMostRecentWindow("navigator:browser"); + const notificationBox = targetWindow.document.querySelector("#high-priority-global-notificationbox"); + const hb = new Heartbeat(targetWindow, eventEmitter, sandboxManager, { + testing: true, + flowId: "test", + message: "test", + engagementButtonLabel: "Click me!", + postAnswerUrl: "https://example.org/postAnswer", + learnMoreMessage: "Learn More", + learnMoreUrl: "https://example.org/learnMore", + }); + const engagementButton = hb.notice.querySelector(".notification-button"); + + Assert.equal(hb.notice.querySelectorAll(".star-x").length, 0, "Stars not shown"); + Assert.ok(engagementButton, "Engagement button added"); + Assert.equal(engagementButton.label, "Click me!", "Engagement button has correct label"); + + const engagementEl = hb.notice.querySelector(".notification-button"); + const tabOpenPromise = BrowserTestUtils.waitForNewTab(targetWindow.gBrowser); + engagementEl.click(); + const tab = yield tabOpenPromise; + const tabUrl = yield BrowserTestUtils.browserLoaded( + tab.linkedBrowser, true, url => url && url !== "about:blank"); + // the postAnswer url gets query parameters appended onto the end, so use Assert.startsWith instead of Assert.equal + Assert.ok(tabUrl.startsWith("https://example.org/postAnswer"), "Engagement button opened the right url"); + + const telemetrySentPromise = assertTelemetrySent(hb, ["offeredTS", "engagedTS", "closedTS"]); + // Close notification to trigger telemetry to be sent + yield closeAllNotifications(targetWindow, notificationBox); + yield telemetrySentPromise; + yield BrowserTestUtils.removeTab(tab); +}); + +// Batch 3 - Closing the window while heartbeat is open +add_task(function* () { + const eventEmitter = new sandboxManager.sandbox.EventEmitter(sandboxedDriver).wrappedJSObject; + const targetWindow = yield BrowserTestUtils.openNewBrowserWindow(); + + const hb = new Heartbeat(targetWindow, eventEmitter, sandboxManager, { + testing: true, + flowId: "test", + message: "test", + }); + + const telemetrySentPromise = assertTelemetrySent(hb, ["offeredTS", "windowClosedTS"]); + // triggers sending ping to normandy + yield BrowserTestUtils.closeWindow(targetWindow); + yield telemetrySentPromise; +}); + + +// Cleanup +add_task(function* () { + // Make sure the sandbox is clean. + sandboxManager.removeHold("test running"); + yield sandboxManager.isNuked() + .then(() => ok(true, "sandbox is nuked")) + .catch(e => ok(false, "sandbox is nuked", e)); +}); diff --git a/browser/extensions/shield-recipe-client/test/browser_Storage.js b/browser/extensions/shield-recipe-client/test/browser_Storage.js new file mode 100644 index 000000000000..681b023b2ef1 --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_Storage.js @@ -0,0 +1,37 @@ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://shield-recipe-client/lib/Storage.jsm", this); + +const fakeSandbox = {Promise}; +const store1 = Storage.makeStorage("prefix1", fakeSandbox); +const store2 = Storage.makeStorage("prefix2", fakeSandbox); + +add_task(function* () { + // Make sure values return null before being set + Assert.equal(yield store1.getItem("key"), null); + Assert.equal(yield store2.getItem("key"), null); + + // Set values to check + yield store1.setItem("key", "value1"); + yield store2.setItem("key", "value2"); + + // Check that they are available + Assert.equal(yield store1.getItem("key"), "value1"); + Assert.equal(yield store2.getItem("key"), "value2"); + + // Remove them, and check they are gone + yield store1.removeItem("key"); + yield store2.removeItem("key"); + Assert.equal(yield store1.getItem("key"), null); + Assert.equal(yield store2.getItem("key"), null); + + // Check that numbers are stored as numbers (not strings) + yield store1.setItem("number", 42); + Assert.equal(yield store1.getItem("number"), 42); + + // Check complex types work + const complex = {a: 1, b: [2, 3], c: {d: 4}}; + yield store1.setItem("complex", complex); + Assert.deepEqual(yield store1.getItem("complex"), complex); +}); diff --git a/browser/extensions/shield-recipe-client/test/browser_driver_uuids.js b/browser/extensions/shield-recipe-client/test/browser_driver_uuids.js new file mode 100644 index 000000000000..3461c528159a --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_driver_uuids.js @@ -0,0 +1,26 @@ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://shield-recipe-client/lib/NormandyDriver.jsm", this); +Cu.import("resource://shield-recipe-client/lib/SandboxManager.jsm", this); + +add_task(function* () { + const sandboxManager = new SandboxManager(); + sandboxManager.addHold("test running"); + let driver = new NormandyDriver(sandboxManager); + + // Test that UUID look about right + const uuid1 = driver.uuid(); + ok(/^[a-f0-9-]{36}$/.test(uuid1), "valid uuid format"); + + // Test that UUIDs are different each time + const uuid2 = driver.uuid(); + isnot(uuid1, uuid2, "uuids are unique"); + + driver = null; + sandboxManager.removeHold("test running"); + + yield sandboxManager.isNuked() + .then(() => ok(true, "sandbox is nuked")) + .catch(e => ok(false, "sandbox is nuked", e)); +}); diff --git a/browser/extensions/shield-recipe-client/test/browser_env_expressions.js b/browser/extensions/shield-recipe-client/test/browser_env_expressions.js new file mode 100644 index 000000000000..f84ab75d53b5 --- /dev/null +++ b/browser/extensions/shield-recipe-client/test/browser_env_expressions.js @@ -0,0 +1,56 @@ +"use strict"; + +const {utils: Cu} = Components; +Cu.import("resource://gre/modules/TelemetryController.jsm", this); +Cu.import("resource://gre/modules/Task.jsm", this); + +Cu.import("resource://shield-recipe-client/lib/EnvExpressions.jsm", this); +Cu.import("resource://gre/modules/Log.jsm", this); + +add_task(function* () { + // setup + yield TelemetryController.submitExternalPing("testfoo", {foo: 1}); + yield TelemetryController.submitExternalPing("testbar", {bar: 2}); + + let val; + // Test that basic expressions work + val = yield EnvExpressions.eval("2+2"); + is(val, 4, "basic expression works"); + + // Test that multiline expressions work + val = yield EnvExpressions.eval(` + 2 + + + 2 + `); + is(val, 4, "multiline expression works"); + + // Test it can access telemetry + val = yield EnvExpressions.eval("telemetry"); + is(typeof val, "object", "Telemetry is accesible"); + + // Test it reads different types of telemetry + val = yield EnvExpressions.eval("telemetry"); + is(val.testfoo.payload.foo, 1, "value 'foo' is in mock telemetry"); + is(val.testbar.payload.bar, 2, "value 'bar' is in mock telemetry"); + + // Test has a date transform + val = yield EnvExpressions.eval('"2016-04-22"|date'); + const d = new Date(Date.UTC(2016, 3, 22)); // months are 0 based + is(val.toString(), d.toString(), "Date transform works"); + + // Test dates are comparable + const context = {someTime: Date.UTC(2016, 0, 1)}; + val = yield EnvExpressions.eval('"2015-01-01"|date < someTime', context); + ok(val, "dates are comparable with less-than"); + val = yield EnvExpressions.eval('"2017-01-01"|date > someTime', context); + ok(val, "dates are comparable with greater-than"); + + // Test stable sample returns true for matching samples + val = yield EnvExpressions.eval('["test"]|stableSample(1)'); + is(val, true, "Stable sample returns true for 100% sample"); + + // Test stable sample returns true for matching samples + val = yield EnvExpressions.eval('["test"]|stableSample(0)'); + is(val, false, "Stable sample returns false for 0% sample"); +}); diff --git a/devtools/client/debugger/test/mochitest/head.js b/devtools/client/debugger/test/mochitest/head.js index 1f9d38b82d15..c7241d354242 100644 --- a/devtools/client/debugger/test/mochitest/head.js +++ b/devtools/client/debugger/test/mochitest/head.js @@ -1,4 +1,4 @@ -/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ + /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* vim: set ft=javascript ts=2 et sw=2 tw=80: */ /* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ @@ -1348,4 +1348,3 @@ function* initWorkerDebugger(TAB_URL, WORKER_URL) { return {client, tab, tabClient, workerClient, toolbox, gDebugger}; } - diff --git a/layout/tools/reftest/reftest-preferences.js b/layout/tools/reftest/reftest-preferences.js index 07a8d82f1acb..c109f1d1964a 100644 --- a/layout/tools/reftest/reftest-preferences.js +++ b/layout/tools/reftest/reftest-preferences.js @@ -62,6 +62,7 @@ user_pref("browser.search.geoSpecificDefaults", false); // Make sure SelfSupport doesn't hit the network. user_pref("browser.selfsupport.url", "https://localhost/selfsupport-dummy/"); +user_pref("extensions.shield-recipe-client.api_url", "https://localhost/selfsupport-dummy/"); // use about:blank, not browser.startup.homepage user_pref("browser.startup.page", 0); diff --git a/testing/profiles/prefs_general.js b/testing/profiles/prefs_general.js index 6382842b6887..ab00322f092f 100644 --- a/testing/profiles/prefs_general.js +++ b/testing/profiles/prefs_general.js @@ -303,8 +303,9 @@ user_pref("browser.search.countryCode", "US"); // This will prevent HTTP requests for region defaults. user_pref("browser.search.geoSpecificDefaults", false); -// Make sure the self support tab doesn't hit the network. +// Make sure self support doesn't hit the network. user_pref("browser.selfsupport.url", "https://%(server)s/selfsupport-dummy/"); +user_pref("extensions.shield-recipe-client.api_url", "https://%(server)s/selfsupport-dummy/"); user_pref("media.eme.enabled", true); diff --git a/testing/talos/talos/config.py b/testing/talos/talos/config.py index 59b6123d3f1b..67cedceb761e 100644 --- a/testing/talos/talos/config.py +++ b/testing/talos/talos/config.py @@ -143,6 +143,8 @@ DEFAULTS = dict( 'media.gmp-manager.updateEnabled': False, 'extensions.systemAddon.update.url': 'http://127.0.0.1/dummy-system-addons.xml', + 'extensions.shield-recipe-client.api_url': + 'https://127.0.0.1/selfsupport-dummy/', 'media.navigator.enabled': True, 'media.peerconnection.enabled': True, 'media.navigator.permission.disabled': True, diff --git a/testing/talos/talos/xtalos/xperf_whitelist.json b/testing/talos/talos/xtalos/xperf_whitelist.json index 310c3dd3569c..2befe75bc95f 100644 --- a/testing/talos/talos/xtalos/xperf_whitelist.json +++ b/testing/talos/talos/xtalos/xperf_whitelist.json @@ -14,6 +14,7 @@ "{firefox}\\browser\\features\\firefox@getpocket.com.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000}, "{firefox}\\browser\\features\\presentation@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000}, "{firefox}\\browser\\features\\webcompat@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000}, + "{firefox}\\browser\\features\\shield-recipe-client@mozilla.org.xpi": {"mincount": 0, "maxcount": 100, "minbytes": 0, "maxbytes": 10000000}, "{talos}\\tests\\tp5n\\tp5n.manifest": {"mincount": 0, "maxcount": 8, "minbytes": 0, "maxbytes": 32786}, "{talos}\\talos\\tests\\tp5n\\tp5n.manifest": {"mincount": 0, "maxcount": 8, "minbytes": 0, "maxbytes": 32786}, "{talos}\\tests\\tp5n\\tp5n.manifest.develop": {"mincount": 0, "maxcount": 8, "minbytes": 0, "maxbytes": 32786}, diff --git a/testing/xpcshell/head.js b/testing/xpcshell/head.js index 74fd482cf032..ba564f9efa5b 100644 --- a/testing/xpcshell/head.js +++ b/testing/xpcshell/head.js @@ -1608,7 +1608,6 @@ try { prefs.setBoolPref("geo.provider.testing", true); } } catch (e) { } - // We need to avoid hitting the network with certain components. try { if (runningInParent) { @@ -1619,6 +1618,8 @@ try { prefs.setCharPref("media.gmp-manager.updateEnabled", false); prefs.setCharPref("extensions.systemAddon.update.url", "http://%(server)s/dummy-system-addons.xml"); prefs.setCharPref("browser.selfsupport.url", "https://%(server)s/selfsupport-dummy/"); + prefs.setCharPref("extensions.shield-recipe-client.api_url", + "https://%(server)s/selfsupport-dummy/"); prefs.setCharPref("toolkit.telemetry.server", "https://%(server)s/telemetry-dummy"); prefs.setCharPref("browser.search.geoip.url", "https://%(server)s/geoip-dummy"); } From 924c94f74fe93b81c51d035f4271d5563a55db7e Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 20 Dec 2016 14:24:05 -0800 Subject: [PATCH 34/94] Bug 1324920 - Update mozjs_sys vendored crates. r=fitzgen,sfink Update the vendored third-party dependencies for the mozjs-sys crate. This picks up recent bug-fixes and reduces noise in unrelated runs of 'mach vendor'. The libc crate is also used by the rust url parser. gcc 0.3.35 -> 0.3.40 libc 0.2.16 -> 0.2.18 libz-sys 1.0.6 -> 1.0.10 MozReview-Commit-ID: 5ri4nOtQQ1n --HG-- extra : rebase_source : e3bfd2be7f3e615822a9177634dd8545236f0a19 --- js/src/Cargo.lock | 20 +- third_party/rust/gcc/.cargo-checksum.json | 2 +- third_party/rust/gcc/.travis.yml | 4 +- third_party/rust/gcc/Cargo.toml | 2 +- third_party/rust/gcc/appveyor.yml | 10 +- third_party/rust/gcc/src/lib.rs | 151 +++- third_party/rust/gcc/src/windows_registry.rs | 11 +- third_party/rust/gcc/tests/support/mod.rs | 3 + third_party/rust/gcc/tests/test.rs | 14 + third_party/rust/libc/.cargo-checksum.json | 2 +- third_party/rust/libc/.travis.yml | 19 +- third_party/rust/libc/Cargo.toml | 5 +- third_party/rust/libc/README.md | 4 +- third_party/rust/libc/appveyor.yml | 8 +- .../aarch64-unknown-linux-gnu/Dockerfile | 2 +- .../docker/arm-linux-androideabi/Dockerfile | 38 +- .../arm-linux-androideabi/accept-licenses.sh | 15 + .../arm-linux-androideabi/install-ndk.sh | 21 + .../arm-linux-androideabi/install-sdk.sh | 33 + .../arm-unknown-linux-gnueabihf/Dockerfile | 2 +- .../docker/i686-unknown-linux-gnu/Dockerfile | 2 +- .../docker/i686-unknown-linux-musl/Dockerfile | 23 +- .../docker/mips-unknown-linux-gnu/Dockerfile | 2 +- .../docker/mips-unknown-linux-musl/Dockerfile | 17 + .../mips64-unknown-linux-gnuabi64/Dockerfile | 11 + .../mipsel-unknown-linux-musl/Dockerfile | 9 +- .../powerpc-unknown-linux-gnu/Dockerfile | 2 +- .../powerpc64-unknown-linux-gnu/Dockerfile | 2 +- .../docker/x86_64-unknown-freebsd/Dockerfile | 4 +- .../x86_64-unknown-linux-gnu/Dockerfile | 2 +- .../x86_64-unknown-linux-musl/Dockerfile | 8 +- .../docker/x86_64-unknown-openbsd/Dockerfile | 7 +- third_party/rust/libc/ci/run-docker.sh | 18 +- third_party/rust/libc/ci/run-qemu.sh | 5 +- third_party/rust/libc/ci/run.sh | 53 +- third_party/rust/libc/src/lib.rs | 4 + third_party/rust/libc/src/redox.rs | 49 ++ .../rust/libc/src/unix/bsd/apple/mod.rs | 47 ++ .../src/unix/bsd/freebsdlike/dragonfly/mod.rs | 23 + .../src/unix/bsd/freebsdlike/freebsd/mod.rs | 51 +- .../rust/libc/src/unix/bsd/freebsdlike/mod.rs | 44 +- third_party/rust/libc/src/unix/bsd/mod.rs | 6 +- .../bsd/{openbsdlike => netbsdlike}/mod.rs | 18 +- .../netbsd.rs => netbsdlike/netbsd/mod.rs} | 56 +- .../bsd/netbsdlike/netbsd/other/b32/mod.rs | 2 + .../bsd/netbsdlike/netbsd/other/b64/mod.rs | 2 + .../unix/bsd/netbsdlike/netbsd/other/mod.rs | 13 + .../unix/bsd/netbsdlike/openbsdlike/bitrig.rs | 75 ++ .../openbsdlike/mod.rs} | 57 +- .../bsd/netbsdlike/openbsdlike/openbsd.rs | 28 + .../netbsdlike/openbsdlike/other/b32/mod.rs | 2 + .../netbsdlike/openbsdlike/other/b64/mod.rs | 2 + .../bsd/netbsdlike/openbsdlike/other/mod.rs | 11 + .../libc/src/unix/bsd/openbsdlike/bitrig.rs | 490 ------------ third_party/rust/libc/src/unix/haiku/b32.rs | 2 + third_party/rust/libc/src/unix/haiku/b64.rs | 2 + third_party/rust/libc/src/unix/haiku/mod.rs | 748 ++++++++++++++++++ third_party/rust/libc/src/unix/mod.rs | 36 +- .../rust/libc/src/unix/notbsd/android/mod.rs | 64 ++ .../libc/src/unix/notbsd/linux/mips/mips32.rs | 281 +++++++ .../unix/notbsd/linux/{ => mips}/mips64.rs | 67 +- .../notbsd/linux/{mips.rs => mips/mod.rs} | 249 +----- .../rust/libc/src/unix/notbsd/linux/mod.rs | 113 ++- .../src/unix/notbsd/linux/musl/b32/arm.rs | 20 +- .../src/unix/notbsd/linux/musl/b32/asmjs.rs | 20 +- .../src/unix/notbsd/linux/musl/b32/mips.rs | 29 +- .../src/unix/notbsd/linux/musl/b32/x86.rs | 20 +- .../src/unix/notbsd/linux/musl/b64/mod.rs | 17 +- .../libc/src/unix/notbsd/linux/musl/mod.rs | 24 +- .../src/unix/notbsd/linux/other/b32/arm.rs | 17 + .../unix/notbsd/linux/other/b32/powerpc.rs | 17 + .../src/unix/notbsd/linux/other/b32/x86.rs | 17 + .../unix/notbsd/linux/other/b64/aarch64.rs | 7 +- .../src/unix/notbsd/linux/other/b64/mod.rs | 14 + .../src/unix/notbsd/linux/other/b64/x86_64.rs | 11 + .../libc/src/unix/notbsd/linux/other/mod.rs | 87 +- .../rust/libc/src/unix/notbsd/linux/s390x.rs | 35 +- third_party/rust/libc/src/unix/notbsd/mod.rs | 35 +- third_party/rust/libc/src/unix/solaris/mod.rs | 8 + third_party/rust/libc/src/windows.rs | 46 +- .../rust/libz-sys/.cargo-checksum.json | 2 +- third_party/rust/libz-sys/.travis.yml | 3 +- third_party/rust/libz-sys/Cargo.toml | 2 +- third_party/rust/libz-sys/appveyor.yml | 4 +- third_party/rust/libz-sys/build.rs | 64 +- toolkit/library/gtest/rust/Cargo.lock | 6 +- toolkit/library/rust/Cargo.lock | 6 +- 87 files changed, 2595 insertions(+), 989 deletions(-) create mode 100755 third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh create mode 100644 third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh create mode 100644 third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh create mode 100644 third_party/rust/libc/ci/docker/mips-unknown-linux-musl/Dockerfile create mode 100644 third_party/rust/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile create mode 100644 third_party/rust/libc/src/redox.rs rename third_party/rust/libc/src/unix/bsd/{openbsdlike => netbsdlike}/mod.rs (97%) rename third_party/rust/libc/src/unix/bsd/{openbsdlike/netbsd.rs => netbsdlike/netbsd/mod.rs} (92%) create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs rename third_party/rust/libc/src/unix/bsd/{openbsdlike/openbsd.rs => netbsdlike/openbsdlike/mod.rs} (92%) create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs create mode 100644 third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs delete mode 100644 third_party/rust/libc/src/unix/bsd/openbsdlike/bitrig.rs create mode 100644 third_party/rust/libc/src/unix/haiku/b32.rs create mode 100644 third_party/rust/libc/src/unix/haiku/b64.rs create mode 100644 third_party/rust/libc/src/unix/haiku/mod.rs create mode 100644 third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs rename third_party/rust/libc/src/unix/notbsd/linux/{ => mips}/mips64.rs (78%) rename third_party/rust/libc/src/unix/notbsd/linux/{mips.rs => mips/mod.rs} (67%) diff --git a/js/src/Cargo.lock b/js/src/Cargo.lock index 45046786808d..0f6005ef6b7e 100644 --- a/js/src/Cargo.lock +++ b/js/src/Cargo.lock @@ -2,27 +2,27 @@ name = "mozjs_sys" version = "0.0.0" dependencies = [ - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", - "libz-sys 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "gcc" -version = "0.3.35" +version = "0.3.40" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libz-sys" -version = "1.0.6" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "gcc 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -32,7 +32,7 @@ version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum gcc 0.3.35 (registry+https://github.com/rust-lang/crates.io-index)" = "91ecd03771effb0c968fd6950b37e89476a578aaf1c70297d8e92b6516ec3312" -"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d" -"checksum libz-sys 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "40f2df7730b5d29426c3e44ce4d088d8c5def6471c2c93ba98585b89fb201ce6" +"checksum gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "872db9e59486ef2b14f8e8c10e9ef02de2bccef6363d7f34835dedb386b3d950" +"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" +"checksum libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "905c72a0c260bcd89ddca5afa1c46bebd29b52878a3d58c86865ea42402f88e6" "checksum pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8cee804ecc7eaf201a4a207241472cc870e825206f6c031e3ee2a72fa425f2fa" diff --git a/third_party/rust/gcc/.cargo-checksum.json b/third_party/rust/gcc/.cargo-checksum.json index 4426ce70e737..e85f4b218135 100644 --- a/third_party/rust/gcc/.cargo-checksum.json +++ b/third_party/rust/gcc/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"5cee7774cf6d876246a0ae0f8362cceeecec5924b751049c945faac9342565ff","Cargo.toml":"2f9146c71ba5dee801cc2e4c527902408c221b10ef67cd48c5d13802447d7557","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ecb2d93f4c81edbd48d8742ff7887dc0a4530a5890967839090bbc972d49bebe","appveyor.yml":"0ae8475d1be56af48cbb6a7bf774c6167c88ddaea96f2eca4f4c190dd6dab5e4","src/bin/gcc-shim.rs":"11edfe1fc6f932bd42ffffda5145833302bc163e0b87dc0d54f4bd0997ad4708","src/lib.rs":"a62a24a2703d744f5a6308d48c20938ca08fe246395a6bd6a76dd33ee3729654","src/registry.rs":"3e2a42581ebb82e325dd5600c6571cef937b35003b2927dc618967f5238a2058","src/windows_registry.rs":"80b1556b1a94ae46b444268f8e74b9ac4ddd7e6d2b98eca8ae643a8bd099abe1","tests/cc_env.rs":"d92c5e3d3d43ac244e63b2cd2c93a521fcf124bf1ccf8d4c6bfa7f8333d88976","tests/support/mod.rs":"d11ed0db4dda5ecf5fb970c9b0c56428cd47421a2742f07032e2cc6b0a0f07e2","tests/test.rs":"4ef5c34f6d8954e64c97c2876e2697dad5efc7e1dacef4b567931ed3970425c6"},"package":"91ecd03771effb0c968fd6950b37e89476a578aaf1c70297d8e92b6516ec3312"} \ No newline at end of file +{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"675ffe583db77282d010306f29e6d81e5070ab081deddd0300137dfbd2cb83de","Cargo.toml":"19bb617b74de761515ef5d087fd0e30912fda1d7c22fd04fa211236dab99a509","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ecb2d93f4c81edbd48d8742ff7887dc0a4530a5890967839090bbc972d49bebe","appveyor.yml":"46c77d913eaa45871296942c2cd96ef092c9dcaf19201cb5c500a5107faeb06f","src/bin/gcc-shim.rs":"11edfe1fc6f932bd42ffffda5145833302bc163e0b87dc0d54f4bd0997ad4708","src/lib.rs":"7e7c60beccfdd145e876da81bb07dd09c5248dab0b26d93190bab4242799d51a","src/registry.rs":"3e2a42581ebb82e325dd5600c6571cef937b35003b2927dc618967f5238a2058","src/windows_registry.rs":"1f4211caec5a192b5f05c8a47efb27aa6a0ab976c659b9318a0cf603a28d6746","tests/cc_env.rs":"d92c5e3d3d43ac244e63b2cd2c93a521fcf124bf1ccf8d4c6bfa7f8333d88976","tests/support/mod.rs":"f4dad5a8133c3dd6678d9a3de057b82e624ef547b9b3e4ac9508a48962fc387b","tests/test.rs":"164220f11be2eebc20315826513999970660a82feff8cc4b15b4e9d73d98324e"},"package":"872db9e59486ef2b14f8e8c10e9ef02de2bccef6363d7f34835dedb386b3d950"} \ No newline at end of file diff --git a/third_party/rust/gcc/.travis.yml b/third_party/rust/gcc/.travis.yml index 6b508b9d8bc9..bf55f49173dc 100644 --- a/third_party/rust/gcc/.travis.yml +++ b/third_party/rust/gcc/.travis.yml @@ -19,12 +19,14 @@ script: - cargo test --manifest-path gcc-test/Cargo.toml --target $TARGET --features parallel - cargo test --manifest-path gcc-test/Cargo.toml --target $TARGET --release - cargo doc + - cargo clean && cargo build - rustdoc --test README.md -L target/debug -L target/debug/deps after_success: - travis-cargo --only nightly doc-upload env: global: - secure: ilbcq9zX+UaiBcwqkBGldeanbEQus9npLsi0/nF1PUxKbQsoWSVtVOehAD8Hy92D3hX2npIRyNL8GxBn85XEcBYc1h7DiWUhLcXfZie79v8Ly/qboHCfZLXlB1ofbypbyQfouEdOE9zHf0ZILYVpAgUkliv6KuVShsrKNlbn4QE= + secure: "CBtqrudgE0PS8x3kTr44jKbC2D4nfnmdYVecooNm0qnER4B4TSvZpZSQoCgKK6k4BYQuOSyFTOwYx6M79w39ZMOgyCP9ytB+tyMWL0/+ZuUQL04yVg4M5vd3oJMkOaXbvG56ncgPyFrseY+FPDg+mXAzvJk/nily37YXjkQj2D0=" + matrix: - ARCH=x86_64 - ARCH=i686 diff --git a/third_party/rust/gcc/Cargo.toml b/third_party/rust/gcc/Cargo.toml index 33b2806d42cd..7efdbf9b4b38 100644 --- a/third_party/rust/gcc/Cargo.toml +++ b/third_party/rust/gcc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "gcc" -version = "0.3.35" +version = "0.3.40" authors = ["Alex Crichton "] license = "MIT/Apache-2.0" repository = "https://github.com/alexcrichton/gcc-rs" diff --git a/third_party/rust/gcc/appveyor.yml b/third_party/rust/gcc/appveyor.yml index 39e6845c862f..f6108c66514e 100644 --- a/third_party/rust/gcc/appveyor.yml +++ b/third_party/rust/gcc/appveyor.yml @@ -28,8 +28,8 @@ install: build: false test_script: - - cargo test - - cargo test --features parallel - - cargo test --manifest-path gcc-test/Cargo.toml - - cargo test --manifest-path gcc-test/Cargo.toml --features parallel - - cargo test --manifest-path gcc-test/Cargo.toml --release + - cargo test --target %TARGET% + - cargo test --features parallel --target %TARGET% + - cargo test --manifest-path gcc-test/Cargo.toml --target %TARGET% + - cargo test --manifest-path gcc-test/Cargo.toml --features parallel --target %TARGET% + - cargo test --manifest-path gcc-test/Cargo.toml --release --target %TARGET% diff --git a/third_party/rust/gcc/src/lib.rs b/third_party/rust/gcc/src/lib.rs index ea2cc9b8635e..43cc371117f0 100644 --- a/third_party/rust/gcc/src/lib.rs +++ b/third_party/rust/gcc/src/lib.rs @@ -74,7 +74,7 @@ pub struct Config { target: Option, host: Option, out_dir: Option, - opt_level: Option, + opt_level: Option, debug: Option, env: Vec<(OsString, OsString)>, compiler: Option, @@ -250,7 +250,16 @@ impl Config { /// This option is automatically scraped from the `OPT_LEVEL` environment /// variable by build scripts, so it's not required to call this function. pub fn opt_level(&mut self, opt_level: u32) -> &mut Config { - self.opt_level = Some(opt_level); + self.opt_level = Some(opt_level.to_string()); + self + } + + /// Configures the optimization level of the generated object files. + /// + /// This option is automatically scraped from the `OPT_LEVEL` environment + /// variable by build scripts, so it's not required to call this function. + pub fn opt_level_str(&mut self, opt_level: &str) -> &mut Config { + self.opt_level = Some(opt_level.to_string()); self } @@ -344,6 +353,23 @@ impl Config { self.compile_objects(&src_dst); self.assemble(lib_name, &dst.join(output), &objects); + if self.get_target().contains("msvc") { + let compiler = self.get_base_compiler(); + let atlmfc_lib = compiler.env().iter().find(|&&(ref var, _)| { + var == OsStr::new("LIB") + }).and_then(|&(_, ref lib_paths)| { + env::split_paths(lib_paths).find(|path| { + let sub = Path::new("atlmfc/lib"); + path.ends_with(sub) || path.parent().map_or(false, |p| p.ends_with(sub)) + }) + }); + + if let Some(atlmfc_lib) = atlmfc_lib { + self.print(&format!("cargo:rustc-link-search=native={}", + atlmfc_lib.display())); + } + } + self.print(&format!("cargo:rustc-link-lib=static={}", &output[3..output.len() - 2])); self.print(&format!("cargo:rustc-link-search=native={}", dst.display())); @@ -437,14 +463,20 @@ impl Config { if msvc { cmd.args.push("/nologo".into()); - cmd.args.push("/MD".into()); // link against msvcrt.dll for now - if opt_level != 0 { - cmd.args.push("/O2".into()); + let features = env::var("CARGO_CFG_TARGET_FEATURE") + .unwrap_or(String::new()); + if features.contains("crt-static") { + cmd.args.push("/MT".into()); + } else { + cmd.args.push("/MD".into()); } - if target.contains("i686") { - cmd.args.push("/SAFESEH".into()); - } else if target.contains("i586") { - cmd.args.push("/SAFESEH".into()); + match &opt_level[..] { + "z" | "s" => cmd.args.push("/Os".into()), + "2" => cmd.args.push("/O2".into()), + "1" => cmd.args.push("/O1".into()), + _ => {} + } + if target.contains("i586") { cmd.args.push("/ARCH:IA32".into()); } } else if nvcc { @@ -477,23 +509,68 @@ impl Config { cmd.args.push("-Xcompiler".into()); cmd.args.push("\'-fPIC\'".into()); } + if target.contains("musl") { cmd.args.push("-static".into()); } + // armv7 targets get to use armv7 instructions if target.starts_with("armv7-unknown-linux-") { cmd.args.push("-march=armv7-a".into()); } + + // On android we can guarantee some extra float instructions + // (specified in the android spec online) + if target.starts_with("armv7-linux-androideabi") { + cmd.args.push("-march=armv7-a".into()); + cmd.args.push("-mfpu=vfpv3-d16".into()); + } + + // For us arm == armv6 by default if target.starts_with("arm-unknown-linux-") { cmd.args.push("-march=armv6".into()); cmd.args.push("-marm".into()); } + + // Turn codegen down on i586 to avoid some instructions. if target.starts_with("i586-unknown-linux-") { cmd.args.push("-march=pentium".into()); } + + // Set codegen level for i686 correctly if target.starts_with("i686-unknown-linux-") { cmd.args.push("-march=i686".into()); } + + // Looks like `musl-gcc` makes is hard for `-m32` to make its way + // all the way to the linker, so we need to actually instruct the + // linker that we're generating 32-bit executables as well. This'll + // typically only be used for build scripts which transitively use + // these flags that try to compile executables. + if target == "i686-unknown-linux-musl" { + cmd.args.push("-Wl,-melf_i386".into()); + } + + if target.starts_with("thumb") { + cmd.args.push("-mthumb".into()); + + if target.ends_with("eabihf") { + cmd.args.push("-mfloat-abi=hard".into()) + } + } + if target.starts_with("thumbv6m") { + cmd.args.push("-march=armv6s-m".into()); + } + if target.starts_with("thumbv7em") { + cmd.args.push("-march=armv7e-m".into()); + + if target.ends_with("eabihf") { + cmd.args.push("-mfpu=fpv4-sp-d16".into()) + } + } + if target.starts_with("thumbv7m") { + cmd.args.push("-march=armv7-m".into()); + } } if self.cpp && !msvc { @@ -579,7 +656,7 @@ impl Config { } else { let ar = self.get_ar(); let cmd = ar.file_name().unwrap().to_string_lossy(); - run(self.cmd(&ar).arg("crus") + run(self.cmd(&ar).arg("crs") .arg(dst) .args(objects) .args(&self.objects), &cmd); @@ -658,6 +735,16 @@ impl Config { t.args.push(arg.into()); } return t + }).or_else(|| { + if target.contains("emscripten") { + if self.cpp { + Some(Tool::new(PathBuf::from("em++"))) + } else { + Some(Tool::new(PathBuf::from("emcc"))) + } + } else { + None + } }).or_else(|| { windows_registry::find_tool(&target, "cl.exe") }).unwrap_or_else(|| { @@ -671,25 +758,43 @@ impl Config { } else if target.contains("android") { format!("{}-{}", target, gnu) } else if self.get_host() != target { - let prefix = match &target[..] { + // CROSS_COMPILE is of the form: "arm-linux-gnueabi-" + let cc_env = self.getenv("CROSS_COMPILE"); + let cross_compile = cc_env.as_ref().map(|s| s.trim_right_matches('-')); + let prefix = cross_compile.or(match &target[..] { "aarch64-unknown-linux-gnu" => Some("aarch64-linux-gnu"), "arm-unknown-linux-gnueabi" => Some("arm-linux-gnueabi"), "arm-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), - "armv7-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), "arm-unknown-linux-musleabi" => Some("arm-linux-musleabi"), "arm-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), + "arm-unknown-netbsdelf-eabi" => Some("arm--netbsdelf-eabi"), + "armv6-unknown-netbsdelf-eabihf" => Some("armv6--netbsdelf-eabihf"), + "armv7-unknown-linux-gnueabihf" => Some("arm-linux-gnueabihf"), "armv7-unknown-linux-musleabihf" => Some("arm-linux-musleabihf"), - "powerpc-unknown-linux-gnu" => Some("powerpc-linux-gnu"), - "powerpc64-unknown-linux-gnu" => Some("powerpc-linux-gnu"), - "powerpc64le-unknown-linux-gnu" => Some("powerpc64le-linux-gnu"), + "armv7-unknown-netbsdelf-eabihf" => Some("armv7--netbsdelf-eabihf"), + "i686-pc-windows-gnu" => Some("i686-w64-mingw32"), + "i686-unknown-linux-musl" => Some("musl"), + "i686-unknown-netbsdelf" => Some("i486--netbsdelf"), "mips-unknown-linux-gnu" => Some("mips-linux-gnu"), "mipsel-unknown-linux-gnu" => Some("mipsel-linux-gnu"), - "i686-pc-windows-gnu" => Some("i686-w64-mingw32"), + "mips64-unknown-linux-gnuabi64" => Some("mips64-linux-gnuabi64"), + "mips64el-unknown-linux-gnuabi64" => Some("mips64el-linux-gnuabi64"), + "powerpc-unknown-linux-gnu" => Some("powerpc-linux-gnu"), + "powerpc-unknown-netbsd" => Some("powerpc--netbsd"), + "powerpc64-unknown-linux-gnu" => Some("powerpc-linux-gnu"), + "powerpc64le-unknown-linux-gnu" => Some("powerpc64le-linux-gnu"), + "s390x-unknown-linux-gnu" => Some("s390x-linux-gnu"), + "sparc64-unknown-netbsd" => Some("sparc64--netbsd"), + "thumbv6m-none-eabi" => Some("arm-none-eabi"), + "thumbv7em-none-eabi" => Some("arm-none-eabi"), + "thumbv7em-none-eabihf" => Some("arm-none-eabi"), + "thumbv7m-none-eabi" => Some("arm-none-eabi"), "x86_64-pc-windows-gnu" => Some("x86_64-w64-mingw32"), - "x86_64-unknown-linux-musl" => Some("musl"), "x86_64-rumprun-netbsd" => Some("x86_64-rumprun-netbsd"), + "x86_64-unknown-linux-musl" => Some("musl"), + "x86_64-unknown-netbsd" => Some("x86_64--netbsd"), _ => None, - }; + }); match prefix { Some(prefix) => format!("{}-{}", prefix, gnu), None => default.to_string(), @@ -746,6 +851,8 @@ impl Config { None } else if target.contains("darwin") { Some("c++".to_string()) + } else if target.contains("freebsd") { + Some("c++".to_string()) } else { Some("stdc++".to_string()) } @@ -758,6 +865,8 @@ impl Config { }).unwrap_or_else(|| { if self.get_target().contains("android") { PathBuf::from(format!("{}-ar", self.get_target())) + } else if self.get_target().contains("emscripten") { + PathBuf::from("emar") } else { PathBuf::from("ar") } @@ -772,9 +881,9 @@ impl Config { self.host.clone().unwrap_or_else(|| self.getenv_unwrap("HOST")) } - fn get_opt_level(&self) -> u32 { - self.opt_level.unwrap_or_else(|| { - self.getenv_unwrap("OPT_LEVEL").parse().unwrap() + fn get_opt_level(&self) -> String { + self.opt_level.as_ref().cloned().unwrap_or_else(|| { + self.getenv_unwrap("OPT_LEVEL") }) } diff --git a/third_party/rust/gcc/src/windows_registry.rs b/third_party/rust/gcc/src/windows_registry.rs index c2d3a53d3e0f..e16a33f24647 100644 --- a/third_party/rust/gcc/src/windows_registry.rs +++ b/third_party/rust/gcc/src/windows_registry.rs @@ -211,6 +211,11 @@ pub fn find_tool(target: &str, tool: &str) -> Option { let sub = otry!(vc_lib_subdir(target)); tool.libs.push(path.join("lib").join(sub)); tool.include.push(path.join("include")); + let atlmfc_path = path.join("atlmfc"); + if atlmfc_path.exists() { + tool.libs.push(atlmfc_path.join("lib").join(sub)); + tool.include.push(atlmfc_path.join("include")); + } Some(tool) }).next() } @@ -314,7 +319,9 @@ pub fn find_tool(target: &str, tool: &str) -> Option { fn bin_subdir(target: &str) -> Vec<(&'static str, &'static str)> { let arch = target.split('-').next().unwrap(); match (arch, host_arch()) { + ("i586", X86) | ("i686", X86) => vec![("", "")], + ("i586", X86_64) | ("i686", X86_64) => vec![("amd64_x86", "amd64"), ("", "")], ("x86_64", X86) => vec![("x86_amd64", "")], ("x86_64", X86_64) => vec![("amd64", "amd64"), ("x86_amd64", "")], @@ -327,7 +334,7 @@ pub fn find_tool(target: &str, tool: &str) -> Option { fn lib_subdir(target: &str) -> Option<&'static str> { let arch = target.split('-').next().unwrap(); match arch { - "i686" => Some("x86"), + "i586" | "i686" => Some("x86"), "x86_64" => Some("x64"), "arm" => Some("arm"), _ => None, @@ -338,7 +345,7 @@ pub fn find_tool(target: &str, tool: &str) -> Option { fn vc_lib_subdir(target: &str) -> Option<&'static str> { let arch = target.split('-').next().unwrap(); match arch { - "i686" => Some(""), + "i586" | "i686" => Some(""), "x86_64" => Some("amd64"), "arm" => Some("arm"), _ => None, diff --git a/third_party/rust/gcc/tests/support/mod.rs b/third_party/rust/gcc/tests/support/mod.rs index b5703d2fd8b1..5c40984eb6a0 100644 --- a/third_party/rust/gcc/tests/support/mod.rs +++ b/third_party/rust/gcc/tests/support/mod.rs @@ -23,6 +23,9 @@ impl Test { pub fn new() -> Test { let mut gcc = PathBuf::from(env::current_exe().unwrap()); gcc.pop(); + if gcc.ends_with("deps") { + gcc.pop(); + } gcc.push(format!("gcc-shim{}", env::consts::EXE_SUFFIX)); Test { td: TempDir::new("gcc-test").unwrap(), diff --git a/third_party/rust/gcc/tests/test.rs b/third_party/rust/gcc/tests/test.rs index b1d6c8d085b7..1b6a0bd0d10a 100644 --- a/third_party/rust/gcc/tests/test.rs +++ b/third_party/rust/gcc/tests/test.rs @@ -31,6 +31,20 @@ fn gnu_opt_level_1() { .must_not_have("-O2"); } +#[test] +fn gnu_opt_level_s() { + let test = Test::gnu(); + test.gcc() + .opt_level_str("s") + .file("foo.c").compile("libfoo.a"); + + test.cmd(0).must_have("-Os") + .must_not_have("-O1") + .must_not_have("-O2") + .must_not_have("-O3") + .must_not_have("-Oz"); +} + #[test] fn gnu_debug() { let test = Test::gnu(); diff --git a/third_party/rust/libc/.cargo-checksum.json b/third_party/rust/libc/.cargo-checksum.json index ee36ceb6f69f..e5ca6f56c6d6 100644 --- a/third_party/rust/libc/.cargo-checksum.json +++ b/third_party/rust/libc/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"408ea7ebf4efd8760be7ee2bede160f95eacc79fd64361eb9d416aa3469c8562","Cargo.toml":"f467b45e724b7fcb97936997c026f1950847a5c240a17581ccb27c9051dc8498","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"6294cbbc2515a519dc3f1bb50573bb83f4fbb24cfc093a1d7f2a9cdd2240a3b7","appveyor.yml":"2d5f521a9166515b085b7e2d330152b717589815fd2471adab57cf1191638ac0","ci/README.md":"be804f15e2128e5fd4b160cb0b13cff5f19e7d77b55ec5254aa6fd8731c84f0d","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"e3a31e7e899bb3976f26a2be6f075ab329777bebe893cfeea70020f7e2868661","ci/docker/arm-linux-androideabi/Dockerfile":"c3d60f2ba389e60e59cb6973542751c66a0e7bd484e11589c8ee7346e9ff2bab","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"1e9bd9c78bbd5a046043edf89f64772d69f447e4c8d88f23d44faa7d68e15c52","ci/docker/i686-unknown-linux-gnu/Dockerfile":"8fdba666cd9356fd4532de06d799d3c487abd870509362c3892a5193a1b7c94e","ci/docker/i686-unknown-linux-musl/Dockerfile":"efd110211fc9489aeb063a40a69e3a24f4d7f6174343dd203859d61e47403290","ci/docker/mips-unknown-linux-gnu/Dockerfile":"cc65290d3e5f189be836a0883fac41bbe709d1437a6691c3cbe18104f7c55277","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"aace107e36ff42af705f0b652bb935982048a6c657acffbf7df47c59778b6469","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"e334ace0c994bda4f8db63fc2cb51780d0056ea3f47a4fe735f6b571e59eec7e","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"e643db60f36ebeefda02d51bbc036c63102b8a1c106e2404c392891bb1aea0a9","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"44c3107fb30380785aaed6ff73fa334017a5bb4e3b5c7d4876154f09023a2b99","ci/docker/x86_64-unknown-freebsd/Dockerfile":"2cb917b02a0736b9dd5ce8a44922e9a9f468ba431747ef1e0d36de5b07681962","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"4fd4698b6322be510a1529fc98fab1c90b86545e41a7b68c51798b17b9bec664","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"cd7a0d93e7c715e7c40d1dd763b43054a15c1d239ec2bd48d3624627e7ab2095","ci/docker/x86_64-unknown-openbsd/Dockerfile":"a756b32086d80cf937be7c136ac088146ad7dfe1c0b2fa18786bc867dd382fbc","ci/dox.sh":"2161cb17ee0d6a2279a64149c6b7c73a5b2eab344f248ea1fa0e6c8f6335ec5f","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/run-docker.sh":"d17d1f854c9414155ed54a7738acf3330637ce81923b50c238bdaa761ef10153","ci/run-qemu.sh":"4f9dd0a9011ca140e3482bb49e56fc21576c1c234eb7ff2782a6bf1aa34f3453","ci/run.sh":"d1548d31b0b538ecd01fe0bdf6c0ff746969e14392ac4127a6c02a49d4e0ecc9","ci/style.rs":"60564abc1d5197ed1598426dd0d6ee9939a16d2875b03373538f58843bb616c4","src/dox.rs":"eb6fbcc0b8b59430271bb71ee023961fd165337fc5fd6ca433882457a3c735bd","src/lib.rs":"4cece0e880ec8731913e5110b58d1b134148b0a43e72d6b990c1d999916fc706","src/macros.rs":"bd9802772b0e5c8b3c550d1c24307f06c0d1e4ce656b4ae1cf092142bbe5412c","src/unix/bsd/apple/b32.rs":"110ecff78da0e8d405d861447904da403d8b3f6da1f0f9dc9987633f3f04fe46","src/unix/bsd/apple/b64.rs":"e6808081c0b276cca3189628716f507c7c0d00b62417cd44addbdaefe848cec7","src/unix/bsd/apple/mod.rs":"e1effb590ae2da9613068df7367ab46ceba50d31fe35b8b06eaa1d9bb3e8ae6e","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"7784fa437c303616e58480be9b30e1a49da88e9f6154c509985f6d46f36a9e47","src/unix/bsd/freebsdlike/freebsd/mod.rs":"223109596e0dc431a4fa121e22d6ee768731205bfb333973af3b334bc582ee58","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"c7f46b9ae23fde5a9e245a28ed1380066e67f081323b4d253a18e9da3b97b860","src/unix/bsd/freebsdlike/mod.rs":"3b93986960a523940c77ad2fe5d4f5eaaa589715fa02daa4bc0ef088bd2c22fd","src/unix/bsd/mod.rs":"9cfacc89c92b93809c94a59a81b5ac613482025c1ed47c2fcc0c26c0573dd113","src/unix/bsd/openbsdlike/bitrig.rs":"030cfb1ee0caa82dedddc40fd32f5709a862c22e1a6a5f16a43cbdcdfccb376d","src/unix/bsd/openbsdlike/mod.rs":"e4b968f3504c6e6fe327cb212ef623f7a90e8fbe817a6ff0b9c01898cb746128","src/unix/bsd/openbsdlike/netbsd.rs":"de9ae04cf9a04ec3855339a76f3b42cfe1c80395e8dc9ab8d10bf69431746007","src/unix/bsd/openbsdlike/openbsd.rs":"2c3004cd9f34c8d027c4dc418a7b62ef485599d4b2136d458a6414b78b8038f4","src/unix/mod.rs":"afd8a255c9e14da431e7e4ec395dd7379fc2b0d3d7f90fd717c0e23d1db3b8ff","src/unix/notbsd/android/b32.rs":"148e1b4ed8b4f700d5aa24178af925164176e1c18b54db877ced4b55ba9f03d4","src/unix/notbsd/android/b64.rs":"302caf0aa95fa022030717c58de17d85d814b04350eca081a722ec435bc4f217","src/unix/notbsd/android/mod.rs":"081802b334414a38e7cf4cbc07a44babdb65969053c6c73d9f345e323c601242","src/unix/notbsd/linux/mips.rs":"e61e24a6309752224fd3932fbff3a68d71f59fb131a4d205dfc13ea2c1594943","src/unix/notbsd/linux/mips64.rs":"c7f58c75ac50a8177d8970e893dfe619ef708de264cb1c1af7bb912246a78b18","src/unix/notbsd/linux/mod.rs":"716d55f8598acd718e9545f6a66ffb216e7fe51706f81c5f50147ee2b42f8d3d","src/unix/notbsd/linux/musl/b32/arm.rs":"2ab4cb00932e23364d6919ce09700d2ed36206d488f9390f3e2c6de965f85ae7","src/unix/notbsd/linux/musl/b32/asmjs.rs":"f57da63ac0b9b4b2e74ec54ec01ce34b04c9e7a4a3df62ac93be402538015883","src/unix/notbsd/linux/musl/b32/mips.rs":"f28c77e1716be8eafec4c8b76a9312b8bba3271fbd5b726a69f9f467482039d8","src/unix/notbsd/linux/musl/b32/mod.rs":"bd29a02c67b69791e7cabd7666503c35ed5322d244a005b9cc7fd0cb28b552a8","src/unix/notbsd/linux/musl/b32/x86.rs":"363e2eae846f2e6c26751d92b7e73fc6dd2d3cfb1465dff366251b92acf80da8","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4009c7eaf703472daef2a70bdac910d9fc395a33689ef2e8cf1c4e692445d3f0","src/unix/notbsd/linux/musl/b64/mod.rs":"03c8391e509341385ea9458d40bdc013bee0645ae31ba3e2007aecf133853c08","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"dc28f5b7284235d6cf5519053cac59a1c16dc39223b71cca0871e4880755f852","src/unix/notbsd/linux/musl/b64/x86_64.rs":"43291acc0dfc92c2fec8ba6ce77ee9ca3c20bcdccec18e149f95ba911cee704b","src/unix/notbsd/linux/musl/mod.rs":"c707acce4a8f6eb7373f5bc7e77595b2e0fb7d390b3063b92558702d75cc504c","src/unix/notbsd/linux/other/b32/arm.rs":"cb0ea706eaf32733092524633acc3d34f4a140b0d7c2b4350698b9295a3f0e6a","src/unix/notbsd/linux/other/b32/mod.rs":"8b774feb5510b963ed031db7ab3d7e24f1ba5524a6396db0b851d237ccc16fd3","src/unix/notbsd/linux/other/b32/powerpc.rs":"89bef28c85fe6c81c2e661d9959692f5ada691658d69c8b9a2fb11d3b2ed1214","src/unix/notbsd/linux/other/b32/x86.rs":"aeafa92aca3b5bed951fe79081412068210cba91ef610ee2c007ba5da19ec3c6","src/unix/notbsd/linux/other/b64/aarch64.rs":"c198b3355d91a03e0ac8780ba7b58c1eb445db8beba7d9fa7704a0089174bc73","src/unix/notbsd/linux/other/b64/mod.rs":"dab63025ad3713a9a5f014283d4b3a3f6c3d167ae2bece29ee4b1d5f9489b6c7","src/unix/notbsd/linux/other/b64/powerpc64.rs":"06a795bca8e91a0143ef1787b034201ed7a21d01960ce9fe869d18c274d5bdb4","src/unix/notbsd/linux/other/b64/x86_64.rs":"5af4e657e04a863ac489de52294e7c4c34d191393d99e025a6fbbe1a26cac33f","src/unix/notbsd/linux/other/mod.rs":"3e6cbc19efba21029ae93d8f5aaf502f422cb03336c1f687c10f96efc1cf55c3","src/unix/notbsd/linux/s390x.rs":"9293453eb87dc6b134c50593ca1d92eac338a7c39091db9ce66ba2394058cb49","src/unix/notbsd/mod.rs":"3beb490a9f1f9473ec0241b30ad8da4eae2de01aa7225257ba60eb48ae248adc","src/unix/solaris/mod.rs":"a1b0cf6b80963aff8e0f472306d8a43a26c40fcd8d9fdee29f1a25618a88f781","src/windows.rs":"7bed60392ae1552b4404b38bac7151f00f26f8d6568c1b845301bfb2346fd505"},"package":"408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d"} \ No newline at end of file +{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"7150ee9391a955b2ef7e0762fc61c0c1aab167620ca36d88d78062d93b8334ba",".travis.yml":"7cdd02047a3044fcc50a43aacede564cfbe061bab9ccd143a58e7e92e64750c2","Cargo.toml":"a6a896942913853a04393a52b33516140a6a173768fff34920f2d304fe4bb21f","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"4222225ac1d974faee08172b0b0773dfe2b312a13054f090f04c651aa1d1e6ef","appveyor.yml":"c0d70c650b6231e6ff78a352224f1a522a9be69d9da4251adbaddb3f0393294d","ci/README.md":"be804f15e2128e5fd4b160cb0b13cff5f19e7d77b55ec5254aa6fd8731c84f0d","ci/docker/aarch64-unknown-linux-gnu/Dockerfile":"62ca7317439f9c303990e897450a91cd467be05eb75dfc01456d417932ac8672","ci/docker/arm-linux-androideabi/Dockerfile":"172bac5a76024737847ffdac49f68e2b3d890cb2fc1b5e3f7aaaf19b46916830","ci/docker/arm-linux-androideabi/accept-licenses.sh":"84ad00815f628005ed22c5d6cd14990ebc97812a7163bd275b2877904eddab53","ci/docker/arm-linux-androideabi/install-ndk.sh":"eef063bb01a16c0f90471dbce1b5a395b53141d7704e15a3c9a1c4fc5e06d4b1","ci/docker/arm-linux-androideabi/install-sdk.sh":"42c04b17c4a35bef58757332e960a6e4aba1b5e41f8fc0182265163ff93f6182","ci/docker/arm-unknown-linux-gnueabihf/Dockerfile":"e349f7caa463adbde8d6ec4d2b9f7720ed81c77f48d75bbfb78c89751f55c2dc","ci/docker/i686-unknown-linux-gnu/Dockerfile":"07e9df6ba91025cbec7ae81ade63f8cfb8a54c5e1e5a8f8def0617e17bd59db0","ci/docker/i686-unknown-linux-musl/Dockerfile":"1a4d064adff4a8f58773305567cfe5d915bcd0762bcb0e101cf6f4ca628a96da","ci/docker/mips-unknown-linux-gnu/Dockerfile":"860299d96ee50ebdbd788e65eb6ba1f561ef66107647bddffcb2567ac350896b","ci/docker/mips-unknown-linux-musl/Dockerfile":"711c43122fa34cee83a69944493213924b0ff1fccd78c7a141cb2b2127526484","ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile":"163776e0fd38f66df7415421202ac29efc7d345a628947434e573c3885594ab5","ci/docker/mipsel-unknown-linux-musl/Dockerfile":"398c1c6810b07d329f6f29523b3e34603d24939fb6f6a944bcd67d36f25b08c8","ci/docker/powerpc-unknown-linux-gnu/Dockerfile":"08b846a338c2ee70100f4e80db812668dc58bfb536c44a95cd1cf004d965186b","ci/docker/powerpc64-unknown-linux-gnu/Dockerfile":"4da285ffd035d16f5da9e3701841eb86049c8cfa417fa81e53da4ef74152eac0","ci/docker/x86_64-rumprun-netbsd/Dockerfile":"44c3107fb30380785aaed6ff73fa334017a5bb4e3b5c7d4876154f09023a2b99","ci/docker/x86_64-unknown-freebsd/Dockerfile":"ef0f9f63065218728d2daafaa5ba71b17e4ccc23d72e859e0a7133fc64c0815e","ci/docker/x86_64-unknown-linux-gnu/Dockerfile":"67fabbc8c6ac02376cf9344251ad49ecdac396b71accb572fd1ae65225325bc0","ci/docker/x86_64-unknown-linux-musl/Dockerfile":"f71019fed5204b950843ef5e56144161fda7e27fad68ed0e8bc4353c388c7bcf","ci/docker/x86_64-unknown-openbsd/Dockerfile":"dfa5c23a6cff8c7a9a846668118c71a8406a360801fd3632fb12e8fbda6b7338","ci/dox.sh":"2161cb17ee0d6a2279a64149c6b7c73a5b2eab344f248ea1fa0e6c8f6335ec5f","ci/landing-page-footer.html":"b70b3112c2147f5c967e7481061ef38bc2d79a28dd55a16fb916d9c9426da2c4","ci/landing-page-head.html":"ad69663fac7924f27d0209bc519d55838e86edfc4133713a6fd08caadac1b142","ci/run-docker.sh":"7f6c68dbca93788111170ac4678608957a179e76cfe8c5a51d11dfea1742d7f2","ci/run-qemu.sh":"bb859421170871ef23a8940c5e150efec0c01b95e32d2ce2d37b79a45d9d346c","ci/run.sh":"b6a6307ea989b6a84bad0fd7d46c3206b30f7aa06d0b3e92d6cb1c855f4e0c42","ci/style.rs":"60564abc1d5197ed1598426dd0d6ee9939a16d2875b03373538f58843bb616c4","src/dox.rs":"eb6fbcc0b8b59430271bb71ee023961fd165337fc5fd6ca433882457a3c735bd","src/lib.rs":"cc328e10a4c2879e7de1858aabc30e667cb07398e021e0d2d002f4195632127a","src/macros.rs":"bd9802772b0e5c8b3c550d1c24307f06c0d1e4ce656b4ae1cf092142bbe5412c","src/redox.rs":"e4814435c11a200a8acd9ad0e40dac3e44a6881f434d89b91f1ba643c8b9b6f7","src/unix/bsd/apple/b32.rs":"110ecff78da0e8d405d861447904da403d8b3f6da1f0f9dc9987633f3f04fe46","src/unix/bsd/apple/b64.rs":"e6808081c0b276cca3189628716f507c7c0d00b62417cd44addbdaefe848cec7","src/unix/bsd/apple/mod.rs":"25aa17657431107ceecdc1f87bcfdeb5df633eeae9ae85be39187c3a6cbecb0f","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"53ff7f64e03d7aa3d779d4be0768e72fdf513689aa28813bd279a6a8fcbf824a","src/unix/bsd/freebsdlike/freebsd/mod.rs":"8670fd8cae2bef1f5f41b11e7723174d7c64fb73302893173010ee024915b4b9","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"c7f46b9ae23fde5a9e245a28ed1380066e67f081323b4d253a18e9da3b97b860","src/unix/bsd/freebsdlike/mod.rs":"cc13083464a040ae490541835f708b9c0546833335a7c891939c495ca78eb41f","src/unix/bsd/mod.rs":"bd422d4bca87a3e8ea4bd78b9ae019643399807d036913f42fdd7476f260297d","src/unix/bsd/netbsdlike/mod.rs":"7b62b89c6ba0d5a8e0cf0937587a81e0314f9c5dabb0c9a9164106b677cf4dd8","src/unix/bsd/netbsdlike/netbsd/mod.rs":"6f4535b27610c1f14e781413e8ea20713fa79788addebf96f5e8f3d4b0767c2c","src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/netbsd/other/mod.rs":"8ce39030f3e4fb45a3d676ade97da8f6d1b3d5f6d8d141224d341c993c57e090","src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs":"f8cd05dacd3a3136c58da5a2fbe26f703767823b28e74fe8a2b57a7bd98d6d5c","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"b61a9ad0bf901b2aed86f69a062a70b50a5b29251165d9b62406c09c9d1830b4","src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs":"b1b9cf7be9f0e4d294a57092594074ad03a65fe0eeac9d1104fa874c313e7900","src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs":"927eeccaf3269d299db4c2a55f8010807bf43dfa894aea6a783215f5d3560baa","src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs":"f5d8db6f54efd05520b31b764a6bacbf612e1aebce097d2d5bfaaef3b91f37b5","src/unix/haiku/b32.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/haiku/b64.rs":"b422430c550c0ba833c9206d1350861e344e3a2eb33d7d58693efb35044be1cc","src/unix/haiku/mod.rs":"d14c45d536f24cd9cd8d5170b9829026da4c782ff2d5855644cc217553e309cf","src/unix/mod.rs":"84cf9ca2f24b1331760a5d51ba7f6bf3c1e170f6642ef9b6d25deb61a50ddcaf","src/unix/notbsd/android/b32.rs":"148e1b4ed8b4f700d5aa24178af925164176e1c18b54db877ced4b55ba9f03d4","src/unix/notbsd/android/b64.rs":"302caf0aa95fa022030717c58de17d85d814b04350eca081a722ec435bc4f217","src/unix/notbsd/android/mod.rs":"49bdee8558e8abbcc9cf1fdab3ba99bc900f3c8fd7744e375d744adefd83090a","src/unix/notbsd/linux/mips/mips32.rs":"6f946d75deed2b4de65927eaf48c98be0d72bc6d932ff5f1c1542db558ec79f2","src/unix/notbsd/linux/mips/mips64.rs":"44ded650aa3e4b251ac5b09a460400c07068e70e8daeb0815932c2f828aa8ec4","src/unix/notbsd/linux/mips/mod.rs":"478646b58921d24fa0ef487a9f0f819981bb5f0bfe5471d6d866366cd890458e","src/unix/notbsd/linux/mod.rs":"ddf67bb80c8f42cad12fa64e92d9a82ab9e90a10e62f041cc1610ae175a9d680","src/unix/notbsd/linux/musl/b32/arm.rs":"0ad8c97458743dc7d81200df0e1223f0a20936933ace77fe786477027597dd7b","src/unix/notbsd/linux/musl/b32/asmjs.rs":"085e410f990312de76f74cb9bbf9fcc27d686e94334143b34511f565d1b8bb91","src/unix/notbsd/linux/musl/b32/mips.rs":"01a92b5dc28ca67e41d7791e398f75210208368e53a848297186de5829d158ec","src/unix/notbsd/linux/musl/b32/mod.rs":"bd29a02c67b69791e7cabd7666503c35ed5322d244a005b9cc7fd0cb28b552a8","src/unix/notbsd/linux/musl/b32/x86.rs":"b47963c6bc5fceec96fded47d58e1c0466b190ec7ae207d666d23be35131c638","src/unix/notbsd/linux/musl/b64/aarch64.rs":"4009c7eaf703472daef2a70bdac910d9fc395a33689ef2e8cf1c4e692445d3f0","src/unix/notbsd/linux/musl/b64/mod.rs":"ec5ec1b11a2f4db24f7c0fadc229eab7c039c5b5b2988bd8eff7a424ef8ef6e9","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"dc28f5b7284235d6cf5519053cac59a1c16dc39223b71cca0871e4880755f852","src/unix/notbsd/linux/musl/b64/x86_64.rs":"43291acc0dfc92c2fec8ba6ce77ee9ca3c20bcdccec18e149f95ba911cee704b","src/unix/notbsd/linux/musl/mod.rs":"423be2ded304c850dc6048c675204e2f8aaf086840d6c154669d7771d57a640e","src/unix/notbsd/linux/other/b32/arm.rs":"f5cb989075fa3b5f997e7101495532c8d5c9f3577412d4c07e4c8c1a16f7b43c","src/unix/notbsd/linux/other/b32/mod.rs":"8b774feb5510b963ed031db7ab3d7e24f1ba5524a6396db0b851d237ccc16fd3","src/unix/notbsd/linux/other/b32/powerpc.rs":"3b62052bb9741afa5349098e6e9c675b60e822e41fed6b5e1b694be1872097b1","src/unix/notbsd/linux/other/b32/x86.rs":"1eda37736f5966c7968b594f74f5018f56b6b8c67bbdeb31fc3db1b6e4ac31b4","src/unix/notbsd/linux/other/b64/aarch64.rs":"a978e82d037a9c8127b2f704323864aff42ac910e721ecc69c255671ca96b950","src/unix/notbsd/linux/other/b64/mod.rs":"efb7740c2fb925ea98977a6a3ff52bc0b72205c1f88a9ba281a939b66b7f0efe","src/unix/notbsd/linux/other/b64/powerpc64.rs":"06a795bca8e91a0143ef1787b034201ed7a21d01960ce9fe869d18c274d5bdb4","src/unix/notbsd/linux/other/b64/x86_64.rs":"0ed128e93f212c0d65660bd95e29190a2dae7c9d15d6fa0d3c4c6656f89e9bdc","src/unix/notbsd/linux/other/mod.rs":"8cf1a781c728da79f9087fa36008151de7af24fd596fdf2d34ffbf64885a1dde","src/unix/notbsd/linux/s390x.rs":"222778cf3e7d1c81e49cbbe9f89477178ae3deedf60e2a485d00f46ab331ea5c","src/unix/notbsd/mod.rs":"8a74a8d5cddbe94cf8fe234ed39a2d989db08cb1c9af70dbf40d87956825b542","src/unix/solaris/mod.rs":"f72395ac3e67798d51433a654e1741f252a99ac7fc4f577168fb4465724c68d9","src/windows.rs":"acccbd341e81206cb1dc66af41762c193ac0dd719d700b64f7e26c967ee7d670"},"package":"a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70"} \ No newline at end of file diff --git a/third_party/rust/libc/.travis.yml b/third_party/rust/libc/.travis.yml index d0e95910da83..fa07ffc7c7b6 100644 --- a/third_party/rust/libc/.travis.yml +++ b/third_party/rust/libc/.travis.yml @@ -20,7 +20,7 @@ script: osx_image: xcode7.3 env: global: - secure: eIDEoQdTyglcsTD13zSGotAX2HDhRSXIaaTnVZTThqLSrySOc3/6KY3qmOc2Msf7XaBqfFy9QA+alk7OwfePp253eiy1Kced67ffjjFOytEcRT7FlQiYpcYQD6WNHZEj62/bJBO4LTM9sGtWNCTJVEDKW0WM8mUK7qNuC+honPM= + secure: "e2/3QjgRN9atOuSHp22TrYG7QVKcYUWY48Hi9b60w+r1+BhPkTseIJLte7WefRhdXtqpjjUJTooKDhnurFOeHaCT+nmBgiv+FPU893sBl4bhesY4m0vgUJVbNZcs6lTImYekWVb+aqjGdgV/XAgCw7c3kPmrZV0MzGDWL64Xaps=" matrix: include: # 1.0.0 compat @@ -33,7 +33,7 @@ matrix: # build documentation - os: linux env: TARGET=x86_64-unknown-linux-gnu - rust: stable + rust: nightly script: sh ci/dox.sh # stable compat @@ -78,10 +78,19 @@ matrix: rust: stable - os: linux env: TARGET=powerpc64-unknown-linux-gnu + rust: beta + - os: linux + env: TARGET=mips-unknown-linux-musl rust: stable - os: linux env: TARGET=mipsel-unknown-linux-musl rust: stable + - os: linux + env: TARGET=mips64-unknown-linux-gnuabi64 + rust: beta + - os: linux + env: TARGET=mips-unknown-linux-gnu + rust: beta # beta - os: linux @@ -98,10 +107,6 @@ matrix: - os: osx env: TARGET=x86_64-apple-darwin rust: nightly - - os: linux - env: TARGET=mips-unknown-linux-gnu - # not sure why this has to be nightly... - rust: nightly # QEMU based targets that compile in an emulator - os: linux @@ -113,6 +118,8 @@ matrix: script: sh ci/run-docker.sh $TARGET install: +cache: cargo + notifications: email: on_success: never diff --git a/third_party/rust/libc/Cargo.toml b/third_party/rust/libc/Cargo.toml index a863aa6b05e3..7ac523e27ab1 100644 --- a/third_party/rust/libc/Cargo.toml +++ b/third_party/rust/libc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "libc" -version = "0.2.16" +version = "0.2.18" authors = ["The Rust Project Developers"] license = "MIT/Apache-2.0" readme = "README.md" @@ -16,3 +16,6 @@ other common platform libraries. [features] default = ["use_std"] use_std = [] + +[workspace] +members = ["libc-test", "libc-test/generate-files"] diff --git a/third_party/rust/libc/README.md b/third_party/rust/libc/README.md index 09b9a567b47e..255283643508 100644 --- a/third_party/rust/libc/README.md +++ b/third_party/rust/libc/README.md @@ -5,7 +5,7 @@ A Rust library with native bindings to the types and functions commonly found on various systems, including libc. [![Build Status](https://travis-ci.org/rust-lang/libc.svg?branch=master)](https://travis-ci.org/rust-lang/libc) -[![Build status](https://ci.appveyor.com/api/projects/status/34csq3uurnw7c0rl?svg=true)](https://ci.appveyor.com/project/alexcrichton/libc) +[![Build status](https://ci.appveyor.com/api/projects/status/github/rust-lang/libc?svg=true)](https://ci.appveyor.com/project/rust-lang-libs/libc) [Documentation](#platforms-and-documentation) @@ -132,4 +132,6 @@ The following may be supported, but are not guaranteed to always work: * `i686-unknown-freebsd` * [`x86_64-unknown-bitrig`](https://doc.rust-lang.org/libc/x86_64-unknown-bitrig/libc/) * [`x86_64-unknown-dragonfly`](https://doc.rust-lang.org/libc/x86_64-unknown-dragonfly/libc/) + * `i686-unknown-haiku` + * `x86_64-unknown-haiku` * [`x86_64-unknown-netbsd`](https://doc.rust-lang.org/libc/x86_64-unknown-netbsd/libc/) diff --git a/third_party/rust/libc/appveyor.yml b/third_party/rust/libc/appveyor.yml index de43884265ba..a851bb87b6c3 100644 --- a/third_party/rust/libc/appveyor.yml +++ b/third_party/rust/libc/appveyor.yml @@ -17,5 +17,9 @@ install: build: false test_script: - - cargo test - - cargo run --manifest-path libc-test/Cargo.toml + - cargo test --target %TARGET% + - cargo run --manifest-path libc-test/Cargo.toml --target %TARGET% + +cache: + - target + - C:\Users\appveyor\.cargo\registry diff --git a/third_party/rust/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile index 1c7235cd0d1e..2ba69e15442f 100644 --- a/third_party/rust/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/aarch64-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:14.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc libc6-dev ca-certificates \ diff --git a/third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile b/third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile index 0e41ba6dbee6..1911fbd87970 100644 --- a/third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile +++ b/third_party/rust/libc/ci/docker/arm-linux-androideabi/Dockerfile @@ -1,4 +1,34 @@ -FROM alexcrichton/rust-slave-android:2015-11-22 -ENV CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ - PATH=$PATH:/rust/bin -ENTRYPOINT ["sh"] +FROM ubuntu:16.04 + +RUN dpkg --add-architecture i386 && \ + apt-get update && \ + apt-get install -y --no-install-recommends \ + file \ + curl \ + ca-certificates \ + python \ + unzip \ + expect \ + openjdk-9-jre \ + libstdc++6:i386 \ + gcc \ + libc6-dev + +WORKDIR /android/ + +COPY install-ndk.sh /android/ +RUN sh /android/install-ndk.sh + +ENV PATH=$PATH:/android/ndk-arm/bin:/android/sdk/tools:/android/sdk/platform-tools + +COPY install-sdk.sh accept-licenses.sh /android/ +RUN sh /android/install-sdk.sh + +ENV PATH=$PATH:/rust/bin \ + CARGO_TARGET_ARM_LINUX_ANDROIDEABI_LINKER=arm-linux-androideabi-gcc \ + ANDROID_EMULATOR_FORCE_32BIT=1 \ + HOME=/tmp +RUN chmod 755 /android/sdk/tools/* + +RUN cp -r /root/.android /tmp +RUN chmod 777 -R /tmp/.android diff --git a/third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh b/third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh new file mode 100755 index 000000000000..8d8f60a5ec26 --- /dev/null +++ b/third_party/rust/libc/ci/docker/arm-linux-androideabi/accept-licenses.sh @@ -0,0 +1,15 @@ +#!/usr/bin/expect -f +# ignore-license + +set timeout 1800 +set cmd [lindex $argv 0] +set licenses [lindex $argv 1] + +spawn {*}$cmd +expect { + "Do you accept the license '*'*" { + exp_send "y\r" + exp_continue + } + eof +} diff --git a/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh b/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh new file mode 100644 index 000000000000..566a3191848a --- /dev/null +++ b/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-ndk.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Copyright 2016 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +set -ex + +curl -O https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip +unzip -q android-ndk-r13b-linux-x86_64.zip +android-ndk-r13b/build/tools/make_standalone_toolchain.py \ + --install-dir /android/ndk-arm \ + --arch arm \ + --api 24 + +rm -rf ./android-ndk-r13b-linux-x86_64.zip ./android-ndk-r13b diff --git a/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh b/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh new file mode 100644 index 000000000000..3f20837fe061 --- /dev/null +++ b/third_party/rust/libc/ci/docker/arm-linux-androideabi/install-sdk.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright 2016 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +set -ex + +# Prep the SDK and emulator +# +# Note that the update process requires that we accept a bunch of licenses, and +# we can't just pipe `yes` into it for some reason, so we take the same strategy +# located in https://github.com/appunite/docker by just wrapping it in a script +# which apparently magically accepts the licenses. + +mkdir sdk +curl https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz | \ + tar xzf - -C sdk --strip-components=1 + +filter="platform-tools,android-21" +filter="$filter,sys-img-armeabi-v7a-android-21" + +./accept-licenses.sh "android - update sdk -a --no-ui --filter $filter" + +echo "no" | android create avd \ + --name arm-21 \ + --target android-21 \ + --abi armeabi-v7a diff --git a/third_party/rust/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile b/third_party/rust/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile index 3a858e3884a3..3824c0466401 100644 --- a/third_party/rust/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile +++ b/third_party/rust/libc/ci/docker/arm-unknown-linux-gnueabihf/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc libc6-dev ca-certificates \ diff --git a/third_party/rust/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile index 63450ff9e0ef..c149d8407291 100644 --- a/third_party/rust/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/i686-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc-multilib libc6-dev ca-certificates diff --git a/third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile b/third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile index 89d60ff7b59e..87459a1672bd 100644 --- a/third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile +++ b/third_party/rust/libc/ci/docker/i686-unknown-linux-musl/Dockerfile @@ -1,13 +1,22 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc make libc6-dev git curl ca-certificates -RUN curl https://www.musl-libc.org/releases/musl-1.1.14.tar.gz | \ +# Below we're cross-compiling musl for i686 using the system compiler on an +# x86_64 system. This is an awkward thing to be doing and so we have to jump +# through a couple hoops to get musl to be happy. In particular: +# +# * We specifically pass -m32 in CFLAGS and override CC when running ./configure, +# since otherwise the script will fail to find a compiler. +# * We manually unset CROSS_COMPILE when running make; otherwise the makefile +# will call the non-existent binary 'i686-ar'. +RUN curl https://www.musl-libc.org/releases/musl-1.1.15.tar.gz | \ tar xzf - && \ - cd musl-1.1.14 && \ - CFLAGS=-m32 ./configure --prefix=/musl-i686 --disable-shared --target=i686 && \ - make install -j4 && \ + cd musl-1.1.15 && \ + CC=gcc CFLAGS=-m32 ./configure --prefix=/musl-i686 --disable-shared --target=i686 && \ + make CROSS_COMPILE= install -j4 && \ cd .. && \ - rm -rf musl-1.1.14 -ENV PATH=$PATH:/musl-i686/bin:/rust/bin + rm -rf musl-1.1.15 +ENV PATH=$PATH:/musl-i686/bin:/rust/bin \ + CC_i686_unknown_linux_musl=musl-gcc diff --git a/third_party/rust/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile index 6194026af6b8..eea1f652c3cb 100644 --- a/third_party/rust/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/mips-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ diff --git a/third_party/rust/libc/ci/docker/mips-unknown-linux-musl/Dockerfile b/third_party/rust/libc/ci/docker/mips-unknown-linux-musl/Dockerfile new file mode 100644 index 000000000000..cbc41c24d112 --- /dev/null +++ b/third_party/rust/libc/ci/docker/mips-unknown-linux-musl/Dockerfile @@ -0,0 +1,17 @@ +FROM ubuntu:16.10 + +RUN apt-get update +RUN apt-get install -y --no-install-recommends \ + gcc libc6-dev qemu-user ca-certificates qemu-system-mips curl \ + bzip2 + +RUN mkdir /toolchain + +# Note that this originally came from: +# https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 +RUN curl -L https://s3.amazonaws.com/rust-lang-ci/libc/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \ + tar xjf - -C /toolchain --strip-components=1 + +ENV PATH=$PATH:/rust/bin:/toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15/bin \ + CC_mips_unknown_linux_musl=mips-openwrt-linux-gcc \ + CARGO_TARGET_MIPS_UNKNOWN_LINUX_MUSL_LINKER=mips-openwrt-linux-gcc diff --git a/third_party/rust/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile b/third_party/rust/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile new file mode 100644 index 000000000000..2eb5de245380 --- /dev/null +++ b/third_party/rust/libc/ci/docker/mips64-unknown-linux-gnuabi64/Dockerfile @@ -0,0 +1,11 @@ +FROM ubuntu:16.10 + +RUN apt-get update +RUN apt-get install -y --no-install-recommends \ + gcc libc6-dev qemu-user ca-certificates \ + gcc-mips64-linux-gnuabi64 libc6-dev-mips64-cross \ + qemu-system-mips64 + +ENV CARGO_TARGET_MIPS64_UNKNOWN_LINUX_GNUABI64_LINKER=mips64-linux-gnuabi64-gcc \ + CC_mips64_unknown_linux_gnuabi64=mips64-linux-gnuabi64-gcc \ + PATH=$PATH:/rust/bin diff --git a/third_party/rust/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile b/third_party/rust/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile index bf7b45b75187..05cfae4aff32 100644 --- a/third_party/rust/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile +++ b/third_party/rust/libc/ci/docker/mipsel-unknown-linux-musl/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ @@ -6,8 +6,11 @@ RUN apt-get install -y --no-install-recommends \ bzip2 RUN mkdir /toolchain -RUN curl -L https://downloads.openwrt.org/snapshots/trunk/malta/generic/OpenWrt-Toolchain-malta-le_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \ - tar xjf - -C /toolchain --strip-components=2 + +# Note that this originally came from: +# https://downloads.openwrt.org/snapshots/trunk/ar71xx/generic/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 +RUN curl -L https://s3.amazonaws.com/rust-lang-ci/libc/OpenWrt-SDK-ar71xx-generic_gcc-5.3.0_musl-1.1.15.Linux-x86_64.tar.bz2 | \ + tar xjf - -C /toolchain --strip-components=1 ENV PATH=$PATH:/rust/bin:/toolchain/bin \ CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \ diff --git a/third_party/rust/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile index 052db490309f..d9d7db0f41dd 100644 --- a/third_party/rust/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/powerpc-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ diff --git a/third_party/rust/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile index 03ce673e5bf3..df0e6057b4f7 100644 --- a/third_party/rust/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/powerpc64-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ diff --git a/third_party/rust/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile b/third_party/rust/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile index bffcaa0ced30..12b0bdffcc81 100644 --- a/third_party/rust/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile +++ b/third_party/rust/libc/ci/docker/x86_64-unknown-freebsd/Dockerfile @@ -3,11 +3,11 @@ USER root RUN apt-get update RUN apt-get install -y --no-install-recommends \ - qemu qemu-kvm kmod cpu-checker + qemu genext2fs ENTRYPOINT ["sh"] ENV PATH=$PATH:/rust/bin \ - QEMU=freebsd.qcow2 \ + QEMU=2016-11-06/freebsd.qcow2.gz \ CAN_CROSS=1 \ CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_LINKER=x86_64-unknown-freebsd10-gcc diff --git a/third_party/rust/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile b/third_party/rust/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile index 294a0621ce94..4af3f834cbe6 100644 --- a/third_party/rust/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile +++ b/third_party/rust/libc/ci/docker/x86_64-unknown-linux-gnu/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc libc6-dev ca-certificates diff --git a/third_party/rust/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile b/third_party/rust/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile index f44003806e59..9c2499948a28 100644 --- a/third_party/rust/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile +++ b/third_party/rust/libc/ci/docker/x86_64-unknown-linux-musl/Dockerfile @@ -1,13 +1,13 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ gcc make libc6-dev git curl ca-certificates -RUN curl https://www.musl-libc.org/releases/musl-1.1.14.tar.gz | \ +RUN curl https://www.musl-libc.org/releases/musl-1.1.15.tar.gz | \ tar xzf - && \ - cd musl-1.1.14 && \ + cd musl-1.1.15 && \ ./configure --prefix=/musl-x86_64 && \ make install -j4 && \ cd .. && \ - rm -rf musl-1.1.14 + rm -rf musl-1.1.15 ENV PATH=$PATH:/musl-x86_64/bin:/rust/bin diff --git a/third_party/rust/libc/ci/docker/x86_64-unknown-openbsd/Dockerfile b/third_party/rust/libc/ci/docker/x86_64-unknown-openbsd/Dockerfile index f0343c13618f..518baf8702e3 100644 --- a/third_party/rust/libc/ci/docker/x86_64-unknown-openbsd/Dockerfile +++ b/third_party/rust/libc/ci/docker/x86_64-unknown-openbsd/Dockerfile @@ -1,7 +1,8 @@ -FROM ubuntu:16.04 +FROM ubuntu:16.10 RUN apt-get update RUN apt-get install -y --no-install-recommends \ - gcc libc6-dev qemu qemu-kvm curl ca-certificates kmod cpu-checker + gcc libc6-dev qemu curl ca-certificates \ + genext2fs ENV PATH=$PATH:/rust/bin \ - QEMU=openbsd.qcow2 + QEMU=2016-11-06/openbsd-6.0-without-pkgs.qcow2 diff --git a/third_party/rust/libc/ci/run-docker.sh b/third_party/rust/libc/ci/run-docker.sh index 5ad90652f0d8..a7702ae1dc51 100644 --- a/third_party/rust/libc/ci/run-docker.sh +++ b/third_party/rust/libc/ci/run-docker.sh @@ -6,13 +6,21 @@ set -ex run() { echo $1 docker build -t libc ci/docker/$1 + mkdir -p target docker run \ - -v `rustc --print sysroot`:/rust:ro \ - -v `pwd`:/checkout:ro \ - -e CARGO_TARGET_DIR=/tmp/target \ - -w /checkout \ + --user `id -u`:`id -g` \ + --rm \ + --volume $HOME/.cargo:/cargo \ + --env CARGO_HOME=/cargo \ + --volume `rustc --print sysroot`:/rust:ro \ + --volume `pwd`:/checkout:ro \ + --volume `pwd`/target:/checkout/target \ + --env CARGO_TARGET_DIR=/checkout/target \ + --workdir /checkout \ --privileged \ - -it libc \ + --interactive \ + --tty \ + libc \ ci/run.sh $1 } diff --git a/third_party/rust/libc/ci/run-qemu.sh b/third_party/rust/libc/ci/run-qemu.sh index 70f312e3bd5f..b2f457df916f 100644 --- a/third_party/rust/libc/ci/run-qemu.sh +++ b/third_party/rust/libc/ci/run-qemu.sh @@ -19,10 +19,7 @@ export CARGO_TARGET_DIR=/tmp case $TARGET in *-openbsd) - pkg_add rust curl gcc-4.8.4p4 - curl https://static.rust-lang.org/cargo-dist/2015-04-02/cargo-nightly-x86_64-unknown-openbsd.tar.gz | \ - tar xzf - -C /tmp - export PATH=$PATH:/tmp/cargo-nightly-x86_64-unknown-openbsd/cargo/bin + pkg_add cargo gcc%4.9 rust export CC=egcc ;; diff --git a/third_party/rust/libc/ci/run.sh b/third_party/rust/libc/ci/run.sh index 4e04ddddce21..179fe7a88532 100755 --- a/third_party/rust/libc/ci/run.sh +++ b/third_party/rust/libc/ci/run.sh @@ -16,20 +16,28 @@ TARGET=$1 if [ "$QEMU" != "" ]; then tmpdir=/tmp/qemu-img-creation mkdir -p $tmpdir - if [ ! -f $tmpdir/$QEMU ]; then - curl https://people.mozilla.org/~acrichton/libc-test/qemu/$QEMU.gz | \ - gunzip -d > $tmpdir/$QEMU + + if [ -z "${QEMU#*.gz}" ]; then + # image is .gz : download and uncompress it + qemufile=$(echo ${QEMU%.gz} | sed 's/\//__/g') + if [ ! -f $tmpdir/$qemufile ]; then + curl https://s3.amazonaws.com/rust-lang-ci/libc/$QEMU | \ + gunzip -d > $tmpdir/$qemufile + fi + else + # plain qcow2 image: just download it + qemufile=$(echo ${QEMU} | sed 's/\//__/g') + if [ ! -f $tmpdir/$qemufile ]; then + curl https://s3.amazonaws.com/rust-lang-ci/libc/$QEMU \ + > $tmpdir/$qemufile + fi fi # Create a mount a fresh new filesystem image that we'll later pass to QEMU. # This will have a `run.sh` script will which use the artifacts inside to run # on the host. rm -f $tmpdir/libc-test.img - dd if=/dev/null of=$tmpdir/libc-test.img bs=1M seek=50 - mkfs.ext2 -F $tmpdir/libc-test.img - rm -rf $tmpdir/mount mkdir $tmpdir/mount - mount -t ext2 -o loop $tmpdir/libc-test.img $tmpdir/mount # If we have a cross compiler, then we just do the standard rigamarole of # cross-compiling an executable and then the script to run just executes the @@ -62,25 +70,21 @@ if [ "$QEMU" != "" ]; then cp libc-test/run-generated-Cargo.toml $tmpdir/mount/libc/libc-test/Cargo.toml fi - umount $tmpdir/mount - - # If we can use kvm, prefer that, otherwise just fall back to user-space - # emulation. - if kvm-ok; then - program=kvm - else - program=qemu-system-x86_64 - fi + du -sh $tmpdir/mount + genext2fs \ + --root $tmpdir/mount \ + --size-in-blocks 100000 \ + $tmpdir/libc-test.img # Pass -snapshot to prevent tampering with the disk images, this helps when # running this script in development. The two drives are then passed next, # first is the OS and second is the one we just made. Next the network is # configured to work (I'm not entirely sure how), and then finally we turn off # graphics and redirect the serial console output to out.log. - $program \ + qemu-system-x86_64 \ -m 1024 \ -snapshot \ - -drive if=virtio,file=$tmpdir/$QEMU \ + -drive if=virtio,file=$tmpdir/$qemufile \ -drive if=virtio,file=$tmpdir/libc-test.img \ -net nic,model=virtio \ -net user \ @@ -117,10 +121,19 @@ case "$TARGET" in qemu-mips -L /usr/mips-linux-gnu $CARGO_TARGET_DIR/$TARGET/debug/libc-test ;; - mipsel-unknown-linux-musl) - qemu-mipsel -L /toolchain $CARGO_TARGET_DIR/$TARGET/debug/libc-test + mips64-unknown-linux-gnuabi64) + qemu-mips64 -L /usr/mips64-linux-gnuabi64 $CARGO_TARGET_DIR/$TARGET/debug/libc-test ;; + mips-unknown-linux-musl) + qemu-mips -L /toolchain/staging_dir/toolchain-mips_34kc_gcc-5.3.0_musl-1.1.15 \ + $CARGO_TARGET_DIR/$TARGET/debug/libc-test + ;; + + mipsel-unknown-linux-musl) + qemu-mipsel -L /toolchain $CARGO_TARGET_DIR/$TARGET/debug/libc-test + ;; + powerpc-unknown-linux-gnu) qemu-ppc -L /usr/powerpc-linux-gnu $CARGO_TARGET_DIR/$TARGET/debug/libc-test ;; diff --git a/third_party/rust/libc/src/lib.rs b/third_party/rust/libc/src/lib.rs index dcc4791f9af0..5b80aca66c9d 100644 --- a/third_party/rust/libc/src/lib.rs +++ b/third_party/rust/libc/src/lib.rs @@ -75,6 +75,7 @@ // Attributes needed when building as part of the standard library #![cfg_attr(stdbuild, feature(no_std, core, core_slice_ext, staged_api, custom_attribute, cfg_target_vendor))] +#![cfg_attr(stdbuild, feature(link_cfg))] #![cfg_attr(stdbuild, no_std)] #![cfg_attr(stdbuild, staged_api)] #![cfg_attr(stdbuild, allow(warnings))] @@ -265,6 +266,9 @@ cfg_if! { if #[cfg(windows)] { mod windows; pub use windows::*; + } else if #[cfg(target_os = "redox")] { + mod redox; + pub use redox::*; } else if #[cfg(unix)] { mod unix; pub use unix::*; diff --git a/third_party/rust/libc/src/redox.rs b/third_party/rust/libc/src/redox.rs new file mode 100644 index 000000000000..7a05a3957b18 --- /dev/null +++ b/third_party/rust/libc/src/redox.rs @@ -0,0 +1,49 @@ +pub type c_char = i8; +pub type c_long = i64; +pub type c_ulong = u64; + +pub type wchar_t = i16; + +pub type off_t = usize; +pub type mode_t = u16; +pub type time_t = i64; +pub type pid_t = usize; +pub type gid_t = usize; +pub type uid_t = usize; + +pub type in_addr_t = u32; +pub type in_port_t = u16; + +pub type socklen_t = u32; +pub type sa_family_t = u16; + +s! { + pub struct in_addr { + pub s_addr: in_addr_t, + } + + pub struct in6_addr { + pub s6_addr: [u8; 16], + __align: [u32; 0], + } + + pub struct sockaddr { + pub sa_family: sa_family_t, + pub sa_data: [::c_char; 14], + } + + pub struct sockaddr_in { + pub sin_family: sa_family_t, + pub sin_port: ::in_port_t, + pub sin_addr: ::in_addr, + pub sin_zero: [u8; 8], + } + + pub struct sockaddr_in6 { + pub sin6_family: sa_family_t, + pub sin6_port: in_port_t, + pub sin6_flowinfo: u32, + pub sin6_addr: ::in6_addr, + pub sin6_scope_id: u32, + } +} diff --git a/third_party/rust/libc/src/unix/bsd/apple/mod.rs b/third_party/rust/libc/src/unix/bsd/apple/mod.rs index 72e6deaba4bb..919d12680a71 100644 --- a/third_party/rust/libc/src/unix/bsd/apple/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/apple/mod.rs @@ -25,6 +25,16 @@ pub type sem_t = ::c_int; pub enum timezone {} s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_offset: ::off_t, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_reqprio: ::c_int, + pub aio_sigevent: sigevent, + pub aio_lio_opcode: ::c_int + } + pub struct utmpx { pub ut_user: [::c_char; _UTX_USERSIZE], pub ut_id: [::c_char; _UTX_IDSIZE], @@ -303,6 +313,14 @@ s! { pub int_p_sign_posn: ::c_char, pub int_n_sign_posn: ::c_char, } + + pub struct sigevent { + pub sigev_notify: ::c_int, + pub sigev_signo: ::c_int, + pub sigev_value: ::sigval, + __unused1: *mut ::c_void, //actually a function pointer + pub sigev_notify_attributes: *mut ::pthread_attr_t + } } pub const _UTX_USERSIZE: usize = 256; @@ -621,6 +639,8 @@ pub const EOWNERDEAD: ::c_int = 105; pub const EQFULL: ::c_int = 106; pub const ELAST: ::c_int = 106; +pub const EAI_SYSTEM: ::c_int = 11; + pub const F_DUPFD: ::c_int = 0; pub const F_DUPFD_CLOEXEC: ::c_int = 67; pub const F_GETFD: ::c_int = 1; @@ -1329,6 +1349,20 @@ pub const PRIO_DARWIN_NONUI: ::c_int = 0x1001; pub const SEM_FAILED: *mut sem_t = -1isize as *mut ::sem_t; +pub const SIGEV_NONE: ::c_int = 0; +pub const SIGEV_SIGNAL: ::c_int = 1; +pub const SIGEV_THREAD: ::c_int = 3; + +pub const AIO_CANCELED: ::c_int = 2; +pub const AIO_NOTCANCELED: ::c_int = 4; +pub const AIO_ALLDONE: ::c_int = 1; +pub const AIO_LISTIO_MAX: ::c_int = 16; +pub const LIO_NOP: ::c_int = 0; +pub const LIO_WRITE: ::c_int = 2; +pub const LIO_READ: ::c_int = 1; +pub const LIO_WAIT: ::c_int = 2; +pub const LIO_NOWAIT: ::c_int = 1; + f! { pub fn WSTOPSIG(status: ::c_int) -> ::c_int { status >> 8 @@ -1352,6 +1386,19 @@ f! { } extern { + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; + pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; + #[cfg_attr(all(target_os = "macos", target_arch = "x86"), + link_name = "aio_suspend$UNIX2003")] + pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; pub fn getutxent() -> *mut utmpx; diff --git a/third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs index 642dd1fc0cbd..3a91bca008d6 100644 --- a/third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs @@ -15,6 +15,18 @@ pub type fsblkcnt_t = u64; pub type fsfilcnt_t = u64; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_offset: ::off_t, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: sigevent, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + _aio_val: ::c_int, + _aio_err: ::c_int + } + pub struct dirent { pub d_fileno: ::ino_t, pub d_namlen: u16, @@ -33,6 +45,15 @@ s! { pub node: [u8; 6], } + pub struct sigevent { + pub sigev_notify: ::c_int, + pub sigev_signo: ::c_int, //actually a union + #[cfg(target_pointer_width = "64")] + __unused1: ::c_int, + pub sigev_value: ::sigval, + __unused2: *mut ::c_void //actually a function pointer + } + pub struct statvfs { pub f_bsize: ::c_ulong, pub f_frsize: ::c_ulong, @@ -293,6 +314,8 @@ pub const NOTE_TRACK: ::uint32_t = 0x00000001; pub const NOTE_TRACKERR: ::uint32_t = 0x00000002; pub const NOTE_CHILD: ::uint32_t = 0x00000004; +pub const MSG_NOSIGNAL: ::uint32_t = 0x400; + extern { pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; diff --git a/third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs b/third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs index 31188ac92bf8..9cd0a34ba2b2 100644 --- a/third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs @@ -1,6 +1,7 @@ pub type fflags_t = u32; pub type clock_t = i32; pub type ino_t = u32; +pub type lwpid_t = i32; pub type nlink_t = u16; pub type blksize_t = u32; pub type clockid_t = ::c_int; @@ -9,6 +10,22 @@ pub type fsblkcnt_t = ::uint64_t; pub type fsfilcnt_t = ::uint64_t; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_offset: ::off_t, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + __unused1: [::c_int; 2], + __unused2: *mut ::c_void, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + // unused 3 through 5 are the __aiocb_private structure + __unused3: ::c_long, + __unused4: ::c_long, + __unused5: *mut ::c_void, + pub aio_sigevent: sigevent + } + pub struct dirent { pub d_fileno: u32, pub d_reclen: u16, @@ -17,6 +34,18 @@ s! { pub d_name: [::c_char; 256], } + pub struct sigevent { + pub sigev_notify: ::c_int, + pub sigev_signo: ::c_int, + pub sigev_value: ::sigval, + //The rest of the structure is actually a union. We expose only + //sigev_notify_thread_id because it's the most useful union member. + pub sigev_notify_thread_id: ::lwpid_t, + #[cfg(target_pointer_width = "64")] + __unused1: ::c_int, + __unused2: [::c_long; 7] + } + pub struct statvfs { pub f_bavail: ::fsblkcnt_t, pub f_bfree: ::fsblkcnt_t, @@ -32,6 +61,8 @@ s! { } } +pub const SIGEV_THREAD_ID: ::c_int = 4; + pub const RAND_MAX: ::c_int = 0x7fff_fffd; pub const PTHREAD_STACK_MIN: ::size_t = 2048; pub const SIGSTKSZ: ::size_t = 34816; @@ -138,7 +169,6 @@ pub const CTL_HW: ::c_int = 6; pub const CTL_MACHDEP: ::c_int = 7; pub const CTL_USER: ::c_int = 8; pub const CTL_P1003_1B: ::c_int = 9; -pub const CTL_MAXID: ::c_int = 10; pub const KERN_OSTYPE: ::c_int = 1; pub const KERN_OSRELEASE: ::c_int = 2; pub const KERN_OSREV: ::c_int = 3; @@ -176,7 +206,6 @@ pub const KERN_LOGSIGEXIT: ::c_int = 34; pub const KERN_IOV_MAX: ::c_int = 35; pub const KERN_HOSTUUID: ::c_int = 36; pub const KERN_ARND: ::c_int = 37; -pub const KERN_MAXID: ::c_int = 38; pub const KERN_PROC_ALL: ::c_int = 0; pub const KERN_PROC_PID: ::c_int = 1; pub const KERN_PROC_PGRP: ::c_int = 2; @@ -223,7 +252,6 @@ pub const HW_DISKSTATS: ::c_int = 9; pub const HW_FLOATINGPT: ::c_int = 10; pub const HW_MACHINE_ARCH: ::c_int = 11; pub const HW_REALMEM: ::c_int = 12; -pub const HW_MAXID: ::c_int = 13; pub const USER_CS_PATH: ::c_int = 1; pub const USER_BC_BASE_MAX: ::c_int = 2; pub const USER_BC_DIM_MAX: ::c_int = 3; @@ -244,7 +272,6 @@ pub const USER_POSIX2_SW_DEV: ::c_int = 17; pub const USER_POSIX2_UPE: ::c_int = 18; pub const USER_STREAM_MAX: ::c_int = 19; pub const USER_TZNAME_MAX: ::c_int = 20; -pub const USER_MAXID: ::c_int = 21; pub const CTL_P1003_1B_ASYNCHRONOUS_IO: ::c_int = 1; pub const CTL_P1003_1B_MAPPED_FILES: ::c_int = 2; pub const CTL_P1003_1B_MEMLOCK: ::c_int = 3; @@ -270,8 +297,24 @@ pub const CTL_P1003_1B_SEM_NSEMS_MAX: ::c_int = 22; pub const CTL_P1003_1B_SEM_VALUE_MAX: ::c_int = 23; pub const CTL_P1003_1B_SIGQUEUE_MAX: ::c_int = 24; pub const CTL_P1003_1B_TIMER_MAX: ::c_int = 25; + +// The *_MAXID constants never should've been used outside of the +// FreeBSD base system. And with the exception of CTL_P1003_1B_MAXID, +// they were all removed in svn r262489. They remain here for backwards +// compatibility only, and are scheduled to be removed in libc 1.0.0. +#[doc(hidden)] +pub const CTL_MAXID: ::c_int = 10; +#[doc(hidden)] +pub const KERN_MAXID: ::c_int = 38; +#[doc(hidden)] +pub const HW_MAXID: ::c_int = 13; +#[doc(hidden)] +pub const USER_MAXID: ::c_int = 21; +#[doc(hidden)] pub const CTL_P1003_1B_MAXID: ::c_int = 26; +pub const MSG_NOSIGNAL: ::c_int = 0x20000; + extern { pub fn __error() -> *mut ::c_int; diff --git a/third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs b/third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs index ba591fb2858b..0e8d69adb88c 100644 --- a/third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/freebsdlike/mod.rs @@ -29,14 +29,12 @@ s! { } pub struct glob_t { - pub gl_pathc: ::size_t, - __unused1: ::size_t, - pub gl_offs: ::size_t, - __unused2: ::c_int, + pub gl_pathc: ::size_t, + pub gl_matchc: ::size_t, + pub gl_offs: ::size_t, + pub gl_flags: ::c_int, pub gl_pathv: *mut *mut ::c_char, - __unused3: *mut ::c_void, - __unused4: *mut ::c_void, __unused5: *mut ::c_void, __unused6: *mut ::c_void, @@ -94,6 +92,7 @@ s! { } pub struct stack_t { + // In FreeBSD 11 and later, ss_sp is actually a void* pub ss_sp: *mut ::c_char, pub ss_size: ::size_t, pub ss_flags: ::c_int, @@ -178,6 +177,21 @@ s! { } } +pub const AIO_LISTIO_MAX: ::c_int = 16; +pub const AIO_CANCELED: ::c_int = 1; +pub const AIO_NOTCANCELED: ::c_int = 2; +pub const AIO_ALLDONE: ::c_int = 3; +pub const LIO_NOP: ::c_int = 0; +pub const LIO_WRITE: ::c_int = 1; +pub const LIO_READ: ::c_int = 2; +pub const LIO_WAIT: ::c_int = 1; +pub const LIO_NOWAIT: ::c_int = 0; + +pub const SIGEV_NONE: ::c_int = 0; +pub const SIGEV_SIGNAL: ::c_int = 1; +pub const SIGEV_THREAD: ::c_int = 2; +pub const SIGEV_KEVENT: ::c_int = 3; + pub const EMPTY: ::c_short = 0; pub const BOOT_TIME: ::c_short = 1; pub const OLD_TIME: ::c_short = 2; @@ -421,6 +435,7 @@ pub const ENOPROTOOPT: ::c_int = 42; pub const EPROTONOSUPPORT: ::c_int = 43; pub const ESOCKTNOSUPPORT: ::c_int = 44; pub const EOPNOTSUPP: ::c_int = 45; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 46; pub const EAFNOSUPPORT: ::c_int = 47; pub const EADDRINUSE: ::c_int = 48; @@ -469,6 +484,8 @@ pub const EMULTIHOP: ::c_int = 90; pub const ENOLINK: ::c_int = 91; pub const EPROTO: ::c_int = 92; +pub const EAI_SYSTEM: ::c_int = 11; + pub const F_DUPFD: ::c_int = 0; pub const F_GETFD: ::c_int = 1; pub const F_SETFD: ::c_int = 2; @@ -745,6 +762,19 @@ extern { #[link(name = "util")] extern { + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; + pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; + pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + pub fn aio_waitcomplete(iocbp: *mut *mut aiocb, + timeout: *mut ::timespec) -> ::ssize_t; + pub fn getnameinfo(sa: *const ::sockaddr, salen: ::socklen_t, host: *mut ::c_char, @@ -862,6 +892,8 @@ extern { pub fn sethostname(name: *const ::c_char, len: ::c_int) -> ::c_int; pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; } cfg_if! { diff --git a/third_party/rust/libc/src/unix/bsd/mod.rs b/third_party/rust/libc/src/unix/bsd/mod.rs index 8311fdf7fc9e..0616cd351842 100644 --- a/third_party/rust/libc/src/unix/bsd/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/mod.rs @@ -321,6 +321,8 @@ f! { } extern { + pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; + pub fn freeifaddrs(ifa: *mut ::ifaddrs); pub fn setgroups(ngroups: ::c_int, ptr: *const ::gid_t) -> ::c_int; pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; @@ -355,8 +357,8 @@ cfg_if! { pub use self::apple::*; } else if #[cfg(any(target_os = "openbsd", target_os = "netbsd", target_os = "bitrig"))] { - mod openbsdlike; - pub use self::openbsdlike::*; + mod netbsdlike; + pub use self::netbsdlike::*; } else if #[cfg(any(target_os = "freebsd", target_os = "dragonfly"))] { mod freebsdlike; pub use self::freebsdlike::*; diff --git a/third_party/rust/libc/src/unix/bsd/openbsdlike/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs similarity index 97% rename from third_party/rust/libc/src/unix/bsd/openbsdlike/mod.rs rename to third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs index 7df02ec153be..6604ec03b2cb 100644 --- a/third_party/rust/libc/src/unix/bsd/openbsdlike/mod.rs +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/mod.rs @@ -1,5 +1,3 @@ -pub type c_long = i64; -pub type c_ulong = u64; pub type time_t = i64; pub type mode_t = u32; pub type nlink_t = ::uint32_t; @@ -394,6 +392,8 @@ pub const SO_RCVLOWAT: ::c_int = 0x1004; pub const SO_ERROR: ::c_int = 0x1007; pub const SO_TYPE: ::c_int = 0x1008; +pub const MSG_NOSIGNAL: ::c_int = 0x400; + pub const IFF_LOOPBACK: ::c_int = 0x8; pub const SHUT_RD: ::c_int = 0; @@ -529,18 +529,18 @@ extern { abstime: *const ::timespec) -> ::c_int; pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, clock_id: clockid_t) -> ::c_int; + pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; } cfg_if! { - if #[cfg(target_os = "bitrig")] { - mod bitrig; - pub use self::bitrig::*; - } else if #[cfg(target_os = "netbsd")] { + if #[cfg(target_os = "netbsd")] { mod netbsd; pub use self::netbsd::*; - } else if #[cfg(target_os = "openbsd")] { - mod openbsd; - pub use self::openbsd::*; + } else if #[cfg(any(target_os = "openbsd", target_os = "bitrig"))] { + mod openbsdlike; + pub use self::openbsdlike::*; } else { // Unknown target_os } diff --git a/third_party/rust/libc/src/unix/bsd/openbsdlike/netbsd.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs similarity index 92% rename from third_party/rust/libc/src/unix/bsd/openbsdlike/netbsd.rs rename to third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs index 87560cf115ab..57a34130c919 100644 --- a/third_party/rust/libc/src/unix/bsd/openbsdlike/netbsd.rs +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs @@ -6,6 +6,19 @@ pub type fsblkcnt_t = ::uint64_t; pub type fsfilcnt_t = ::uint64_t; s! { + pub struct aiocb { + pub aio_offset: ::off_t, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_sigevent: ::sigevent, + _state: ::c_int, + _errno: ::c_int, + _retval: ::ssize_t + } + pub struct dirent { pub d_fileno: ::ino_t, pub d_reclen: u16, @@ -16,9 +29,9 @@ s! { pub struct glob_t { pub gl_pathc: ::size_t, - __unused1: ::c_int, + pub gl_matchc: ::size_t, pub gl_offs: ::size_t, - __unused2: ::c_int, + pub gl_flags: ::c_int, pub gl_pathv: *mut *mut ::c_char, __unused3: *mut ::c_void, @@ -30,6 +43,14 @@ s! { __unused8: *mut ::c_void, } + pub struct sigevent { + pub sigev_notify: ::c_int, + pub sigev_signo: ::c_int, + pub sigev_value: ::sigval, + __unused1: *mut ::c_void, //actually a function pointer + pub sigev_notify_attributes: *mut ::c_void + } + pub struct sigset_t { __bits: [u32; 4], } @@ -547,7 +568,34 @@ pub const KERN_PROC_RUID: ::c_int = 6; pub const KERN_PROC_GID: ::c_int = 7; pub const KERN_PROC_RGID: ::c_int = 8; +pub const EAI_SYSTEM: ::c_int = 11; + +pub const AIO_CANCELED: ::c_int = 1; +pub const AIO_NOTCANCELED: ::c_int = 2; +pub const AIO_ALLDONE: ::c_int = 3; +pub const LIO_NOP: ::c_int = 0; +pub const LIO_WRITE: ::c_int = 1; +pub const LIO_READ: ::c_int = 2; +pub const LIO_WAIT: ::c_int = 1; +pub const LIO_NOWAIT: ::c_int = 0; + +pub const SIGEV_NONE: ::c_int = 0; +pub const SIGEV_SIGNAL: ::c_int = 1; +pub const SIGEV_THREAD: ::c_int = 2; + extern { + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; + pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; + #[link_name = "__aio_suspend50"] + pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut sigevent) -> ::c_int; + pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; pub fn getnameinfo(sa: *const ::sockaddr, salen: ::socklen_t, @@ -588,7 +636,6 @@ extern { pid: ::pid_t, addr: *mut ::c_void, data: ::c_int) -> ::c_int; - pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int; pub fn pthread_setname_np(t: ::pthread_t, name: *const ::c_char, arg: *mut ::c_void) -> ::c_int; @@ -612,3 +659,6 @@ extern { locale: *const ::c_char, base: ::locale_t) -> ::locale_t; } + +mod other; +pub use self::other::*; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs new file mode 100644 index 000000000000..9b0b338b91e5 --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b32/mod.rs @@ -0,0 +1,2 @@ +pub type c_long = i32; +pub type c_ulong = u32; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs new file mode 100644 index 000000000000..b07c476aa49d --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/b64/mod.rs @@ -0,0 +1,2 @@ +pub type c_long = i64; +pub type c_ulong = u64; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs new file mode 100644 index 000000000000..f4e7cc406125 --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/netbsd/other/mod.rs @@ -0,0 +1,13 @@ +cfg_if! { + if #[cfg(target_arch = "x86_64")] { + mod b64; + pub use self::b64::*; + } else if #[cfg(any(target_arch = "arm", + target_arch = "powerpc", + target_arch = "x86"))] { + mod b32; + pub use self::b32::*; + } else { + // Unknown target_arch + } +} diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs new file mode 100644 index 000000000000..695cf68dc5a4 --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs @@ -0,0 +1,75 @@ +s! { + pub struct lconv { + pub decimal_point: *mut ::c_char, + pub thousands_sep: *mut ::c_char, + pub grouping: *mut ::c_char, + pub int_curr_symbol: *mut ::c_char, + pub currency_symbol: *mut ::c_char, + pub mon_decimal_point: *mut ::c_char, + pub mon_thousands_sep: *mut ::c_char, + pub mon_grouping: *mut ::c_char, + pub positive_sign: *mut ::c_char, + pub negative_sign: *mut ::c_char, + pub int_frac_digits: ::c_char, + pub frac_digits: ::c_char, + pub p_cs_precedes: ::c_char, + pub p_sep_by_space: ::c_char, + pub n_cs_precedes: ::c_char, + pub n_sep_by_space: ::c_char, + pub p_sign_posn: ::c_char, + pub n_sign_posn: ::c_char, + pub int_p_cs_precedes: ::c_char, + pub int_n_cs_precedes: ::c_char, + pub int_p_sep_by_space: ::c_char, + pub int_n_sep_by_space: ::c_char, + pub int_p_sign_posn: ::c_char, + pub int_n_sign_posn: ::c_char, + } +} + +pub const LC_COLLATE_MASK: ::c_int = (1 << 0); +pub const LC_CTYPE_MASK: ::c_int = (1 << 1); +pub const LC_MESSAGES_MASK: ::c_int = (1 << 2); +pub const LC_MONETARY_MASK: ::c_int = (1 << 3); +pub const LC_NUMERIC_MASK: ::c_int = (1 << 4); +pub const LC_TIME_MASK: ::c_int = (1 << 5); +pub const LC_ALL_MASK: ::c_int = LC_COLLATE_MASK + | LC_CTYPE_MASK + | LC_MESSAGES_MASK + | LC_MONETARY_MASK + | LC_NUMERIC_MASK + | LC_TIME_MASK; + +pub const ERA: ::nl_item = 52; +pub const ERA_D_FMT: ::nl_item = 53; +pub const ERA_D_T_FMT: ::nl_item = 54; +pub const ERA_T_FMT: ::nl_item = 55; +pub const ALT_DIGITS: ::nl_item = 56; + +pub const D_MD_ORDER: ::nl_item = 57; + +pub const ALTMON_1: ::nl_item = 58; +pub const ALTMON_2: ::nl_item = 59; +pub const ALTMON_3: ::nl_item = 60; +pub const ALTMON_4: ::nl_item = 61; +pub const ALTMON_5: ::nl_item = 62; +pub const ALTMON_6: ::nl_item = 63; +pub const ALTMON_7: ::nl_item = 64; +pub const ALTMON_8: ::nl_item = 65; +pub const ALTMON_9: ::nl_item = 66; +pub const ALTMON_10: ::nl_item = 67; +pub const ALTMON_11: ::nl_item = 68; +pub const ALTMON_12: ::nl_item = 69; + +pub const KERN_RND: ::c_int = 31; + +extern { + pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; + pub fn duplocale(base: ::locale_t) -> ::locale_t; + pub fn freelocale(loc: ::locale_t) -> ::c_int; + pub fn newlocale(mask: ::c_int, + locale: *const ::c_char, + base: ::locale_t) -> ::locale_t; + pub fn uselocale(loc: ::locale_t) -> ::locale_t; + pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char; +} diff --git a/third_party/rust/libc/src/unix/bsd/openbsdlike/openbsd.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs similarity index 92% rename from third_party/rust/libc/src/unix/bsd/openbsdlike/openbsd.rs rename to third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs index 451d1498d54f..4e6019ba61c9 100644 --- a/third_party/rust/libc/src/unix/bsd/openbsdlike/openbsd.rs +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/mod.rs @@ -25,19 +25,17 @@ s! { pub struct glob_t { pub gl_pathc: ::c_int, - __unused1: ::c_int, + pub gl_matchc: ::c_int, pub gl_offs: ::c_int, - __unused2: ::c_int, + pub gl_flags: ::c_int, pub gl_pathv: *mut *mut ::c_char, - + __unused1: *mut ::c_void, + __unused2: *mut ::c_void, __unused3: *mut ::c_void, - __unused4: *mut ::c_void, __unused5: *mut ::c_void, __unused6: *mut ::c_void, __unused7: *mut ::c_void, - __unused8: *mut ::c_void, - __unused9: *mut ::c_void, } pub struct kevent { @@ -120,33 +118,6 @@ s! { pub dli_saddr: *mut ::c_void, } - pub struct lconv { - pub decimal_point: *mut ::c_char, - pub thousands_sep: *mut ::c_char, - pub grouping: *mut ::c_char, - pub int_curr_symbol: *mut ::c_char, - pub currency_symbol: *mut ::c_char, - pub mon_decimal_point: *mut ::c_char, - pub mon_thousands_sep: *mut ::c_char, - pub mon_grouping: *mut ::c_char, - pub positive_sign: *mut ::c_char, - pub negative_sign: *mut ::c_char, - pub int_frac_digits: ::c_char, - pub frac_digits: ::c_char, - pub p_cs_precedes: ::c_char, - pub p_sep_by_space: ::c_char, - pub n_cs_precedes: ::c_char, - pub n_sep_by_space: ::c_char, - pub p_sign_posn: ::c_char, - pub n_sign_posn: ::c_char, - pub int_p_cs_precedes: ::c_char, - pub int_p_sep_by_space: ::c_char, - pub int_n_cs_precedes: ::c_char, - pub int_n_sep_by_space: ::c_char, - pub int_p_sign_posn: ::c_char, - pub int_n_sign_posn: ::c_char, - } - pub struct lastlog { ll_time: ::time_t, ll_line: [::c_char; UT_LINESIZE], @@ -201,6 +172,8 @@ pub const EIPSEC : ::c_int = 82; pub const ENOMEDIUM : ::c_int = 85; pub const EMEDIUMTYPE : ::c_int = 86; +pub const EAI_SYSTEM: ::c_int = -11; + pub const RUSAGE_THREAD: ::c_int = 1; pub const MAP_COPY : ::c_int = 0x0002; @@ -360,7 +333,6 @@ pub const KERN_OSVERSION: ::c_int = 27; pub const KERN_SOMAXCONN: ::c_int = 28; pub const KERN_SOMINCONN: ::c_int = 29; pub const KERN_USERMOUNT: ::c_int = 30; -pub const KERN_RND: ::c_int = 31; pub const KERN_NOSUIDCOREDUMP: ::c_int = 32; pub const KERN_FSYNC: ::c_int = 33; pub const KERN_SYSVMSG: ::c_int = 34; @@ -459,4 +431,21 @@ extern { newlen: ::size_t) -> ::c_int; pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int; + pub fn pledge(promises: *const ::c_char, + paths: *mut *const ::c_char) -> ::c_int; } + +cfg_if! { + if #[cfg(target_os = "openbsd")] { + mod openbsd; + pub use self::openbsd::*; + } else if #[cfg(target_os = "bitrig")] { + mod bitrig; + pub use self::bitrig::*; + } else { + // Unknown target_os + } +} + +mod other; +pub use self::other::*; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs new file mode 100644 index 000000000000..b7fed64ede5b --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs @@ -0,0 +1,28 @@ +s! { + pub struct lconv { + pub decimal_point: *mut ::c_char, + pub thousands_sep: *mut ::c_char, + pub grouping: *mut ::c_char, + pub int_curr_symbol: *mut ::c_char, + pub currency_symbol: *mut ::c_char, + pub mon_decimal_point: *mut ::c_char, + pub mon_thousands_sep: *mut ::c_char, + pub mon_grouping: *mut ::c_char, + pub positive_sign: *mut ::c_char, + pub negative_sign: *mut ::c_char, + pub int_frac_digits: ::c_char, + pub frac_digits: ::c_char, + pub p_cs_precedes: ::c_char, + pub p_sep_by_space: ::c_char, + pub n_cs_precedes: ::c_char, + pub n_sep_by_space: ::c_char, + pub p_sign_posn: ::c_char, + pub n_sign_posn: ::c_char, + pub int_p_cs_precedes: ::c_char, + pub int_p_sep_by_space: ::c_char, + pub int_n_cs_precedes: ::c_char, + pub int_n_sep_by_space: ::c_char, + pub int_p_sign_posn: ::c_char, + pub int_n_sign_posn: ::c_char, + } +} diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs new file mode 100644 index 000000000000..9b0b338b91e5 --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs @@ -0,0 +1,2 @@ +pub type c_long = i32; +pub type c_ulong = u32; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs new file mode 100644 index 000000000000..b07c476aa49d --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs @@ -0,0 +1,2 @@ +pub type c_long = i64; +pub type c_ulong = u64; diff --git a/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs new file mode 100644 index 000000000000..e4087da7bc23 --- /dev/null +++ b/third_party/rust/libc/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs @@ -0,0 +1,11 @@ +cfg_if! { + if #[cfg(target_arch = "x86_64")] { + mod b64; + pub use self::b64::*; + } else if #[cfg(target_arch = "x86")] { + mod b32; + pub use self::b32::*; + } else { + // Unknown target_arch + } +} diff --git a/third_party/rust/libc/src/unix/bsd/openbsdlike/bitrig.rs b/third_party/rust/libc/src/unix/bsd/openbsdlike/bitrig.rs deleted file mode 100644 index d7a286956d26..000000000000 --- a/third_party/rust/libc/src/unix/bsd/openbsdlike/bitrig.rs +++ /dev/null @@ -1,490 +0,0 @@ -pub type clock_t = i64; -pub type suseconds_t = i64; -pub type dev_t = i32; -pub type sigset_t = ::c_uint; -pub type blksize_t = ::uint32_t; -pub type fsblkcnt_t = ::c_uint; -pub type fsfilcnt_t = ::c_uint; -pub type pthread_attr_t = *mut ::c_void; -pub type pthread_mutex_t = *mut ::c_void; -pub type pthread_mutexattr_t = *mut ::c_void; -pub type pthread_cond_t = *mut ::c_void; -pub type pthread_condattr_t = *mut ::c_void; -pub type pthread_rwlock_t = *mut ::c_void; - -s! { - pub struct dirent { - pub d_fileno: ::ino_t, - pub d_off: ::off_t, - pub d_reclen: u16, - pub d_type: u8, - pub d_namlen: u8, - __d_padding: [u8; 4], - pub d_name: [::c_char; 256], - } - - pub struct glob_t { - pub gl_pathc: ::c_int, - pub gl_matchc: ::c_int, - pub gl_offs: ::c_int, - pub gl_flags: ::c_int, - pub gl_pathv: *mut *mut ::c_char, - __unused1: *mut ::c_void, - __unused2: *mut ::c_void, - __unused3: *mut ::c_void, - __unused4: *mut ::c_void, - __unused5: *mut ::c_void, - __unused6: *mut ::c_void, - __unused7: *mut ::c_void, - } - - pub struct kevent { - pub ident: ::uintptr_t, - pub filter: ::c_short, - pub flags: ::c_ushort, - pub fflags: ::c_uint, - pub data: ::int64_t, - pub udata: *mut ::c_void, - } - - pub struct stat { - pub st_mode: ::mode_t, - pub st_dev: ::dev_t, - pub st_ino: ::ino_t, - pub st_nlink: ::nlink_t, - pub st_uid: ::uid_t, - pub st_gid: ::gid_t, - pub st_rdev: ::dev_t, - pub st_atime: ::time_t, - pub st_atime_nsec: ::c_long, - pub st_mtime: ::time_t, - pub st_mtime_nsec: ::c_long, - pub st_ctime: ::time_t, - pub st_ctime_nsec: ::c_long, - pub st_size: ::off_t, - pub st_blocks: ::blkcnt_t, - pub st_blksize: ::blksize_t, - pub st_flags: ::uint32_t, - pub st_gen: ::uint32_t, - pub st_birthtime: ::time_t, - pub st_birthtime_nsec: ::c_long, - } - - pub struct statvfs { - pub f_bsize: ::c_ulong, - pub f_frsize: ::c_ulong, - pub f_blocks: ::fsblkcnt_t, - pub f_bfree: ::fsblkcnt_t, - pub f_bavail: ::fsblkcnt_t, - pub f_files: ::fsfilcnt_t, - pub f_ffree: ::fsfilcnt_t, - pub f_favail: ::fsfilcnt_t, - pub f_fsid: ::c_ulong, - pub f_flag: ::c_ulong, - pub f_namemax: ::c_ulong, - } - - pub struct addrinfo { - pub ai_flags: ::c_int, - pub ai_family: ::c_int, - pub ai_socktype: ::c_int, - pub ai_protocol: ::c_int, - pub ai_addrlen: ::socklen_t, - pub ai_addr: *mut ::sockaddr, - pub ai_canonname: *mut ::c_char, - pub ai_next: *mut ::addrinfo, - } - - pub struct sockaddr_storage { - pub ss_len: u8, - pub ss_family: ::sa_family_t, - __ss_pad1: [u8; 6], - __ss_pad2: i64, - __ss_pad3: [u8; 240], - } - - pub struct siginfo_t { - pub si_signo: ::c_int, - pub si_code: ::c_int, - pub si_errno: ::c_int, - pub si_addr: *mut ::c_void - } - - pub struct Dl_info { - pub dli_fname: *const ::c_char, - pub dli_fbase: *mut ::c_void, - pub dli_sname: *const ::c_char, - pub dli_saddr: *mut ::c_void, - } - - pub struct lconv { - pub decimal_point: *mut ::c_char, - pub thousands_sep: *mut ::c_char, - pub grouping: *mut ::c_char, - pub int_curr_symbol: *mut ::c_char, - pub currency_symbol: *mut ::c_char, - pub mon_decimal_point: *mut ::c_char, - pub mon_thousands_sep: *mut ::c_char, - pub mon_grouping: *mut ::c_char, - pub positive_sign: *mut ::c_char, - pub negative_sign: *mut ::c_char, - pub int_frac_digits: ::c_char, - pub frac_digits: ::c_char, - pub p_cs_precedes: ::c_char, - pub p_sep_by_space: ::c_char, - pub n_cs_precedes: ::c_char, - pub n_sep_by_space: ::c_char, - pub p_sign_posn: ::c_char, - pub n_sign_posn: ::c_char, - pub int_p_cs_precedes: ::c_char, - pub int_n_cs_precedes: ::c_char, - pub int_p_sep_by_space: ::c_char, - pub int_n_sep_by_space: ::c_char, - pub int_p_sign_posn: ::c_char, - pub int_n_sign_posn: ::c_char, - } -} - -pub const LC_COLLATE_MASK: ::c_int = (1 << 0); -pub const LC_CTYPE_MASK: ::c_int = (1 << 1); -pub const LC_MESSAGES_MASK: ::c_int = (1 << 2); -pub const LC_MONETARY_MASK: ::c_int = (1 << 3); -pub const LC_NUMERIC_MASK: ::c_int = (1 << 4); -pub const LC_TIME_MASK: ::c_int = (1 << 5); -pub const LC_ALL_MASK: ::c_int = LC_COLLATE_MASK - | LC_CTYPE_MASK - | LC_MESSAGES_MASK - | LC_MONETARY_MASK - | LC_NUMERIC_MASK - | LC_TIME_MASK; - -pub const ERA: ::nl_item = 52; -pub const ERA_D_FMT: ::nl_item = 53; -pub const ERA_D_T_FMT: ::nl_item = 54; -pub const ERA_T_FMT: ::nl_item = 55; -pub const ALT_DIGITS: ::nl_item = 56; - -pub const D_MD_ORDER: ::nl_item = 57; - -pub const ALTMON_1: ::nl_item = 58; -pub const ALTMON_2: ::nl_item = 59; -pub const ALTMON_3: ::nl_item = 60; -pub const ALTMON_4: ::nl_item = 61; -pub const ALTMON_5: ::nl_item = 62; -pub const ALTMON_6: ::nl_item = 63; -pub const ALTMON_7: ::nl_item = 64; -pub const ALTMON_8: ::nl_item = 65; -pub const ALTMON_9: ::nl_item = 66; -pub const ALTMON_10: ::nl_item = 67; -pub const ALTMON_11: ::nl_item = 68; -pub const ALTMON_12: ::nl_item = 69; - -pub const O_CLOEXEC: ::c_int = 0x10000; - -pub const MS_SYNC : ::c_int = 0x0002; -pub const MS_INVALIDATE : ::c_int = 0x0004; - -pub const PTHREAD_STACK_MIN : ::size_t = 2048; - -pub const ENOATTR : ::c_int = 83; -pub const EILSEQ : ::c_int = 84; -pub const EOVERFLOW : ::c_int = 87; -pub const ECANCELED : ::c_int = 88; -pub const EIDRM : ::c_int = 89; -pub const ENOMSG : ::c_int = 90; -pub const ENOTSUP : ::c_int = 91; -pub const ELAST : ::c_int = 91; - -pub const F_DUPFD_CLOEXEC : ::c_int = 10; - -pub const RLIM_NLIMITS: ::c_int = 9; - -pub const SO_SNDTIMEO: ::c_int = 0x1005; -pub const SO_RCVTIMEO: ::c_int = 0x1006; - -pub const O_DSYNC : ::c_int = 128; - -pub const MAP_RENAME : ::c_int = 0x0000; -pub const MAP_NORESERVE : ::c_int = 0x0000; -pub const MAP_HASSEMAPHORE : ::c_int = 0x0000; - -pub const EIPSEC : ::c_int = 82; -pub const ENOMEDIUM : ::c_int = 85; -pub const EMEDIUMTYPE : ::c_int = 86; - -pub const RUSAGE_THREAD: ::c_int = 1; - -pub const IPV6_ADD_MEMBERSHIP: ::c_int = 12; -pub const IPV6_DROP_MEMBERSHIP: ::c_int = 13; - -pub const MAP_COPY : ::c_int = 0x0002; -pub const MAP_NOEXTEND : ::c_int = 0x0000; - -pub const _SC_IOV_MAX : ::c_int = 51; -pub const _SC_GETGR_R_SIZE_MAX : ::c_int = 100; -pub const _SC_GETPW_R_SIZE_MAX : ::c_int = 101; -pub const _SC_LOGIN_NAME_MAX : ::c_int = 102; -pub const _SC_MQ_PRIO_MAX : ::c_int = 59; -pub const _SC_NPROCESSORS_ONLN : ::c_int = 503; -pub const _SC_THREADS : ::c_int = 91; -pub const _SC_THREAD_ATTR_STACKADDR : ::c_int = 77; -pub const _SC_THREAD_ATTR_STACKSIZE : ::c_int = 78; -pub const _SC_THREAD_DESTRUCTOR_ITERATIONS : ::c_int = 80; -pub const _SC_THREAD_KEYS_MAX : ::c_int = 81; -pub const _SC_THREAD_PRIO_INHERIT : ::c_int = 82; -pub const _SC_THREAD_PRIO_PROTECT : ::c_int = 83; -pub const _SC_THREAD_PRIORITY_SCHEDULING : ::c_int = 84; -pub const _SC_THREAD_PROCESS_SHARED : ::c_int = 85; -pub const _SC_THREAD_SAFE_FUNCTIONS : ::c_int = 103; -pub const _SC_THREAD_STACK_MIN : ::c_int = 89; -pub const _SC_THREAD_THREADS_MAX : ::c_int = 90; -pub const _SC_TTY_NAME_MAX : ::c_int = 107; -pub const _SC_ATEXIT_MAX : ::c_int = 46; -pub const _SC_CLK_TCK : ::c_int = 3; -pub const _SC_AIO_LISTIO_MAX : ::c_int = 42; -pub const _SC_AIO_MAX : ::c_int = 43; -pub const _SC_ASYNCHRONOUS_IO : ::c_int = 45; -pub const _SC_MAPPED_FILES : ::c_int = 53; -pub const _SC_MEMLOCK : ::c_int = 54; -pub const _SC_MEMLOCK_RANGE : ::c_int = 55; -pub const _SC_MEMORY_PROTECTION : ::c_int = 56; -pub const _SC_MESSAGE_PASSING : ::c_int = 57; -pub const _SC_MQ_OPEN_MAX : ::c_int = 58; -pub const _SC_PRIORITY_SCHEDULING : ::c_int = 61; -pub const _SC_SEMAPHORES : ::c_int = 67; -pub const _SC_SHARED_MEMORY_OBJECTS : ::c_int = 68; -pub const _SC_SYNCHRONIZED_IO : ::c_int = 75; -pub const _SC_TIMERS : ::c_int = 94; -pub const _SC_XOPEN_CRYPT : ::c_int = 117; -pub const _SC_XOPEN_ENH_I18N : ::c_int = 118; -pub const _SC_XOPEN_LEGACY : ::c_int = 119; -pub const _SC_XOPEN_REALTIME : ::c_int = 120; -pub const _SC_XOPEN_REALTIME_THREADS : ::c_int = 121; -pub const _SC_XOPEN_UNIX : ::c_int = 123; -pub const _SC_XOPEN_VERSION : ::c_int = 125; -pub const _SC_SEM_NSEMS_MAX : ::c_int = 31; -pub const _SC_SEM_VALUE_MAX : ::c_int = 32; -pub const _SC_AIO_PRIO_DELTA_MAX : ::c_int = 44; -pub const _SC_DELAYTIMER_MAX : ::c_int = 50; -pub const _SC_PRIORITIZED_IO : ::c_int = 60; -pub const _SC_REALTIME_SIGNALS : ::c_int = 64; -pub const _SC_RTSIG_MAX : ::c_int = 66; -pub const _SC_SIGQUEUE_MAX : ::c_int = 70; -pub const _SC_TIMER_MAX : ::c_int = 93; -pub const _SC_HOST_NAME_MAX: ::c_int = 33; - -pub const FD_SETSIZE: usize = 1024; - -pub const ST_NOSUID: ::c_ulong = 2; - -pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = 0 as *mut _; -pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = 0 as *mut _; -pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = 0 as *mut _; - -pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 1; -pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 2; -pub const PTHREAD_MUTEX_NORMAL: ::c_int = 3; -pub const PTHREAD_MUTEX_STRICT_NP: ::c_int = 4; -pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_STRICT_NP; - -pub const EVFILT_AIO: ::int16_t = -3; -pub const EVFILT_PROC: ::int16_t = -5; -pub const EVFILT_READ: ::int16_t = -1; -pub const EVFILT_SIGNAL: ::int16_t = -6; -pub const EVFILT_TIMER: ::int16_t = -7; -pub const EVFILT_VNODE: ::int16_t = -4; -pub const EVFILT_WRITE: ::int16_t = -2; - -pub const EV_ADD: ::uint16_t = 0x1; -pub const EV_DELETE: ::uint16_t = 0x2; -pub const EV_ENABLE: ::uint16_t = 0x4; -pub const EV_DISABLE: ::uint16_t = 0x8; -pub const EV_ONESHOT: ::uint16_t = 0x10; -pub const EV_CLEAR: ::uint16_t = 0x20; -pub const EV_FLAG1: ::uint16_t = 0x2000; -pub const EV_ERROR: ::uint16_t = 0x4000; -pub const EV_EOF: ::uint16_t = 0x8000; -pub const EV_SYSFLAGS: ::uint16_t = 0xf000; - -pub const NOTE_LOWAT: ::uint32_t = 0x00000001; -pub const NOTE_EOF: ::uint32_t = 0x00000002; -pub const NOTE_DELETE: ::uint32_t = 0x00000001; -pub const NOTE_WRITE: ::uint32_t = 0x00000002; -pub const NOTE_EXTEND: ::uint32_t = 0x00000004; -pub const NOTE_ATTRIB: ::uint32_t = 0x00000008; -pub const NOTE_LINK: ::uint32_t = 0x00000010; -pub const NOTE_RENAME: ::uint32_t = 0x00000020; -pub const NOTE_REVOKE: ::uint32_t = 0x00000040; -pub const NOTE_TRUNCATE: ::uint32_t = 0x00000080; -pub const NOTE_EXIT: ::uint32_t = 0x80000000; -pub const NOTE_FORK: ::uint32_t = 0x40000000; -pub const NOTE_EXEC: ::uint32_t = 0x20000000; -pub const NOTE_PDATAMASK: ::uint32_t = 0x000fffff; -pub const NOTE_PCTRLMASK: ::uint32_t = 0xf0000000; -pub const NOTE_TRACK: ::uint32_t = 0x00000001; -pub const NOTE_TRACKERR: ::uint32_t = 0x00000002; -pub const NOTE_CHILD: ::uint32_t = 0x00000004; - -pub const TMP_MAX : ::c_uint = 0x7fffffff; - -pub const NI_MAXHOST: ::size_t = 256; - -pub const CTL_MAXNAME: ::c_int = 12; -pub const CTLTYPE_NODE: ::c_int = 1; -pub const CTLTYPE_INT: ::c_int = 2; -pub const CTLTYPE_STRING: ::c_int = 3; -pub const CTLTYPE_QUAD: ::c_int = 4; -pub const CTLTYPE_STRUCT: ::c_int = 5; -pub const CTL_UNSPEC: ::c_int = 0; -pub const CTL_KERN: ::c_int = 1; -pub const CTL_VM: ::c_int = 2; -pub const CTL_FS: ::c_int = 3; -pub const CTL_NET: ::c_int = 4; -pub const CTL_DEBUG: ::c_int = 5; -pub const CTL_HW: ::c_int = 6; -pub const CTL_MACHDEP: ::c_int = 7; -pub const CTL_DDB: ::c_int = 9; -pub const CTL_VFS: ::c_int = 10; -pub const CTL_MAXID: ::c_int = 11; -pub const KERN_OSTYPE: ::c_int = 1; -pub const KERN_OSRELEASE: ::c_int = 2; -pub const KERN_OSREV: ::c_int = 3; -pub const KERN_VERSION: ::c_int = 4; -pub const KERN_MAXVNODES: ::c_int = 5; -pub const KERN_MAXPROC: ::c_int = 6; -pub const KERN_MAXFILES: ::c_int = 7; -pub const KERN_ARGMAX: ::c_int = 8; -pub const KERN_SECURELVL: ::c_int = 9; -pub const KERN_HOSTNAME: ::c_int = 10; -pub const KERN_HOSTID: ::c_int = 11; -pub const KERN_CLOCKRATE: ::c_int = 12; -pub const KERN_PROF: ::c_int = 16; -pub const KERN_POSIX1: ::c_int = 17; -pub const KERN_NGROUPS: ::c_int = 18; -pub const KERN_JOB_CONTROL: ::c_int = 19; -pub const KERN_SAVED_IDS: ::c_int = 20; -pub const KERN_BOOTTIME: ::c_int = 21; -pub const KERN_DOMAINNAME: ::c_int = 22; -pub const KERN_MAXPARTITIONS: ::c_int = 23; -pub const KERN_RAWPARTITION: ::c_int = 24; -pub const KERN_MAXTHREAD: ::c_int = 25; -pub const KERN_NTHREADS: ::c_int = 26; -pub const KERN_OSVERSION: ::c_int = 27; -pub const KERN_SOMAXCONN: ::c_int = 28; -pub const KERN_SOMINCONN: ::c_int = 29; -pub const KERN_USERMOUNT: ::c_int = 30; -pub const KERN_RND: ::c_int = 31; -pub const KERN_NOSUIDCOREDUMP: ::c_int = 32; -pub const KERN_FSYNC: ::c_int = 33; -pub const KERN_SYSVMSG: ::c_int = 34; -pub const KERN_SYSVSEM: ::c_int = 35; -pub const KERN_SYSVSHM: ::c_int = 36; -pub const KERN_ARND: ::c_int = 37; -pub const KERN_MSGBUFSIZE: ::c_int = 38; -pub const KERN_MALLOCSTATS: ::c_int = 39; -pub const KERN_CPTIME: ::c_int = 40; -pub const KERN_NCHSTATS: ::c_int = 41; -pub const KERN_FORKSTAT: ::c_int = 42; -pub const KERN_NSELCOLL: ::c_int = 43; -pub const KERN_TTY: ::c_int = 44; -pub const KERN_CCPU: ::c_int = 45; -pub const KERN_FSCALE: ::c_int = 46; -pub const KERN_NPROCS: ::c_int = 47; -pub const KERN_MSGBUF: ::c_int = 48; -pub const KERN_POOL: ::c_int = 49; -pub const KERN_STACKGAPRANDOM: ::c_int = 50; -pub const KERN_SYSVIPC_INFO: ::c_int = 51; -pub const KERN_SPLASSERT: ::c_int = 54; -pub const KERN_PROC_ARGS: ::c_int = 55; -pub const KERN_NFILES: ::c_int = 56; -pub const KERN_TTYCOUNT: ::c_int = 57; -pub const KERN_NUMVNODES: ::c_int = 58; -pub const KERN_MBSTAT: ::c_int = 59; -pub const KERN_SEMINFO: ::c_int = 61; -pub const KERN_SHMINFO: ::c_int = 62; -pub const KERN_INTRCNT: ::c_int = 63; -pub const KERN_WATCHDOG: ::c_int = 64; -pub const KERN_PROC: ::c_int = 66; -pub const KERN_MAXCLUSTERS: ::c_int = 67; -pub const KERN_EVCOUNT: ::c_int = 68; -pub const KERN_TIMECOUNTER: ::c_int = 69; -pub const KERN_MAXLOCKSPERUID: ::c_int = 70; -pub const KERN_CPTIME2: ::c_int = 71; -pub const KERN_CACHEPCT: ::c_int = 72; -pub const KERN_FILE: ::c_int = 73; -pub const KERN_CONSDEV: ::c_int = 75; -pub const KERN_NETLIVELOCKS: ::c_int = 76; -pub const KERN_POOL_DEBUG: ::c_int = 77; -pub const KERN_PROC_CWD: ::c_int = 78; -pub const KERN_PROC_NOBROADCASTKILL: ::c_int = 79; -pub const KERN_PROC_VMMAP: ::c_int = 80; -pub const KERN_GLOBAL_PTRACE: ::c_int = 81; -pub const KERN_CONSBUFSIZE: ::c_int = 82; -pub const KERN_CONSBUF: ::c_int = 83; -pub const KERN_MAXID: ::c_int = 84; -pub const KERN_PROC_ALL: ::c_int = 0; -pub const KERN_PROC_PID: ::c_int = 1; -pub const KERN_PROC_PGRP: ::c_int = 2; -pub const KERN_PROC_SESSION: ::c_int = 3; -pub const KERN_PROC_TTY: ::c_int = 4; -pub const KERN_PROC_UID: ::c_int = 5; -pub const KERN_PROC_RUID: ::c_int = 6; -pub const KERN_PROC_KTHREAD: ::c_int = 7; -pub const KERN_PROC_SHOW_THREADS: ::c_int = 0x40000000; -pub const KERN_SYSVIPC_MSG_INFO: ::c_int = 1; -pub const KERN_SYSVIPC_SEM_INFO: ::c_int = 2; -pub const KERN_SYSVIPC_SHM_INFO: ::c_int = 3; -pub const KERN_PROC_ARGV: ::c_int = 1; -pub const KERN_PROC_NARGV: ::c_int = 2; -pub const KERN_PROC_ENV: ::c_int = 3; -pub const KERN_PROC_NENV: ::c_int = 4; -pub const KI_NGROUPS: ::c_int = 16; -pub const KI_MAXCOMLEN: ::c_int = 24; -pub const KI_WMESGLEN: ::c_int = 8; -pub const KI_MAXLOGNAME: ::c_int = 32; -pub const KI_EMULNAMELEN: ::c_int = 8; - -extern { - pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; - - pub fn getnameinfo(sa: *const ::sockaddr, - salen: ::socklen_t, - host: *mut ::c_char, - hostlen: ::size_t, - serv: *mut ::c_char, - servlen: ::size_t, - flags: ::c_int) -> ::c_int; - pub fn kevent(kq: ::c_int, - changelist: *const ::kevent, - nchanges: ::c_int, - eventlist: *mut ::kevent, - nevents: ::c_int, - timeout: *const ::timespec) -> ::c_int; - pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) - -> ::c_int; - pub fn pthread_main_np() -> ::c_int; - pub fn pthread_set_name_np(tid: ::pthread_t, name: *const ::c_char); - pub fn pthread_stackseg_np(thread: ::pthread_t, - sinfo: *mut ::stack_t) -> ::c_int; - pub fn sysctl(name: *mut ::c_int, - namelen: ::c_uint, - oldp: *mut ::c_void, - oldlenp: *mut ::size_t, - newp: *mut ::c_void, - newlen: ::size_t) - -> ::c_int; - pub fn sysctlbyname(name: *const ::c_char, - oldp: *mut ::c_void, - oldlenp: *mut ::size_t, - newp: *mut ::c_void, - newlen: ::size_t) - -> ::c_int; - pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char; - pub fn duplocale(base: ::locale_t) -> ::locale_t; - pub fn freelocale(loc: ::locale_t) -> ::c_int; - pub fn newlocale(mask: ::c_int, - locale: *const ::c_char, - base: ::locale_t) -> ::locale_t; - pub fn uselocale(loc: ::locale_t) -> ::locale_t; - pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char; -} diff --git a/third_party/rust/libc/src/unix/haiku/b32.rs b/third_party/rust/libc/src/unix/haiku/b32.rs new file mode 100644 index 000000000000..9b0b338b91e5 --- /dev/null +++ b/third_party/rust/libc/src/unix/haiku/b32.rs @@ -0,0 +1,2 @@ +pub type c_long = i32; +pub type c_ulong = u32; diff --git a/third_party/rust/libc/src/unix/haiku/b64.rs b/third_party/rust/libc/src/unix/haiku/b64.rs new file mode 100644 index 000000000000..5d63ce9ce43e --- /dev/null +++ b/third_party/rust/libc/src/unix/haiku/b64.rs @@ -0,0 +1,2 @@ +pub type c_ulong = u64; +pub type c_long = i64; diff --git a/third_party/rust/libc/src/unix/haiku/mod.rs b/third_party/rust/libc/src/unix/haiku/mod.rs new file mode 100644 index 000000000000..a241a0205481 --- /dev/null +++ b/third_party/rust/libc/src/unix/haiku/mod.rs @@ -0,0 +1,748 @@ +use dox::mem; + +pub type rlim_t = ::uintptr_t; +pub type sa_family_t = u8; +pub type pthread_key_t = ::c_int; +pub type nfds_t = ::c_long; +pub type tcflag_t = ::c_uint; +pub type speed_t = ::c_uint; +pub type c_char = i8; +pub type clock_t = i32; +pub type clockid_t = i32; +pub type time_t = i32; +pub type suseconds_t = i32; +pub type wchar_t = i32; +pub type off_t = i64; +pub type ino_t = i64; +pub type blkcnt_t = i64; +pub type blksize_t = i32; +pub type dev_t = i32; +pub type mode_t = u32; +pub type nlink_t = i32; +pub type useconds_t = u32; +pub type socklen_t = u32; +pub type pthread_t = ::uintptr_t; +pub type pthread_mutexattr_t = ::uintptr_t; +pub type sigset_t = u64; +pub type fsblkcnt_t = i64; +pub type fsfilcnt_t = i64; +pub type pthread_attr_t = *mut ::c_void; +pub type nl_item = ::c_int; + +pub enum timezone {} + +s! { + pub struct sockaddr { + pub sa_len: u8, + pub sa_family: sa_family_t, + pub sa_data: [::c_char; 30], + } + + pub struct sockaddr_in { + pub sin_len: u8, + pub sin_family: sa_family_t, + pub sin_port: ::in_port_t, + pub sin_addr: ::in_addr, + pub sin_zero: [u8; 24], + } + + pub struct sockaddr_in6 { + pub sin6_len: u8, + pub sin6_family: sa_family_t, + pub sin6_port: ::in_port_t, + pub sin6_flowinfo: u32, + pub sin6_addr: ::in6_addr, + pub sin6_scope_id: u32, + } + + pub struct sockaddr_un { + pub sun_len: u8, + pub sun_family: sa_family_t, + pub sun_path: [::c_char; 126] + } + + pub struct sockaddr_storage { + pub ss_len: u8, + pub ss_family: sa_family_t, + __ss_pad1: [u8; 6], + __ss_pad2: u64, + __ss_pad3: [u8; 112], + } + + pub struct addrinfo { + pub ai_flags: ::c_int, + pub ai_family: ::c_int, + pub ai_socktype: ::c_int, + pub ai_protocol: ::c_int, + pub ai_addrlen: socklen_t, + pub ai_canonname: *mut c_char, + pub ai_addr: *mut ::sockaddr, + pub ai_next: *mut addrinfo, + } + + pub struct fd_set { + fds_bits: [c_ulong; FD_SETSIZE / ULONG_SIZE], + } + + pub struct tm { + pub tm_sec: ::c_int, + pub tm_min: ::c_int, + pub tm_hour: ::c_int, + pub tm_mday: ::c_int, + pub tm_mon: ::c_int, + pub tm_year: ::c_int, + pub tm_wday: ::c_int, + pub tm_yday: ::c_int, + pub tm_isdst: ::c_int, + pub tm_gmtoff: ::c_long, + pub tm_zone: *const ::c_char, + } + + pub struct utsname { + pub sysname: [::c_char; 32], + pub nodename: [::c_char; 32], + pub release: [::c_char; 32], + pub version: [::c_char; 32], + pub machine: [::c_char; 32], + } + + pub struct lconv { + pub decimal_point: *mut ::c_char, + pub thousands_sep: *mut ::c_char, + pub grouping: *mut ::c_char, + pub int_curr_symbol: *mut ::c_char, + pub currency_symbol: *mut ::c_char, + pub mon_decimal_point: *mut ::c_char, + pub mon_thousands_sep: *mut ::c_char, + pub mon_grouping: *mut ::c_char, + pub positive_sign: *mut ::c_char, + pub negative_sign: *mut ::c_char, + pub int_frac_digits: ::c_char, + pub frac_digits: ::c_char, + pub p_cs_precedes: ::c_char, + pub p_sep_by_space: ::c_char, + pub n_cs_precedes: ::c_char, + pub n_sep_by_space: ::c_char, + pub p_sign_posn: ::c_char, + pub n_sign_posn: ::c_char, + pub int_p_cs_precedes: ::c_char, + pub int_p_sep_by_space: ::c_char, + pub int_n_cs_precedes: ::c_char, + pub int_n_sep_by_space: ::c_char, + pub int_p_sign_posn: ::c_char, + pub int_n_sign_posn: ::c_char, + } + + pub struct msghdr { + pub msg_name: *mut ::c_void, + pub msg_namelen: ::socklen_t, + pub msg_iov: *mut ::iovec, + pub msg_iovlen: ::c_int, + pub msg_control: *mut ::c_void, + pub msg_controllen: ::socklen_t, + pub msg_flags: ::c_int, + } + + pub struct Dl_info { + pub dli_fname: *const ::c_char, + pub dli_fbase: *mut ::c_void, + pub dli_sname: *const ::c_char, + pub dli_saddr: *mut ::c_void, + } + + pub struct termios { + pub c_iflag: ::tcflag_t, + pub c_oflag: ::tcflag_t, + pub c_cflag: ::tcflag_t, + pub c_lflag: ::tcflag_t, + pub c_line: ::c_char, + pub c_ispeed: ::speed_t, + pub c_ospeed: ::speed_t, + pub c_cc: [::cc_t; ::NCCS], + } + + pub struct stat { + pub st_dev: dev_t, + pub st_ino: ino_t, + pub st_mode: mode_t, + pub st_nlink: nlink_t, + pub st_uid: ::uid_t, + pub st_gid: ::gid_t, + pub st_size: off_t, + pub st_rdev: dev_t, + pub st_blksize: blksize_t, + pub st_atime: time_t, + pub st_atime_nsec: c_long, + pub st_mtime: time_t, + pub st_mtime_nsec: c_long, + pub st_ctime: time_t, + pub st_ctime_nsec: c_long, + pub st_crtime: time_t, + pub st_crtime_nsec: c_long, + pub st_type: u32, + pub st_blocks: blkcnt_t, + } + + pub struct dirent { + pub d_dev: dev_t, + pub d_pdev: dev_t, + pub d_ino: ino_t, + pub d_pino: i64, + pub d_reclen: ::c_ushort, + pub d_name: [::c_char; 1024], // Max length is _POSIX_PATH_MAX + } + + pub struct glob_t { + pub gl_pathc: ::size_t, + __unused1: ::size_t, + pub gl_offs: ::size_t, + __unused2: ::size_t, + pub gl_pathv: *mut *mut c_char, + + __unused3: *mut ::c_void, + __unused4: *mut ::c_void, + __unused5: *mut ::c_void, + __unused6: *mut ::c_void, + __unused7: *mut ::c_void, + __unused8: *mut ::c_void, + } + + pub struct pthread_mutex_t { + flags: u32, + lock: i32, + unused: i32, + owner: i32, + owner_count: i32, + } + + pub struct pthread_cond_t { + flags: u32, + unused: i32, + mutex: *mut ::c_void, + waiter_count: i32, + lock: i32, + } + + pub struct pthread_rwlock_t { + flags: u32, + owner: i32, + lock_sem: i32, // this is actually a union + lock_count: i32, + reader_count: i32, + writer_count: i32, + waiters: [*mut ::c_void; 2], + } + + pub struct passwd { + pub pw_name: *mut ::c_char, + pub pw_passwd: *mut ::c_char, + pub pw_uid: ::uid_t, + pub pw_gid: ::gid_t, + pub pw_dir: *mut ::c_char, + pub pw_shell: *mut ::c_char, + pub pw_gecos: *mut ::c_char, + } + + pub struct statvfs { + pub f_bsize: ::c_ulong, + pub f_frsize: ::c_ulong, + pub f_blocks: ::fsblkcnt_t, + pub f_bfree: ::fsblkcnt_t, + pub f_bavail: ::fsblkcnt_t, + pub f_files: ::fsfilcnt_t, + pub f_ffree: ::fsfilcnt_t, + pub f_favail: ::fsfilcnt_t, + pub f_fsid: ::c_ulong, + pub f_flag: ::c_ulong, + pub f_namemax: ::c_ulong, + } + + pub struct stack_t { + pub ss_sp: *mut ::c_void, + pub ss_size: ::size_t, + pub ss_flags: ::c_int, + } + + pub struct siginfo_t { + pub si_signo: ::c_int, + pub si_code: ::c_int, + pub si_errno: ::c_int, + pub si_pid: ::pid_t, + pub si_uid: ::uid_t, + pub si_addr: *mut ::c_void, + pub si_status: ::c_int, + pub si_band: c_long, + pub sigval: *mut ::c_void, + } + + pub struct sigaction { + pub sa_sigaction: ::sighandler_t, + pub sa_mask: ::sigset_t, + pub sa_flags: ::c_int, + sa_userdata: *mut ::c_void, + } + + pub struct sem_t { + pub se_type: i32, + pub se_named_id: i32, // this is actually a union + pub se_unnamed: i32, + pub se_padding: [i32; 4], + } + + pub struct pthread_condattr_t { + pub process_shared: bool, + pub clock_id: i32, + } +} + +// intentionally not public, only used for fd_set +cfg_if! { + if #[cfg(target_pointer_width = "32")] { + const ULONG_SIZE: usize = 32; + } else if #[cfg(target_pointer_width = "64")] { + const ULONG_SIZE: usize = 64; + } else { + // Unknown target_pointer_width + } +} + +pub const EXIT_FAILURE: ::c_int = 1; +pub const EXIT_SUCCESS: ::c_int = 0; +pub const RAND_MAX: ::c_int = 2147483647; +pub const EOF: ::c_int = -1; +pub const SEEK_SET: ::c_int = 0; +pub const SEEK_CUR: ::c_int = 1; +pub const SEEK_END: ::c_int = 2; +pub const _IOFBF: ::c_int = 0; +pub const _IONBF: ::c_int = 2; +pub const _IOLBF: ::c_int = 1; + +pub const F_DUPFD: ::c_int = 0x0001; +pub const F_GETFD: ::c_int = 0x0002; +pub const F_SETFD: ::c_int = 0x0004; +pub const F_GETFL: ::c_int = 0x0008; +pub const F_SETFL: ::c_int = 0x0010; + +pub const SIGTRAP: ::c_int = 22; + +pub const PTHREAD_CREATE_JOINABLE: ::c_int = 0; +pub const PTHREAD_CREATE_DETACHED: ::c_int = 1; + +pub const CLOCK_REALTIME: ::c_int = -1; +pub const CLOCK_MONOTONIC: ::c_int = 0; + +pub const RLIMIT_CORE: ::c_int = 0; +pub const RLIMIT_CPU: ::c_int = 1; +pub const RLIMIT_DATA: ::c_int = 2; +pub const RLIMIT_FSIZE: ::c_int = 3; +pub const RLIMIT_NOFILE: ::c_int = 4; +pub const RLIMIT_AS: ::c_int = 6; +// Haiku specific +pub const RLIMIT_NOVMON: ::c_int = 7; +pub const RLIMIT_NLIMITS: ::c_int = 8; + +pub const RUSAGE_SELF: ::c_int = 0; + +pub const NCCS: usize = 11; + +pub const O_RDONLY: ::c_int = 0x0000; +pub const O_WRONLY: ::c_int = 0x0001; +pub const O_RDWR: ::c_int = 0x0002; +pub const O_ACCMODE: ::c_int = 0x0003; + +pub const O_EXCL: ::c_int = 0x0100; +pub const O_CREAT: ::c_int = 0x0200; +pub const O_TRUNC: ::c_int = 0x0400; +pub const O_NOCTTY: ::c_int = 0x1000; +pub const O_NOTRAVERSE: ::c_int = 0x2000; + +pub const O_CLOEXEC: ::c_int = 0x00000040; +pub const O_NONBLOCK: ::c_int = 0x00000080; +pub const O_APPEND: ::c_int = 0x00000800; +pub const O_SYNC: ::c_int = 0x00010000; +pub const O_RSYNC: ::c_int = 0x00020000; +pub const O_DSYNC: ::c_int = 0x00040000; +pub const O_NOFOLLOW: ::c_int = 0x00080000; +pub const O_NOCACHE: ::c_int = 0x00100000; +pub const O_DIRECTORY: ::c_int = 0x00200000; + +pub const S_IFIFO: ::mode_t = 61440; +pub const S_IFCHR: ::mode_t = 49152; +pub const S_IFBLK: ::mode_t = 24576; +pub const S_IFDIR: ::mode_t = 16384; +pub const S_IFREG: ::mode_t = 32768; +pub const S_IFLNK: ::mode_t = 40960; +pub const S_IFSOCK: ::mode_t = 49152; +pub const S_IFMT: ::mode_t = 61440; +pub const S_IRWXU: ::mode_t = 448; +pub const S_IXUSR: ::mode_t = 64; +pub const S_IWUSR: ::mode_t = 128; +pub const S_IRUSR: ::mode_t = 256; +pub const S_IRWXG: ::mode_t = 70; +pub const S_IXGRP: ::mode_t = 10; +pub const S_IWGRP: ::mode_t = 20; +pub const S_IRGRP: ::mode_t = 40; +pub const S_IRWXO: ::mode_t = 7; +pub const S_IXOTH: ::mode_t = 1; +pub const S_IWOTH: ::mode_t = 2; +pub const S_IROTH: ::mode_t = 4; +pub const F_OK: ::c_int = 0; +pub const R_OK: ::c_int = 4; +pub const W_OK: ::c_int = 2; +pub const X_OK: ::c_int = 1; +pub const STDIN_FILENO: ::c_int = 0; +pub const STDOUT_FILENO: ::c_int = 1; +pub const STDERR_FILENO: ::c_int = 2; +pub const SIGHUP: ::c_int = 1; +pub const SIGINT: ::c_int = 2; +pub const SIGQUIT: ::c_int = 3; +pub const SIGILL: ::c_int = 4; +pub const SIGABRT: ::c_int = 6; +pub const SIGFPE: ::c_int = 8; +pub const SIGKILL: ::c_int = 9; +pub const SIGSEGV: ::c_int = 11; +pub const SIGPIPE: ::c_int = 7; +pub const SIGALRM: ::c_int = 14; +pub const SIGTERM: ::c_int = 15; + +pub const EAI_SYSTEM: ::c_int = 11; + +pub const PROT_NONE: ::c_int = 0; +pub const PROT_READ: ::c_int = 1; +pub const PROT_WRITE: ::c_int = 2; +pub const PROT_EXEC: ::c_int = 4; + +pub const LC_ALL: ::c_int = 0; +pub const LC_COLLATE: ::c_int = 1; +pub const LC_CTYPE: ::c_int = 2; +pub const LC_MONETARY: ::c_int = 3; +pub const LC_NUMERIC: ::c_int = 4; +pub const LC_TIME: ::c_int = 5; +pub const LC_MESSAGES: ::c_int = 6; + +// TODO: Haiku does not have MAP_FILE, but libstd/os.rs requires it +pub const MAP_FILE: ::c_int = 0x00; +pub const MAP_SHARED: ::c_int = 0x01; +pub const MAP_PRIVATE: ::c_int = 0x02; +pub const MAP_FIXED: ::c_int = 0x004; + +pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void; + +pub const MS_ASYNC: ::c_int = 0x01; +pub const MS_INVALIDATE: ::c_int = 0x04; +pub const MS_SYNC: ::c_int = 0x02; + +pub const EPERM : ::c_int = -2147483633; +pub const ENOENT : ::c_int = -2147459069; +pub const ESRCH : ::c_int = -2147454963; +pub const EINTR : ::c_int = -2147483638; +pub const EIO : ::c_int = -2147483647; +pub const ENXIO : ::c_int = -2147454965; +pub const E2BIG : ::c_int = -2147454975; +pub const ENOEXEC : ::c_int = -2147478782; +pub const EBADF : ::c_int = -2147459072; +pub const ECHILD : ::c_int = -2147454974; +pub const EDEADLK : ::c_int = -2147454973; +pub const ENOMEM : ::c_int = -2147454976; +pub const EACCES : ::c_int = -2147483646; +pub const EFAULT : ::c_int = -2147478783; +// pub const ENOTBLK : ::c_int = 15; +pub const EBUSY : ::c_int = -2147483634; +pub const EEXIST : ::c_int = -2147459070; +pub const EXDEV : ::c_int = -2147459061; +pub const ENODEV : ::c_int = -2147454969; +pub const ENOTDIR : ::c_int = -2147459067; +pub const EISDIR : ::c_int = -2147459063; +pub const EINVAL : ::c_int = -2147483643; +pub const ENFILE : ::c_int = -2147454970; +pub const EMFILE : ::c_int = -2147459062; +pub const ENOTTY : ::c_int = -2147454966; +pub const ETXTBSY : ::c_int = -2147454917; +pub const EFBIG : ::c_int = -2147454972; +pub const ENOSPC : ::c_int = -2147459065; +pub const ESPIPE : ::c_int = -2147454964; +pub const EROFS : ::c_int = -2147459064; +pub const EMLINK : ::c_int = -2147454971; +pub const EPIPE : ::c_int = -2147459059; +pub const EDOM : ::c_int = -2147454960; +pub const ERANGE : ::c_int = -2147454959; +pub const EAGAIN : ::c_int = -2147483637; +pub const EWOULDBLOCK : ::c_int = -2147483637; + +pub const EINPROGRESS : ::c_int = -2147454940; +pub const EALREADY : ::c_int = -2147454939; +pub const ENOTSOCK : ::c_int = -2147454932; +pub const EDESTADDRREQ : ::c_int = -2147454928; +pub const EMSGSIZE : ::c_int = -2147454934; +pub const EPROTOTYPE : ::c_int = -2147454958; +pub const ENOPROTOOPT : ::c_int = -2147454942; +pub const EPROTONOSUPPORT : ::c_int = -2147454957; +pub const EOPNOTSUPP : ::c_int = -2147454933; +pub const EPFNOSUPPORT : ::c_int = -2147454956; +pub const EAFNOSUPPORT : ::c_int = -2147454955; +pub const EADDRINUSE : ::c_int = -2147454954; +pub const EADDRNOTAVAIL : ::c_int = -2147454953; +pub const ENETDOWN : ::c_int = -2147454953; +pub const ENETUNREACH : ::c_int = -2147454951; +pub const ENETRESET : ::c_int = -2147454950; +pub const ECONNABORTED : ::c_int = -2147454949; +pub const ECONNRESET : ::c_int = -2147454948; +pub const ENOBUFS : ::c_int = -2147454941; +pub const EISCONN : ::c_int = -2147454947; +pub const ENOTCONN : ::c_int = -2147454946; +pub const ESHUTDOWN : ::c_int = -2147454945; +pub const ETIMEDOUT : ::c_int = -2147483639; +pub const ECONNREFUSED : ::c_int = -2147454944; +pub const ELOOP : ::c_int = -2147459060; +pub const ENAMETOOLONG : ::c_int = -2147459068; +pub const EHOSTDOWN : ::c_int = -2147454931; +pub const EHOSTUNREACH : ::c_int = -2147454943; +pub const ENOTEMPTY : ::c_int = -2147459066; +pub const EDQUOT : ::c_int = -2147454927; +pub const ESTALE : ::c_int = -2147454936; +pub const ENOLCK : ::c_int = -2147454968; +pub const ENOSYS : ::c_int = -2147454967; +pub const EIDRM : ::c_int = -2147454926; +pub const ENOMSG : ::c_int = -2147454937; +pub const EOVERFLOW : ::c_int = -2147454935; +pub const ECANCELED : ::c_int = -2147454929; +pub const EILSEQ : ::c_int = -2147454938; +pub const ENOATTR : ::c_int = -2147454916; +pub const EBADMSG : ::c_int = -2147454930; +pub const EMULTIHOP : ::c_int = -2147454925; +pub const ENOLINK : ::c_int = -2147454923; +pub const EPROTO : ::c_int = -2147454919; + +pub const IPPROTO_RAW: ::c_int = 255; + +// These are prefixed with POSIX_ on Haiku +pub const MADV_NORMAL: ::c_int = 1; +pub const MADV_SEQUENTIAL: ::c_int = 2; +pub const MADV_RANDOM: ::c_int = 3; +pub const MADV_WILLNEED: ::c_int = 4; +pub const MADV_DONTNEED: ::c_int = 5; + +pub const IFF_LOOPBACK: ::c_int = 0x0008; + +pub const AF_UNIX: ::c_int = 9; +pub const AF_INET: ::c_int = 1; +pub const AF_INET6: ::c_int = 6; +pub const SOCK_RAW: ::c_int = 3; +pub const IPPROTO_TCP: ::c_int = 6; +pub const IPPROTO_IP: ::c_int = 0; +pub const IPPROTO_IPV6: ::c_int = 41; +pub const IP_MULTICAST_TTL: ::c_int = 10; +pub const IP_MULTICAST_LOOP: ::c_int = 11; +pub const IP_TTL: ::c_int = 4; +pub const IP_HDRINCL: ::c_int = 2; +pub const IP_ADD_MEMBERSHIP: ::c_int = 12; +pub const IP_DROP_MEMBERSHIP: ::c_int = 13; + +pub const TCP_NODELAY: ::c_int = 0x01; +pub const TCP_MAXSEG: ::c_int = 0x02; +pub const TCP_NOPUSH: ::c_int = 0x04; +pub const TCP_NOOPT: ::c_int = 0x08; + +pub const IPV6_MULTICAST_LOOP: ::c_int = 26; +pub const IPV6_JOIN_GROUP: ::c_int = 28; +pub const IPV6_LEAVE_GROUP: ::c_int = 29; +pub const IPV6_V6ONLY: ::c_int = 30; + +pub const SO_DEBUG: ::c_int = 0x00000004; + +pub const MSG_NOSIGNAL: ::c_int = 0x0800; + +pub const SHUT_RD: ::c_int = 0; +pub const SHUT_WR: ::c_int = 1; +pub const SHUT_RDWR: ::c_int = 2; + +pub const LOCK_SH: ::c_int = 0x01; +pub const LOCK_EX: ::c_int = 0x02; +pub const LOCK_NB: ::c_int = 0x04; +pub const LOCK_UN: ::c_int = 0x08; + +pub const SIGSTKSZ: ::size_t = 16384; + +pub const SA_NODEFER: ::c_int = 0x08; +pub const SA_RESETHAND: ::c_int = 0x04; +pub const SA_RESTART: ::c_int = 0x10; +pub const SA_NOCLDSTOP: ::c_int = 0x01; + +pub const FD_SETSIZE: usize = 1024; + +pub const RTLD_NOW: ::c_int = 0x1; +pub const RTLD_DEFAULT: *mut ::c_void = 0isize as *mut ::c_void; + +pub const BUFSIZ: ::c_uint = 8192; +pub const FILENAME_MAX: ::c_uint = 256; +pub const FOPEN_MAX: ::c_uint = 128; +pub const L_tmpnam: ::c_uint = 512; +pub const TMP_MAX: ::c_uint = 32768; +pub const _PC_NAME_MAX: ::c_int = 4; + +pub const FIONBIO: ::c_int = 0xbe000000; + +pub const _SC_IOV_MAX : ::c_int = 32; +pub const _SC_GETGR_R_SIZE_MAX : ::c_int = 25; +pub const _SC_GETPW_R_SIZE_MAX : ::c_int = 26; +pub const _SC_PAGESIZE : ::c_int = 27; +pub const _SC_THREAD_ATTR_STACKADDR : ::c_int = 48; +pub const _SC_THREAD_ATTR_STACKSIZE : ::c_int = 49; +pub const _SC_THREAD_PRIORITY_SCHEDULING : ::c_int = 50; +pub const _SC_THREAD_PROCESS_SHARED : ::c_int = 46; +pub const _SC_THREAD_STACK_MIN : ::c_int = 47; +pub const _SC_THREADS : ::c_int = 31; +pub const _SC_ATEXIT_MAX : ::c_int = 37; + +pub const PTHREAD_STACK_MIN: ::size_t = 8192; + +pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t { + flags: 0, + lock: 0, + unused: -42, + owner: -1, + owner_count: 0, +}; +pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t { + flags: 0, + unused: -42, + mutex: 0 as *mut _, + waiter_count: 0, + lock: 0, +}; +pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t { + flags: 0, + owner: 0, + lock_sem: 0, + lock_count: 0, + reader_count: 0, + writer_count: 0, + waiters: [0 as *mut _; 2], +}; + +pub const PTHREAD_MUTEX_DEFAULT: ::c_int = 0; +pub const PTHREAD_MUTEX_NORMAL: ::c_int = 1; +pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2; +pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 3; + +pub const FIOCLEX: c_ulong = 0; // TODO: does not exist on Haiku! + +pub const SA_ONSTACK: c_ulong = 0x20; +pub const SA_SIGINFO: c_ulong = 0x40; +pub const SA_NOCLDWAIT: c_ulong = 0x02; + +pub const SIGCHLD: ::c_int = 5; +pub const SIGBUS: ::c_int = 30; +pub const SIG_SETMASK: ::c_int = 3; + +pub const RUSAGE_CHILDREN: ::c_int = -1; + +pub const SOCK_STREAM: ::c_int = 1; +pub const SOCK_DGRAM: ::c_int = 2; + +pub const SOL_SOCKET: ::c_int = -1; +pub const SO_ACCEPTCONN: ::c_int = 0x00000001; +pub const SO_BROADCAST: ::c_int = 0x00000002; +pub const SO_DONTROUTE: ::c_int = 0x00000008; +pub const SO_KEEPALIVE: ::c_int = 0x00000010; +pub const SO_OOBINLINE: ::c_int = 0x00000020; +pub const SO_REUSEADDR: ::c_int = 0x00000040; +pub const SO_REUSEPORT: ::c_int = 0x00000080; +pub const SO_USELOOPBACK: ::c_int = 0x00000100; +pub const SO_LINGER: ::c_int = 0x00000200; +pub const SO_SNDBUF: ::c_int = 0x40000001; +pub const SO_SNDLOWAT: ::c_int = 0x40000002; +pub const SO_SNDTIMEO: ::c_int = 0x40000003; +pub const SO_RCVBUF: ::c_int = 0x40000004; +pub const SO_RCVLOWAT: ::c_int = 0x40000005; +pub const SO_RCVTIMEO: ::c_int = 0x40000006; +pub const SO_ERROR: ::c_int = 0x40000007; +pub const SO_TYPE: ::c_int = 0x40000008; +pub const SO_NONBLOCK: ::c_int = 0x40000009; +pub const SO_BINDTODEVICE: ::c_int = 0x4000000a; +pub const SO_PEERCRED: ::c_int = 0x4000000b; + +pub const NI_MAXHOST: ::size_t = 1025; + +f! { + pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { + let fd = fd as usize; + let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; + (*set).fds_bits[fd / size] &= !(1 << (fd % size)); + return + } + + pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool { + let fd = fd as usize; + let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; + return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0 + } + + pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () { + let fd = fd as usize; + let size = mem::size_of_val(&(*set).fds_bits[0]) * 8; + (*set).fds_bits[fd / size] |= 1 << (fd % size); + return + } + + pub fn FD_ZERO(set: *mut fd_set) -> () { + for slot in (*set).fds_bits.iter_mut() { + *slot = 0; + } + } + + pub fn WIFEXITED(status: ::c_int) -> bool { + (status >> 8) == 0 + } + + pub fn WEXITSTATUS(status: ::c_int) -> ::c_int { + (status & 0xff) + } + + pub fn WTERMSIG(status: ::c_int) -> ::c_int { + (status >> 8) & 0xff + } +} + +extern { + pub fn clock_gettime(clk_id: ::c_int, tp: *mut ::timespec) -> ::c_int; + pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t, + guardsize: *mut ::size_t) -> ::c_int; + pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t, + stackaddr: *mut *mut ::c_void, + stacksize: *mut ::size_t) -> ::c_int; + pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t, + clock_id: *mut clockid_t) -> ::c_int; + pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t, + clock_id: clockid_t) -> ::c_int; + pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void; + pub fn setgroups(ngroups: ::size_t, + ptr: *const ::gid_t) -> ::c_int; + pub fn getpwuid_r(uid: ::uid_t, + pwd: *mut passwd, + buffer: *mut ::c_char, + bufferSize: ::size_t, + result: *mut *mut passwd) -> ::c_int; + pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int; + pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) + -> ::c_int; + pub fn getnameinfo(sa: *const ::sockaddr, + salen: ::socklen_t, + host: *mut ::c_char, + hostlen: ::size_t, + serv: *mut ::c_char, + sevlen: ::size_t, + flags: ::c_int) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; +} + +cfg_if! { + if #[cfg(target_pointer_width = "64")] { + mod b64; + pub use self::b64::*; + } else { + mod b32; + pub use self::b32::*; + } +} diff --git a/third_party/rust/libc/src/unix/mod.rs b/third_party/rust/libc/src/unix/mod.rs index 648a7aa6fe83..cf3a87ab4867 100644 --- a/third_party/rust/libc/src/unix/mod.rs +++ b/third_party/rust/libc/src/unix/mod.rs @@ -119,6 +119,11 @@ s! { pub l_onoff: ::c_int, pub l_linger: ::c_int, } + + pub struct sigval { + // Actually a union of an int and a void* + pub sival_ptr: *mut ::c_void + } } pub const SIG_DFL: sighandler_t = 0 as sighandler_t; @@ -205,7 +210,8 @@ cfg_if! { // cargo build, don't pull in anything extra as the libstd dep // already pulls in all libs. } else if #[cfg(any(all(target_env = "musl", not(target_arch = "mips"))))] { - #[link(name = "c", kind = "static")] + #[link(name = "c", kind = "static", cfg(target_feature = "crt-static"))] + #[link(name = "c", cfg(not(target_feature = "crt-static")))] extern {} } else if #[cfg(target_os = "emscripten")] { #[link(name = "c")] @@ -224,6 +230,14 @@ cfg_if! { #[link(name = "c")] #[link(name = "m")] extern {} + } else if #[cfg(target_os = "haiku")] { + #[link(name = "root")] + #[link(name = "network")] + extern {} + } else if #[cfg(target_os = "fuchsia")] { + #[link(name = "c")] + #[link(name = "mxio")] + extern {} } else { #[link(name = "c")] #[link(name = "m")] @@ -251,6 +265,8 @@ extern { pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int; pub fn scanf(format: *const ::c_char, ...) -> ::c_int; pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int; + pub fn getchar_unlocked() -> ::c_int; + pub fn putchar_unlocked(c: ::c_int) -> ::c_int; #[cfg_attr(target_os = "netbsd", link_name = "__socket30")] pub fn socket(domain: ::c_int, ty: ::c_int, protocol: ::c_int) -> ::c_int; @@ -415,6 +431,7 @@ extern { pub fn nanosleep(rqtp: *const timespec, rmtp: *mut timespec) -> ::c_int; pub fn tcgetpgrp(fd: ::c_int) -> pid_t; + pub fn tcsetpgrp(fd: ::c_int, pgrp: ::pid_t) -> ::c_int; pub fn ttyname(fd: ::c_int) -> *mut c_char; pub fn unlink(c: *const c_char) -> ::c_int; #[cfg_attr(all(target_os = "macos", target_arch = "x86"), @@ -643,6 +660,10 @@ extern { link_name = "mktime$UNIX2003")] #[cfg_attr(target_os = "netbsd", link_name = "__mktime50")] pub fn mktime(tm: *mut tm) -> time_t; + #[cfg_attr(target_os = "netbsd", link_name = "__time50")] + pub fn time(time: *mut time_t) -> time_t; + #[cfg_attr(target_os = "netbsd", link_name = "__locatime50")] + pub fn localtime(time: *const time_t) -> *mut tm; #[cfg_attr(target_os = "netbsd", link_name = "__mknod50")] pub fn mknod(pathname: *const ::c_char, mode: ::mode_t, @@ -720,8 +741,6 @@ extern { // TODO: get rid of this cfg(not(...)) #[cfg(not(target_os = "android"))] // " if " -- appease style checker extern { - pub fn getifaddrs(ifap: *mut *mut ifaddrs) -> ::c_int; - pub fn freeifaddrs(ifa: *mut ifaddrs); #[cfg_attr(target_os = "macos", link_name = "glob$INODE64")] #[cfg_attr(target_os = "netbsd", link_name = "__glob30")] pub fn glob(pattern: *const c_char, @@ -825,12 +844,18 @@ extern { #[cfg_attr(all(target_os = "macos", target_arch = "x86"), link_name = "nice$UNIX2003")] pub fn nice(incr: ::c_int) -> ::c_int; + + pub fn grantpt(fd: ::c_int) -> ::c_int; + pub fn posix_openpt(flags: ::c_int) -> ::c_int; + pub fn ptsname(fd: ::c_int) -> *mut ::c_char; + pub fn unlockpt(fd: ::c_int) -> ::c_int; } cfg_if! { if #[cfg(any(target_os = "linux", target_os = "android", - target_os = "emscripten"))] { + target_os = "emscripten", + target_os = "fuchsia"))] { mod notbsd; pub use self::notbsd::*; } else if #[cfg(any(target_os = "macos", @@ -845,6 +870,9 @@ cfg_if! { } else if #[cfg(target_os = "solaris")] { mod solaris; pub use self::solaris::*; + } else if #[cfg(target_os = "haiku")] { + mod haiku; + pub use self::haiku::*; } else { // Unknown target_os } diff --git a/third_party/rust/libc/src/unix/notbsd/android/mod.rs b/third_party/rust/libc/src/unix/notbsd/android/mod.rs index 43e5e5a30483..a88f8ef7dacb 100644 --- a/third_party/rust/libc/src/unix/notbsd/android/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/android/mod.rs @@ -331,6 +331,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -580,6 +581,69 @@ pub const ICANON: ::tcflag_t = 0x00000002; pub const PENDIN: ::tcflag_t = 0x00004000; pub const NOFLSH: ::tcflag_t = 0x00000080; +pub const EAI_SYSTEM: ::c_int = 11; + +pub const NETLINK_ROUTE: ::c_int = 0; +pub const NETLINK_UNUSED: ::c_int = 1; +pub const NETLINK_USERSOCK: ::c_int = 2; +pub const NETLINK_FIREWALL: ::c_int = 3; +pub const NETLINK_SOCK_DIAG: ::c_int = 4; +pub const NETLINK_NFLOG: ::c_int = 5; +pub const NETLINK_XFRM: ::c_int = 6; +pub const NETLINK_SELINUX: ::c_int = 7; +pub const NETLINK_ISCSI: ::c_int = 8; +pub const NETLINK_AUDIT: ::c_int = 9; +pub const NETLINK_FIB_LOOKUP: ::c_int = 10; +pub const NETLINK_CONNECTOR: ::c_int = 11; +pub const NETLINK_NETFILTER: ::c_int = 12; +pub const NETLINK_IP6_FW: ::c_int = 13; +pub const NETLINK_DNRTMSG: ::c_int = 14; +pub const NETLINK_KOBJECT_UEVENT: ::c_int = 15; +pub const NETLINK_GENERIC: ::c_int = 16; +pub const NETLINK_SCSITRANSPORT: ::c_int = 18; +pub const NETLINK_ECRYPTFS: ::c_int = 19; +pub const NETLINK_RDMA: ::c_int = 20; +pub const NETLINK_CRYPTO: ::c_int = 21; +pub const NETLINK_INET_DIAG: ::c_int = NETLINK_SOCK_DIAG; + +pub const MAX_LINKS: ::c_int = 32; + +pub const NLM_F_REQUEST: ::c_int = 1; +pub const NLM_F_MULTI: ::c_int = 2; +pub const NLM_F_ACK: ::c_int = 4; +pub const NLM_F_ECHO: ::c_int = 8; +pub const NLM_F_DUMP_INTR: ::c_int = 16; + +pub const NLM_F_ROOT: ::c_int = 0x100; +pub const NLM_F_MATCH: ::c_int = 0x200; +pub const NLM_F_ATOMIC: ::c_int = 0x400; +pub const NLM_F_DUMP: ::c_int = NLM_F_ROOT | NLM_F_MATCH; + +pub const NLM_F_REPLACE: ::c_int = 0x100; +pub const NLM_F_EXCL: ::c_int = 0x200; +pub const NLM_F_CREATE: ::c_int = 0x400; +pub const NLM_F_APPEND: ::c_int = 0x800; + +pub const NLMSG_NOOP: ::c_int = 0x1; +pub const NLMSG_ERROR: ::c_int = 0x2; +pub const NLMSG_DONE: ::c_int = 0x3; +pub const NLMSG_OVERRUN: ::c_int = 0x4; +pub const NLMSG_MIN_TYPE: ::c_int = 0x10; + +pub const NETLINK_ADD_MEMBERSHIP: ::c_int = 1; +pub const NETLINK_DROP_MEMBERSHIP: ::c_int = 2; +pub const NETLINK_PKTINFO: ::c_int = 3; +pub const NETLINK_BROADCAST_ERROR: ::c_int = 4; +pub const NETLINK_NO_ENOBUFS: ::c_int = 5; +pub const NETLINK_RX_RING: ::c_int = 6; +pub const NETLINK_TX_RING: ::c_int = 7; + +pub const NLA_F_NESTED: ::c_int = 1 << 15; +pub const NLA_F_NET_BYTEORDER: ::c_int = 1 << 14; +pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER); + +pub const SIGEV_THREAD_ID: ::c_int = 4; + f! { pub fn sigemptyset(set: *mut sigset_t) -> ::c_int { *set = 0; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs b/third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs new file mode 100644 index 000000000000..8b9c5ca767a4 --- /dev/null +++ b/third_party/rust/libc/src/unix/notbsd/linux/mips/mips32.rs @@ -0,0 +1,281 @@ +pub type c_char = i8; +pub type c_long = i32; +pub type c_ulong = u32; +pub type clock_t = i32; +pub type time_t = i32; +pub type suseconds_t = i32; +pub type wchar_t = i32; +pub type off_t = i32; +pub type ino_t = u32; +pub type blkcnt_t = i32; +pub type blksize_t = i32; +pub type nlink_t = u32; +pub type fsblkcnt_t = ::c_ulong; +pub type fsfilcnt_t = ::c_ulong; +pub type rlim_t = c_ulong; + +s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: ::sigevent, + __next_prio: *mut aiocb, + __abs_prio: ::c_int, + __policy: ::c_int, + __error_code: ::c_int, + __return_value: ::ssize_t, + pub aio_offset: off_t, + __unused1: [::c_char; 4], + __glibc_reserved: [::c_char; 32] + } + + pub struct stat { + pub st_dev: ::c_ulong, + st_pad1: [::c_long; 3], + pub st_ino: ::ino_t, + pub st_mode: ::mode_t, + pub st_nlink: ::nlink_t, + pub st_uid: ::uid_t, + pub st_gid: ::gid_t, + pub st_rdev: ::c_ulong, + pub st_pad2: [::c_long; 2], + pub st_size: ::off_t, + st_pad3: ::c_long, + pub st_atime: ::time_t, + pub st_atime_nsec: ::c_long, + pub st_mtime: ::time_t, + pub st_mtime_nsec: ::c_long, + pub st_ctime: ::time_t, + pub st_ctime_nsec: ::c_long, + pub st_blksize: ::blksize_t, + pub st_blocks: ::blkcnt_t, + st_pad5: [::c_long; 14], + } + + pub struct stat64 { + pub st_dev: ::c_ulong, + st_pad1: [::c_long; 3], + pub st_ino: ::ino64_t, + pub st_mode: ::mode_t, + pub st_nlink: ::nlink_t, + pub st_uid: ::uid_t, + pub st_gid: ::gid_t, + pub st_rdev: ::c_ulong, + st_pad2: [::c_long; 2], + pub st_size: ::off64_t, + pub st_atime: ::time_t, + pub st_atime_nsec: ::c_long, + pub st_mtime: ::time_t, + pub st_mtime_nsec: ::c_long, + pub st_ctime: ::time_t, + pub st_ctime_nsec: ::c_long, + pub st_blksize: ::blksize_t, + st_pad3: ::c_long, + pub st_blocks: ::blkcnt64_t, + st_pad5: [::c_long; 14], + } + + pub struct pthread_attr_t { + __size: [u32; 9] + } + + pub struct sigaction { + pub sa_flags: ::c_int, + pub sa_sigaction: ::sighandler_t, + pub sa_mask: sigset_t, + _restorer: *mut ::c_void, + _resv: [::c_int; 1], + } + + pub struct stack_t { + pub ss_sp: *mut ::c_void, + pub ss_size: ::size_t, + pub ss_flags: ::c_int, + } + + pub struct sigset_t { + __val: [::c_ulong; 32], + } + + pub struct siginfo_t { + pub si_signo: ::c_int, + pub si_code: ::c_int, + pub si_errno: ::c_int, + pub _pad: [::c_int; 29], + } + + pub struct glob64_t { + pub gl_pathc: ::size_t, + pub gl_pathv: *mut *mut ::c_char, + pub gl_offs: ::size_t, + pub gl_flags: ::c_int, + + __unused1: *mut ::c_void, + __unused2: *mut ::c_void, + __unused3: *mut ::c_void, + __unused4: *mut ::c_void, + __unused5: *mut ::c_void, + } + + pub struct ipc_perm { + pub __key: ::key_t, + pub uid: ::uid_t, + pub gid: ::gid_t, + pub cuid: ::uid_t, + pub cgid: ::gid_t, + pub mode: ::c_uint, + pub __seq: ::c_ushort, + __pad1: ::c_ushort, + __unused1: ::c_ulong, + __unused2: ::c_ulong + } + + pub struct shmid_ds { + pub shm_perm: ::ipc_perm, + pub shm_segsz: ::size_t, + pub shm_atime: ::time_t, + pub shm_dtime: ::time_t, + pub shm_ctime: ::time_t, + pub shm_cpid: ::pid_t, + pub shm_lpid: ::pid_t, + pub shm_nattch: ::shmatt_t, + __unused4: ::c_ulong, + __unused5: ::c_ulong + } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + #[cfg(target_endian = "big")] + __glibc_reserved1: ::c_ulong, + pub msg_stime: ::time_t, + #[cfg(target_endian = "little")] + __glibc_reserved1: ::c_ulong, + #[cfg(target_endian = "big")] + __glibc_reserved2: ::c_ulong, + pub msg_rtime: ::time_t, + #[cfg(target_endian = "little")] + __glibc_reserved2: ::c_ulong, + #[cfg(target_endian = "big")] + __glibc_reserved3: ::c_ulong, + pub msg_ctime: ::time_t, + #[cfg(target_endian = "little")] + __glibc_reserved3: ::c_ulong, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } + + pub struct statfs { + pub f_type: ::c_long, + pub f_bsize: ::c_long, + pub f_frsize: ::c_long, + pub f_blocks: ::fsblkcnt_t, + pub f_bfree: ::fsblkcnt_t, + pub f_files: ::fsblkcnt_t, + pub f_ffree: ::fsblkcnt_t, + pub f_bavail: ::fsblkcnt_t, + pub f_fsid: ::fsid_t, + + pub f_namelen: ::c_long, + f_spare: [::c_long; 6], + } + + pub struct msghdr { + pub msg_name: *mut ::c_void, + pub msg_namelen: ::socklen_t, + pub msg_iov: *mut ::iovec, + pub msg_iovlen: ::size_t, + pub msg_control: *mut ::c_void, + pub msg_controllen: ::size_t, + pub msg_flags: ::c_int, + } + + pub struct termios { + pub c_iflag: ::tcflag_t, + pub c_oflag: ::tcflag_t, + pub c_cflag: ::tcflag_t, + pub c_lflag: ::tcflag_t, + pub c_line: ::cc_t, + pub c_cc: [::cc_t; ::NCCS], + } + + pub struct flock { + pub l_type: ::c_short, + pub l_whence: ::c_short, + pub l_start: ::off_t, + pub l_len: ::off_t, + pub l_sysid: ::c_long, + pub l_pid: ::pid_t, + pad: [::c_long; 4], + } + + pub struct sysinfo { + pub uptime: ::c_long, + pub loads: [::c_ulong; 3], + pub totalram: ::c_ulong, + pub freeram: ::c_ulong, + pub sharedram: ::c_ulong, + pub bufferram: ::c_ulong, + pub totalswap: ::c_ulong, + pub freeswap: ::c_ulong, + pub procs: ::c_ushort, + pub pad: ::c_ushort, + pub totalhigh: ::c_ulong, + pub freehigh: ::c_ulong, + pub mem_unit: ::c_uint, + pub _f: [::c_char; 8], + } + + // FIXME this is actually a union + pub struct sem_t { + #[cfg(target_pointer_width = "32")] + __size: [::c_char; 16], + #[cfg(target_pointer_width = "64")] + __size: [::c_char; 32], + __align: [::c_long; 0], + } +} + +pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; +pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24; +pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; + +pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff; + +pub const SYS_gettid: ::c_long = 4222; // Valid for O32 + +#[link(name = "util")] +extern { + pub fn sysctl(name: *mut ::c_int, + namelen: ::c_int, + oldp: *mut ::c_void, + oldlenp: *mut ::size_t, + newp: *mut ::c_void, + newlen: ::size_t) + -> ::c_int; + pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; + pub fn backtrace(buf: *mut *mut ::c_void, + sz: ::c_int) -> ::c_int; + pub fn glob64(pattern: *const ::c_char, + flags: ::c_int, + errfunc: ::dox::Option ::c_int>, + pglob: *mut glob64_t) -> ::c_int; + pub fn globfree64(pglob: *mut glob64_t); + pub fn ptrace(request: ::c_uint, ...) -> ::c_long; + pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t, + cpusetsize: ::size_t, + cpuset: *mut ::cpu_set_t) -> ::c_int; + pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t, + cpusetsize: ::size_t, + cpuset: *const ::cpu_set_t) -> ::c_int; +} diff --git a/third_party/rust/libc/src/unix/notbsd/linux/mips64.rs b/third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs similarity index 78% rename from third_party/rust/libc/src/unix/notbsd/linux/mips64.rs rename to third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs index ed1423fb1584..71dfb71d4985 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/mips64.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/mips/mips64.rs @@ -14,6 +14,22 @@ pub type time_t = i64; pub type wchar_t = i32; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: ::sigevent, + __next_prio: *mut aiocb, + __abs_prio: ::c_int, + __policy: ::c_int, + __error_code: ::c_int, + __return_value: ::ssize_t, + pub aio_offset: off_t, + __glibc_reserved: [::c_char; 32] + } + pub struct stat { pub st_dev: ::c_ulong, st_pad1: [::c_long; 2], @@ -116,6 +132,20 @@ s! { __unused5: ::c_ulong } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + pub msg_rtime: ::time_t, + pub msg_ctime: ::time_t, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_long, pub f_bsize: ::c_long, @@ -179,40 +209,9 @@ pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40; pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56; -pub const EADDRINUSE: ::c_int = 125; -pub const EADDRNOTAVAIL: ::c_int = 126; -pub const ECONNABORTED: ::c_int = 130; -pub const ECONNREFUSED: ::c_int = 146; -pub const ECONNRESET: ::c_int = 131; -pub const EDEADLK: ::c_int = 45; -pub const ENOSYS: ::c_int = 89; -pub const ENOTCONN: ::c_int = 134; -pub const ETIMEDOUT: ::c_int = 145; -pub const FIOCLEX: ::c_ulong = 0x6601; -pub const FIONBIO: ::c_ulong = 0x667e; -pub const MAP_ANON: ::c_int = 0x800; -pub const O_ACCMODE: ::c_int = 3; -pub const O_APPEND: ::c_int = 8; -pub const O_CREAT: ::c_int = 256; -pub const O_EXCL: ::c_int = 1024; -pub const O_NONBLOCK: ::c_int = 128; -pub const POSIX_FADV_DONTNEED: ::c_int = 4; -pub const POSIX_FADV_NOREUSE: ::c_int = 5; -pub const PTHREAD_STACK_MIN: ::size_t = 131072; -pub const RLIM_INFINITY: ::rlim_t = 0xffffffffffffffff; -pub const SA_ONSTACK: ::c_int = 0x08000000; -pub const SA_SIGINFO: ::c_int = 0x00000008; -pub const SIGBUS: ::c_int = 10; -pub const SIGSTKSZ: ::size_t = 0x2000; -pub const SIG_SETMASK: ::c_int = 3; -pub const SOCK_DGRAM: ::c_int = 1; -pub const SOCK_STREAM: ::c_int = 2; -pub const SOL_SOCKET: ::c_int = 0xffff; -pub const SO_BROADCAST: ::c_int = 32; -pub const SO_ERROR: ::c_int = 4103; -pub const SO_RCVTIMEO: ::c_int = 4102; -pub const SO_REUSEADDR: ::c_int = 4; -pub const SO_SNDTIMEO: ::c_int = 4101; +pub const RLIM_INFINITY: ::rlim_t = 0xffff_ffff_ffff_ffff; + +pub const SYS_gettid: ::c_long = 5178; // Valid for n64 #[link(name = "util")] extern { diff --git a/third_party/rust/libc/src/unix/notbsd/linux/mips.rs b/third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs similarity index 67% rename from third_party/rust/libc/src/unix/notbsd/linux/mips.rs rename to third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs index 1f6b2aac10df..7952e3a40d70 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/mips.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/mips/mod.rs @@ -1,205 +1,3 @@ -pub type c_char = i8; -pub type c_long = i32; -pub type c_ulong = u32; -pub type clock_t = i32; -pub type time_t = i32; -pub type suseconds_t = i32; -pub type wchar_t = i32; -pub type off_t = i32; -pub type ino_t = u32; -pub type blkcnt_t = i32; -pub type blksize_t = i32; -pub type nlink_t = u32; -pub type fsblkcnt_t = ::c_ulong; -pub type fsfilcnt_t = ::c_ulong; -pub type rlim_t = c_ulong; - -s! { - pub struct stat { - pub st_dev: ::c_ulong, - st_pad1: [::c_long; 3], - pub st_ino: ::ino_t, - pub st_mode: ::mode_t, - pub st_nlink: ::nlink_t, - pub st_uid: ::uid_t, - pub st_gid: ::gid_t, - pub st_rdev: ::c_ulong, - pub st_pad2: [::c_long; 2], - pub st_size: ::off_t, - st_pad3: ::c_long, - pub st_atime: ::time_t, - pub st_atime_nsec: ::c_long, - pub st_mtime: ::time_t, - pub st_mtime_nsec: ::c_long, - pub st_ctime: ::time_t, - pub st_ctime_nsec: ::c_long, - pub st_blksize: ::blksize_t, - pub st_blocks: ::blkcnt_t, - st_pad5: [::c_long; 14], - } - - pub struct stat64 { - pub st_dev: ::c_ulong, - st_pad1: [::c_long; 3], - pub st_ino: ::ino64_t, - pub st_mode: ::mode_t, - pub st_nlink: ::nlink_t, - pub st_uid: ::uid_t, - pub st_gid: ::gid_t, - pub st_rdev: ::c_ulong, - st_pad2: [::c_long; 2], - pub st_size: ::off64_t, - pub st_atime: ::time_t, - pub st_atime_nsec: ::c_long, - pub st_mtime: ::time_t, - pub st_mtime_nsec: ::c_long, - pub st_ctime: ::time_t, - pub st_ctime_nsec: ::c_long, - pub st_blksize: ::blksize_t, - st_pad3: ::c_long, - pub st_blocks: ::blkcnt64_t, - st_pad5: [::c_long; 14], - } - - pub struct pthread_attr_t { - __size: [u32; 9] - } - - pub struct sigaction { - pub sa_flags: ::c_int, - pub sa_sigaction: ::sighandler_t, - pub sa_mask: sigset_t, - _restorer: *mut ::c_void, - _resv: [::c_int; 1], - } - - pub struct stack_t { - pub ss_sp: *mut ::c_void, - pub ss_size: ::size_t, - pub ss_flags: ::c_int, - } - - pub struct sigset_t { - __val: [::c_ulong; 32], - } - - pub struct siginfo_t { - pub si_signo: ::c_int, - pub si_code: ::c_int, - pub si_errno: ::c_int, - pub _pad: [::c_int; 29], - } - - pub struct glob64_t { - pub gl_pathc: ::size_t, - pub gl_pathv: *mut *mut ::c_char, - pub gl_offs: ::size_t, - pub gl_flags: ::c_int, - - __unused1: *mut ::c_void, - __unused2: *mut ::c_void, - __unused3: *mut ::c_void, - __unused4: *mut ::c_void, - __unused5: *mut ::c_void, - } - - pub struct ipc_perm { - pub __key: ::key_t, - pub uid: ::uid_t, - pub gid: ::gid_t, - pub cuid: ::uid_t, - pub cgid: ::gid_t, - pub mode: ::c_uint, - pub __seq: ::c_ushort, - __pad1: ::c_ushort, - __unused1: ::c_ulong, - __unused2: ::c_ulong - } - - pub struct shmid_ds { - pub shm_perm: ::ipc_perm, - pub shm_segsz: ::size_t, - pub shm_atime: ::time_t, - pub shm_dtime: ::time_t, - pub shm_ctime: ::time_t, - pub shm_cpid: ::pid_t, - pub shm_lpid: ::pid_t, - pub shm_nattch: ::shmatt_t, - __unused4: ::c_ulong, - __unused5: ::c_ulong - } - - pub struct statfs { - pub f_type: ::c_long, - pub f_bsize: ::c_long, - pub f_frsize: ::c_long, - pub f_blocks: ::fsblkcnt_t, - pub f_bfree: ::fsblkcnt_t, - pub f_files: ::fsblkcnt_t, - pub f_ffree: ::fsblkcnt_t, - pub f_bavail: ::fsblkcnt_t, - pub f_fsid: ::fsid_t, - - pub f_namelen: ::c_long, - f_spare: [::c_long; 6], - } - - pub struct msghdr { - pub msg_name: *mut ::c_void, - pub msg_namelen: ::socklen_t, - pub msg_iov: *mut ::iovec, - pub msg_iovlen: ::size_t, - pub msg_control: *mut ::c_void, - pub msg_controllen: ::size_t, - pub msg_flags: ::c_int, - } - - pub struct termios { - pub c_iflag: ::tcflag_t, - pub c_oflag: ::tcflag_t, - pub c_cflag: ::tcflag_t, - pub c_lflag: ::tcflag_t, - pub c_line: ::cc_t, - pub c_cc: [::cc_t; ::NCCS], - } - - pub struct flock { - pub l_type: ::c_short, - pub l_whence: ::c_short, - pub l_start: ::off_t, - pub l_len: ::off_t, - pub l_sysid: ::c_long, - pub l_pid: ::pid_t, - pad: [::c_long; 4], - } - - pub struct sysinfo { - pub uptime: ::c_long, - pub loads: [::c_ulong; 3], - pub totalram: ::c_ulong, - pub freeram: ::c_ulong, - pub sharedram: ::c_ulong, - pub bufferram: ::c_ulong, - pub totalswap: ::c_ulong, - pub freeswap: ::c_ulong, - pub procs: ::c_ushort, - pub pad: ::c_ushort, - pub totalhigh: ::c_ulong, - pub freehigh: ::c_ulong, - pub mem_unit: ::c_uint, - pub _f: [::c_char; 8], - } - - // FIXME this is actually a union - pub struct sem_t { - #[cfg(target_pointer_width = "32")] - __size: [::c_char; 16], - #[cfg(target_pointer_width = "64")] - __size: [::c_char; 32], - __align: [::c_long; 0], - } -} - pub const BUFSIZ: ::c_uint = 8192; pub const TMP_MAX: ::c_uint = 238328; pub const FOPEN_MAX: ::c_uint = 16; @@ -207,12 +5,10 @@ pub const POSIX_FADV_DONTNEED: ::c_int = 4; pub const POSIX_FADV_NOREUSE: ::c_int = 5; pub const POSIX_MADV_DONTNEED: ::c_int = 4; pub const _SC_2_C_VERSION: ::c_int = 96; -pub const RUSAGE_THREAD: ::c_int = 1; pub const O_ACCMODE: ::c_int = 3; pub const O_DIRECT: ::c_int = 0x8000; pub const O_DIRECTORY: ::c_int = 0x10000; pub const O_NOFOLLOW: ::c_int = 0x20000; -pub const RUSAGE_CHILDREN: ::c_int = -1; pub const ST_RELATIME: ::c_ulong = 4096; pub const NI_MAXHOST: ::socklen_t = 1025; @@ -222,7 +18,6 @@ pub const RLIMIT_RSS: ::c_int = 7; pub const RLIMIT_NPROC: ::c_int = 8; pub const RLIMIT_MEMLOCK: ::c_int = 9; pub const RLIMIT_NLIMITS: ::c_int = 16; -pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff; pub const O_APPEND: ::c_int = 8; pub const O_CREAT: ::c_int = 256; @@ -284,6 +79,7 @@ pub const ENOPROTOOPT: ::c_int = 99; pub const EPROTONOSUPPORT: ::c_int = 120; pub const ESOCKTNOSUPPORT: ::c_int = 121; pub const EOPNOTSUPP: ::c_int = 122; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 123; pub const EAFNOSUPPORT: ::c_int = 124; pub const EADDRINUSE: ::c_int = 125; @@ -381,11 +177,6 @@ pub const SO_RCVTIMEO: ::c_int = 4102; pub const SO_SNDTIMEO: ::c_int = 4101; pub const SO_ACCEPTCONN: ::c_int = 4105; -pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4; -pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24; -pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32; -pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4; - pub const FIOCLEX: ::c_ulong = 0x6601; pub const FIONBIO: ::c_ulong = 0x667e; @@ -551,8 +342,6 @@ pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4; pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2; pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543; -pub const SYS_gettid: ::c_long = 4222; // Valid for O32 - pub const MCL_CURRENT: ::c_int = 0x0001; pub const MCL_FUTURE: ::c_int = 0x0002; @@ -598,30 +387,14 @@ pub const ICANON: ::tcflag_t = 0x00000002; pub const PENDIN: ::tcflag_t = 0x00004000; pub const NOFLSH: ::tcflag_t = 0x00000080; -#[link(name = "util")] -extern { - pub fn sysctl(name: *mut ::c_int, - namelen: ::c_int, - oldp: *mut ::c_void, - oldlenp: *mut ::size_t, - newp: *mut ::c_void, - newlen: ::size_t) - -> ::c_int; - pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; - pub fn backtrace(buf: *mut *mut ::c_void, - sz: ::c_int) -> ::c_int; - pub fn glob64(pattern: *const ::c_char, - flags: ::c_int, - errfunc: ::dox::Option ::c_int>, - pglob: *mut glob64_t) -> ::c_int; - pub fn globfree64(pglob: *mut glob64_t); - pub fn ptrace(request: ::c_uint, ...) -> ::c_long; - pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t, - cpusetsize: ::size_t, - cpuset: *mut ::cpu_set_t) -> ::c_int; - pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t, - cpusetsize: ::size_t, - cpuset: *const ::cpu_set_t) -> ::c_int; +cfg_if! { + if #[cfg(target_arch = "mips")] { + mod mips32; + pub use self::mips32::*; + } else if #[cfg(target_arch = "mips64")] { + mod mips64; + pub use self::mips64::*; + } else { + // Unknown target_arch + } } diff --git a/third_party/rust/libc/src/unix/notbsd/linux/mod.rs b/third_party/rust/libc/src/unix/notbsd/linux/mod.rs index fbe0e6737931..08efed2ea0b5 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/mod.rs @@ -11,9 +11,10 @@ pub type ino64_t = u64; pub type off64_t = i64; pub type blkcnt64_t = i64; pub type rlim64_t = u64; -pub type key_t = ::c_int; pub type shmatt_t = ::c_ulong; pub type mqd_t = ::c_int; +pub type msgqnum_t = ::c_ulong; +pub type msglen_t = ::c_ulong; pub type nfds_t = ::c_ulong; pub type nl_item = ::c_int; @@ -65,21 +66,21 @@ s! { } pub struct pthread_mutex_t { - #[cfg(any(target_arch = "mips", target_arch = "mipsel", - target_arch = "arm", target_arch = "powerpc"))] + #[cfg(any(target_arch = "mips", target_arch = "arm", + target_arch = "powerpc"))] __align: [::c_long; 0], - #[cfg(not(any(target_arch = "mips", target_arch = "mipsel", - target_arch = "arm", target_arch = "powerpc")))] + #[cfg(not(any(target_arch = "mips", target_arch = "arm", + target_arch = "powerpc")))] __align: [::c_longlong; 0], size: [u8; __SIZEOF_PTHREAD_MUTEX_T], } pub struct pthread_rwlock_t { - #[cfg(any(target_arch = "mips", target_arch = "mipsel", - target_arch = "arm", target_arch = "powerpc"))] + #[cfg(any(target_arch = "mips", target_arch = "arm", + target_arch = "powerpc"))] __align: [::c_long; 0], - #[cfg(not(any(target_arch = "mips", target_arch = "mipsel", - target_arch = "arm", target_arch = "powerpc")))] + #[cfg(not(any(target_arch = "mips", target_arch = "arm", + target_arch = "powerpc")))] __align: [::c_longlong; 0], size: [u8; __SIZEOF_PTHREAD_RWLOCK_T], } @@ -117,6 +118,18 @@ s! { pub pw_shell: *mut ::c_char, } + pub struct spwd { + pub sp_namp: *mut ::c_char, + pub sp_pwdp: *mut ::c_char, + pub sp_lstchg: ::c_long, + pub sp_min: ::c_long, + pub sp_max: ::c_long, + pub sp_warn: ::c_long, + pub sp_inact: ::c_long, + pub sp_expire: ::c_long, + pub sp_flag: ::c_ulong, + } + pub struct statvfs { pub f_bsize: ::c_ulong, pub f_frsize: ::c_ulong, @@ -126,9 +139,12 @@ s! { pub f_files: ::fsfilcnt_t, pub f_ffree: ::fsfilcnt_t, pub f_favail: ::fsfilcnt_t, + #[cfg(target_endian = "little")] pub f_fsid: ::c_ulong, #[cfg(target_pointer_width = "32")] - pub __f_unused: ::c_int, + __f_unused: ::c_int, + #[cfg(target_endian = "big")] + pub f_fsid: ::c_ulong, pub f_flag: ::c_ulong, pub f_namemax: ::c_ulong, __f_spare: [::c_int; 6], @@ -190,6 +206,17 @@ s! { pub if_name: *mut ::c_char, } + // System V IPC + pub struct msginfo { + pub msgpool: ::c_int, + pub msgmap: ::c_int, + pub msgmax: ::c_int, + pub msgmnb: ::c_int, + pub msgmni: ::c_int, + pub msgssz: ::c_int, + pub msgtql: ::c_int, + pub msgseg: ::c_ushort, + } } pub const ABDAY_1: ::nl_item = 0x20000; @@ -221,6 +248,8 @@ pub const ABMON_10: ::nl_item = 0x20017; pub const ABMON_11: ::nl_item = 0x20018; pub const ABMON_12: ::nl_item = 0x20019; +pub const CLONE_NEWCGROUP: ::c_int = 0x02000000; + pub const MON_1: ::nl_item = 0x2001A; pub const MON_2: ::nl_item = 0x2001B; pub const MON_3: ::nl_item = 0x2001C; @@ -252,6 +281,9 @@ pub const CODESET: ::nl_item = 14; pub const CRNCYSTR: ::nl_item = 0x4000F; +pub const RUSAGE_THREAD: ::c_int = 1; +pub const RUSAGE_CHILDREN: ::c_int = -1; + pub const RADIXCHAR: ::nl_item = 0x10000; pub const THOUSEP: ::nl_item = 0x10001; @@ -430,6 +462,9 @@ pub const SCHED_RR: ::c_int = 2; pub const SCHED_BATCH: ::c_int = 3; pub const SCHED_IDLE: ::c_int = 5; +// System V IPC +pub const IPC_PRIVATE: ::key_t = 0; + pub const IPC_CREAT: ::c_int = 0o1000; pub const IPC_EXCL: ::c_int = 0o2000; pub const IPC_NOWAIT: ::c_int = 0o4000; @@ -438,6 +473,12 @@ pub const IPC_RMID: ::c_int = 0; pub const IPC_SET: ::c_int = 1; pub const IPC_STAT: ::c_int = 2; pub const IPC_INFO: ::c_int = 3; +pub const MSG_STAT: ::c_int = 11; +pub const MSG_INFO: ::c_int = 12; + +pub const MSG_NOERROR: ::c_int = 0o10000; +pub const MSG_EXCEPT: ::c_int = 0o20000; +pub const MSG_COPY: ::c_int = 0o40000; pub const SHM_R: ::c_int = 0o400; pub const SHM_W: ::c_int = 0o200; @@ -465,8 +506,6 @@ pub const EFD_SEMAPHORE: ::c_int = 0x1; pub const NCCS: usize = 32; -pub const AF_NETLINK: ::c_int = 16; - pub const LOG_NFACILITIES: ::c_int = 24; pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t; @@ -483,6 +522,17 @@ pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1; pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2; pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4; +pub const EAI_SYSTEM: ::c_int = -11; + +pub const AIO_CANCELED: ::c_int = 0; +pub const AIO_NOTCANCELED: ::c_int = 1; +pub const AIO_ALLDONE: ::c_int = 2; +pub const LIO_READ: ::c_int = 0; +pub const LIO_WRITE: ::c_int = 1; +pub const LIO_NOP: ::c_int = 2; +pub const LIO_WAIT: ::c_int = 0; +pub const LIO_NOWAIT: ::c_int = 1; + f! { pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () { for slot in cpuset.bits.iter_mut() { @@ -516,12 +566,30 @@ f! { } extern { + pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn aio_error(aiocbp: *const aiocb) -> ::c_int; + pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t; + pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int, + timeout: *const ::timespec) -> ::c_int; + pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int; + pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb, + nitems: ::c_int, sevp: *mut ::sigevent) -> ::c_int; + pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int; pub fn setpwent(); pub fn getpwent() -> *mut passwd; + pub fn setspent(); + pub fn endspent(); + pub fn getspent() -> *mut spwd; + pub fn getspnam(__name: *const ::c_char) -> *mut spwd; + pub fn shm_open(name: *const c_char, oflag: ::c_int, mode: mode_t) -> ::c_int; + + // System V IPC pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int; pub fn shmat(shmid: ::c_int, shmaddr: *const ::c_void, @@ -530,6 +598,14 @@ extern { pub fn shmctl(shmid: ::c_int, cmd: ::c_int, buf: *mut ::shmid_ds) -> ::c_int; + pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t; + pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int; + pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int; + pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t, + msgtyp: ::c_long, msgflg: ::c_int) -> ::ssize_t; + pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t, + msgflg: ::c_int) -> ::c_int; + pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int; pub fn __errno_location() -> *mut ::c_int; @@ -658,6 +734,10 @@ extern { riovcnt: ::c_ulong, flags: ::c_ulong) -> isize; pub fn reboot(how_to: ::c_int) -> ::c_int; + pub fn setfsgid(gid: ::gid_t) -> ::c_int; + pub fn setfsuid(uid: ::uid_t) -> ::c_int; + pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int; + pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int; // Not available now on Android pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char, @@ -666,22 +746,23 @@ extern { pub fn if_freenameindex(ptr: *mut if_nameindex); pub fn sync_file_range(fd: ::c_int, offset: ::off64_t, nbytes: ::off64_t, flags: ::c_uint) -> ::c_int; + pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; + pub fn freeifaddrs(ifa: *mut ::ifaddrs); } cfg_if! { if #[cfg(any(target_env = "musl", + target_os = "fuchsia", target_os = "emscripten"))] { mod musl; pub use self::musl::*; - } else if #[cfg(any(target_arch = "mips", target_arch = "mipsel"))] { + } else if #[cfg(any(target_arch = "mips", + target_arch = "mips64"))] { mod mips; pub use self::mips::*; } else if #[cfg(any(target_arch = "s390x"))] { mod s390x; pub use self::s390x::*; - } else if #[cfg(any(target_arch = "mips64"))] { - mod mips64; - pub use self::mips64::*; } else { mod other; pub use self::other::*; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs index 2f27e31136a8..540c1abb5f69 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/arm.rs @@ -68,6 +68,23 @@ s! { __pad2: ::c_ulong, } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __unused1: ::c_int, + pub msg_rtime: ::time_t, + __unused2: ::c_int, + pub msg_ctime: ::time_t, + __unused3: ::c_int, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __pad1: ::c_ulong, + __pad2: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_ulong, pub f_bsize: ::c_ulong, @@ -179,6 +196,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -315,7 +333,5 @@ pub const TIOCCONS: ::c_int = 0x541D; pub const SYS_gettid: ::c_long = 224; pub const SYS_perf_event_open: ::c_long = 364; -pub const POSIX_MADV_DONTNEED: ::c_int = 0; -pub const RUSAGE_CHILDREN: ::c_int = 1; pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/asmjs.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/asmjs.rs index 991196c2a048..e890a34585f9 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/asmjs.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/asmjs.rs @@ -68,6 +68,23 @@ s! { __pad2: ::c_ulong, } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __unused1: ::c_int, + pub msg_rtime: ::time_t, + __unused2: ::c_int, + pub msg_ctime: ::time_t, + __unused3: ::c_int, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __pad1: ::c_ulong, + __pad2: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_ulong, pub f_bsize: ::c_ulong, @@ -179,6 +196,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -314,7 +332,5 @@ pub const TIOCCONS: ::c_int = 0x541D; pub const SYS_gettid: ::c_long = 224; // Valid for arm (32-bit) and x86 (32-bit) -pub const POSIX_MADV_DONTNEED: ::c_int = 0; -pub const RUSAGE_CHILDREN: ::c_int = 1; pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs index 88542c45b4fd..363d7c5d66f4 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/mips.rs @@ -67,6 +67,32 @@ s! { __pad2: ::c_ulong, } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + #[cfg(target_endian = "big")] + __unused1: ::c_int, + pub msg_stime: ::time_t, + #[cfg(target_endian = "little")] + __unused1: ::c_int, + #[cfg(target_endian = "big")] + __unused2: ::c_int, + pub msg_rtime: ::time_t, + #[cfg(target_endian = "little")] + __unused2: ::c_int, + #[cfg(target_endian = "big")] + __unused3: ::c_int, + pub msg_ctime: ::time_t, + #[cfg(target_endian = "little")] + __unused3: ::c_int, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __pad1: ::c_ulong, + __pad2: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_ulong, pub f_bsize: ::c_ulong, @@ -172,6 +198,7 @@ pub const ENOPROTOOPT: ::c_int = 99; pub const EPROTONOSUPPORT: ::c_int = 120; pub const ESOCKTNOSUPPORT: ::c_int = 121; pub const EOPNOTSUPP: ::c_int = 122; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 123; pub const EAFNOSUPPORT: ::c_int = 124; pub const EADDRINUSE: ::c_int = 125; @@ -314,7 +341,5 @@ pub const TIOCCONS: ::c_int = 0x80047478; pub const SYS_gettid: ::c_long = 4222; // Valid for O32 pub const SYS_perf_event_open: ::c_long = 4333; // Valid for O32 -pub const POSIX_MADV_DONTNEED: ::c_int = 4; -pub const RUSAGE_CHILDREN: ::c_int = !0; pub const POLLWRNORM: ::c_short = 0x4; pub const POLLWRBAND: ::c_short = 0x100; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs index 593c37a26162..dede8ffc5f9f 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/b32/x86.rs @@ -68,6 +68,23 @@ s! { __pad2: ::c_ulong, } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __unused1: ::c_int, + pub msg_rtime: ::time_t, + __unused2: ::c_int, + pub msg_ctime: ::time_t, + __unused3: ::c_int, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __pad1: ::c_ulong, + __pad2: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_ulong, pub f_bsize: ::c_ulong, @@ -192,6 +209,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -329,7 +347,5 @@ pub const TIOCCONS: ::c_int = 0x541D; pub const SYS_gettid: ::c_long = 224; pub const SYS_perf_event_open: ::c_long = 336; -pub const POSIX_MADV_DONTNEED: ::c_int = 0; -pub const RUSAGE_CHILDREN: ::c_int = 1; pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs index 227bffa1368c..9c5d43419d5a 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/b64/mod.rs @@ -73,6 +73,20 @@ s! { __pad2: ::c_ulong, } + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + pub msg_rtime: ::time_t, + pub msg_ctime: ::time_t, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __pad1: ::c_ulong, + __pad2: ::c_ulong, + } + pub struct statfs { pub f_type: ::c_ulong, pub f_bsize: ::c_ulong, @@ -204,6 +218,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -337,8 +352,6 @@ pub const TIOCMSET: ::c_int = 0x5418; pub const FIONREAD: ::c_int = 0x541B; pub const TIOCCONS: ::c_int = 0x541D; -pub const POSIX_MADV_DONTNEED: ::c_int = 0; -pub const RUSAGE_CHILDREN: ::c_int = 1; pub const POLLWRNORM: ::c_short = 0x100; pub const POLLWRBAND: ::c_short = 0x200; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs b/third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs index a1672f7ec0d0..e80850608e45 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/musl/mod.rs @@ -11,6 +11,26 @@ pub type fsfilcnt_t = ::c_ulonglong; pub type rlim_t = ::c_ulonglong; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: ::sigevent, + __td: *mut ::c_void, + __lock: [::c_int; 2], + __err: ::c_int, + __ret: ::ssize_t, + pub aio_offset: off_t, + __next: *mut ::c_void, + __prev: *mut ::c_void, + #[cfg(target_pointer_width = "32")] + __dummy4: [::c_char; 24], + #[cfg(target_pointer_width = "64")] + __dummy4: [::c_char; 16], + } + pub struct sigaction { pub sa_sigaction: ::sighandler_t, pub sa_mask: ::sigset_t, @@ -77,6 +97,8 @@ pub const PTHREAD_STACK_MIN: ::size_t = 2048; pub const POSIX_FADV_DONTNEED: ::c_int = 4; pub const POSIX_FADV_NOREUSE: ::c_int = 5; +pub const POSIX_MADV_DONTNEED: ::c_int = 4; + pub const RLIM_INFINITY: ::rlim_t = !0; pub const RLIMIT_RTTIME: ::c_int = 15; pub const RLIMIT_NLIMITS: ::c_int = 16; @@ -229,7 +251,7 @@ extern { } cfg_if! { - if #[cfg(any(target_arch = "x86_64"))] { + if #[cfg(any(target_arch = "x86_64", target_arch = "aarch64"))] { mod b64; pub use self::b64::*; } else if #[cfg(any(target_arch = "x86", diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs index f3871f3c2ffb..2c6fbcd6e3f2 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/arm.rs @@ -53,6 +53,23 @@ s! { __unused4: ::c_ulong, __unused5: ::c_ulong } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __glibc_reserved1: ::c_ulong, + pub msg_rtime: ::time_t, + __glibc_reserved2: ::c_ulong, + pub msg_ctime: ::time_t, + __glibc_reserved3: ::c_ulong, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } } pub const O_DIRECT: ::c_int = 0x10000; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs index ef21eda0ce5c..3125e9f337dd 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/powerpc.rs @@ -53,6 +53,23 @@ s! { __glibc_reserved5: ::c_ulong, __glibc_reserved6: ::c_ulong, } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + __glibc_reserved1: ::c_uint, + pub msg_stime: ::time_t, + __glibc_reserved2: ::c_uint, + pub msg_rtime: ::time_t, + __glibc_reserved3: ::c_uint, + pub msg_ctime: ::time_t, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } } pub const O_DIRECT: ::c_int = 0x20000; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs index 6f8587a89363..86abd1eb1035 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b32/x86.rs @@ -87,6 +87,23 @@ s! { __unused4: ::c_ulong, __unused5: ::c_ulong } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + __glibc_reserved1: ::c_ulong, + pub msg_rtime: ::time_t, + __glibc_reserved2: ::c_ulong, + pub msg_ctime: ::time_t, + __glibc_reserved3: ::c_ulong, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } } pub const O_DIRECT: ::c_int = 0x4000; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs index d9f940bc399a..1da95b10203d 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/aarch64.rs @@ -60,10 +60,9 @@ s! { pub gid: ::gid_t, pub cuid: ::uid_t, pub cgid: ::gid_t, - pub mode: ::c_ushort, - __pad1: ::c_ushort, + pub mode: ::c_uint, pub __seq: ::c_ushort, - __pad2: ::c_ushort, + __pad1: ::c_ushort, __unused1: ::c_ulong, __unused2: ::c_ulong } @@ -110,7 +109,7 @@ pub const SYS_perf_event_open: ::c_long = 241; pub const MCL_CURRENT: ::c_int = 0x0001; pub const MCL_FUTURE: ::c_int = 0x0002; -pub const SIGSTKSZ: ::size_t = 8192; +pub const SIGSTKSZ: ::size_t = 16384; pub const CBAUD: ::tcflag_t = 0o0010017; pub const TAB1: ::c_int = 0x00000800; pub const TAB2: ::c_int = 0x00001000; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/mod.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/mod.rs index ccf99881f76c..352dba843d2b 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/mod.rs @@ -31,6 +31,20 @@ s! { pub mem_unit: ::c_uint, pub _f: [::c_char; 0], } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + pub msg_rtime: ::time_t, + pub msg_ctime: ::time_t, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } } pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs index f19a9ffe4adc..69295e6d5ded 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/b64/x86_64.rs @@ -149,6 +149,17 @@ pub const PTRACE_GETFPXREGS: ::c_uint = 18; pub const PTRACE_SETFPXREGS: ::c_uint = 19; pub const PTRACE_GETREGS: ::c_uint = 12; pub const PTRACE_SETREGS: ::c_uint = 13; +pub const PTRACE_O_EXITKILL: ::c_uint = 1048576; +pub const PTRACE_O_TRACECLONE: ::c_uint = 8; +pub const PTRACE_O_TRACEEXEC: ::c_uint = 16; +pub const PTRACE_O_TRACEEXIT: ::c_uint = 64; +pub const PTRACE_O_TRACEFORK: ::c_uint = 2; +pub const PTRACE_O_TRACESYSGOOD: ::c_uint = 1; +pub const PTRACE_O_TRACEVFORK: ::c_uint = 4; +pub const PTRACE_O_TRACEVFORKDONE: ::c_uint = 32; +pub const PTRACE_O_TRACESECCOMP: ::c_uint = 128; +pub const PTRACE_O_SUSPEND_SECCOMP: ::c_uint = 2097152; +pub const PTRACE_PEEKSIGINFO_SHARED: ::c_uint = 1; pub const SYS_gettid: ::c_long = 186; pub const SYS_perf_event_open: ::c_long = 298; diff --git a/third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs b/third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs index 39bd9574c092..774040803f56 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/other/mod.rs @@ -4,6 +4,24 @@ pub type rlim_t = c_ulong; pub type __priority_which_t = ::c_uint; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: ::sigevent, + __next_prio: *mut aiocb, + __abs_prio: ::c_int, + __policy: ::c_int, + __error_code: ::c_int, + __return_value: ::ssize_t, + pub aio_offset: off_t, + #[cfg(target_pointer_width = "32")] + __unused1: [::c_char; 4], + __glibc_reserved: [::c_char; 32] + } + pub struct __exit_status { pub e_termination: ::c_short, pub e_exit: ::c_short, @@ -247,6 +265,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const EADDRINUSE: ::c_int = 98; @@ -345,6 +364,8 @@ pub const SIG_SETMASK: ::c_int = 2; pub const SIG_BLOCK: ::c_int = 0x000000; pub const SIG_UNBLOCK: ::c_int = 0x01; +pub const SIGEV_THREAD_ID: ::c_int = 4; + pub const POLLRDNORM: ::c_short = 0x040; pub const POLLWRNORM: ::c_short = 0x100; pub const POLLRDBAND: ::c_short = 0x080; @@ -360,11 +381,9 @@ pub const POSIX_FADV_DONTNEED: ::c_int = 4; pub const POSIX_FADV_NOREUSE: ::c_int = 5; pub const POSIX_MADV_DONTNEED: ::c_int = 4; pub const _SC_2_C_VERSION: ::c_int = 96; -pub const RUSAGE_THREAD: ::c_int = 1; pub const O_ACCMODE: ::c_int = 3; pub const O_ASYNC: ::c_int = 0x2000; pub const O_NDELAY: ::c_int = 0x800; -pub const RUSAGE_CHILDREN: ::c_int = -1; pub const ST_RELATIME: ::c_ulong = 4096; pub const NI_MAXHOST: ::socklen_t = 1025; @@ -485,6 +504,69 @@ pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4; pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2; pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543; +pub const NETLINK_ROUTE: ::c_int = 0; +pub const NETLINK_UNUSED: ::c_int = 1; +pub const NETLINK_USERSOCK: ::c_int = 2; +pub const NETLINK_FIREWALL: ::c_int = 3; +pub const NETLINK_SOCK_DIAG: ::c_int = 4; +pub const NETLINK_NFLOG: ::c_int = 5; +pub const NETLINK_XFRM: ::c_int = 6; +pub const NETLINK_SELINUX: ::c_int = 7; +pub const NETLINK_ISCSI: ::c_int = 8; +pub const NETLINK_AUDIT: ::c_int = 9; +pub const NETLINK_FIB_LOOKUP: ::c_int = 10; +pub const NETLINK_CONNECTOR: ::c_int = 11; +pub const NETLINK_NETFILTER: ::c_int = 12; +pub const NETLINK_IP6_FW: ::c_int = 13; +pub const NETLINK_DNRTMSG: ::c_int = 14; +pub const NETLINK_KOBJECT_UEVENT: ::c_int = 15; +pub const NETLINK_GENERIC: ::c_int = 16; +pub const NETLINK_SCSITRANSPORT: ::c_int = 18; +pub const NETLINK_ECRYPTFS: ::c_int = 19; +pub const NETLINK_RDMA: ::c_int = 20; +pub const NETLINK_CRYPTO: ::c_int = 21; +pub const NETLINK_INET_DIAG: ::c_int = NETLINK_SOCK_DIAG; + +pub const MAX_LINKS: ::c_int = 32; + +pub const NLM_F_REQUEST: ::c_int = 1; +pub const NLM_F_MULTI: ::c_int = 2; +pub const NLM_F_ACK: ::c_int = 4; +pub const NLM_F_ECHO: ::c_int = 8; +pub const NLM_F_DUMP_INTR: ::c_int = 16; +pub const NLM_F_DUMP_FILTERED: ::c_int = 32; + +pub const NLM_F_ROOT: ::c_int = 0x100; +pub const NLM_F_MATCH: ::c_int = 0x200; +pub const NLM_F_ATOMIC: ::c_int = 0x400; +pub const NLM_F_DUMP: ::c_int = NLM_F_ROOT | NLM_F_MATCH; + +pub const NLM_F_REPLACE: ::c_int = 0x100; +pub const NLM_F_EXCL: ::c_int = 0x200; +pub const NLM_F_CREATE: ::c_int = 0x400; +pub const NLM_F_APPEND: ::c_int = 0x800; + +pub const NLMSG_NOOP: ::c_int = 0x1; +pub const NLMSG_ERROR: ::c_int = 0x2; +pub const NLMSG_DONE: ::c_int = 0x3; +pub const NLMSG_OVERRUN: ::c_int = 0x4; +pub const NLMSG_MIN_TYPE: ::c_int = 0x10; + +pub const NETLINK_ADD_MEMBERSHIP: ::c_int = 1; +pub const NETLINK_DROP_MEMBERSHIP: ::c_int = 2; +pub const NETLINK_PKTINFO: ::c_int = 3; +pub const NETLINK_BROADCAST_ERROR: ::c_int = 4; +pub const NETLINK_NO_ENOBUFS: ::c_int = 5; +pub const NETLINK_RX_RING: ::c_int = 6; +pub const NETLINK_TX_RING: ::c_int = 7; +pub const NETLINK_LISTEN_ALL_NSID: ::c_int = 8; +pub const NETLINK_LIST_MEMBERSHIPS: ::c_int = 9; +pub const NETLINK_CAP_ACK: ::c_int = 10; + +pub const NLA_F_NESTED: ::c_int = 1 << 15; +pub const NLA_F_NET_BYTEORDER: ::c_int = 1 << 14; +pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER); + cfg_if! { if #[cfg(any(target_arch = "arm", target_arch = "x86", target_arch = "x86_64"))] { @@ -502,6 +584,7 @@ extern { pub fn pututxline(ut: *const utmpx) -> *mut utmpx; pub fn setutxent(); pub fn endutxent(); + pub fn getpt() -> ::c_int; } #[link(name = "util")] diff --git a/third_party/rust/libc/src/unix/notbsd/linux/s390x.rs b/third_party/rust/libc/src/unix/notbsd/linux/s390x.rs index d877425c0242..76e9aefe81eb 100644 --- a/third_party/rust/libc/src/unix/notbsd/linux/s390x.rs +++ b/third_party/rust/libc/src/unix/notbsd/linux/s390x.rs @@ -18,6 +18,24 @@ pub type __fsword_t = ::c_long; pub type __priority_which_t = ::c_uint; s! { + pub struct aiocb { + pub aio_fildes: ::c_int, + pub aio_lio_opcode: ::c_int, + pub aio_reqprio: ::c_int, + pub aio_buf: *mut ::c_void, + pub aio_nbytes: ::size_t, + pub aio_sigevent: ::sigevent, + __next_prio: *mut aiocb, + __abs_prio: ::c_int, + __policy: ::c_int, + __error_code: ::c_int, + __return_value: ::ssize_t, + pub aio_offset: off_t, + #[cfg(target_pointer_width = "32")] + __unused1: [::c_char; 4], + __glibc_reserved: [::c_char; 32] + } + pub struct stat { pub st_dev: ::dev_t, pub st_ino: ::ino_t, @@ -233,6 +251,20 @@ s! { pub uc_mcontext: mcontext_t, pub uc_sigmask: ::sigset_t, } + + pub struct msqid_ds { + pub msg_perm: ::ipc_perm, + pub msg_stime: ::time_t, + pub msg_rtime: ::time_t, + pub msg_ctime: ::time_t, + __msg_cbytes: ::c_ulong, + pub msg_qnum: ::msgqnum_t, + pub msg_qbytes: ::msglen_t, + pub msg_lspid: ::pid_t, + pub msg_lrpid: ::pid_t, + __glibc_reserved4: ::c_ulong, + __glibc_reserved5: ::c_ulong, + } } pub const POSIX_FADV_DONTNEED: ::c_int = 6; @@ -375,6 +407,7 @@ pub const ENOPROTOOPT: ::c_int = 92; pub const EPROTONOSUPPORT: ::c_int = 93; pub const ESOCKTNOSUPPORT: ::c_int = 94; pub const EOPNOTSUPP: ::c_int = 95; +pub const ENOTSUP: ::c_int = EOPNOTSUPP; pub const EPFNOSUPPORT: ::c_int = 96; pub const EAFNOSUPPORT: ::c_int = 97; pub const ENETDOWN: ::c_int = 100; @@ -464,10 +497,8 @@ pub const TMP_MAX: ::c_uint = 238328; pub const FOPEN_MAX: ::c_uint = 16; pub const POSIX_MADV_DONTNEED: ::c_int = 4; pub const _SC_2_C_VERSION: ::c_int = 96; -pub const RUSAGE_THREAD: ::c_int = 1; pub const O_ASYNC: ::c_int = 0x2000; pub const O_NDELAY: ::c_int = 0x800; -pub const RUSAGE_CHILDREN: ::c_int = -1; pub const ST_RELATIME: ::c_ulong = 4096; pub const NI_MAXHOST: ::socklen_t = 1025; diff --git a/third_party/rust/libc/src/unix/notbsd/mod.rs b/third_party/rust/libc/src/unix/notbsd/mod.rs index 5f205c663efb..03a2b44ae076 100644 --- a/third_party/rust/libc/src/unix/notbsd/mod.rs +++ b/third_party/rust/libc/src/unix/notbsd/mod.rs @@ -6,6 +6,7 @@ pub type speed_t = ::c_uint; pub type tcflag_t = ::c_uint; pub type loff_t = ::c_longlong; pub type clockid_t = ::c_int; +pub type key_t = ::c_int; pub type id_t = ::c_uint; pub enum timezone {} @@ -52,7 +53,9 @@ s! { pub ai_protocol: ::c_int, pub ai_addrlen: socklen_t, - #[cfg(any(target_os = "linux", target_os = "emscripten"))] + #[cfg(any(target_os = "linux", + target_os = "emscripten", + target_os = "fuchsia"))] pub ai_addr: *mut ::sockaddr, pub ai_canonname: *mut c_char, @@ -160,6 +163,19 @@ s! { pub int_p_sign_posn: ::c_char, pub int_n_sign_posn: ::c_char, } + + pub struct sigevent { + pub sigev_value: ::sigval, + pub sigev_signo: ::c_int, + pub sigev_notify: ::c_int, + // Actually a union. We only expose sigev_notify_thread_id because it's + // the most useful member + pub sigev_notify_thread_id: ::c_int, + #[cfg(target_pointer_width = "64")] + __unused1: [::c_int; 11], + #[cfg(target_pointer_width = "32")] + __unused1: [::c_int; 12] + } } // intentionally not public, only used for fd_set @@ -434,6 +450,7 @@ pub const IFF_DYNAMIC: ::c_int = 0x8000; pub const AF_UNIX: ::c_int = 1; pub const AF_INET: ::c_int = 2; pub const AF_INET6: ::c_int = 10; +pub const AF_NETLINK: ::c_int = 16; pub const SOCK_RAW: ::c_int = 3; pub const IPPROTO_TCP: ::c_int = 6; pub const IPPROTO_IP: ::c_int = 0; @@ -467,6 +484,8 @@ pub const IPV6_V6ONLY: ::c_int = 26; pub const SO_DEBUG: ::c_int = 1; +pub const MSG_NOSIGNAL: ::c_int = 0x4000; + pub const SHUT_RD: ::c_int = 0; pub const SHUT_WR: ::c_int = 1; pub const SHUT_RDWR: ::c_int = 2; @@ -626,6 +645,10 @@ pub const PIPE_BUF: usize = 4096; pub const SI_LOAD_SHIFT: ::c_uint = 16; +pub const SIGEV_SIGNAL: ::c_int = 0; +pub const SIGEV_NONE: ::c_int = 1; +pub const SIGEV_THREAD: ::c_int = 2; + f! { pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () { let fd = fd as usize; @@ -843,11 +866,19 @@ extern { pub fn setns(fd: ::c_int, nstype: ::c_int) -> ::c_int; pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int; + pub fn accept4(fd: ::c_int, addr: *mut ::sockaddr, len: *mut ::socklen_t, + flg: ::c_int) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; + pub fn ptsname_r(fd: ::c_int, + buf: *mut ::c_char, + buflen: ::size_t) -> ::c_int; } cfg_if! { if #[cfg(any(target_os = "linux", - target_os = "emscripten"))] { + target_os = "emscripten", + target_os = "fuchsia"))] { mod linux; pub use self::linux::*; } else if #[cfg(target_os = "android")] { diff --git a/third_party/rust/libc/src/unix/solaris/mod.rs b/third_party/rust/libc/src/unix/solaris/mod.rs index 31f67b78e628..c2db06bc50df 100644 --- a/third_party/rust/libc/src/unix/solaris/mod.rs +++ b/third_party/rust/libc/src/unix/solaris/mod.rs @@ -602,6 +602,7 @@ pub const EMLINK: ::c_int = 31; pub const EPIPE: ::c_int = 32; pub const EDOM: ::c_int = 33; pub const ERANGE: ::c_int = 34; +pub const ENOTSUP: ::c_int = 48; pub const EAGAIN: ::c_int = 11; pub const EWOULDBLOCK: ::c_int = 11; pub const EINPROGRESS: ::c_int = 150; @@ -651,6 +652,8 @@ pub const EMULTIHOP: ::c_int = 74; pub const ENOLINK: ::c_int = 67; pub const EPROTO: ::c_int = 71; +pub const EAI_SYSTEM: ::c_int = 11; + pub const F_DUPFD: ::c_int = 0; pub const F_GETFD: ::c_int = 1; pub const F_SETFD: ::c_int = 2; @@ -953,6 +956,9 @@ f! { } extern { + pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int; + pub fn freeifaddrs(ifa: *mut ::ifaddrs); + pub fn stack_getbounds(sp: *mut ::stack_t) -> ::c_int; pub fn mincore(addr: *const ::c_void, len: ::size_t, vec: *mut c_char) -> ::c_int; @@ -1037,4 +1043,6 @@ extern { clock_id: clockid_t) -> ::c_int; pub fn sem_timedwait(sem: *mut sem_t, abstime: *const ::timespec) -> ::c_int; + pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t, + abstime: *const ::timespec) -> ::c_int; } diff --git a/third_party/rust/libc/src/windows.rs b/third_party/rust/libc/src/windows.rs index 5ba8b33451cd..6c8332a62ee9 100644 --- a/third_party/rust/libc/src/windows.rs +++ b/third_party/rust/libc/src/windows.rs @@ -105,8 +105,50 @@ pub const LC_MONETARY: ::c_int = 3; pub const LC_NUMERIC: ::c_int = 4; pub const LC_TIME: ::c_int = 5; -#[cfg(target_env = "msvc")] // " if " -- appease style checker -#[link(name = "msvcrt")] +pub const EPERM: ::c_int = 1; +pub const ENOENT: ::c_int = 2; +pub const ESRCH: ::c_int = 3; +pub const EINTR: ::c_int = 4; +pub const EIO: ::c_int = 5; +pub const ENXIO: ::c_int = 6; +pub const E2BIG: ::c_int = 7; +pub const ENOEXEC: ::c_int = 8; +pub const EBADF: ::c_int = 9; +pub const ECHILD: ::c_int = 10; +pub const EAGAIN: ::c_int = 11; +pub const ENOMEM: ::c_int = 12; +pub const EACCES: ::c_int = 13; +pub const EFAULT: ::c_int = 14; +pub const EBUSY: ::c_int = 16; +pub const EEXIST: ::c_int = 17; +pub const EXDEV: ::c_int = 18; +pub const ENODEV: ::c_int = 19; +pub const ENOTDIR: ::c_int = 20; +pub const EISDIR: ::c_int = 21; +pub const EINVAL: ::c_int = 22; +pub const ENFILE: ::c_int = 23; +pub const EMFILE: ::c_int = 24; +pub const ENOTTY: ::c_int = 25; +pub const EFBIG: ::c_int = 27; +pub const ENOSPC: ::c_int = 28; +pub const ESPIPE: ::c_int = 29; +pub const EROFS: ::c_int = 30; +pub const EMLINK: ::c_int = 31; +pub const EPIPE: ::c_int = 32; +pub const EDOM: ::c_int = 33; +pub const ERANGE: ::c_int = 34; +pub const EDEADLK: ::c_int = 36; +pub const EDEADLOCK: ::c_int = 36; +pub const ENAMETOOLONG: ::c_int = 38; +pub const ENOLCK: ::c_int = 39; +pub const ENOSYS: ::c_int = 40; +pub const ENOTEMPTY: ::c_int = 41; +pub const EILSEQ: ::c_int = 42; +pub const STRUNCATE: ::c_int = 80; + +#[cfg(all(target_env = "msvc", stdbuild))] // " if " -- appease style checker +#[link(name = "msvcrt", cfg(not(target_feature = "crt-static")))] +#[link(name = "libcmt", cfg(target_feature = "crt-static"))] extern {} extern { diff --git a/third_party/rust/libz-sys/.cargo-checksum.json b/third_party/rust/libz-sys/.cargo-checksum.json index 31556eb4e6d3..2b61159ea13d 100644 --- a/third_party/rust/libz-sys/.cargo-checksum.json +++ b/third_party/rust/libz-sys/.cargo-checksum.json @@ -1 +1 @@ -{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"a1bfbefcf2d0e693e2ce8c5b5b8e8a50d0ab5848d420a3a5a0c9fc481b5e6018","Cargo.toml":"5a05f1700e27c694be6490b9a5c1c2e34b3362609701e31d2e569405016afc2a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"2908cdccf74d645b28f8ef1c54146172f171c655275241fb3016dac8a5e4627d","appveyor.yml":"d0a4aaa582664475421923937ddd07b924a27e556a5ae13a50c1645dacfa4ecc","build.rs":"3efe06182c68bb56daa1791235387693956f4073744921100c9446e03fe38f91","src/lib.rs":"04206965d961a957070507355a9fc270ce37dcc98ce54ab7f92ed8d070e57eb4","src/zlib-1.2.8/CMakeLists.txt":"ff988cbc9cbb5692400b37df2b80eb25afa6d6bf0d840a6dff5673ee7c190718","src/zlib-1.2.8/ChangeLog":"1285914a14f28ad77c3eef8c34d219e49459989502237086a14ec3d6cca7a760","src/zlib-1.2.8/FAQ":"1e8a0078be0ff1b60d57561a9e4a8cad72892318a8831946cba1abd30d65521c","src/zlib-1.2.8/INDEX":"3b4e325d47ae66456d43fcf143ba21ab67a02a4f81be7ef2da480ba30d774266","src/zlib-1.2.8/Makefile":"ef23b08ce01239843f1ded3f373bfc432627a477d62f945cbf63b2ac03db118a","src/zlib-1.2.8/Makefile.in":"edb322ca9ea5055eb1c5fd0b277e152986bb9135a86500039f6de19a68d6a5f7","src/zlib-1.2.8/README":"53a466b504371dcdda1504c90d8121d4823921f03554c3526995fb2bae7159f9","src/zlib-1.2.8/adler32.c":"341d49ae2703037d2d10c8486f1a1ca3b65e0f10cc9e5fead6bfbbc0b34564ba","src/zlib-1.2.8/amiga/Makefile.pup":"a65cb3cd40b1b8ec77e288974dd9dc53d91ed78bbe495e94ccc84ddd423edf1f","src/zlib-1.2.8/amiga/Makefile.sas":"0e63cf88b505a1a04327bb666af3a985c5e11835c0c00aed4058c0dcc315d60e","src/zlib-1.2.8/as400/bndsrc":"9672d2c5e4692114e5ee23efc4ee3b0b4f3c293a9f25e394f3c8e8697c315abb","src/zlib-1.2.8/as400/compile.clp":"67cde543d10728eae8ed8318d1ea0ec55b6d883c6e668544c3beb6fe825112a1","src/zlib-1.2.8/as400/readme.txt":"eb89121904ab1a1a38ed9c360186fc52ca39a6e468a6ee848639774956e821e8","src/zlib-1.2.8/as400/zlib.inc":"d6ba9242df0742950a8b52b8cb6314fc62859879e50218cad44e220f8c3eeaea","src/zlib-1.2.8/compress.c":"0f05c385cf9f052e5fa1ae478b492ee4e04a60bc39d173c4ca4f58d799d5d1ab","src/zlib-1.2.8/configure":"94159ff86133515dee243814d92238192d1f2c36c86fdc1472e0a0a797d1dd2f","src/zlib-1.2.8/contrib/README.contrib":"b01cfbd6a67e950886c7381ef96a46e50b03a5f61d4905a99a87c8db06bfb961","src/zlib-1.2.8/contrib/ada/buffer_demo.adb":"469cf566a6965767fee6b987a239ed8cedcc66614940d45a9b434331fbb435ce","src/zlib-1.2.8/contrib/ada/mtest.adb":"41b6f31684770334afdc4375871eb1408542f37a823a073556fdbfdb63753160","src/zlib-1.2.8/contrib/ada/read.adb":"fa5b989aef0c5715a3fcb15de93985f7f10aeb0a7f5716745c95ed820eb9af9c","src/zlib-1.2.8/contrib/ada/readme.txt":"8fe9e5303f2e8e8b746c78250e74b7c4aeb7ce6212fdce751fc3a0ce56a47fe2","src/zlib-1.2.8/contrib/ada/test.adb":"5e3abe79b387e09a9a42bd0543105e228f39a335240cffc33d71f0ba66ff2511","src/zlib-1.2.8/contrib/ada/zlib-streams.adb":"f45988e2bac76eb25a0dc981f46576e7432c35dde1790bbc2b650f0090b7fa72","src/zlib-1.2.8/contrib/ada/zlib-streams.ads":"6622f7fe7d4364010eb068bb87cf4b89bc22abbfac6c5a6b06f92b8ce0f3b866","src/zlib-1.2.8/contrib/ada/zlib-thin.adb":"03d89244ee5ec9771d9b5050e586c609f851af551b2e64eb151f1d5be0b63ae9","src/zlib-1.2.8/contrib/ada/zlib-thin.ads":"fdf7da9aa7a773d5bdfaf654a0f511bab1a53e034e56a445108a1cd984b8c5f8","src/zlib-1.2.8/contrib/ada/zlib.adb":"c9ca5dc34fbcdf06e2dc777b7e9dcd0ba31085b772b440eb0e12421323ab672c","src/zlib-1.2.8/contrib/ada/zlib.ads":"02634bec0d5e4c69d8d2859124380074a57de8d8bd928398379bfacc514236d2","src/zlib-1.2.8/contrib/ada/zlib.gpr":"859bb69dce38dbe9dca06753cf7ae7bd16d48f4fece8b87582dab8e30681d3de","src/zlib-1.2.8/contrib/amd64/amd64-match.S":"166007f7e9adb58fe8b83d85bbfe823f5e05858ba1d06edf637b78886caa2c69","src/zlib-1.2.8/contrib/asm686/README.686":"c21cc7147c956ecae17dd084cb41a206b086216fa521012871fb07fafd203c6d","src/zlib-1.2.8/contrib/asm686/match.S":"873799062495629f21cd3f779ea4b927add7aae0144e32d3594d9ce70185e99d","src/zlib-1.2.8/contrib/blast/Makefile":"17d5d26c24bf51cad51045a38ffb73cc3539d29e89885aa249fcfd45a8659d5c","src/zlib-1.2.8/contrib/blast/README":"baa763ae03d88ef7ece6eb80d9a099b43d0b57639d6d281e1c7c6ca79d81daba","src/zlib-1.2.8/contrib/blast/blast.c":"65a1655f9dce77e79faabbd13d3e98c97c974303b652632f0ea791401c66f1ed","src/zlib-1.2.8/contrib/blast/blast.h":"825e2f90c605133c96dc134ace6b62b70cc08156c7306a299bc8847f8fbb8ecb","src/zlib-1.2.8/contrib/blast/test.pk":"5f5c262c545574a5c221132d5ef832478d222d70b015341795b3860204140d7c","src/zlib-1.2.8/contrib/blast/test.txt":"9679b2c98e1283222d0782b25a1c198dc64ba9ebd1addd6dc6f643a45947cda3","src/zlib-1.2.8/contrib/delphi/ZLib.pas":"ded3fe0698466d078434a82e1e2c62c912021fd26d8ce914066d0e5317e171c1","src/zlib-1.2.8/contrib/delphi/ZLibConst.pas":"84bcc580bdf397e570f86f3f5a5b8c7bf537828f30b4b72648b81911f6bf5095","src/zlib-1.2.8/contrib/delphi/readme.txt":"f7420ed2de77d4b498eefbbe6402a1d17dc2d411735289c78a265c7f10fdaee5","src/zlib-1.2.8/contrib/delphi/zlibd32.mak":"850e91b6c9ea05de61a411cbda16fa0f10118cd88bb32c4b7226988776f8d511","src/zlib-1.2.8/contrib/dotzlib/DotZLib.build":"b96137097669644ecb9f42cdd3399d1fce9c512788374609303f7e50abf597f0","src/zlib-1.2.8/contrib/dotzlib/DotZLib.chm":"20d0e3edd57f849143255a7f0df1cd59d41db464a72c0d5ab42846438a729579","src/zlib-1.2.8/contrib/dotzlib/DotZLib.sln":"a979198c5b8d144c1ac8f993bfb6f4085d135aa58ca9dcf63ebabf52b5c695f7","src/zlib-1.2.8/contrib/dotzlib/DotZLib/AssemblyInfo.cs":"314afcfb339ea95f5431047b7ab24631b11c3532c7ce5dc2094ed0cf80a7c16d","src/zlib-1.2.8/contrib/dotzlib/DotZLib/ChecksumImpl.cs":"e7c047a2c3bcf88d3d002ee3d2d05af414acf53cb4451efacc0f2e95a474ea0f","src/zlib-1.2.8/contrib/dotzlib/DotZLib/CircularBuffer.cs":"be84c9736fe7bdc2bfae70466d8fff582504e928d5b5e110fd758090090c8cb7","src/zlib-1.2.8/contrib/dotzlib/DotZLib/CodecBase.cs":"259bdda1b7d6052134e631fa24bfd9dca6e2362563496c8b85257b56c848908c","src/zlib-1.2.8/contrib/dotzlib/DotZLib/Deflater.cs":"06ba6696a3c15c53ba5fd5a1c2bf50b51f217010228fc1e4c8495ee578f480de","src/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.cs":"9837fe993fd631233cc5e53ff084d86754b97f05ec77c54b0764c2706f186134","src/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.csproj":"21606db31dfef6410dd438b73f1db68856eacabcce6c0f0411fc4f17e17001f3","src/zlib-1.2.8/contrib/dotzlib/DotZLib/GZipStream.cs":"8d1de9755c77046b4ac71340a0a54434ebf4fd11b085c44454d7663a9b4df1c5","src/zlib-1.2.8/contrib/dotzlib/DotZLib/Inflater.cs":"9016ca73818f5b6a28791abc3af6da7c4d2773b6a3804f593f6d5737a62b99ad","src/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs":"b5266d91bad91ff484582231cdc06baa916a5b4c4e4be79e380037e9be6a9429","src/zlib-1.2.8/contrib/dotzlib/LICENSE_1_0.txt":"36266a8fd073568394cb81cdb2b124f7fdae2c64c1a7ed09db34b4d22efa2951","src/zlib-1.2.8/contrib/dotzlib/readme.txt":"d04972a91b1563fb4b7acab4b9ff2b84e57368953cc0596d5f5ea17d97315fd0","src/zlib-1.2.8/contrib/gcc_gvmat64/gvmat64.S":"22ff411b8b1d1b04aeaa8418b68245400267dc43c6f44104f6ccd37f0daee89f","src/zlib-1.2.8/contrib/infback9/README":"890288f02bb3b1f9cc654b87a07fcea695f90f6b9bd672d25bf6be1da2ec1688","src/zlib-1.2.8/contrib/infback9/infback9.c":"0a715c85a1ce3bb8b5a18d60941ffabc0186a886bcc66ba2ee0c4115a8e274e9","src/zlib-1.2.8/contrib/infback9/infback9.h":"dda2302f28157fe43a6143f84802af1740393572c2766559593996fd7a5a3245","src/zlib-1.2.8/contrib/infback9/inffix9.h":"84a2ba4727767c18af6505f0e81d9c814489c8b9ed330a25dad433db72997e43","src/zlib-1.2.8/contrib/infback9/inflate9.h":"32a907676cc36e27d0fdc0d99adb83a0b23f20ab61896269216d40fecf08d349","src/zlib-1.2.8/contrib/infback9/inftree9.c":"9761abea8a34213c2d4ddea7854fd7dcc48deb2895d83c61c4c1b34294ffcfbf","src/zlib-1.2.8/contrib/infback9/inftree9.h":"8ae61d52e50d2dbdb0378548ecc54fcd88f108c8b6fc30562a3ebec1ca6a599e","src/zlib-1.2.8/contrib/inflate86/inffas86.c":"6f266f3c7e0faca653256d0189c0f00d7dc0b062d02e25df4e1202e49369595c","src/zlib-1.2.8/contrib/inflate86/inffast.S":"70777bd21526680005fc34f086d108af49e2668ad86d1749e8e8100a81bfb288","src/zlib-1.2.8/contrib/iostream/test.cpp":"0f3c77e013949eb9c91e6b690ea894e19d97944d6b0885b82806fc3ad99680cf","src/zlib-1.2.8/contrib/iostream/zfstream.cpp":"8ebb9b3d521cc3392953f27658cf1f6dcb763216079f69a1518ec5ca0e42a63b","src/zlib-1.2.8/contrib/iostream/zfstream.h":"4369c35e66f63f52ca4a5e1759bf720507ccabb8f3f132e2f18e68686c812401","src/zlib-1.2.8/contrib/iostream2/zstream.h":"d0343e0c57ff58008b6f29643d289c72713aa2d653fe3dcd2e939fc77e7e20b6","src/zlib-1.2.8/contrib/iostream2/zstream_test.cpp":"f789df183cc58b78751985466380c656308490a9036eb48a7ef79704c3d3f229","src/zlib-1.2.8/contrib/iostream3/README":"43ec48ecbd95a8c45db20b107fac73b740bb11595a4737329188f06b713972cc","src/zlib-1.2.8/contrib/iostream3/TODO":"af5ebc83fb88f69706c8af896733784753dead147687e1c046f410c0997fd88b","src/zlib-1.2.8/contrib/iostream3/test.cc":"8e17fc48dfdbc6e268838b8b427491b5843b6d18bc97caa6924de9fad7abe3da","src/zlib-1.2.8/contrib/iostream3/zfstream.cc":"8cdd67ed0b13c192c11e5ea90e9d5782d6627eb303fbc4aa5ebda2531ec00ff8","src/zlib-1.2.8/contrib/iostream3/zfstream.h":"1bd74778fac45ee090dfc0f182a23e8a849152deb630606884b2635987b357b1","src/zlib-1.2.8/contrib/masmx64/bld_ml64.bat":"1c0561908a07ebdff271b12ed757241e1813d3db0f3551501b2595c23f0833aa","src/zlib-1.2.8/contrib/masmx64/gvmat64.asm":"390c1e6d63cb615b5ba042842738953f9cdc688b2fe35aaca981fd3fae213f3f","src/zlib-1.2.8/contrib/masmx64/inffas8664.c":"f6c585e43e6e524107566b1f10104949d0ef902159ac8203e1d98e50d4bedd62","src/zlib-1.2.8/contrib/masmx64/inffasx64.asm":"8448d0041fe6e8f4188fe5916181a1b274c6d35d75cfb28da60cf4f1edde44ec","src/zlib-1.2.8/contrib/masmx64/readme.txt":"9bb66b5028100855683853f12da0be479c7bccf74365fdbf37da2542edff9927","src/zlib-1.2.8/contrib/masmx86/bld_ml32.bat":"b0b05b62715d4a81a7db5b7ca4a372d109ec95634c9d3bef9e0041ff52de22fc","src/zlib-1.2.8/contrib/masmx86/inffas32.asm":"78d2cc88f8ed0e32ef960efc987c257bc1688afe7d031a8ba18761e95a6a7c3f","src/zlib-1.2.8/contrib/masmx86/match686.asm":"9e9bea3b5517b089da7d39caded07982746a33f94f0907ca7e8afefed7be36b6","src/zlib-1.2.8/contrib/masmx86/readme.txt":"1f29a04e0227b74e20ba1b7c764b3ca5bf596dd2c06e89bc19a05fb8f9689778","src/zlib-1.2.8/contrib/minizip/Makefile":"087034de3dc0223b29e64bb3a4fc3eda7b948e93d2a9ff154aecf9fed2a1eb5b","src/zlib-1.2.8/contrib/minizip/Makefile.am":"2313a3480a2c3745fa7ce216829cd0367058907d3a0902e5832c66c84a2fdfc6","src/zlib-1.2.8/contrib/minizip/MiniZip64_Changes.txt":"302c62b328647f5472fb7755249a83459be7f8ffb1fae07e8ba318fce8f4126c","src/zlib-1.2.8/contrib/minizip/MiniZip64_info.txt":"122719c32ef1763a5f6ba9c8cdefc1d78a76f7156b09e7b6f69b73f968e0dac3","src/zlib-1.2.8/contrib/minizip/configure.ac":"90cf87b0bfee8755540271caab9f0dcd45073021ae44f257f3c25e58817113c4","src/zlib-1.2.8/contrib/minizip/crypt.h":"8e872b60255b8447da99885c7159c2e1f1bb8143523bdbe71784e60f98bfd67b","src/zlib-1.2.8/contrib/minizip/ioapi.c":"66b39c27042f6ad12cc12efb0c82cdf100c6640b5fa959b8b866e252966113a9","src/zlib-1.2.8/contrib/minizip/ioapi.h":"8655408534b78dc0889a45f9359fc6d2d5c8e8d8443b81ede596f954c720ef48","src/zlib-1.2.8/contrib/minizip/iowin32.c":"0b9c9a609f24cd8dd63e5db732efd0b6ff49815166dfc58ddd202b1570b49a8b","src/zlib-1.2.8/contrib/minizip/iowin32.h":"586f22b9c3c64da253ce2b518e0fad61f19a7b47b289fc704cc9708242294c49","src/zlib-1.2.8/contrib/minizip/make_vms.com":"65736d9c4888f2373d3db0a13864d150c5040453f5bc2a5c8784379a7ea67590","src/zlib-1.2.8/contrib/minizip/miniunz.c":"ced49f20c62536a8ffb270b35cfa4994a1dcdce45f8cf059b941c94ca0022666","src/zlib-1.2.8/contrib/minizip/miniunzip.1":"66d8684392167091ef0fe01598d6a0daa26e7e448e2df6c3cb257487735b83f7","src/zlib-1.2.8/contrib/minizip/minizip.1":"5404596e8e5587a52f563906119f32ceee30a6d97a966afa5c7afbe4d373e210","src/zlib-1.2.8/contrib/minizip/minizip.c":"fdfcf83979ef2324c1455d369e8add8678c804939d412ce53f8b024578ceabad","src/zlib-1.2.8/contrib/minizip/minizip.pc.in":"8b6670b42d8e5e519e1cc89db093efc07ba23cb1ddfedd3c93ff2df08c3ce8ac","src/zlib-1.2.8/contrib/minizip/mztools.c":"cd887c4af6d20823bd15f24008b10acf01969b4165d7848656bde843a92428d7","src/zlib-1.2.8/contrib/minizip/mztools.h":"6f82c52279e8f79165f4446be652e5741a49992ac58632470335aa34c564072a","src/zlib-1.2.8/contrib/minizip/unzip.c":"9dc09da0688e5e5bd359844a7f24b36571213ece9e634192373f1b0762b18d6a","src/zlib-1.2.8/contrib/minizip/unzip.h":"d8dc58fc0121b6a4b98f3028205bb253f956b1ddf791e9ced3cf44892502a01f","src/zlib-1.2.8/contrib/minizip/zip.c":"23e4c2e582e445d96bd7d962ff7b335eeec3ac45475de255144a5597fbc9f245","src/zlib-1.2.8/contrib/minizip/zip.h":"96163fc140e4bf08752e014d20a1eac3f5adcdc408366f6d79c1895f2599cf08","src/zlib-1.2.8/contrib/pascal/example.pas":"d842d456ecb6ff80e34cee2da31deb2072cc69ca837497bea8b8bee203403474","src/zlib-1.2.8/contrib/pascal/readme.txt":"02f997c37991ddae0cb986039f7b4f6fc816b3fd0ffd332cad371d04c12cf1b9","src/zlib-1.2.8/contrib/pascal/zlibd32.mak":"850e91b6c9ea05de61a411cbda16fa0f10118cd88bb32c4b7226988776f8d511","src/zlib-1.2.8/contrib/pascal/zlibpas.pas":"9dcd5be5329b593cc44995b1886d2a5eb7bfc5f9ebb4b37fff852a0d940da046","src/zlib-1.2.8/contrib/puff/Makefile":"d9d738030464aaae354196c14fd928adf591832fce7d71ac1977c1d8d4923a4b","src/zlib-1.2.8/contrib/puff/README":"aceca4bc1bce7d9445b8bc9b6640c672d95708185f6070d3a3baae7a9d102caf","src/zlib-1.2.8/contrib/puff/puff.c":"099226fa987168a36825317cc6093111335a02bbdc85e2fe166d861103214686","src/zlib-1.2.8/contrib/puff/puff.h":"969b7be2a930db0cdcb19b0e5b29ae6741f5a8f663b6dba6d647e12ec60cfa8e","src/zlib-1.2.8/contrib/puff/pufftest.c":"8ee0da78a1221a3c2036e22eed06c2faa27a671a46565a60e10111d4ee9c30ee","src/zlib-1.2.8/contrib/puff/zeros.raw":"b7b0887089f7af1f6d1e0b4c0a1e8eddd10223b23554299455c6c9be71b653a3","src/zlib-1.2.8/contrib/testzlib/testzlib.c":"c6c37b35c6ecc9986a9041f86d879cc37a9e4d8315af9d725071eb3b2cade0c5","src/zlib-1.2.8/contrib/testzlib/testzlib.txt":"2359bbdc84eb8a04e0f1cd16cd81a2896e957f2ad58dab3ca78ef55b7d0dc577","src/zlib-1.2.8/contrib/untgz/Makefile":"8f5ab1564813e091cea8f1bb63da32fd80ac763d029277b0cabf50f60aceefe1","src/zlib-1.2.8/contrib/untgz/Makefile.msc":"d0f537de11d9e0e36e2a98b3971c537265f4b533b4c48797094365ad9ae8388b","src/zlib-1.2.8/contrib/untgz/untgz.c":"9a12d774301d252dcd38bba07ac369319da4c04c4fef8a50fcbf40aebf29c2a1","src/zlib-1.2.8/contrib/vstudio/readme.txt":"5dd8bef90296272ce8cdca6e5658057d52f05acea8adc49b7ab1bd67386fd513","src/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj":"dd607d43c64581172c20c22112821924dfe862f56b2e5eb8780bdd0714d9527b","src/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj.filters":"c3db9f97952683e688ad83c13bb94c816ac3e6b5f277fdea545b0650c125aa6d","src/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj":"af73f2cf8ae51e65e85342faeb40849a2310c97bc77def42b38d7070460a6cf0","src/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj.filters":"83db58d87f5d7ca84b6087aa1f62b15cbc296194c8cf76e47a271f9077b4f3bd","src/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj":"1525ed0893db56db44ec68675c8da3c229dc7867166dfc0428816783d16ad43b","src/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj.filters":"d7e04ffa467d417dfa3c0f1c64234cadc84882101bbae483f0a0f5d3d6b566a7","src/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj":"3f317d8964f17901c3e68bff5deaec10b6ccc50a572235999e8097292692984c","src/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj.filters":"682a485f0184aabba94e12e1b284499195f37c176d43ecee0484f31e4d636f6f","src/zlib-1.2.8/contrib/vstudio/vc10/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj":"2a38222d6c034d7e0b843c3f0540dc6c53dd48f942ae29f31620ca0327248c8e","src/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj.filters":"d9a2c381e51e4d6f027f3517db7db81656e43cec02ed9abf267a0fde6f360180","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.sln":"e659860f705f31b87ea9139a3cb4ebe1561e120bce495383a54614fc82b49990","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj":"3108badf710e2f4a64eab4e7deae6642fb68cc0d94018e537149f1761e215133","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj.filters":"58404ba7703c68025bec64b8a17ff1fc7f3a35d15d17ae3bcc4fa753f1348425","src/zlib-1.2.8/contrib/vstudio/vc11/miniunz.vcxproj":"746e4c11fb8af4bcd6a9d68ba81ed1dc366a5de3bed56b291ee969ad733a7bb0","src/zlib-1.2.8/contrib/vstudio/vc11/minizip.vcxproj":"340617cae9cf4fcb003308021d3782ec3639e60d62d79a3aafc0a50bb55b061e","src/zlib-1.2.8/contrib/vstudio/vc11/testzlib.vcxproj":"589eec6ef6d818564ead938a629fda50abb6cbf8054b9f66ea780765c1a1b3db","src/zlib-1.2.8/contrib/vstudio/vc11/testzlibdll.vcxproj":"583bdef522b0176829f0d8139ea2a88b9cbc14379d1334f3a863989ed3df9b67","src/zlib-1.2.8/contrib/vstudio/vc11/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc11/zlibstat.vcxproj":"51aa752698d96df065a9ece02e293492f681b59a8077f036a5a60367dc621e87","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.sln":"27389b515997defd080519f95aff87e89fcbe8b26d73c5ebb73c544cfef4d60e","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.vcxproj":"c3dd05e56159aba411475b83656275872524cb3c2fd24d690397d8b634e7e0ed","src/zlib-1.2.8/contrib/vstudio/vc9/miniunz.vcproj":"b2b53bd9e704bfbe769b863acdc2a3368692ca149c4b4ed2a0761b0cd16c6726","src/zlib-1.2.8/contrib/vstudio/vc9/minizip.vcproj":"80a701fb41a61871ce1d25f6b03e571edb6c3abf0aa45375554b6fac52115eb6","src/zlib-1.2.8/contrib/vstudio/vc9/testzlib.vcproj":"05fc5a87682b17690d199f424f57f6ad7767b8dabb29a1039bfcb88bca1b302f","src/zlib-1.2.8/contrib/vstudio/vc9/testzlibdll.vcproj":"25c1cc5319f1c4b7dbdb595c3cfd6ec3ba217818b03b7055ef5ef440b575a43d","src/zlib-1.2.8/contrib/vstudio/vc9/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc9/zlibstat.vcproj":"e8653eea37f3bef097eec2caa55e1f698c3c74c959689bc4e97568e88d2bbc60","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.sln":"26e58d4b2cfcd941c367fb2a18537b3b9f002f2ac1278b700ea1129c50501452","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.vcproj":"86aa6e33db104c0a0ed4a9f21f0db8572cc7755170217aef18219fdd74b75e9d","src/zlib-1.2.8/crc32.c":"3f3daca510273dda74eaf381c46d2551e3a3506891ae063ab451b87744a7a36c","src/zlib-1.2.8/crc32.h":"407af59d0abfea84a6507c603eb29809411797f98249614fe76a661def783ce1","src/zlib-1.2.8/deflate.c":"565e68ddfff5af8efd55f71e122b860ad11527a7d9de40a76af2b16afef24cc0","src/zlib-1.2.8/deflate.h":"80570c8052491bdc7583600da28a8f1cb32c27ab1cec107ec12c83255d426cf7","src/zlib-1.2.8/doc/algorithm.txt":"992590931e982c0765286c2d83f6e9ff0a95aabb08e28c30c52bae3e8c4bd5ad","src/zlib-1.2.8/doc/rfc1950.txt":"8f0475a5c984657bf26277f73df9456c9b97f175084f0c1748f1eb1f0b9b10b9","src/zlib-1.2.8/doc/rfc1951.txt":"5ebf4b5b7fe1c3a0c0ab9aa3ac8c0f3853a7dc484905e76e03b0b0f301350009","src/zlib-1.2.8/doc/rfc1952.txt":"164ef0897b4cbec63abf1b57f069f3599bd0fb7c72c2a4dee21bd7e03ec9af67","src/zlib-1.2.8/doc/txtvsbin.txt":"47c273bb22c9773248d380549a330e5c262266b1292154b0d3014f731cc73f47","src/zlib-1.2.8/examples/README.examples":"402d72eb69c2e03a25034f4b3c02b110f0f67149ecfa4fa0e4b2bf0ceb49a8b3","src/zlib-1.2.8/examples/enough.c":"704e273f65b62c5d2eb06d5bb10c4ccffba56544aa477f0e3957e2296c501b78","src/zlib-1.2.8/examples/fitblk.c":"950769163c41aff897ee41746a8685d9aa41073b1307f42da19dabe9d3fc8b85","src/zlib-1.2.8/examples/gun.c":"2d38ab3176a404e2da885dca47b1a6bbb64fd0ae7c089131ee3887c239b40b7e","src/zlib-1.2.8/examples/gzappend.c":"4182d38bf97ffbdf1110df7f65c0e8fab0b28b1ea36ebba8621c14e8e76f1caa","src/zlib-1.2.8/examples/gzjoin.c":"90b9d6c39a5fc91cf1cc9b96b025a508a8015dc502cd9374c754b44078593f57","src/zlib-1.2.8/examples/gzlog.c":"073c99b407c738bb56396fab1e3eb1affaba9af7b8f8ebffcc0644b1591be162","src/zlib-1.2.8/examples/gzlog.h":"309556e2d7d39250924946b78e2cce0ac927857d6e1a02cab64e438f533c20c3","src/zlib-1.2.8/examples/zlib_how.html":"80fb647be8450bd7a07d8495244e1f061dfbdbdb53172ca24e7ffff8ace9c72f","src/zlib-1.2.8/examples/zpipe.c":"68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6","src/zlib-1.2.8/examples/zran.c":"b1b910708225a62f81ec97a08203239d35d18c33470c0775f0bcd5347820e1f6","src/zlib-1.2.8/gzclose.c":"94446cf8cde67c30e64d0a335b0c941fd3fbad2e77f30180d12e61f9c2a5a6b8","src/zlib-1.2.8/gzguts.h":"2d3c0154089061fd3a9a789903e54b2ca3cef241383599f37b63914330b9c358","src/zlib-1.2.8/gzlib.c":"90d43517bcff858312c0ed72dfa760be3a774939ba663952f0f9aa0e96f97f34","src/zlib-1.2.8/gzread.c":"b2bd8884fc467b47e425d1c34268f08e40dd54401682a49c56d2e441ee811d8c","src/zlib-1.2.8/gzwrite.c":"09d33648f5b3be2efd3ad176f6b966205d5f8abaf1d1139a196e0987b9319b7d","src/zlib-1.2.8/infback.c":"16f8418da8a86bcb5fb98f121f3ba45275ae5b57ad00b0545d4a311ed890f524","src/zlib-1.2.8/inffast.c":"fd82c328b310f2f0ecc6a13475889e51c407dd4c5e8a931a36f18ad63f319c35","src/zlib-1.2.8/inffast.h":"7d8c1c873ce9bc346ad6005bb9d75cce5c6352aaf7395385be216a9452a34908","src/zlib-1.2.8/inffixed.h":"237ba710f090e432b62ebf963bee8b302867e9691406b2d3f8ee89ee7bfef9b0","src/zlib-1.2.8/inflate.c":"fb9bfa1295e7a6ef1b4a1149eec372dd7dcce407dd4fe9fea9c23a45a6857381","src/zlib-1.2.8/inflate.h":"36e5300408aa55a175a7d9be6b2f25dc0c5f80d79b2115fe43a2fe531e84775d","src/zlib-1.2.8/inftrees.c":"608f96120ac1572002bbce6dcd2625171dae0afbecf4334070288a33e19e5952","src/zlib-1.2.8/inftrees.h":"c510b36402784b1f898be3b049b923469aa92701de2d9195aed19f6b65c0dce2","src/zlib-1.2.8/make_vms.com":"3064eb153a7684115f1494364f80759bc5a2c227799fdf08df7b9e6e50884720","src/zlib-1.2.8/msdos/Makefile.bor":"292ab363f7ffbc4ae84d37cd9bdffd2dac1003bee52d223a8489844870f20702","src/zlib-1.2.8/msdos/Makefile.dj2":"df5e05d3744e8539299c6974fae2d68a13fc5513e8564fef791b6665df592bce","src/zlib-1.2.8/msdos/Makefile.emx":"5cb73e60a327b58f755442e3444b529f8a50146f980e0a38b945c7c40c112761","src/zlib-1.2.8/msdos/Makefile.msc":"0e021a6f42212415b060e4ad468eb415d0a8c1f343137fb9dff2cb8f9ead3027","src/zlib-1.2.8/msdos/Makefile.tc":"2ae12ee2a3e62f7c5a0520d0fbe4adee772bc07fe816002b07ccb43db3daa76a","src/zlib-1.2.8/nintendods/Makefile":"ea5823efe6830132294eddf2f56dbd7db8712244c210bb4968c431b1a91bd066","src/zlib-1.2.8/nintendods/README":"e362426c47b39ff6a7d6c75c6660b20abf076cdfa5e1e421716dc629a71aef95","src/zlib-1.2.8/old/Makefile.emx":"c767d0e5505995e8e7cac2734bbcb08e1cf823f19cc734e5c845b5ef5fccced6","src/zlib-1.2.8/old/Makefile.riscos":"d1a488b160fbfd53272b68a913283a4be08ba9d490796b196dddb2ba535b41e0","src/zlib-1.2.8/old/README":"551a0f4d91fe0f827a31cbdfbb4a71d1f3dc4d06564d80a3f526b749dd104d11","src/zlib-1.2.8/old/descrip.mms":"8ff08c35c056df9c986f23c09cf8936db63ccf12c3c42f7d18a48b36f060cff7","src/zlib-1.2.8/old/os2/Makefile.os2":"7d16bade2a9c0d3847fd9ba2e75eb3a0c14d0f741610f4bf9cb3edef84c696b4","src/zlib-1.2.8/old/os2/zlib.def":"ea9c61876d2e20b67ef2d9495991a32798eb40d13ede95859a2f4f03b65b9b61","src/zlib-1.2.8/old/visual-basic.txt":"1727650acbde9a9e6aec9438896377e46a12699cca5d46c5399cef524dedc614","src/zlib-1.2.8/qnx/package.qpg":"e7795fef80cfc2d7a4377e6af90a831955b7be35c64e3b310ec87678d360dfb0","src/zlib-1.2.8/test/example.c":"63061f7e4978035e072d0906aae087605551352adef92d4499b533a79e25747c","src/zlib-1.2.8/test/infcover.c":"f3fc5682c7d99e6bb670b8ef53463257ea3a4a57dd5e20b109005f99a807e5fb","src/zlib-1.2.8/test/minigzip.c":"a181d4748927637f26d0641d5666840c9d3afbe8910d46d3020e3c6edbde1c4a","src/zlib-1.2.8/treebuild.xml":"6ddcf7cd73f4f9194addf7b3c82aca350c912062ea0c8f0df13c49c614fd9968","src/zlib-1.2.8/trees.c":"49b5289399f76281541b26cab190d9d4e34bb666728ed661e0bfc7fb402d20f1","src/zlib-1.2.8/trees.h":"bb0a9d3ca88ee00c81adb7c636e73b97085f6ef1b52d6d58edbe2b6dc3adeb4d","src/zlib-1.2.8/uncompr.c":"454902e5c47baf75e946b999fb93b9f8a3f6bbac68c5c51b3e0fe8f54542123e","src/zlib-1.2.8/watcom/watcom_f.mak":"7e039b912f9cffaa40835281430bb284fa9042b0a0d12f6b34700a06bca6576e","src/zlib-1.2.8/watcom/watcom_l.mak":"d11b4064604a034725860e63e3f6d347056372e4b1675b183e20a93533b20cc9","src/zlib-1.2.8/win32/DLL_FAQ.txt":"9e00778319381e6275691dd3a89410c99065b8c0c5db96473abe8c859cbdefd8","src/zlib-1.2.8/win32/Makefile.bor":"e878fed2313417db085fea621c110889f6a32233b5b6db46e3c4e824c1d0ed6b","src/zlib-1.2.8/win32/Makefile.gcc":"3109182015186cd089f545dffcb3e81f9538ebec30c3c9836f8a4b67b2f2ebaf","src/zlib-1.2.8/win32/Makefile.msc":"4bfc81e50e6afa9cb7935bf8176743df8df224ab943b29d81ab4cb0f72a317d7","src/zlib-1.2.8/win32/README-WIN32.txt":"5e279cfb5d0476e27b78b1713eaf97d07935c14b9fc681791e15efb2344e6a43","src/zlib-1.2.8/win32/VisualC.txt":"e309c8623a1dcff79f5e588266c6ec68ca99f662baf9782591df561d5ddd94ea","src/zlib-1.2.8/win32/zlib.def":"87e3b230a173c65b988be24f339c2f4350780001e2810029ef55240397f25193","src/zlib-1.2.8/win32/zlib1.rc":"d7f269379144d65bcd1b67c1065e5d4120579f14ce54ecf246eaba394fa989a5","src/zlib-1.2.8/zconf.h":"ec0d0a6e87b749ab5fc3f27c0e8292b7aed139ca0b6121ab27e6eb30e2e9b6ba","src/zlib-1.2.8/zconf.h.cmakein":"49c987659808d77f5250b2f64ee71e57cf32cf4b52955cea179d7ebd3c578e59","src/zlib-1.2.8/zconf.h.in":"ec0d0a6e87b749ab5fc3f27c0e8292b7aed139ca0b6121ab27e6eb30e2e9b6ba","src/zlib-1.2.8/zlib.3":"621d9c7afa32fac41b28219c0d38a4a7179fdc05358bd2f7bdf7116d25d0cecd","src/zlib-1.2.8/zlib.h":"726b0569915917b967f87f3f08a1eec039101bf9dcc29d61c0b2b0b8f271b58d","src/zlib-1.2.8/zlib.map":"2b133e742e41f08cc4e993ceddbd43ee9d2d1b76da60c53b8405e1f811274a85","src/zlib-1.2.8/zlib.pc.cmakein":"2f1d0b18ce37c2af415a469857f02aee2c41a58877aff21d29e9c6db32b55cb7","src/zlib-1.2.8/zlib.pc.in":"04c01cc2e1a0ed123518b5855f585c93a24526dd88982c414111ea1fc9f07997","src/zlib-1.2.8/zlib2ansi":"d316e3e79054f5f9fe921d35f4bbf4bf0a37b859d29d2b34ae4d7d92afc3e55c","src/zlib-1.2.8/zutil.c":"c5e9927d5a1a1dec514ccdcedfa1e0f01664c58bb33166b4997b50b8001f1d6c","src/zlib-1.2.8/zutil.h":"91cce8e78e83bcdb8c6acb98d4f0686dbdc81ca97d4a36a60c0b48f7ef78f1af"},"package":"40f2df7730b5d29426c3e44ce4d088d8c5def6471c2c93ba98585b89fb201ce6"} \ No newline at end of file +{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805",".travis.yml":"a19093729b3ad9644f76f43c23b3583cfc9a7cd029d8c3a728cba6fd624abf1c","Cargo.toml":"7c0ab3304b4468289835452fdfd195507a00c3c71d05ab3cda44a19ee09c9245","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"2908cdccf74d645b28f8ef1c54146172f171c655275241fb3016dac8a5e4627d","appveyor.yml":"48c2df07a5a86878c662e1485c7e00b2e405765c5206eeca002d5142f9312fae","build.rs":"91994fa0d0f962ec1bbb0feea8e5407e3fe700932ea2884987c9ecba4ca8c60b","src/lib.rs":"04206965d961a957070507355a9fc270ce37dcc98ce54ab7f92ed8d070e57eb4","src/zlib-1.2.8/CMakeLists.txt":"ff988cbc9cbb5692400b37df2b80eb25afa6d6bf0d840a6dff5673ee7c190718","src/zlib-1.2.8/ChangeLog":"1285914a14f28ad77c3eef8c34d219e49459989502237086a14ec3d6cca7a760","src/zlib-1.2.8/FAQ":"1e8a0078be0ff1b60d57561a9e4a8cad72892318a8831946cba1abd30d65521c","src/zlib-1.2.8/INDEX":"3b4e325d47ae66456d43fcf143ba21ab67a02a4f81be7ef2da480ba30d774266","src/zlib-1.2.8/Makefile":"ef23b08ce01239843f1ded3f373bfc432627a477d62f945cbf63b2ac03db118a","src/zlib-1.2.8/Makefile.in":"edb322ca9ea5055eb1c5fd0b277e152986bb9135a86500039f6de19a68d6a5f7","src/zlib-1.2.8/README":"53a466b504371dcdda1504c90d8121d4823921f03554c3526995fb2bae7159f9","src/zlib-1.2.8/adler32.c":"341d49ae2703037d2d10c8486f1a1ca3b65e0f10cc9e5fead6bfbbc0b34564ba","src/zlib-1.2.8/amiga/Makefile.pup":"a65cb3cd40b1b8ec77e288974dd9dc53d91ed78bbe495e94ccc84ddd423edf1f","src/zlib-1.2.8/amiga/Makefile.sas":"0e63cf88b505a1a04327bb666af3a985c5e11835c0c00aed4058c0dcc315d60e","src/zlib-1.2.8/as400/bndsrc":"9672d2c5e4692114e5ee23efc4ee3b0b4f3c293a9f25e394f3c8e8697c315abb","src/zlib-1.2.8/as400/compile.clp":"67cde543d10728eae8ed8318d1ea0ec55b6d883c6e668544c3beb6fe825112a1","src/zlib-1.2.8/as400/readme.txt":"eb89121904ab1a1a38ed9c360186fc52ca39a6e468a6ee848639774956e821e8","src/zlib-1.2.8/as400/zlib.inc":"d6ba9242df0742950a8b52b8cb6314fc62859879e50218cad44e220f8c3eeaea","src/zlib-1.2.8/compress.c":"0f05c385cf9f052e5fa1ae478b492ee4e04a60bc39d173c4ca4f58d799d5d1ab","src/zlib-1.2.8/configure":"94159ff86133515dee243814d92238192d1f2c36c86fdc1472e0a0a797d1dd2f","src/zlib-1.2.8/contrib/README.contrib":"b01cfbd6a67e950886c7381ef96a46e50b03a5f61d4905a99a87c8db06bfb961","src/zlib-1.2.8/contrib/ada/buffer_demo.adb":"469cf566a6965767fee6b987a239ed8cedcc66614940d45a9b434331fbb435ce","src/zlib-1.2.8/contrib/ada/mtest.adb":"41b6f31684770334afdc4375871eb1408542f37a823a073556fdbfdb63753160","src/zlib-1.2.8/contrib/ada/read.adb":"fa5b989aef0c5715a3fcb15de93985f7f10aeb0a7f5716745c95ed820eb9af9c","src/zlib-1.2.8/contrib/ada/readme.txt":"8fe9e5303f2e8e8b746c78250e74b7c4aeb7ce6212fdce751fc3a0ce56a47fe2","src/zlib-1.2.8/contrib/ada/test.adb":"5e3abe79b387e09a9a42bd0543105e228f39a335240cffc33d71f0ba66ff2511","src/zlib-1.2.8/contrib/ada/zlib-streams.adb":"f45988e2bac76eb25a0dc981f46576e7432c35dde1790bbc2b650f0090b7fa72","src/zlib-1.2.8/contrib/ada/zlib-streams.ads":"6622f7fe7d4364010eb068bb87cf4b89bc22abbfac6c5a6b06f92b8ce0f3b866","src/zlib-1.2.8/contrib/ada/zlib-thin.adb":"03d89244ee5ec9771d9b5050e586c609f851af551b2e64eb151f1d5be0b63ae9","src/zlib-1.2.8/contrib/ada/zlib-thin.ads":"fdf7da9aa7a773d5bdfaf654a0f511bab1a53e034e56a445108a1cd984b8c5f8","src/zlib-1.2.8/contrib/ada/zlib.adb":"c9ca5dc34fbcdf06e2dc777b7e9dcd0ba31085b772b440eb0e12421323ab672c","src/zlib-1.2.8/contrib/ada/zlib.ads":"02634bec0d5e4c69d8d2859124380074a57de8d8bd928398379bfacc514236d2","src/zlib-1.2.8/contrib/ada/zlib.gpr":"859bb69dce38dbe9dca06753cf7ae7bd16d48f4fece8b87582dab8e30681d3de","src/zlib-1.2.8/contrib/amd64/amd64-match.S":"166007f7e9adb58fe8b83d85bbfe823f5e05858ba1d06edf637b78886caa2c69","src/zlib-1.2.8/contrib/asm686/README.686":"c21cc7147c956ecae17dd084cb41a206b086216fa521012871fb07fafd203c6d","src/zlib-1.2.8/contrib/asm686/match.S":"873799062495629f21cd3f779ea4b927add7aae0144e32d3594d9ce70185e99d","src/zlib-1.2.8/contrib/blast/Makefile":"17d5d26c24bf51cad51045a38ffb73cc3539d29e89885aa249fcfd45a8659d5c","src/zlib-1.2.8/contrib/blast/README":"baa763ae03d88ef7ece6eb80d9a099b43d0b57639d6d281e1c7c6ca79d81daba","src/zlib-1.2.8/contrib/blast/blast.c":"65a1655f9dce77e79faabbd13d3e98c97c974303b652632f0ea791401c66f1ed","src/zlib-1.2.8/contrib/blast/blast.h":"825e2f90c605133c96dc134ace6b62b70cc08156c7306a299bc8847f8fbb8ecb","src/zlib-1.2.8/contrib/blast/test.pk":"5f5c262c545574a5c221132d5ef832478d222d70b015341795b3860204140d7c","src/zlib-1.2.8/contrib/blast/test.txt":"9679b2c98e1283222d0782b25a1c198dc64ba9ebd1addd6dc6f643a45947cda3","src/zlib-1.2.8/contrib/delphi/ZLib.pas":"ded3fe0698466d078434a82e1e2c62c912021fd26d8ce914066d0e5317e171c1","src/zlib-1.2.8/contrib/delphi/ZLibConst.pas":"84bcc580bdf397e570f86f3f5a5b8c7bf537828f30b4b72648b81911f6bf5095","src/zlib-1.2.8/contrib/delphi/readme.txt":"f7420ed2de77d4b498eefbbe6402a1d17dc2d411735289c78a265c7f10fdaee5","src/zlib-1.2.8/contrib/delphi/zlibd32.mak":"850e91b6c9ea05de61a411cbda16fa0f10118cd88bb32c4b7226988776f8d511","src/zlib-1.2.8/contrib/dotzlib/DotZLib.build":"b96137097669644ecb9f42cdd3399d1fce9c512788374609303f7e50abf597f0","src/zlib-1.2.8/contrib/dotzlib/DotZLib.chm":"20d0e3edd57f849143255a7f0df1cd59d41db464a72c0d5ab42846438a729579","src/zlib-1.2.8/contrib/dotzlib/DotZLib.sln":"a979198c5b8d144c1ac8f993bfb6f4085d135aa58ca9dcf63ebabf52b5c695f7","src/zlib-1.2.8/contrib/dotzlib/DotZLib/AssemblyInfo.cs":"314afcfb339ea95f5431047b7ab24631b11c3532c7ce5dc2094ed0cf80a7c16d","src/zlib-1.2.8/contrib/dotzlib/DotZLib/ChecksumImpl.cs":"e7c047a2c3bcf88d3d002ee3d2d05af414acf53cb4451efacc0f2e95a474ea0f","src/zlib-1.2.8/contrib/dotzlib/DotZLib/CircularBuffer.cs":"be84c9736fe7bdc2bfae70466d8fff582504e928d5b5e110fd758090090c8cb7","src/zlib-1.2.8/contrib/dotzlib/DotZLib/CodecBase.cs":"259bdda1b7d6052134e631fa24bfd9dca6e2362563496c8b85257b56c848908c","src/zlib-1.2.8/contrib/dotzlib/DotZLib/Deflater.cs":"06ba6696a3c15c53ba5fd5a1c2bf50b51f217010228fc1e4c8495ee578f480de","src/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.cs":"9837fe993fd631233cc5e53ff084d86754b97f05ec77c54b0764c2706f186134","src/zlib-1.2.8/contrib/dotzlib/DotZLib/DotZLib.csproj":"21606db31dfef6410dd438b73f1db68856eacabcce6c0f0411fc4f17e17001f3","src/zlib-1.2.8/contrib/dotzlib/DotZLib/GZipStream.cs":"8d1de9755c77046b4ac71340a0a54434ebf4fd11b085c44454d7663a9b4df1c5","src/zlib-1.2.8/contrib/dotzlib/DotZLib/Inflater.cs":"9016ca73818f5b6a28791abc3af6da7c4d2773b6a3804f593f6d5737a62b99ad","src/zlib-1.2.8/contrib/dotzlib/DotZLib/UnitTests.cs":"b5266d91bad91ff484582231cdc06baa916a5b4c4e4be79e380037e9be6a9429","src/zlib-1.2.8/contrib/dotzlib/LICENSE_1_0.txt":"36266a8fd073568394cb81cdb2b124f7fdae2c64c1a7ed09db34b4d22efa2951","src/zlib-1.2.8/contrib/dotzlib/readme.txt":"d04972a91b1563fb4b7acab4b9ff2b84e57368953cc0596d5f5ea17d97315fd0","src/zlib-1.2.8/contrib/gcc_gvmat64/gvmat64.S":"22ff411b8b1d1b04aeaa8418b68245400267dc43c6f44104f6ccd37f0daee89f","src/zlib-1.2.8/contrib/infback9/README":"890288f02bb3b1f9cc654b87a07fcea695f90f6b9bd672d25bf6be1da2ec1688","src/zlib-1.2.8/contrib/infback9/infback9.c":"0a715c85a1ce3bb8b5a18d60941ffabc0186a886bcc66ba2ee0c4115a8e274e9","src/zlib-1.2.8/contrib/infback9/infback9.h":"dda2302f28157fe43a6143f84802af1740393572c2766559593996fd7a5a3245","src/zlib-1.2.8/contrib/infback9/inffix9.h":"84a2ba4727767c18af6505f0e81d9c814489c8b9ed330a25dad433db72997e43","src/zlib-1.2.8/contrib/infback9/inflate9.h":"32a907676cc36e27d0fdc0d99adb83a0b23f20ab61896269216d40fecf08d349","src/zlib-1.2.8/contrib/infback9/inftree9.c":"9761abea8a34213c2d4ddea7854fd7dcc48deb2895d83c61c4c1b34294ffcfbf","src/zlib-1.2.8/contrib/infback9/inftree9.h":"8ae61d52e50d2dbdb0378548ecc54fcd88f108c8b6fc30562a3ebec1ca6a599e","src/zlib-1.2.8/contrib/inflate86/inffas86.c":"6f266f3c7e0faca653256d0189c0f00d7dc0b062d02e25df4e1202e49369595c","src/zlib-1.2.8/contrib/inflate86/inffast.S":"70777bd21526680005fc34f086d108af49e2668ad86d1749e8e8100a81bfb288","src/zlib-1.2.8/contrib/iostream/test.cpp":"0f3c77e013949eb9c91e6b690ea894e19d97944d6b0885b82806fc3ad99680cf","src/zlib-1.2.8/contrib/iostream/zfstream.cpp":"8ebb9b3d521cc3392953f27658cf1f6dcb763216079f69a1518ec5ca0e42a63b","src/zlib-1.2.8/contrib/iostream/zfstream.h":"4369c35e66f63f52ca4a5e1759bf720507ccabb8f3f132e2f18e68686c812401","src/zlib-1.2.8/contrib/iostream2/zstream.h":"d0343e0c57ff58008b6f29643d289c72713aa2d653fe3dcd2e939fc77e7e20b6","src/zlib-1.2.8/contrib/iostream2/zstream_test.cpp":"f789df183cc58b78751985466380c656308490a9036eb48a7ef79704c3d3f229","src/zlib-1.2.8/contrib/iostream3/README":"43ec48ecbd95a8c45db20b107fac73b740bb11595a4737329188f06b713972cc","src/zlib-1.2.8/contrib/iostream3/TODO":"af5ebc83fb88f69706c8af896733784753dead147687e1c046f410c0997fd88b","src/zlib-1.2.8/contrib/iostream3/test.cc":"8e17fc48dfdbc6e268838b8b427491b5843b6d18bc97caa6924de9fad7abe3da","src/zlib-1.2.8/contrib/iostream3/zfstream.cc":"8cdd67ed0b13c192c11e5ea90e9d5782d6627eb303fbc4aa5ebda2531ec00ff8","src/zlib-1.2.8/contrib/iostream3/zfstream.h":"1bd74778fac45ee090dfc0f182a23e8a849152deb630606884b2635987b357b1","src/zlib-1.2.8/contrib/masmx64/bld_ml64.bat":"1c0561908a07ebdff271b12ed757241e1813d3db0f3551501b2595c23f0833aa","src/zlib-1.2.8/contrib/masmx64/gvmat64.asm":"390c1e6d63cb615b5ba042842738953f9cdc688b2fe35aaca981fd3fae213f3f","src/zlib-1.2.8/contrib/masmx64/inffas8664.c":"f6c585e43e6e524107566b1f10104949d0ef902159ac8203e1d98e50d4bedd62","src/zlib-1.2.8/contrib/masmx64/inffasx64.asm":"8448d0041fe6e8f4188fe5916181a1b274c6d35d75cfb28da60cf4f1edde44ec","src/zlib-1.2.8/contrib/masmx64/readme.txt":"9bb66b5028100855683853f12da0be479c7bccf74365fdbf37da2542edff9927","src/zlib-1.2.8/contrib/masmx86/bld_ml32.bat":"b0b05b62715d4a81a7db5b7ca4a372d109ec95634c9d3bef9e0041ff52de22fc","src/zlib-1.2.8/contrib/masmx86/inffas32.asm":"78d2cc88f8ed0e32ef960efc987c257bc1688afe7d031a8ba18761e95a6a7c3f","src/zlib-1.2.8/contrib/masmx86/match686.asm":"9e9bea3b5517b089da7d39caded07982746a33f94f0907ca7e8afefed7be36b6","src/zlib-1.2.8/contrib/masmx86/readme.txt":"1f29a04e0227b74e20ba1b7c764b3ca5bf596dd2c06e89bc19a05fb8f9689778","src/zlib-1.2.8/contrib/minizip/Makefile":"087034de3dc0223b29e64bb3a4fc3eda7b948e93d2a9ff154aecf9fed2a1eb5b","src/zlib-1.2.8/contrib/minizip/Makefile.am":"2313a3480a2c3745fa7ce216829cd0367058907d3a0902e5832c66c84a2fdfc6","src/zlib-1.2.8/contrib/minizip/MiniZip64_Changes.txt":"302c62b328647f5472fb7755249a83459be7f8ffb1fae07e8ba318fce8f4126c","src/zlib-1.2.8/contrib/minizip/MiniZip64_info.txt":"122719c32ef1763a5f6ba9c8cdefc1d78a76f7156b09e7b6f69b73f968e0dac3","src/zlib-1.2.8/contrib/minizip/configure.ac":"90cf87b0bfee8755540271caab9f0dcd45073021ae44f257f3c25e58817113c4","src/zlib-1.2.8/contrib/minizip/crypt.h":"8e872b60255b8447da99885c7159c2e1f1bb8143523bdbe71784e60f98bfd67b","src/zlib-1.2.8/contrib/minizip/ioapi.c":"66b39c27042f6ad12cc12efb0c82cdf100c6640b5fa959b8b866e252966113a9","src/zlib-1.2.8/contrib/minizip/ioapi.h":"8655408534b78dc0889a45f9359fc6d2d5c8e8d8443b81ede596f954c720ef48","src/zlib-1.2.8/contrib/minizip/iowin32.c":"0b9c9a609f24cd8dd63e5db732efd0b6ff49815166dfc58ddd202b1570b49a8b","src/zlib-1.2.8/contrib/minizip/iowin32.h":"586f22b9c3c64da253ce2b518e0fad61f19a7b47b289fc704cc9708242294c49","src/zlib-1.2.8/contrib/minizip/make_vms.com":"65736d9c4888f2373d3db0a13864d150c5040453f5bc2a5c8784379a7ea67590","src/zlib-1.2.8/contrib/minizip/miniunz.c":"ced49f20c62536a8ffb270b35cfa4994a1dcdce45f8cf059b941c94ca0022666","src/zlib-1.2.8/contrib/minizip/miniunzip.1":"66d8684392167091ef0fe01598d6a0daa26e7e448e2df6c3cb257487735b83f7","src/zlib-1.2.8/contrib/minizip/minizip.1":"5404596e8e5587a52f563906119f32ceee30a6d97a966afa5c7afbe4d373e210","src/zlib-1.2.8/contrib/minizip/minizip.c":"fdfcf83979ef2324c1455d369e8add8678c804939d412ce53f8b024578ceabad","src/zlib-1.2.8/contrib/minizip/minizip.pc.in":"8b6670b42d8e5e519e1cc89db093efc07ba23cb1ddfedd3c93ff2df08c3ce8ac","src/zlib-1.2.8/contrib/minizip/mztools.c":"cd887c4af6d20823bd15f24008b10acf01969b4165d7848656bde843a92428d7","src/zlib-1.2.8/contrib/minizip/mztools.h":"6f82c52279e8f79165f4446be652e5741a49992ac58632470335aa34c564072a","src/zlib-1.2.8/contrib/minizip/unzip.c":"9dc09da0688e5e5bd359844a7f24b36571213ece9e634192373f1b0762b18d6a","src/zlib-1.2.8/contrib/minizip/unzip.h":"d8dc58fc0121b6a4b98f3028205bb253f956b1ddf791e9ced3cf44892502a01f","src/zlib-1.2.8/contrib/minizip/zip.c":"23e4c2e582e445d96bd7d962ff7b335eeec3ac45475de255144a5597fbc9f245","src/zlib-1.2.8/contrib/minizip/zip.h":"96163fc140e4bf08752e014d20a1eac3f5adcdc408366f6d79c1895f2599cf08","src/zlib-1.2.8/contrib/pascal/example.pas":"d842d456ecb6ff80e34cee2da31deb2072cc69ca837497bea8b8bee203403474","src/zlib-1.2.8/contrib/pascal/readme.txt":"02f997c37991ddae0cb986039f7b4f6fc816b3fd0ffd332cad371d04c12cf1b9","src/zlib-1.2.8/contrib/pascal/zlibd32.mak":"850e91b6c9ea05de61a411cbda16fa0f10118cd88bb32c4b7226988776f8d511","src/zlib-1.2.8/contrib/pascal/zlibpas.pas":"9dcd5be5329b593cc44995b1886d2a5eb7bfc5f9ebb4b37fff852a0d940da046","src/zlib-1.2.8/contrib/puff/Makefile":"d9d738030464aaae354196c14fd928adf591832fce7d71ac1977c1d8d4923a4b","src/zlib-1.2.8/contrib/puff/README":"aceca4bc1bce7d9445b8bc9b6640c672d95708185f6070d3a3baae7a9d102caf","src/zlib-1.2.8/contrib/puff/puff.c":"099226fa987168a36825317cc6093111335a02bbdc85e2fe166d861103214686","src/zlib-1.2.8/contrib/puff/puff.h":"969b7be2a930db0cdcb19b0e5b29ae6741f5a8f663b6dba6d647e12ec60cfa8e","src/zlib-1.2.8/contrib/puff/pufftest.c":"8ee0da78a1221a3c2036e22eed06c2faa27a671a46565a60e10111d4ee9c30ee","src/zlib-1.2.8/contrib/puff/zeros.raw":"b7b0887089f7af1f6d1e0b4c0a1e8eddd10223b23554299455c6c9be71b653a3","src/zlib-1.2.8/contrib/testzlib/testzlib.c":"c6c37b35c6ecc9986a9041f86d879cc37a9e4d8315af9d725071eb3b2cade0c5","src/zlib-1.2.8/contrib/testzlib/testzlib.txt":"2359bbdc84eb8a04e0f1cd16cd81a2896e957f2ad58dab3ca78ef55b7d0dc577","src/zlib-1.2.8/contrib/untgz/Makefile":"8f5ab1564813e091cea8f1bb63da32fd80ac763d029277b0cabf50f60aceefe1","src/zlib-1.2.8/contrib/untgz/Makefile.msc":"d0f537de11d9e0e36e2a98b3971c537265f4b533b4c48797094365ad9ae8388b","src/zlib-1.2.8/contrib/untgz/untgz.c":"9a12d774301d252dcd38bba07ac369319da4c04c4fef8a50fcbf40aebf29c2a1","src/zlib-1.2.8/contrib/vstudio/readme.txt":"5dd8bef90296272ce8cdca6e5658057d52f05acea8adc49b7ab1bd67386fd513","src/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj":"dd607d43c64581172c20c22112821924dfe862f56b2e5eb8780bdd0714d9527b","src/zlib-1.2.8/contrib/vstudio/vc10/miniunz.vcxproj.filters":"c3db9f97952683e688ad83c13bb94c816ac3e6b5f277fdea545b0650c125aa6d","src/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj":"af73f2cf8ae51e65e85342faeb40849a2310c97bc77def42b38d7070460a6cf0","src/zlib-1.2.8/contrib/vstudio/vc10/minizip.vcxproj.filters":"83db58d87f5d7ca84b6087aa1f62b15cbc296194c8cf76e47a271f9077b4f3bd","src/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj":"1525ed0893db56db44ec68675c8da3c229dc7867166dfc0428816783d16ad43b","src/zlib-1.2.8/contrib/vstudio/vc10/testzlib.vcxproj.filters":"d7e04ffa467d417dfa3c0f1c64234cadc84882101bbae483f0a0f5d3d6b566a7","src/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj":"3f317d8964f17901c3e68bff5deaec10b6ccc50a572235999e8097292692984c","src/zlib-1.2.8/contrib/vstudio/vc10/testzlibdll.vcxproj.filters":"682a485f0184aabba94e12e1b284499195f37c176d43ecee0484f31e4d636f6f","src/zlib-1.2.8/contrib/vstudio/vc10/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj":"2a38222d6c034d7e0b843c3f0540dc6c53dd48f942ae29f31620ca0327248c8e","src/zlib-1.2.8/contrib/vstudio/vc10/zlibstat.vcxproj.filters":"d9a2c381e51e4d6f027f3517db7db81656e43cec02ed9abf267a0fde6f360180","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.sln":"e659860f705f31b87ea9139a3cb4ebe1561e120bce495383a54614fc82b49990","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj":"3108badf710e2f4a64eab4e7deae6642fb68cc0d94018e537149f1761e215133","src/zlib-1.2.8/contrib/vstudio/vc10/zlibvc.vcxproj.filters":"58404ba7703c68025bec64b8a17ff1fc7f3a35d15d17ae3bcc4fa753f1348425","src/zlib-1.2.8/contrib/vstudio/vc11/miniunz.vcxproj":"746e4c11fb8af4bcd6a9d68ba81ed1dc366a5de3bed56b291ee969ad733a7bb0","src/zlib-1.2.8/contrib/vstudio/vc11/minizip.vcxproj":"340617cae9cf4fcb003308021d3782ec3639e60d62d79a3aafc0a50bb55b061e","src/zlib-1.2.8/contrib/vstudio/vc11/testzlib.vcxproj":"589eec6ef6d818564ead938a629fda50abb6cbf8054b9f66ea780765c1a1b3db","src/zlib-1.2.8/contrib/vstudio/vc11/testzlibdll.vcxproj":"583bdef522b0176829f0d8139ea2a88b9cbc14379d1334f3a863989ed3df9b67","src/zlib-1.2.8/contrib/vstudio/vc11/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc11/zlibstat.vcxproj":"51aa752698d96df065a9ece02e293492f681b59a8077f036a5a60367dc621e87","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.sln":"27389b515997defd080519f95aff87e89fcbe8b26d73c5ebb73c544cfef4d60e","src/zlib-1.2.8/contrib/vstudio/vc11/zlibvc.vcxproj":"c3dd05e56159aba411475b83656275872524cb3c2fd24d690397d8b634e7e0ed","src/zlib-1.2.8/contrib/vstudio/vc9/miniunz.vcproj":"b2b53bd9e704bfbe769b863acdc2a3368692ca149c4b4ed2a0761b0cd16c6726","src/zlib-1.2.8/contrib/vstudio/vc9/minizip.vcproj":"80a701fb41a61871ce1d25f6b03e571edb6c3abf0aa45375554b6fac52115eb6","src/zlib-1.2.8/contrib/vstudio/vc9/testzlib.vcproj":"05fc5a87682b17690d199f424f57f6ad7767b8dabb29a1039bfcb88bca1b302f","src/zlib-1.2.8/contrib/vstudio/vc9/testzlibdll.vcproj":"25c1cc5319f1c4b7dbdb595c3cfd6ec3ba217818b03b7055ef5ef440b575a43d","src/zlib-1.2.8/contrib/vstudio/vc9/zlib.rc":"9caf00def3b7c7216c4adf4a58d840ebd74155af5dbc7f1ef6e36e8ed77fe407","src/zlib-1.2.8/contrib/vstudio/vc9/zlibstat.vcproj":"e8653eea37f3bef097eec2caa55e1f698c3c74c959689bc4e97568e88d2bbc60","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.def":"ed94936c1301753eff22bd2374f6a7dff3b2caf56d13debb99966b01c2ba355f","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.sln":"26e58d4b2cfcd941c367fb2a18537b3b9f002f2ac1278b700ea1129c50501452","src/zlib-1.2.8/contrib/vstudio/vc9/zlibvc.vcproj":"86aa6e33db104c0a0ed4a9f21f0db8572cc7755170217aef18219fdd74b75e9d","src/zlib-1.2.8/crc32.c":"3f3daca510273dda74eaf381c46d2551e3a3506891ae063ab451b87744a7a36c","src/zlib-1.2.8/crc32.h":"407af59d0abfea84a6507c603eb29809411797f98249614fe76a661def783ce1","src/zlib-1.2.8/deflate.c":"565e68ddfff5af8efd55f71e122b860ad11527a7d9de40a76af2b16afef24cc0","src/zlib-1.2.8/deflate.h":"80570c8052491bdc7583600da28a8f1cb32c27ab1cec107ec12c83255d426cf7","src/zlib-1.2.8/doc/algorithm.txt":"992590931e982c0765286c2d83f6e9ff0a95aabb08e28c30c52bae3e8c4bd5ad","src/zlib-1.2.8/doc/rfc1950.txt":"8f0475a5c984657bf26277f73df9456c9b97f175084f0c1748f1eb1f0b9b10b9","src/zlib-1.2.8/doc/rfc1951.txt":"5ebf4b5b7fe1c3a0c0ab9aa3ac8c0f3853a7dc484905e76e03b0b0f301350009","src/zlib-1.2.8/doc/rfc1952.txt":"164ef0897b4cbec63abf1b57f069f3599bd0fb7c72c2a4dee21bd7e03ec9af67","src/zlib-1.2.8/doc/txtvsbin.txt":"47c273bb22c9773248d380549a330e5c262266b1292154b0d3014f731cc73f47","src/zlib-1.2.8/examples/README.examples":"402d72eb69c2e03a25034f4b3c02b110f0f67149ecfa4fa0e4b2bf0ceb49a8b3","src/zlib-1.2.8/examples/enough.c":"704e273f65b62c5d2eb06d5bb10c4ccffba56544aa477f0e3957e2296c501b78","src/zlib-1.2.8/examples/fitblk.c":"950769163c41aff897ee41746a8685d9aa41073b1307f42da19dabe9d3fc8b85","src/zlib-1.2.8/examples/gun.c":"2d38ab3176a404e2da885dca47b1a6bbb64fd0ae7c089131ee3887c239b40b7e","src/zlib-1.2.8/examples/gzappend.c":"4182d38bf97ffbdf1110df7f65c0e8fab0b28b1ea36ebba8621c14e8e76f1caa","src/zlib-1.2.8/examples/gzjoin.c":"90b9d6c39a5fc91cf1cc9b96b025a508a8015dc502cd9374c754b44078593f57","src/zlib-1.2.8/examples/gzlog.c":"073c99b407c738bb56396fab1e3eb1affaba9af7b8f8ebffcc0644b1591be162","src/zlib-1.2.8/examples/gzlog.h":"309556e2d7d39250924946b78e2cce0ac927857d6e1a02cab64e438f533c20c3","src/zlib-1.2.8/examples/zlib_how.html":"80fb647be8450bd7a07d8495244e1f061dfbdbdb53172ca24e7ffff8ace9c72f","src/zlib-1.2.8/examples/zpipe.c":"68140a82582ede938159630bca0fb13a93b4bf1cb2e85b08943c26242cf8f3a6","src/zlib-1.2.8/examples/zran.c":"b1b910708225a62f81ec97a08203239d35d18c33470c0775f0bcd5347820e1f6","src/zlib-1.2.8/gzclose.c":"94446cf8cde67c30e64d0a335b0c941fd3fbad2e77f30180d12e61f9c2a5a6b8","src/zlib-1.2.8/gzguts.h":"2d3c0154089061fd3a9a789903e54b2ca3cef241383599f37b63914330b9c358","src/zlib-1.2.8/gzlib.c":"90d43517bcff858312c0ed72dfa760be3a774939ba663952f0f9aa0e96f97f34","src/zlib-1.2.8/gzread.c":"b2bd8884fc467b47e425d1c34268f08e40dd54401682a49c56d2e441ee811d8c","src/zlib-1.2.8/gzwrite.c":"09d33648f5b3be2efd3ad176f6b966205d5f8abaf1d1139a196e0987b9319b7d","src/zlib-1.2.8/infback.c":"16f8418da8a86bcb5fb98f121f3ba45275ae5b57ad00b0545d4a311ed890f524","src/zlib-1.2.8/inffast.c":"fd82c328b310f2f0ecc6a13475889e51c407dd4c5e8a931a36f18ad63f319c35","src/zlib-1.2.8/inffast.h":"7d8c1c873ce9bc346ad6005bb9d75cce5c6352aaf7395385be216a9452a34908","src/zlib-1.2.8/inffixed.h":"237ba710f090e432b62ebf963bee8b302867e9691406b2d3f8ee89ee7bfef9b0","src/zlib-1.2.8/inflate.c":"fb9bfa1295e7a6ef1b4a1149eec372dd7dcce407dd4fe9fea9c23a45a6857381","src/zlib-1.2.8/inflate.h":"36e5300408aa55a175a7d9be6b2f25dc0c5f80d79b2115fe43a2fe531e84775d","src/zlib-1.2.8/inftrees.c":"608f96120ac1572002bbce6dcd2625171dae0afbecf4334070288a33e19e5952","src/zlib-1.2.8/inftrees.h":"c510b36402784b1f898be3b049b923469aa92701de2d9195aed19f6b65c0dce2","src/zlib-1.2.8/make_vms.com":"3064eb153a7684115f1494364f80759bc5a2c227799fdf08df7b9e6e50884720","src/zlib-1.2.8/msdos/Makefile.bor":"292ab363f7ffbc4ae84d37cd9bdffd2dac1003bee52d223a8489844870f20702","src/zlib-1.2.8/msdos/Makefile.dj2":"df5e05d3744e8539299c6974fae2d68a13fc5513e8564fef791b6665df592bce","src/zlib-1.2.8/msdos/Makefile.emx":"5cb73e60a327b58f755442e3444b529f8a50146f980e0a38b945c7c40c112761","src/zlib-1.2.8/msdos/Makefile.msc":"0e021a6f42212415b060e4ad468eb415d0a8c1f343137fb9dff2cb8f9ead3027","src/zlib-1.2.8/msdos/Makefile.tc":"2ae12ee2a3e62f7c5a0520d0fbe4adee772bc07fe816002b07ccb43db3daa76a","src/zlib-1.2.8/nintendods/Makefile":"ea5823efe6830132294eddf2f56dbd7db8712244c210bb4968c431b1a91bd066","src/zlib-1.2.8/nintendods/README":"e362426c47b39ff6a7d6c75c6660b20abf076cdfa5e1e421716dc629a71aef95","src/zlib-1.2.8/old/Makefile.emx":"c767d0e5505995e8e7cac2734bbcb08e1cf823f19cc734e5c845b5ef5fccced6","src/zlib-1.2.8/old/Makefile.riscos":"d1a488b160fbfd53272b68a913283a4be08ba9d490796b196dddb2ba535b41e0","src/zlib-1.2.8/old/README":"551a0f4d91fe0f827a31cbdfbb4a71d1f3dc4d06564d80a3f526b749dd104d11","src/zlib-1.2.8/old/descrip.mms":"8ff08c35c056df9c986f23c09cf8936db63ccf12c3c42f7d18a48b36f060cff7","src/zlib-1.2.8/old/os2/Makefile.os2":"7d16bade2a9c0d3847fd9ba2e75eb3a0c14d0f741610f4bf9cb3edef84c696b4","src/zlib-1.2.8/old/os2/zlib.def":"ea9c61876d2e20b67ef2d9495991a32798eb40d13ede95859a2f4f03b65b9b61","src/zlib-1.2.8/old/visual-basic.txt":"1727650acbde9a9e6aec9438896377e46a12699cca5d46c5399cef524dedc614","src/zlib-1.2.8/qnx/package.qpg":"e7795fef80cfc2d7a4377e6af90a831955b7be35c64e3b310ec87678d360dfb0","src/zlib-1.2.8/test/example.c":"63061f7e4978035e072d0906aae087605551352adef92d4499b533a79e25747c","src/zlib-1.2.8/test/infcover.c":"f3fc5682c7d99e6bb670b8ef53463257ea3a4a57dd5e20b109005f99a807e5fb","src/zlib-1.2.8/test/minigzip.c":"a181d4748927637f26d0641d5666840c9d3afbe8910d46d3020e3c6edbde1c4a","src/zlib-1.2.8/treebuild.xml":"6ddcf7cd73f4f9194addf7b3c82aca350c912062ea0c8f0df13c49c614fd9968","src/zlib-1.2.8/trees.c":"49b5289399f76281541b26cab190d9d4e34bb666728ed661e0bfc7fb402d20f1","src/zlib-1.2.8/trees.h":"bb0a9d3ca88ee00c81adb7c636e73b97085f6ef1b52d6d58edbe2b6dc3adeb4d","src/zlib-1.2.8/uncompr.c":"454902e5c47baf75e946b999fb93b9f8a3f6bbac68c5c51b3e0fe8f54542123e","src/zlib-1.2.8/watcom/watcom_f.mak":"7e039b912f9cffaa40835281430bb284fa9042b0a0d12f6b34700a06bca6576e","src/zlib-1.2.8/watcom/watcom_l.mak":"d11b4064604a034725860e63e3f6d347056372e4b1675b183e20a93533b20cc9","src/zlib-1.2.8/win32/DLL_FAQ.txt":"9e00778319381e6275691dd3a89410c99065b8c0c5db96473abe8c859cbdefd8","src/zlib-1.2.8/win32/Makefile.bor":"e878fed2313417db085fea621c110889f6a32233b5b6db46e3c4e824c1d0ed6b","src/zlib-1.2.8/win32/Makefile.gcc":"3109182015186cd089f545dffcb3e81f9538ebec30c3c9836f8a4b67b2f2ebaf","src/zlib-1.2.8/win32/Makefile.msc":"4bfc81e50e6afa9cb7935bf8176743df8df224ab943b29d81ab4cb0f72a317d7","src/zlib-1.2.8/win32/README-WIN32.txt":"5e279cfb5d0476e27b78b1713eaf97d07935c14b9fc681791e15efb2344e6a43","src/zlib-1.2.8/win32/VisualC.txt":"e309c8623a1dcff79f5e588266c6ec68ca99f662baf9782591df561d5ddd94ea","src/zlib-1.2.8/win32/zlib.def":"87e3b230a173c65b988be24f339c2f4350780001e2810029ef55240397f25193","src/zlib-1.2.8/win32/zlib1.rc":"d7f269379144d65bcd1b67c1065e5d4120579f14ce54ecf246eaba394fa989a5","src/zlib-1.2.8/zconf.h":"ec0d0a6e87b749ab5fc3f27c0e8292b7aed139ca0b6121ab27e6eb30e2e9b6ba","src/zlib-1.2.8/zconf.h.cmakein":"49c987659808d77f5250b2f64ee71e57cf32cf4b52955cea179d7ebd3c578e59","src/zlib-1.2.8/zconf.h.in":"ec0d0a6e87b749ab5fc3f27c0e8292b7aed139ca0b6121ab27e6eb30e2e9b6ba","src/zlib-1.2.8/zlib.3":"621d9c7afa32fac41b28219c0d38a4a7179fdc05358bd2f7bdf7116d25d0cecd","src/zlib-1.2.8/zlib.h":"726b0569915917b967f87f3f08a1eec039101bf9dcc29d61c0b2b0b8f271b58d","src/zlib-1.2.8/zlib.map":"2b133e742e41f08cc4e993ceddbd43ee9d2d1b76da60c53b8405e1f811274a85","src/zlib-1.2.8/zlib.pc.cmakein":"2f1d0b18ce37c2af415a469857f02aee2c41a58877aff21d29e9c6db32b55cb7","src/zlib-1.2.8/zlib.pc.in":"04c01cc2e1a0ed123518b5855f585c93a24526dd88982c414111ea1fc9f07997","src/zlib-1.2.8/zlib2ansi":"d316e3e79054f5f9fe921d35f4bbf4bf0a37b859d29d2b34ae4d7d92afc3e55c","src/zlib-1.2.8/zutil.c":"c5e9927d5a1a1dec514ccdcedfa1e0f01664c58bb33166b4997b50b8001f1d6c","src/zlib-1.2.8/zutil.h":"91cce8e78e83bcdb8c6acb98d4f0686dbdc81ca97d4a36a60c0b48f7ef78f1af"},"package":"905c72a0c260bcd89ddca5afa1c46bebd29b52878a3d58c86865ea42402f88e6"} \ No newline at end of file diff --git a/third_party/rust/libz-sys/.travis.yml b/third_party/rust/libz-sys/.travis.yml index b00902bc3b47..8dd1090d50b0 100644 --- a/third_party/rust/libz-sys/.travis.yml +++ b/third_party/rust/libz-sys/.travis.yml @@ -17,7 +17,8 @@ notifications: on_success: never env: global: - secure: AEw7peNq5yyhDlGod702HScsujYFaFWvdOaZKiyVwUMNHkou1U4BiziBGekBqTmrPOW8+iNSS5J7MDPu8I7RAtkrlOvsBKIjmGbBYkzodkMFjR6TNNAnfAXhjqUzHh77wL5qWtNh+bz/PL4RVyjdo1Swnc6mqz5Unu9rP9S2LeE= + secure: "eq1KPWs3sNmvrQj6ayLRrY2Jqwpx4p9CNU5gRU6LCdx2otIQqKXY1Jj9E6uvQIspL6ZpCNzYDMDUSsRdNahdx59WQGD/mxdrFWStUonJ4t0al2FIQ97NaEy57r4vw36oViDCzqZudDlsacHZnpCpI8ei6AB73rGXfxc3g3fxk6o=" + os: - linux - osx diff --git a/third_party/rust/libz-sys/Cargo.toml b/third_party/rust/libz-sys/Cargo.toml index b4531d6a6c0b..56eb6fdd68db 100644 --- a/third_party/rust/libz-sys/Cargo.toml +++ b/third_party/rust/libz-sys/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "libz-sys" -version = "1.0.6" +version = "1.0.10" authors = ["Alex Crichton "] links = "z" build = "build.rs" diff --git a/third_party/rust/libz-sys/appveyor.yml b/third_party/rust/libz-sys/appveyor.yml index ef1caafd1b7e..3e7ec194b1df 100644 --- a/third_party/rust/libz-sys/appveyor.yml +++ b/third_party/rust/libz-sys/appveyor.yml @@ -17,5 +17,5 @@ install: build: false test_script: - - cargo test - - cargo run --manifest-path systest/Cargo.toml + - cargo test --target %TARGET% + - cargo run --manifest-path systest/Cargo.toml --target %TARGET% diff --git a/third_party/rust/libz-sys/build.rs b/third_party/rust/libz-sys/build.rs index 36b27824f5aa..f37a0d1f1f9c 100644 --- a/third_party/rust/libz-sys/build.rs +++ b/third_party/rust/libz-sys/build.rs @@ -3,7 +3,8 @@ extern crate gcc; use std::env; use std::ffi::OsString; -use std::fs; +use std::fs::{self, File}; +use std::io::prelude::*; use std::path::{Path, PathBuf}; use std::process::Command; @@ -33,6 +34,8 @@ fn main() { // one of those sole platforms that doesn't! if target.contains("msvc") { build_msvc_zlib(&target); + } else if target.contains("pc-windows-gnu") { + build_zlib_mingw(); } else if (target.contains("musl") || target != host || want_static) && @@ -59,16 +62,59 @@ fn build_zlib() { run(Command::new("./configure") .current_dir(&build) .env("CC", compiler.path()) - .env("CFLAGS", cflags)); + .env("CFLAGS", cflags) + .arg(format!("--prefix={}", dst.display()))); run(Command::new("make") .current_dir(&build) .arg("libz.a")); - t!(fs::create_dir_all(dst.join("lib"))); + t!(fs::create_dir_all(dst.join("lib/pkgconfig"))); t!(fs::create_dir_all(dst.join("include"))); t!(fs::copy(build.join("libz.a"), dst.join("lib/libz.a"))); t!(fs::copy(build.join("zlib.h"), dst.join("include/zlib.h"))); t!(fs::copy(build.join("zconf.h"), dst.join("include/zconf.h"))); + t!(fs::copy(build.join("zlib.pc"), dst.join("lib/pkgconfig/zlib.pc"))); + + println!("cargo:rustc-link-lib=static=z"); + println!("cargo:rustc-link-search={}/lib", dst.to_string_lossy()); + println!("cargo:root={}", dst.to_string_lossy()); + println!("cargo:include={}/include", dst.to_string_lossy()); +} + +fn build_zlib_mingw() { + let src = env::current_dir().unwrap().join("src/zlib-1.2.8"); + let dst = PathBuf::from(env::var_os("OUT_DIR").unwrap()); + let build = dst.join("build"); + t!(fs::create_dir_all(&build)); + cp_r(&src, &build); + let compiler = gcc::Config::new().get_compiler(); + let mut cflags = OsString::new(); + for arg in compiler.args() { + cflags.push(arg); + cflags.push(" "); + } + let gcc = compiler.path().to_str().unwrap(); + let mut cmd = Command::new("make"); + cmd.arg("-f").arg("win32/Makefile.gcc") + .current_dir(&build) + .arg("install") + .arg(format!("prefix={}", dst.display())) + .arg(format!("INCLUDE_PATH={}", dst.join("include").display())) + .arg(format!("LIBRARY_PATH={}", dst.join("lib").display())) + .arg(format!("BINARY_PATH={}", dst.join("bin").display())); + + if gcc != "gcc" { + match gcc.find("gcc") { + Some(0) => {} + Some(i) => { + cmd.arg(format!("PREFIX={}", &gcc[..i])); + } + None => {} + } + } + run(&mut cmd); + + t!(fs::create_dir_all(dst.join("lib/pkgconfig"))); println!("cargo:rustc-link-lib=static=z"); println!("cargo:rustc-link-search={}/lib", dst.to_string_lossy()); @@ -99,12 +145,22 @@ fn build_msvc_zlib(target: &str) { t!(fs::create_dir_all(dst.join("build"))); cp_r(&src, &dst.join("build")); + let features = env::var("CARGO_CFG_TARGET_FEATURE") + .unwrap_or(String::new()); + if features.contains("crt-static") { + let mut makefile = String::new(); + let makefile_path = dst.join("build/win32/Makefile.msc"); + t!(t!(File::open(&makefile_path)).read_to_string(&mut makefile)); + let new_makefile = makefile.replace(" -MD ", " -MT "); + t!(t!(File::create(&makefile_path)).write_all(new_makefile.as_bytes())); + } + let nmake = gcc::windows_registry::find(target, "nmake.exe"); let mut nmake = nmake.unwrap_or(Command::new("nmake.exe")); run(nmake.current_dir(dst.join("build")) .arg("/nologo") .arg("/f") - .arg(src.join("win32/Makefile.msc")) + .arg(dst.join("build/win32/Makefile.msc")) .arg("zlib.lib")); for file in t!(fs::read_dir(&dst.join("build"))) { diff --git a/toolkit/library/gtest/rust/Cargo.lock b/toolkit/library/gtest/rust/Cargo.lock index 09b80483cfef..fd8eba6211e4 100644 --- a/toolkit/library/gtest/rust/Cargo.lock +++ b/toolkit/library/gtest/rust/Cargo.lock @@ -33,7 +33,7 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -75,7 +75,7 @@ dependencies = [ name = "rust_url_capi" version = "0.0.1" dependencies = [ - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "nsstring 0.1.0", "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -105,7 +105,7 @@ dependencies = [ [metadata] "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" -"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d" +"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" "checksum matches 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc3ad8109fa4b522f9b0cd81440422781f564aaf8c195de6b9d6642177ad0dd" "checksum unicode-bidi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c1f7ceb96afdfeedee42bade65a0d585a6a0106f681b6749c8ff4daa8df30b3f" "checksum unicode-normalization 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26643a2f83bac55f1976fb716c10234485f9202dcd65cfbdf9da49867b271172" diff --git a/toolkit/library/rust/Cargo.lock b/toolkit/library/rust/Cargo.lock index 40fb01a3f75a..5eaf08ec62d0 100644 --- a/toolkit/library/rust/Cargo.lock +++ b/toolkit/library/rust/Cargo.lock @@ -31,7 +31,7 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -62,7 +62,7 @@ version = "0.1.0" name = "rust_url_capi" version = "0.0.1" dependencies = [ - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "nsstring 0.1.0", "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -92,7 +92,7 @@ dependencies = [ [metadata] "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" -"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d" +"checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" "checksum matches 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bcc3ad8109fa4b522f9b0cd81440422781f564aaf8c195de6b9d6642177ad0dd" "checksum unicode-bidi 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c1f7ceb96afdfeedee42bade65a0d585a6a0106f681b6749c8ff4daa8df30b3f" "checksum unicode-normalization 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "26643a2f83bac55f1976fb716c10234485f9202dcd65cfbdf9da49867b271172" From 6bc2287ec754a58638f697a43078ed9a6b479f85 Mon Sep 17 00:00:00 2001 From: Eitan Isaacson Date: Tue, 20 Dec 2016 11:29:26 -0800 Subject: [PATCH 35/94] Bug 1324868 - invert `initial` flag in NarrateContols._setupVoices to correct value. r=Gijs MozReview-Commit-ID: D6Vnh5jTsiv --HG-- extra : rebase_source : 3a495902d77b5c50b1ff487af79cf12abc00d852 --- toolkit/components/narrate/NarrateControls.jsm | 6 +++--- toolkit/components/telemetry/Histograms.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/toolkit/components/narrate/NarrateControls.jsm b/toolkit/components/narrate/NarrateControls.jsm index a2953b197589..bfee9dd96ff5 100644 --- a/toolkit/components/narrate/NarrateControls.jsm +++ b/toolkit/components/narrate/NarrateControls.jsm @@ -192,9 +192,9 @@ NarrateControls.prototype = { } let narrateToggle = win.document.getElementById("narrate-toggle"); - let histogram = - Services.telemetry.getKeyedHistogramById("NARRATE_CONTENT_BY_LANGUAGE"); - let initial = !!this._voicesInitialized; + let histogram = Services.telemetry.getKeyedHistogramById( + "NARRATE_CONTENT_BY_LANGUAGE_2"); + let initial = !this._voicesInitialized; this._voicesInitialized = true; if (initial) { diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index 5a73e964dfc6..f60f7aadc8ff 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -10556,9 +10556,9 @@ "n_buckets": 10, "description": "Percentage of time taken by phases in expensive content paints." }, - "NARRATE_CONTENT_BY_LANGUAGE": { + "NARRATE_CONTENT_BY_LANGUAGE_2": { "alert_emails": ["eisaacson@mozilla.com"], - "bug_numbers": [1308030], + "bug_numbers": [1308030, 1324868], "releaseChannelCollection": "opt-out", "expires_in_version": "56", "kind": "enumerated", From 9c9ede3d9fcb4bf9960409e14d5204534d658bc1 Mon Sep 17 00:00:00 2001 From: Matthew Noorenberghe Date: Wed, 21 Dec 2016 15:48:26 -0500 Subject: [PATCH 36/94] Bug 1324136 - Add a GetVisibleLogins helper to reduce duplication in passwordManager.js. r=seanlee MozReview-Commit-ID: BV6iqTvcVw5 --HG-- extra : rebase_source : ae0c5117b7b0254f9f0aa969b46836ebe570b960 --- .../passwordmgr/content/passwordManager.js | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/toolkit/components/passwordmgr/content/passwordManager.js b/toolkit/components/passwordmgr/content/passwordManager.js index 333dc1d24590..3dbb499cc3ab 100644 --- a/toolkit/components/passwordmgr/content/passwordManager.js +++ b/toolkit/components/passwordmgr/content/passwordManager.js @@ -135,7 +135,7 @@ let signonsTreeView = { return ""; } - const signon = this._filterSet.length ? this._filterSet[row] : signons[row]; + const signon = GetVisibleLogins()[row]; // We already have the favicon URL or we started to fetch (value is null). if (this._faviconMap.has(signon.hostname)) { @@ -158,7 +158,7 @@ let signonsTreeView = { getCellValue(row, column) {}, getCellText(row, column) { let time; - let signon = this._filterSet.length ? this._filterSet[row] : signons[row]; + let signon = GetVisibleLogins()[row]; switch (column.id) { case "siteCol": return signon.httpRealm ? @@ -202,8 +202,7 @@ let signonsTreeView = { return ""; }, setCellText(row, col, value) { - // If there is a filter, _filterSet needs to be used, otherwise signons is used. - let table = signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons; + let table = GetVisibleLogins(); function _editLogin(field) { if (value == table[row][field]) { return; @@ -228,7 +227,7 @@ let signonsTreeView = { }; function SortTree(column, ascending) { - let table = signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons; + let table = GetVisibleLogins(); // remember which item was selected so we can restore it after the sort let selections = GetTreeSelections(); let selectedNumber = selections.length ? table[selections[0]].number : -1; @@ -321,6 +320,10 @@ function LoadSignons() { return true; } +function GetVisibleLogins() { + return signonsTreeView._filterSet.length ? signonsTreeView._filterSet : signons; +} + function GetTreeSelections() { let selections = []; let select = signonsTree.view.selection; @@ -350,11 +353,10 @@ function SignonSelected() { } function DeleteSignon() { - let filterSet = signonsTreeView._filterSet; - let syncNeeded = (filterSet.length != 0); + let syncNeeded = (signonsTreeView._filterSet.length != 0); let tree = signonsTree; let view = signonsTreeView; - let table = filterSet.length ? filterSet : signons; + let table = GetVisibleLogins(); // Turn off tree selection notifications during the deletion tree.view.selection.selectEventsSuppressed = true; @@ -408,10 +410,9 @@ function DeleteAllSignons() { null, null, null, null, dummy) == 1) // 1 == "No" button return; - let filterSet = signonsTreeView._filterSet; - let syncNeeded = (filterSet.length != 0); + let syncNeeded = signonsTreeView._filterSet.length != 0; let view = signonsTreeView; - let table = filterSet.length ? filterSet : signons; + let table = GetVisibleLogins(); // remove all items from table and place in deleted table for (let i = 0; i < table.length; i++) { From e4dda0a0d2270c6c064f84e23f254f8b3e8210d6 Mon Sep 17 00:00:00 2001 From: Andreas Tolfsen Date: Sat, 10 Dec 2016 16:15:53 -1000 Subject: [PATCH 37/94] Bug 1322862 - Make __webDriverCallback et al. content safe; r=automatedtester Properties created in a more privileged scope than content cause permission denied errors when they are accessed from a less privileged scope. This is the case when we assign a document unload handler from chrome to a sandbox with content privileges. A permission denied error will be thrown if this handler is inspected from the code evaluated inside the sandbox. By cloning the properties along with their functions and wrapping their reflectors, we can ensure they can be safely inspected from content. MozReview-Commit-ID: Hy5MYvdTsv8 --HG-- extra : rebase_source : c3950385dfeb3f3cfefa05e734d3eeeb1f1ada19 --- testing/marionette/evaluate.js | 28 +++++++++++++------ .../tests/unit/test_execute_script.py | 14 ++++++++++ 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/testing/marionette/evaluate.js b/testing/marionette/evaluate.js index 2e66430b759e..208ff0241ae3 100644 --- a/testing/marionette/evaluate.js +++ b/testing/marionette/evaluate.js @@ -113,7 +113,7 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { if (opts.async) { sb[CALLBACK] = sb[COMPLETE]; } - sb[ARGUMENTS] = Cu.cloneInto(args, sb, {wrapReflectors: true}); + sb[ARGUMENTS] = sandbox.cloneInto(args, sb); // callback function made private // so that introspection is possible @@ -137,21 +137,19 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { // // see bug 1128760 for more details if (opts.debug) { - sb.window.onerror = (msg, url, line) => { - let err = new JavaScriptError(`${msg} at: ${url} line: ${line}`); + sb.window.addEventListener("error", (msg, url, line) => { + let err = new JavaScriptError(`${msg} at ${url}:${line}`); reject(err); - }; + }); } // timeout and unload handlers - scriptTimeoutID = setTimeout( - timeoutHandler, opts.timeout || DEFAULT_TIMEOUT); - sb.window.addEventListener("unload", unloadHandler); + scriptTimeoutID = setTimeout(timeoutHandler, opts.timeout || DEFAULT_TIMEOUT); + sb.window.addEventListener("unload", sandbox.cloneInto(unloadHandler, sb)); let res; try { - res = Cu.evalInSandbox( - src, sb, "1.8", opts.filename || "dummy file", 0); + res = Cu.evalInSandbox(src, sb, "1.8", opts.filename || "dummy file", 0); } catch (e) { let err = new JavaScriptError( e, @@ -176,6 +174,18 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { this.sandbox = {}; +/** + * Provides a safe way to take an object defined in a privileged scope and + * create a structured clone of it in a less-privileged scope. It returns + * a reference to the clone. + * + * Unlike for |Components.utils.cloneInto|, |obj| may contain functions + * and DOM elemnets. + */ +sandbox.cloneInto = function (obj, sb) { + return Cu.cloneInto(obj, sb, {cloneFunctions: true, wrapReflectors: true}); +}; + /** * Augment given sandbox by an adapter that has an {@code exports} * map property, or a normal map, of function names and function diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py b/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py index a0725fbb0e81..b931726b74cc 100644 --- a/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py +++ b/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py @@ -262,6 +262,17 @@ class TestExecuteContent(MarionetteTestCase): content_timeout_triggered, message="Scheduled setTimeout event was cancelled by call to execute_script") + def test_privileged_code_inspection(self): + # test permission denied on toString of unload event handler + self.marionette.navigate(inline(""" + """)) + self.marionette.execute_script("", sandbox=None) + + # test inspection of arguments + self.marionette.execute_script("__webDriverArguments.toString()") + class TestExecuteChrome(WindowManagerMixin, TestExecuteContent): @@ -324,6 +335,9 @@ class TestExecuteChrome(WindowManagerMixin, TestExecuteContent): def test_window_set_timeout_is_not_cancelled(self): pass + def test_privileged_code_inspection(self): + pass + class TestElementCollections(MarionetteTestCase): def assertSequenceIsInstance(self, seq, typ): From f32a79f598ee6cb75cf06a5458afaf9779766642 Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Tue, 20 Dec 2016 09:22:51 -0800 Subject: [PATCH 38/94] Bug 1324818 - Remove obsolete --enable-rust advice. r=froydnj Now that bug 1283898 has landed, we build rust code by default. Mention the --disable-rust option until it goes away. MozReview-Commit-ID: 1CYq9xSuU19 --HG-- extra : rebase_source : fbe3b63a3852c016f20222d0df2a4ed642716c64 --- build/docs/rust.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/build/docs/rust.rst b/build/docs/rust.rst index 970cf326863f..6ad0cd520385 100644 --- a/build/docs/rust.rst +++ b/build/docs/rust.rst @@ -11,11 +11,11 @@ into Firefox. .. important:: - Rust code is not currently enabled by default in Firefox builds. - This should change soon (`bug 1283898 `_), - but the option to build without Rust code will likely last a little longer - (`bug 1284816 `_), - so Rust code cannot currently be used for required components. + Rust code is enabled by default in Firefox builds. Until we have + a required component written in Rust, you can build without by + setting ``ac_add_options --disable-rust`` in your mozconfig. + This option will be around for a little longer + (`bug 1284816 `_). Linking Rust Crates into libxul From 31afeff0c301837fc99127aa7eaf0e3c703b975f Mon Sep 17 00:00:00 2001 From: Mark Goodwin Date: Wed, 21 Dec 2016 15:36:31 +0000 Subject: [PATCH 39/94] Bug 1283109 - Create a services client for augmenting the STS preload list between releases. r=leplatrem MozReview-Commit-ID: H9zZpBwJRgi --HG-- extra : rebase_source : ae9f58eea512c020ea96fe293c7825bbcc3ccf15 --- services/common/blocklist-clients.js | 20 ++++++++----- .../tests/unit/test_blocklist_pinning.js | 30 +++++++++++++++++-- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/services/common/blocklist-clients.js b/services/common/blocklist-clients.js index 5db18ca5b289..d3d38c68cabc 100644 --- a/services/common/blocklist-clients.js +++ b/services/common/blocklist-clients.js @@ -281,13 +281,19 @@ function* updatePinningList(records) { for (let item of records) { try { const {pinType, pins=[], versions} = item; - if (pinType == "KeyPin" && pins.length && - versions.indexOf(appInfo.version) != -1) { - siteSecurityService.setKeyPins(item.hostName, - item.includeSubdomains, - item.expires, - pins.length, - pins, true); + if (versions.indexOf(appInfo.version) != -1) { + if (pinType == "KeyPin" && pins.length) { + siteSecurityService.setKeyPins(item.hostName, + item.includeSubdomains, + item.expires, + pins.length, + pins, true); + } + if (pinType == "STSPin") { + siteSecurityService.setHSTSPreload(item.hostName, + item.includeSubdomains, + item.expires); + } } } catch (e) { // prevent errors relating to individual preload entries from causing diff --git a/services/common/tests/unit/test_blocklist_pinning.js b/services/common/tests/unit/test_blocklist_pinning.js index b1e2bb4efc56..a50499c2e7fb 100644 --- a/services/common/tests/unit/test_blocklist_pinning.js +++ b/services/common/tests/unit/test_blocklist_pinning.js @@ -95,6 +95,7 @@ add_task(function* test_something(){ ok(!sss.isSecureHost(sss.HEADER_HPKP, "one.example.com", 0)); ok(!sss.isSecureHost(sss.HEADER_HPKP, "two.example.com", 0)); ok(!sss.isSecureHost(sss.HEADER_HPKP, "three.example.com", 0)); + ok(!sss.isSecureHost(sss.HEADER_HSTS, "five.example.com", 0)); // Test an empty db populates let result = yield PinningPreloadClient.maybeSync(2000, Date.now()); @@ -114,10 +115,10 @@ add_task(function* test_something(){ result = yield PinningPreloadClient.maybeSync(4000, Date.now()); // Open the collection, verify it's been updated: - // Our data now has three new records; all should be in the local collection + // Our data now has four new records; all should be in the local collection collection = do_get_kinto_collection(connection, COLLECTION_NAME); list = yield collection.list(); - do_check_eq(list.data.length, 4); + do_check_eq(list.data.length, 5); yield connection.close(); // check that a pin exists for two.example.com and three.example.com @@ -144,12 +145,21 @@ add_task(function* test_something(){ let newValue = Services.prefs.getIntPref("services.blocklist.pinning.checked"); do_check_neq(newValue, 0); + // Check that the HSTS preload added to the collection works... + ok(sss.isSecureHost(sss.HEADER_HSTS, "five.example.com", 0)); + // ...and that includeSubdomains is honored + ok(!sss.isSecureHost(sss.HEADER_HSTS, "subdomain.five.example.com", 0)); + // Check that a sync completes even when there's bad data in the // collection. This will throw on fail, so just calling maybeSync is an // acceptible test (the data below with last_modified of 300 is nonsense). Services.prefs.setCharPref("services.settings.server", `http://localhost:${server.identity.primaryPort}/v1`); yield PinningPreloadClient.maybeSync(5000, Date.now()); + + // The STS entry for five.example.com now has includeSubdomains set; + // ensure that the new includeSubdomains value is honored. + ok(sss.isSecureHost(sss.HEADER_HSTS, "subdomain.five.example.com", 0)); }); function run_test() { @@ -255,6 +265,14 @@ function getSampleResponse(req, port) { "versions" : ["some version that won't match"], "id":"dabafde9-df4a-ddba-2548-748da04cc02e", "last_modified":4000 + },{ + "pinType": "STSPin", + "hostName": "five.example.com", + "includeSubdomains": false, + "expires": new Date().getTime() + 1000000, + "versions" : [appInfo.version, "some version that won't match"], + "id":"dabafde9-df4a-ddba-2548-748da04cc032", + "last_modified":4000 }]}) }, "GET:/v1/buckets/pinning/collections/pins/records?_sort=-last_modified&_since=4000": { @@ -289,6 +307,14 @@ function getSampleResponse(req, port) { "versions" : [appInfo.version], "id":"dabafde9-df4a-ddba-2548-748da04cc031", "last_modified":5000 + },{ + "pinType": "STSPin", + "hostName": "five.example.com", + "includeSubdomains": true, + "expires": new Date().getTime() + 1000000, + "versions" : [appInfo.version, "some version that won't match"], + "id":"dabafde9-df4a-ddba-2548-748da04cc032", + "last_modified":5000 }]}) } }; From a0dc0e76e84d7c60d0aaf5de25bda9f651a1f11b Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Wed, 21 Dec 2016 14:44:45 -0800 Subject: [PATCH 40/94] Bug 1325225 - Update vendored tooltool. r=dustin Merge recent upstream changes. Adds a --version switch for setting a version string on file records and fixes a help text typo. MozReview-Commit-ID: KHB9AhOFZdz --HG-- extra : rebase_source : f323d5f6a571e5ef99d6ab8e4c5ac8134b4135ba --- testing/docker/recipes/tooltool.py | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/testing/docker/recipes/tooltool.py b/testing/docker/recipes/tooltool.py index 952f9a5a7f27..e8c17a9465fc 100755 --- a/testing/docker/recipes/tooltool.py +++ b/testing/docker/recipes/tooltool.py @@ -80,7 +80,7 @@ class MissingFileException(ExceptionWithFilename): class FileRecord(object): def __init__(self, filename, size, digest, algorithm, unpack=False, - visibility=None, setup=None): + version=None, visibility=None, setup=None): object.__init__(self) if '/' in filename or '\\' in filename: log.error( @@ -91,6 +91,7 @@ class FileRecord(object): self.digest = digest self.algorithm = algorithm self.unpack = unpack + self.version = version self.visibility = visibility self.setup = setup @@ -101,6 +102,7 @@ class FileRecord(object): self.size == other.size and \ self.digest == other.digest and \ self.algorithm == other.algorithm and \ + self.version == other.version and \ self.visibility == other.visibility: return True else: @@ -179,6 +181,8 @@ class FileRecordJSONEncoder(json.JSONEncoder): } if obj.unpack: rv['unpack'] = True + if obj.version: + rv['version'] = obj.version if obj.visibility is not None: rv['visibility'] = obj.visibility if obj.setup: @@ -226,11 +230,12 @@ class FileRecordJSONDecoder(json.JSONDecoder): if not missing: unpack = obj.get('unpack', False) + version = obj.get('version', None) visibility = obj.get('visibility', None) setup = obj.get('setup') rv = FileRecord( obj['filename'], obj['size'], obj['digest'], obj['algorithm'], - unpack, visibility, setup) + unpack, version, visibility, setup) log.debug("materialized %s" % rv) return rv return obj @@ -306,7 +311,7 @@ class Manifest(object): assert fmt in self.valid_formats if fmt == 'json': rv = json.dump( - self.file_records, output_file, indent=0, cls=FileRecordJSONEncoder, + self.file_records, output_file, indent=2, cls=FileRecordJSONEncoder, separators=(',', ': ')) print >> output_file, '' return rv @@ -398,7 +403,7 @@ def validate_manifest(manifest_file): return False -def add_files(manifest_file, algorithm, filenames, visibility, unpack): +def add_files(manifest_file, algorithm, filenames, version, visibility, unpack): # returns True if all files successfully added, False if not # and doesn't catch library Exceptions. If any files are already # tracked in the manifest, return will be False because they weren't @@ -415,6 +420,7 @@ def add_files(manifest_file, algorithm, filenames, visibility, unpack): log.debug("adding %s" % filename) path, name = os.path.split(filename) new_fr = create_file_record(filename, algorithm) + new_fr.version = version new_fr.visibility = visibility new_fr.unpack = unpack log.debug("appending a new file record to manifest file") @@ -908,7 +914,8 @@ def process_command(options, args): return validate_manifest(options['manifest']) elif cmd == 'add': return add_files(options['manifest'], options['algorithm'], cmd_args, - options['visibility'], options['unpack']) + options['version'], options['visibility'], + options['unpack']) elif cmd == 'purge': if options['cache_folder']: purge(folder=options['cache_folder'], gigs=options['size']) @@ -956,11 +963,16 @@ def main(argv, _skip_logging=False): help='Visibility level of this file; "internal" is for ' 'files that cannot be distributed out of the company ' 'but not for secrets; "public" files are available to ' - 'anyone withou trestriction') + 'anyone without restriction') parser.add_option('--unpack', default=False, dest='unpack', action='store_true', help='Request unpacking this file after fetch.' ' This is helpful with tarballs.') + parser.add_option('--version', default=None, + dest='version', action='store', + help='Version string for this file. This annotates the ' + 'manifest entry with a version string to help ' + 'identify the contents.') parser.add_option('-o', '--overwrite', default=False, dest='overwrite', action='store_true', help='UNUSED; present for backward compatibility') From 2555b82525a32d76ad3c0a1d3aa7a2f7371804b9 Mon Sep 17 00:00:00 2001 From: Masatoshi Kimura Date: Sat, 17 Dec 2016 12:32:58 +0900 Subject: [PATCH 41/94] Bug 1316300 - Remove ECDSA_CBC cipher suites from TLS 1.3 ClientHello. r=keeler Because we enabled TLS 1.3 by default and removed the weak cipher suite fallback machinary, this is the simplest change to hide ECDSA_CBC behind fallback and measure the impact of removal. MozReview-Commit-ID: G5gDKEid5XB --HG-- extra : rebase_source : e67ea2493492f07b056794d113e5afd32f4c8a5b --- security/manager/ssl/nsNSSIOLayer.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/security/manager/ssl/nsNSSIOLayer.cpp b/security/manager/ssl/nsNSSIOLayer.cpp index 61fb92bd61ba..7e3b6c930fcc 100644 --- a/security/manager/ssl/nsNSSIOLayer.cpp +++ b/security/manager/ssl/nsNSSIOLayer.cpp @@ -2402,6 +2402,11 @@ nsSSLIOLayerSetOptions(PRFileDesc* fd, bool forSTARTTLS, } } + if (range.max > SSL_LIBRARY_VERSION_TLS_1_2) { + SSL_CipherPrefSet(fd, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, false); + SSL_CipherPrefSet(fd, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, false); + } + // Include a modest set of named groups. const SSLNamedGroup namedGroups[] = { ssl_grp_ec_curve25519, ssl_grp_ec_secp256r1, ssl_grp_ec_secp384r1, From 80a5e71248452fe1e2edae879f708f910b2a68f7 Mon Sep 17 00:00:00 2001 From: Chris Pearce Date: Thu, 22 Dec 2016 09:20:17 +1300 Subject: [PATCH 42/94] Bug 1325185 - Fix operator precedence in GMPUtils' ToHexString(). r=gerald MozReview-Commit-ID: 41KoItfOYts --HG-- extra : rebase_source : b42a325a00f5939ee3c4945c1a5cee826f89c385 --- dom/media/gmp/GMPUtils.cpp | 2 +- dom/media/gtest/TestGMPUtils.cpp | 36 ++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/dom/media/gmp/GMPUtils.cpp b/dom/media/gmp/GMPUtils.cpp index 1377dad40fcc..3b22e908575c 100644 --- a/dom/media/gmp/GMPUtils.cpp +++ b/dom/media/gmp/GMPUtils.cpp @@ -64,7 +64,7 @@ ToHexString(const uint8_t * aBytes, uint32_t aLength) nsCString str; for (uint32_t i = 0; i < aLength; i++) { char buf[3]; - buf[0] = hex[aBytes[i] & 0xf0 >> 4]; + buf[0] = hex[(aBytes[i] & 0xf0) >> 4]; buf[1] = hex[aBytes[i] & 0x0f]; buf[2] = 0; str.AppendASCII(buf); diff --git a/dom/media/gtest/TestGMPUtils.cpp b/dom/media/gtest/TestGMPUtils.cpp index 75d7eba53e5a..72800abaa4c7 100644 --- a/dom/media/gtest/TestGMPUtils.cpp +++ b/dom/media/gtest/TestGMPUtils.cpp @@ -30,10 +30,10 @@ void TestSplitAt(const char* aInput, EXPECT_TRUE(tokens[i].EqualsASCII(aExpectedTokens[i])) << "Tokenize fail; expected=" << aExpectedTokens[i] << " got=" << tokens[i].BeginReading(); - } + } } -TEST(GeckoMediaPlugins, GMPUtils) { +TEST(GeckoMediaPlugins, TestSplitAt) { { const char* input = "1,2,3,4"; const char* delims = ","; @@ -59,3 +59,35 @@ TEST(GeckoMediaPlugins, GMPUtils) { TestSplitAt(input, delims, MOZ_ARRAY_LENGTH(tokens), tokens); } } + +TEST(GeckoMediaPlugins, ToHexString) { + struct Test { + nsTArray bytes; + string hex; + }; + + static const Test tests[] = { + { {0x00, 0x00}, "0000" }, + { {0xff, 0xff}, "ffff" }, + { {0xff, 0x00}, "ff00" }, + { {0x00, 0xff}, "00ff" }, + { {0xf0, 0x10}, "f010" }, + { {0x05, 0x50}, "0550" }, + { {0xf}, "0f" }, + { {0x10}, "10" }, + { {}, "" }, + { + { + 0x00, 0x11, 0x22, 0x33, + 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, + 0xcc, 0xdd, 0xee, 0xff + }, + "00112233445566778899aabbccddeeff" + }, + }; + + for (const Test& test : tests) { + EXPECT_STREQ(test.hex.c_str(), ToHexString(test.bytes).get()); + } +} From b8e838447607dcdf3507abc4c29989b34a4e73aa Mon Sep 17 00:00:00 2001 From: Ting-Yu Lin Date: Wed, 21 Dec 2016 17:03:07 +0800 Subject: [PATCH 43/94] Bug 1325006 Part 1 - Allow enum or enum classes to be stored in nsStyleCoord. r=heycam MozReview-Commit-ID: EEXh6n8u7l6 --HG-- extra : rebase_source : 2a73a5f136d2b6c04848fbeee7067781cb38400d --- layout/style/nsStyleCoord.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/layout/style/nsStyleCoord.h b/layout/style/nsStyleCoord.h index 11b75d412c23..7df9c943bb37 100644 --- a/layout/style/nsStyleCoord.h +++ b/layout/style/nsStyleCoord.h @@ -8,6 +8,9 @@ #ifndef nsStyleCoord_h___ #define nsStyleCoord_h___ +#include + +#include "mozilla/EnumTypeTraits.h" #include "nsCoord.h" #include "nsStyleConsts.h" @@ -214,6 +217,14 @@ public: float GetFlexFractionValue() const; Calc* GetCalcValue() const; uint32_t HashValue(uint32_t aHash) const; + template::value>::type> + T GetEnumValue() const + { + MOZ_ASSERT(GetUnit() == eStyleUnit_Enumerated, + "The unit must be eStyleUnit_Enumerated!"); + return static_cast(GetIntValue()); + } // Sets to null and releases any refcounted objects. Only use this if the // object is initialized (i.e. don't use it in nsStyleCoord constructors). @@ -229,6 +240,14 @@ public: void SetAutoValue(); void SetNoneValue(); void SetCalcValue(Calc* aValue); + template::value>::type> + void SetEnumValue(T aValue) + { + static_assert(mozilla::EnumTypeFitsWithin::value, + "aValue must be an enum that fits within mValue.mInt!"); + SetIntValue(static_cast(aValue), eStyleUnit_Enumerated); + } // Resets a coord represented by a unit/value pair. static inline void Reset(nsStyleUnit& aUnit, nsStyleUnion& aValue); From 6c29f00e11beac1351412e63b71dfe80e43bc756 Mon Sep 17 00:00:00 2001 From: Ting-Yu Lin Date: Sat, 3 Dec 2016 16:13:49 +0800 Subject: [PATCH 44/94] Bug 1325006 Part 2 - Convert NS_RADIUS_* to StyleShapeRadius enum class. r=heycam The "default" case in EnumerationToLength() is not needed anymore because StyleShapeRadius is an enum class, which cannot have other values. MozReview-Commit-ID: GHkPAXXxqGZ --HG-- extra : rebase_source : 8bc51d6f21cd70688d3b968bcd0a5ef12a6e3f47 --- layout/style/nsCSSProps.cpp | 4 ++-- layout/style/nsCSSValue.cpp | 4 ++-- layout/style/nsRuleNode.cpp | 2 +- layout/style/nsStyleConsts.h | 9 ++++++--- layout/svg/nsCSSClipPathInstance.cpp | 20 +++++++++----------- 5 files changed, 20 insertions(+), 19 deletions(-) diff --git a/layout/style/nsCSSProps.cpp b/layout/style/nsCSSProps.cpp index 545cddbfd84a..84d54e927ffb 100644 --- a/layout/style/nsCSSProps.cpp +++ b/layout/style/nsCSSProps.cpp @@ -2298,8 +2298,8 @@ const KTableEntry nsCSSProps::kClipPathGeometryBoxKTable[] = { }; const KTableEntry nsCSSProps::kShapeRadiusKTable[] = { - { eCSSKeyword_closest_side, NS_RADIUS_CLOSEST_SIDE }, - { eCSSKeyword_farthest_side, NS_RADIUS_FARTHEST_SIDE }, + { eCSSKeyword_closest_side, StyleShapeRadius::ClosestSide }, + { eCSSKeyword_farthest_side, StyleShapeRadius::FarthestSide }, { eCSSKeyword_UNKNOWN, -1 } }; diff --git a/layout/style/nsCSSValue.cpp b/layout/style/nsCSSValue.cpp index 8d2d9cd7f7fe..7dfae41b9fa8 100644 --- a/layout/style/nsCSSValue.cpp +++ b/layout/style/nsCSSValue.cpp @@ -1023,10 +1023,10 @@ nsCSSValue::AppendCircleOrEllipseToString(nsCSSKeyword aFunctionId, // closest-side is the default, so we don't need to // output it if all values are closest-side. if (array->Item(1).GetUnit() == eCSSUnit_Enumerated && - array->Item(1).GetIntValue() == NS_RADIUS_CLOSEST_SIDE && + StyleShapeRadius(array->Item(1).GetIntValue()) == StyleShapeRadius::ClosestSide && (aFunctionId == eCSSKeyword_circle || (array->Item(2).GetUnit() == eCSSUnit_Enumerated && - array->Item(2).GetIntValue() == NS_RADIUS_CLOSEST_SIDE))) { + StyleShapeRadius(array->Item(2).GetIntValue()) == StyleShapeRadius::ClosestSide))) { hasRadii = false; } else { AppendPositionCoordinateToString(array->Item(1), aProperty, diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp index 8f9cca50aa50..7235466270f0 100644 --- a/layout/style/nsRuleNode.cpp +++ b/layout/style/nsRuleNode.cpp @@ -9755,7 +9755,7 @@ GetStyleBasicShapeFromCSSValue(const nsCSSValue& aValue, aConditions); MOZ_ASSERT(didSetRadius, "unexpected radius unit"); } else { - radius.SetIntValue(NS_RADIUS_CLOSEST_SIDE, eStyleUnit_Enumerated); + radius.SetEnumValue(StyleShapeRadius::ClosestSide); } basicShape->Coordinates().AppendElement(radius); } diff --git a/layout/style/nsStyleConsts.h b/layout/style/nsStyleConsts.h index dde88b2f490f..54054cb97e6c 100644 --- a/layout/style/nsStyleConsts.h +++ b/layout/style/nsStyleConsts.h @@ -155,6 +155,12 @@ enum class StyleShapeOutsideShapeBox : uint8_t { Margin }; +// for +enum class StyleShapeRadius : uint8_t { + FarthestSide, + ClosestSide +}; + // Shape source type enum class StyleShapeSourceType : uint8_t { None, @@ -219,9 +225,6 @@ enum class StyleOrient : uint8_t { Vertical, }; -#define NS_RADIUS_FARTHEST_SIDE 0 -#define NS_RADIUS_CLOSEST_SIDE 1 - // stack-sizing #define NS_STYLE_STACK_SIZING_IGNORE 0 #define NS_STYLE_STACK_SIZING_STRETCH_TO_FIT 1 diff --git a/layout/svg/nsCSSClipPathInstance.cpp b/layout/svg/nsCSSClipPathInstance.cpp index b4e971bca7be..fdea25bcf9b3 100644 --- a/layout/svg/nsCSSClipPathInstance.cpp +++ b/layout/svg/nsCSSClipPathInstance.cpp @@ -216,21 +216,18 @@ nsCSSClipPathInstance::CreateClipPath(DrawTarget* aDrawTarget) } static void -EnumerationToLength(nscoord& aCoord, int32_t aType, +EnumerationToLength(nscoord& aCoord, StyleShapeRadius aType, nscoord aCenter, nscoord aPosMin, nscoord aPosMax) { nscoord dist1 = abs(aPosMin - aCenter); nscoord dist2 = abs(aPosMax - aCenter); switch (aType) { - case NS_RADIUS_FARTHEST_SIDE: + case StyleShapeRadius::FarthestSide: aCoord = dist1 > dist2 ? dist1 : dist2; break; - case NS_RADIUS_CLOSEST_SIDE: + case StyleShapeRadius::ClosestSide: aCoord = dist1 > dist2 ? dist2 : dist1; break; - default: - NS_NOTREACHED("unknown keyword"); - break; } } @@ -253,12 +250,13 @@ nsCSSClipPathInstance::CreateClipPathCircle(DrawTarget* aDrawTarget, MOZ_ASSERT(coords.Length() == 1, "wrong number of arguments"); nscoord r = 0; if (coords[0].GetUnit() == eStyleUnit_Enumerated) { + const auto styleShapeRadius = coords[0].GetEnumValue(); nscoord horizontal, vertical; - EnumerationToLength(horizontal, coords[0].GetIntValue(), + EnumerationToLength(horizontal, styleShapeRadius, center.x, aRefBox.x, aRefBox.x + aRefBox.width); - EnumerationToLength(vertical, coords[0].GetIntValue(), + EnumerationToLength(vertical, styleShapeRadius, center.y, aRefBox.y, aRefBox.y + aRefBox.height); - if (coords[0].GetIntValue() == NS_RADIUS_FARTHEST_SIDE) { + if (styleShapeRadius == StyleShapeRadius::FarthestSide) { r = horizontal > vertical ? horizontal : vertical; } else { r = horizontal < vertical ? horizontal : vertical; @@ -299,13 +297,13 @@ nsCSSClipPathInstance::CreateClipPathEllipse(DrawTarget* aDrawTarget, MOZ_ASSERT(coords.Length() == 2, "wrong number of arguments"); nscoord rx = 0, ry = 0; if (coords[0].GetUnit() == eStyleUnit_Enumerated) { - EnumerationToLength(rx, coords[0].GetIntValue(), + EnumerationToLength(rx, coords[0].GetEnumValue(), center.x, aRefBox.x, aRefBox.x + aRefBox.width); } else { rx = nsRuleNode::ComputeCoordPercentCalc(coords[0], aRefBox.width); } if (coords[1].GetUnit() == eStyleUnit_Enumerated) { - EnumerationToLength(ry, coords[1].GetIntValue(), + EnumerationToLength(ry, coords[1].GetEnumValue(), center.y, aRefBox.y, aRefBox.y + aRefBox.height); } else { ry = nsRuleNode::ComputeCoordPercentCalc(coords[1], aRefBox.height); From b5482306201949c1b1a710344038dfcddf17c36f Mon Sep 17 00:00:00 2001 From: Ralph Giles Date: Wed, 21 Dec 2016 15:44:48 -0800 Subject: [PATCH 45/94] Bug 1322323 - Consolidate common artifact build mozconfig options. r=chmanchester Collect common options used in artifact build tests in a single mozconfig so they can be set more consistently. Use this to make unsetting toolchain defines universal in these tasks, fixing fallout from bug 1283898 which defined CARGO and RUSTC everywhere, conflicting with --disable-compiler-environment just like CC and CXX were conflicts in some artifact tasks. MozReview-Commit-ID: 4SbxByjClQb --HG-- extra : rebase_source : d8a48fd2192ceb5ece76c827e2243ae784b991cb --- browser/config/mozconfigs/linux32/artifact | 6 +----- browser/config/mozconfigs/linux32/debug-artifact | 6 +----- browser/config/mozconfigs/linux64/artifact | 6 +----- browser/config/mozconfigs/linux64/debug-artifact | 6 +----- browser/config/mozconfigs/macosx64/artifact | 6 +----- browser/config/mozconfigs/macosx64/debug-artifact | 6 +----- browser/config/mozconfigs/win32/artifact | 2 +- browser/config/mozconfigs/win32/debug-artifact | 2 +- browser/config/mozconfigs/win64/artifact | 2 +- browser/config/mozconfigs/win64/debug-artifact | 2 +- build/mozconfig.artifact | 12 ++++++++++++ .../android-api-15-gradle/nightly-artifact | 9 +-------- .../config/mozconfigs/android-api-15/debug-artifact | 9 +-------- .../mozconfigs/android-api-15/nightly-artifact | 9 +-------- .../config/mozconfigs/android-x86/nightly-artifact | 9 +-------- 15 files changed, 26 insertions(+), 66 deletions(-) create mode 100644 build/mozconfig.artifact diff --git a/browser/config/mozconfigs/linux32/artifact b/browser/config/mozconfigs/linux32/artifact index b52d41e2adf7..560d86bb2c2b 100644 --- a/browser/config/mozconfigs/linux32/artifact +++ b/browser/config/mozconfigs/linux32/artifact @@ -4,9 +4,5 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/browser/config/mozconfigs/linux32/common-opt" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO diff --git a/browser/config/mozconfigs/linux32/debug-artifact b/browser/config/mozconfigs/linux32/debug-artifact index 1d368e98134a..52b49cee9a80 100644 --- a/browser/config/mozconfigs/linux32/debug-artifact +++ b/browser/config/mozconfigs/linux32/debug-artifact @@ -4,11 +4,7 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/build/unix/mozconfig.linux32" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO ac_add_options --enable-debug diff --git a/browser/config/mozconfigs/linux64/artifact b/browser/config/mozconfigs/linux64/artifact index 4e13ca2509b9..51b82b384b9e 100644 --- a/browser/config/mozconfigs/linux64/artifact +++ b/browser/config/mozconfigs/linux64/artifact @@ -4,9 +4,5 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/browser/config/mozconfigs/linux64/common-opt" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO diff --git a/browser/config/mozconfigs/linux64/debug-artifact b/browser/config/mozconfigs/linux64/debug-artifact index f95e7c01df72..db0a435ff4b2 100644 --- a/browser/config/mozconfigs/linux64/debug-artifact +++ b/browser/config/mozconfigs/linux64/debug-artifact @@ -4,12 +4,8 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/build/unix/mozconfig.linux" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO ac_add_options --enable-debug diff --git a/browser/config/mozconfigs/macosx64/artifact b/browser/config/mozconfigs/macosx64/artifact index 9a5bfbb11c5d..93497630ff7a 100644 --- a/browser/config/mozconfigs/macosx64/artifact +++ b/browser/config/mozconfigs/macosx64/artifact @@ -7,9 +7,5 @@ export MOZILLA_OFFICIAL=1 . "$topsrcdir/build/macosx/mozconfig.common" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO diff --git a/browser/config/mozconfigs/macosx64/debug-artifact b/browser/config/mozconfigs/macosx64/debug-artifact index 38feec6337c8..a625e9920762 100644 --- a/browser/config/mozconfigs/macosx64/debug-artifact +++ b/browser/config/mozconfigs/macosx64/debug-artifact @@ -4,11 +4,7 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/build/macosx/mozconfig.common" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols -unset CC -unset CXX -unset RUSTC -unset CARGO ac_add_options --enable-debug diff --git a/browser/config/mozconfigs/win32/artifact b/browser/config/mozconfigs/win32/artifact index 536d1d996eb5..d18bedd6e892 100644 --- a/browser/config/mozconfigs/win32/artifact +++ b/browser/config/mozconfigs/win32/artifact @@ -9,5 +9,5 @@ export MOZILLA_OFFICIAL=1 . "$topsrcdir/build/win32/mozconfig.vs-latest" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols diff --git a/browser/config/mozconfigs/win32/debug-artifact b/browser/config/mozconfigs/win32/debug-artifact index 5a31b8b3e8e2..1d7ab24ba3b1 100644 --- a/browser/config/mozconfigs/win32/debug-artifact +++ b/browser/config/mozconfigs/win32/debug-artifact @@ -6,7 +6,7 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/build/win32/mozconfig.vs-latest" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols ac_add_options --enable-debug diff --git a/browser/config/mozconfigs/win64/artifact b/browser/config/mozconfigs/win64/artifact index 71fa32256e20..9934248448df 100644 --- a/browser/config/mozconfigs/win64/artifact +++ b/browser/config/mozconfigs/win64/artifact @@ -10,5 +10,5 @@ export MOZILLA_OFFICIAL=1 . "$topsrcdir/build/win64/mozconfig.vs-latest" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols diff --git a/browser/config/mozconfigs/win64/debug-artifact b/browser/config/mozconfigs/win64/debug-artifact index bbba268fb95f..bb9dc9fa8a99 100644 --- a/browser/config/mozconfigs/win64/debug-artifact +++ b/browser/config/mozconfigs/win64/debug-artifact @@ -7,7 +7,7 @@ MOZ_AUTOMATION_L10N_CHECK=0 . "$topsrcdir/build/win64/mozconfig.vs-latest" . "$topsrcdir/build/mozconfig.common.override" -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" ac_add_options --enable-artifact-build-symbols ac_add_options --enable-debug diff --git a/build/mozconfig.artifact b/build/mozconfig.artifact new file mode 100644 index 000000000000..9fe80adc9a30 --- /dev/null +++ b/build/mozconfig.artifact @@ -0,0 +1,12 @@ +# Common options for testing artifact builds in automation. + +# Enable the artifact build. +ac_add_options --enable-artifact-builds + +# Override any toolchain defines we've inherited from other mozconfigs. +unset CC +unset CXX +unset HOST_CC +unset HOST_CXX +unset RUSTC +unset CARGO diff --git a/mobile/android/config/mozconfigs/android-api-15-gradle/nightly-artifact b/mobile/android/config/mozconfigs/android-api-15-gradle/nightly-artifact index ff86aa46b05a..cca82959c400 100644 --- a/mobile/android/config/mozconfigs/android-api-15-gradle/nightly-artifact +++ b/mobile/android/config/mozconfigs/android-api-15-gradle/nightly-artifact @@ -8,13 +8,6 @@ NO_NDK=1 . "$topsrcdir/mobile/android/config/mozconfigs/android-api-15-gradle/nightly" -unset CC -unset CXX -unset HOST_CC -unset HOST_CXX -unset RUSTC -unset CARGO - -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" . "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/debug-artifact b/mobile/android/config/mozconfigs/android-api-15/debug-artifact index fed2a551f546..8aaf0a552a30 100644 --- a/mobile/android/config/mozconfigs/android-api-15/debug-artifact +++ b/mobile/android/config/mozconfigs/android-api-15/debug-artifact @@ -12,13 +12,6 @@ ac_add_options --enable-marionette . "$topsrcdir/mobile/android/config/mozconfigs/android-api-15/nightly" -unset CC -unset CXX -unset HOST_CC -unset HOST_CXX -unset RUSTC -unset CARGO - -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" . "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-api-15/nightly-artifact b/mobile/android/config/mozconfigs/android-api-15/nightly-artifact index e51090182f23..952723b961ff 100644 --- a/mobile/android/config/mozconfigs/android-api-15/nightly-artifact +++ b/mobile/android/config/mozconfigs/android-api-15/nightly-artifact @@ -8,13 +8,6 @@ NO_NDK=1 . "$topsrcdir/mobile/android/config/mozconfigs/android-api-15/nightly" -unset CC -unset CXX -unset HOST_CC -unset HOST_CXX -unset RUSTC -unset CARGO - -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" . "$topsrcdir/mobile/android/config/mozconfigs/common.override" diff --git a/mobile/android/config/mozconfigs/android-x86/nightly-artifact b/mobile/android/config/mozconfigs/android-x86/nightly-artifact index de5407218ba8..2655d6cf5fb2 100644 --- a/mobile/android/config/mozconfigs/android-x86/nightly-artifact +++ b/mobile/android/config/mozconfigs/android-x86/nightly-artifact @@ -8,13 +8,6 @@ NO_NDK=1 . "$topsrcdir/mobile/android/config/mozconfigs/android-x86/nightly" -unset CC -unset CXX -unset HOST_CC -unset HOST_CXX -unset RUSTC -unset CARGO - -ac_add_options --enable-artifact-builds +. "$topsrcdir/build/mozconfig.artifact" . "$topsrcdir/mobile/android/config/mozconfigs/common.override" From 94d745827701f0afc3074bcad9819f04a273644f Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Tue, 20 Dec 2016 14:08:21 -0500 Subject: [PATCH 46/94] Bug 1312739 - Fix marionette SEARCH_PATHS in mach_test_package_bootstrap.py, r=jmaher In bug 1320073, the marionette package structure was refactored a bit. This made the SEARCH_PATHS in the mach test package bootstrap outdated. While this didn't end up causing any errors due to marionette also appearing in an activated virtualenv, it should still be fixed. Figured since I was in the area, I would just piggy-back off this commit series rather than filing a new bug. MozReview-Commit-ID: DCNz3xEVJfY --HG-- extra : rebase_source : 5f019d2ca80e008e89c8b9bc93722534f103a58c --- testing/tools/mach_test_package_bootstrap.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing/tools/mach_test_package_bootstrap.py b/testing/tools/mach_test_package_bootstrap.py index f7a8fb397b3a..2bbfea95f159 100644 --- a/testing/tools/mach_test_package_bootstrap.py +++ b/testing/tools/mach_test_package_bootstrap.py @@ -12,8 +12,8 @@ import types SEARCH_PATHS = [ - 'marionette', - 'marionette/marionette/runner/mixins/browsermob-proxy-py', + 'marionette/harness', + 'marionette/harness/marionette_harness/runner/mixins/browsermob-proxy-py', 'marionette/client', 'mochitest', 'mozbase/manifestparser', From 0e7b15753841fdb0b52b22b3778a856077b0320a Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Tue, 20 Dec 2016 10:50:43 -0500 Subject: [PATCH 47/94] Bug 1312739 - Move mochitest 'ALL_FLAVORS' dict from mach_commands.py to mochitest_options.py, r=jmaher Information in the ALL_FLAVORS dict is needed by interactive loaners (in the mach_test_package_commands.py file). Because the normal mach_commands.py file doesn't get copied to the tests.zip, this commit refactors ALL_FLAVORS into mochitest_options.py (which is copied to tests.zip) to avoid duplicating it. A side benefit of moving ALL_FLAVORS to mochitest_options.py, is that mochitest_options.py itself can make use of this dict. This means we no longer need to redefine the --flavor argument in the mach command. The __init__.py file is added to turn the testing/mochitest directory into a python module. This allows things like mach_commands.py to do things like 'from mochitest import runtests'. Mach commands are able to find this module because the 'testing' directory is already added to sys.path in the mach bootstrap. In the future, having mochitest as an importable module should help with running it from the srcdir. So this is a change we should start making anyway. Unfortunately, we still need to import the main runtests.py file from the objdir, as lots of things depend on the SCRIPT_DIR variable being in the objdir. We could probably fix this with minimal work, but that is scope bloat for this bug. MozReview-Commit-ID: KtWCk91bX0K --HG-- extra : rebase_source : 4d5909f495a453b12e8301e98ed0394dcf5f2470 --- testing/mochitest/__init__.py | 3 ++ testing/mochitest/mach_commands.py | 61 +---------------------- testing/mochitest/mochitest_options.py | 69 +++++++++++++++++++++++--- 3 files changed, 68 insertions(+), 65 deletions(-) create mode 100644 testing/mochitest/__init__.py diff --git a/testing/mochitest/__init__.py b/testing/mochitest/__init__.py new file mode 100644 index 000000000000..6fbe8159b2db --- /dev/null +++ b/testing/mochitest/__init__.py @@ -0,0 +1,3 @@ +# 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/. diff --git a/testing/mochitest/mach_commands.py b/testing/mochitest/mach_commands.py index fb261ec82708..d83b3d0a03a8 100644 --- a/testing/mochitest/mach_commands.py +++ b/testing/mochitest/mach_commands.py @@ -6,7 +6,6 @@ from __future__ import absolute_import, unicode_literals from argparse import Namespace from collections import defaultdict -from itertools import chain import logging import os import sys @@ -76,61 +75,7 @@ NOW_RUNNING = ''' ''' -# Maps test flavors to data needed to run them -ALL_FLAVORS = { - 'mochitest': { - 'suite': 'plain', - 'aliases': ('plain', 'mochitest'), - 'enabled_apps': ('firefox', 'android'), - 'extra_args': { - 'flavor': 'plain', - } - }, - 'chrome': { - 'suite': 'chrome', - 'aliases': ('chrome', 'mochitest-chrome'), - 'enabled_apps': ('firefox', 'android'), - 'extra_args': { - 'flavor': 'chrome', - } - }, - 'browser-chrome': { - 'suite': 'browser', - 'aliases': ('browser', 'browser-chrome', 'mochitest-browser-chrome', 'bc'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'browser', - } - }, - 'jetpack-package': { - 'suite': 'jetpack-package', - 'aliases': ('jetpack-package', 'mochitest-jetpack-package', 'jpp'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'jetpack-package', - } - }, - 'jetpack-addon': { - 'suite': 'jetpack-addon', - 'aliases': ('jetpack-addon', 'mochitest-jetpack-addon', 'jpa'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'jetpack-addon', - } - }, - 'a11y': { - 'suite': 'a11y', - 'aliases': ('a11y', 'mochitest-a11y', 'accessibility'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'a11y', - } - }, -} - SUPPORTED_APPS = ['firefox', 'android'] -SUPPORTED_FLAVORS = list(chain.from_iterable([f['aliases'] for f in ALL_FLAVORS.values()])) -CANONICAL_FLAVORS = sorted([f['aliases'][0] for f in ALL_FLAVORS.values()]) parser = None @@ -331,11 +276,9 @@ class MachCommands(MachCommandBase): conditions=[is_buildapp_in(*SUPPORTED_APPS)], description='Run any flavor of mochitest (integration test).', parser=setup_argument_parser) - @CommandArgument('-f', '--flavor', - metavar='{{{}}}'.format(', '.join(CANONICAL_FLAVORS)), - choices=SUPPORTED_FLAVORS, - help='Only run tests of this flavor.') def run_mochitest_general(self, flavor=None, test_objects=None, resolve_tests=True, **kwargs): + from mochitest.mochitest_options import ALL_FLAVORS + buildapp = None for app in SUPPORTED_APPS: if is_buildapp_in(app)(self): diff --git a/testing/mochitest/mochitest_options.py b/testing/mochitest/mochitest_options.py index f64bbeef2620..18a42e0bbee4 100644 --- a/testing/mochitest/mochitest_options.py +++ b/testing/mochitest/mochitest_options.py @@ -5,6 +5,7 @@ from abc import ABCMeta, abstractmethod, abstractproperty from argparse import ArgumentParser, SUPPRESS from distutils.util import strtobool +from itertools import chain from urlparse import urlparse import json import os @@ -30,6 +31,61 @@ except ImportError: conditions = None +# Maps test flavors to data needed to run them +ALL_FLAVORS = { + 'mochitest': { + 'suite': 'plain', + 'aliases': ('plain', 'mochitest'), + 'enabled_apps': ('firefox', 'android'), + 'extra_args': { + 'flavor': 'plain', + } + }, + 'chrome': { + 'suite': 'chrome', + 'aliases': ('chrome', 'mochitest-chrome'), + 'enabled_apps': ('firefox', 'android'), + 'extra_args': { + 'flavor': 'chrome', + } + }, + 'browser-chrome': { + 'suite': 'browser', + 'aliases': ('browser', 'browser-chrome', 'mochitest-browser-chrome', 'bc'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'browser', + } + }, + 'jetpack-package': { + 'suite': 'jetpack-package', + 'aliases': ('jetpack-package', 'mochitest-jetpack-package', 'jpp'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'jetpack-package', + } + }, + 'jetpack-addon': { + 'suite': 'jetpack-addon', + 'aliases': ('jetpack-addon', 'mochitest-jetpack-addon', 'jpa'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'jetpack-addon', + } + }, + 'a11y': { + 'suite': 'a11y', + 'aliases': ('a11y', 'mochitest-a11y', 'accessibility'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'a11y', + } + }, +} +SUPPORTED_FLAVORS = list(chain.from_iterable([f['aliases'] for f in ALL_FLAVORS.values()])) +CANONICAL_FLAVORS = sorted([f['aliases'][0] for f in ALL_FLAVORS.values()]) + + def get_default_valgrind_suppression_files(): # We are trying to locate files in the source tree. So if we # don't know where the source tree is, we must give up. @@ -85,8 +141,6 @@ class ArgumentContainer(): class MochitestArguments(ArgumentContainer): """General mochitest arguments.""" - - FLAVORS = ('a11y', 'browser', 'chrome', 'jetpack-addon', 'jetpack-package', 'plain') LOG_LEVELS = ("DEBUG", "INFO", "WARNING", "ERROR", "FATAL") args = [ @@ -98,10 +152,10 @@ class MochitestArguments(ArgumentContainer): "(to run recursively). If omitted, the entire suite is run.", }], [["-f", "--flavor"], - {"default": "plain", - "choices": FLAVORS, - "help": "Mochitest flavor to run, one of {}. Defaults to 'plain'.".format(FLAVORS), - "suppress": build_obj is not None, + {"choices": SUPPORTED_FLAVORS, + "metavar": "{{{}}}".format(', '.join(CANONICAL_FLAVORS)), + "default": None, + "help": "Only run tests of this flavor.", }], [["--keep-open"], {"nargs": "?", @@ -583,6 +637,9 @@ class MochitestArguments(ArgumentContainer): "$objdir/_tests/testing/mochitest/runtests.py?".format( options.app)) + if options.flavor is None: + options.flavor == 'plain' + if options.gmp_path is None and options.app and build_obj: # Need to fix the location of gmp_fake which might not be shipped in the binary gmp_modules = ( From 0dae445678160fec24f58a0c9cf02bec9302c7f3 Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Tue, 20 Dec 2016 11:24:33 -0500 Subject: [PATCH 48/94] Bug 1312739 - Use ALL_FLAVORS dict when running mochitest from an interactive loaner, r=jmaher MozReview-Commit-ID: Kpxepe9KecV --HG-- extra : rebase_source : f561c034408e1aedb9318fcc8457b961aeef1668 --- testing/mochitest/mach_test_package_commands.py | 13 ++++++++++++- testing/mochitest/mochitest_options.py | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/testing/mochitest/mach_test_package_commands.py b/testing/mochitest/mach_test_package_commands.py index 71fe62428645..ec3404aedef3 100644 --- a/testing/mochitest/mach_test_package_commands.py +++ b/testing/mochitest/mach_test_package_commands.py @@ -18,12 +18,23 @@ parser = None def run_mochitest(context, **kwargs): + from mochitest_options import ALL_FLAVORS + flavor = kwargs.get('flavor') or 'mochitest' + if flavor not in ALL_FLAVORS: + for fname, fobj in ALL_FLAVORS.iteritems(): + if flavor in fobj['aliases']: + flavor = fname + break + fobj = ALL_FLAVORS[flavor] + kwargs.update(fobj.get('extra_args', {})) + args = Namespace(**kwargs) args.e10s = context.mozharness_config.get('e10s', args.e10s) args.certPath = context.certs_dir if args.test_paths: - test_root = os.path.join(context.package_root, 'mochitest', 'tests') + install_subdir = fobj.get('install_subdir', fobj['suite']) + test_root = os.path.join(context.package_root, 'mochitest', install_subdir) normalize = partial(context.normalize_test_path, test_root) args.test_paths = map(normalize, args.test_paths) diff --git a/testing/mochitest/mochitest_options.py b/testing/mochitest/mochitest_options.py index 18a42e0bbee4..b7a28b418aee 100644 --- a/testing/mochitest/mochitest_options.py +++ b/testing/mochitest/mochitest_options.py @@ -39,7 +39,8 @@ ALL_FLAVORS = { 'enabled_apps': ('firefox', 'android'), 'extra_args': { 'flavor': 'plain', - } + }, + 'install_subdir': 'tests', }, 'chrome': { 'suite': 'chrome', From 7b19067da582ae53e9d51ea47fabd190d579996e Mon Sep 17 00:00:00 2001 From: "Alfredo.Yang" Date: Wed, 14 Dec 2016 16:01:43 +0800 Subject: [PATCH 49/94] Bug 1323390 - Support audio profile in mp4 rust parser. r=kinetik MozReview-Commit-ID: DLfLdgvc7B1 --HG-- extra : rebase_source : ac9b059759f73c92f7678ed137f0366e35fdc800 --- media/libstagefright/binding/DecoderData.cpp | 16 +- media/libstagefright/binding/MP4Metadata.cpp | 3 +- .../binding/mp4parse-cargo.patch | 6 +- .../binding/mp4parse/Cargo.toml | 1 + .../binding/mp4parse/src/lib.rs | 34 +- .../rust/bitreader/.cargo-checksum.json | 1 + third_party/rust/bitreader/.cargo-ok | 0 third_party/rust/bitreader/.gitignore | 2 + third_party/rust/bitreader/Cargo.toml | 18 + third_party/rust/bitreader/LICENSE | 202 +++++++++++ third_party/rust/bitreader/README.md | 19 + third_party/rust/bitreader/src/lib.rs | 330 ++++++++++++++++++ third_party/rust/bitreader/src/tests.rs | 140 ++++++++ toolkit/library/gtest/rust/Cargo.lock | 7 + toolkit/library/rust/Cargo.lock | 7 + 15 files changed, 765 insertions(+), 21 deletions(-) create mode 100644 third_party/rust/bitreader/.cargo-checksum.json create mode 100644 third_party/rust/bitreader/.cargo-ok create mode 100644 third_party/rust/bitreader/.gitignore create mode 100644 third_party/rust/bitreader/Cargo.toml create mode 100644 third_party/rust/bitreader/LICENSE create mode 100644 third_party/rust/bitreader/README.md create mode 100644 third_party/rust/bitreader/src/lib.rs create mode 100644 third_party/rust/bitreader/src/tests.rs diff --git a/media/libstagefright/binding/DecoderData.cpp b/media/libstagefright/binding/DecoderData.cpp index 84ee4b347ad9..d1971484231f 100644 --- a/media/libstagefright/binding/DecoderData.cpp +++ b/media/libstagefright/binding/DecoderData.cpp @@ -230,25 +230,21 @@ MP4AudioInfo::Update(const mp4parse_track_info* track, mRate = audio->sample_rate; mChannels = audio->channels; mBitDepth = audio->bit_depth; + mExtendedProfile = audio->profile; mDuration = track->duration; mMediaTime = track->media_time; mTrackId = track->track_id; - // TODO: mProfile (kKeyAACProfile in stagefright) + // In stagefright, mProfile is kKeyAACProfile, mExtendedProfile is kKeyAACAOT. + // Both are from audioObjectType in AudioSpecificConfig. + if (audio->profile <= 4) { + mProfile = audio->profile; + } const uint8_t* cdata = audio->codec_specific_config.data; size_t size = audio->codec_specific_config.length; if (size > 0) { mCodecSpecificConfig->AppendElements(cdata, size); - - if (size > 1) { - ABitReader br(cdata, size); - mExtendedProfile = br.getBits(5); - - if (mExtendedProfile == 31) { // AAC-ELD => additional 6 bits - mExtendedProfile = 32 + br.getBits(6); - } - } } } diff --git a/media/libstagefright/binding/MP4Metadata.cpp b/media/libstagefright/binding/MP4Metadata.cpp index 27fc635e5e93..856d61499ffb 100644 --- a/media/libstagefright/binding/MP4Metadata.cpp +++ b/media/libstagefright/binding/MP4Metadata.cpp @@ -302,8 +302,7 @@ MP4Metadata::GetTrackInfo(mozilla::TrackInfo::TrackType aType, MOZ_DIAGNOSTIC_ASSERT(audioRust->mRate == audio->mRate); MOZ_DIAGNOSTIC_ASSERT(audioRust->mChannels == audio->mChannels); MOZ_DIAGNOSTIC_ASSERT(audioRust->mBitDepth == audio->mBitDepth); - // TODO: These fields aren't implemented in the Rust demuxer yet. - //MOZ_DIAGNOSTIC_ASSERT(audioRust->mProfile != audio->mProfile); + MOZ_DIAGNOSTIC_ASSERT(audioRust->mProfile == audio->mProfile); MOZ_DIAGNOSTIC_ASSERT(audioRust->mExtendedProfile == audio->mExtendedProfile); break; } diff --git a/media/libstagefright/binding/mp4parse-cargo.patch b/media/libstagefright/binding/mp4parse-cargo.patch index eb0fc7264da7..de392c3ad866 100644 --- a/media/libstagefright/binding/mp4parse-cargo.patch +++ b/media/libstagefright/binding/mp4parse-cargo.patch @@ -2,7 +2,7 @@ diff --git a/media/libstagefright/binding/mp4parse/Cargo.toml b/media/libstagefr index ff9422c..814c4c6 100644 --- a/media/libstagefright/binding/mp4parse/Cargo.toml +++ b/media/libstagefright/binding/mp4parse/Cargo.toml -@@ -18,17 +18,11 @@ exclude = [ +@@ -18,18 +18,12 @@ exclude = [ ] [dependencies] @@ -10,8 +10,10 @@ index ff9422c..814c4c6 100644 -afl = { version = "0.1.1", optional = true } -afl-plugin = { version = "0.1.1", optional = true } -abort_on_panic = { version = "1.0.0", optional = true } +-bitreader = { version = "0.1.0" } +byteorder = "0.5.0" - ++bitreader = { version = "0.1.0" } + [dev-dependencies] test-assembler = "0.1.2" diff --git a/media/libstagefright/binding/mp4parse/Cargo.toml b/media/libstagefright/binding/mp4parse/Cargo.toml index affcef72b022..aa198ca64112 100644 --- a/media/libstagefright/binding/mp4parse/Cargo.toml +++ b/media/libstagefright/binding/mp4parse/Cargo.toml @@ -20,6 +20,7 @@ exclude = [ [dependencies] byteorder = "0.5.0" +bitreader = { version = "0.1.0" } [dev-dependencies] test-assembler = "0.1.2" diff --git a/media/libstagefright/binding/mp4parse/src/lib.rs b/media/libstagefright/binding/mp4parse/src/lib.rs index 96f1c84fc6af..d1495b4119ee 100644 --- a/media/libstagefright/binding/mp4parse/src/lib.rs +++ b/media/libstagefright/binding/mp4parse/src/lib.rs @@ -9,7 +9,9 @@ extern crate afl; extern crate byteorder; +extern crate bitreader; use byteorder::{ReadBytesExt, WriteBytesExt}; +use bitreader::{BitReader, ReadInto}; use std::io::{Read, Take}; use std::io::Cursor; use std::cmp; @@ -61,6 +63,12 @@ pub enum Error { NoMoov, } +impl From for Error { + fn from(_: bitreader::BitReaderError) -> Error { + Error::InvalidData("invalid data") + } +} + impl From for Error { fn from(err: std::io::Error) -> Error { match err.kind() { @@ -1245,18 +1253,30 @@ fn read_ds_descriptor(data: &[u8], esds: &mut ES_Descriptor) -> Result<()> { (0x8, 16000), (0x9, 12000), (0xa, 11025), (0xb, 8000), (0xc, 7350)]; - let des = &mut Cursor::new(data); + let bit_reader = &mut BitReader::new(data); - let audio_specific_config = be_u16(des)?; + let mut audio_object_type: u16 = ReadInto::read(bit_reader, 5)?; - let audio_object_type = audio_specific_config >> 11; + // Extend audio object type, for example, HE-AAC. + if audio_object_type == 31 { + let audio_object_type_ext: u16 = ReadInto::read(bit_reader, 6)?; + audio_object_type = 32 + audio_object_type_ext; + } - let sample_index = (audio_specific_config & 0x07FF) >> 7; + let sample_index: u32 = ReadInto::read(bit_reader, 4)?; - let channel_counts = (audio_specific_config & 0x007F) >> 3; + // Sample frequency could be from table, or retrieved from stream directly + // if index is 0x0f. + let sample_frequency = match sample_index { + 0x0F => { + Some(ReadInto::read(bit_reader, 24)?) + }, + _ => { + frequency_table.iter().find(|item| item.0 == sample_index).map(|x| x.1) + }, + }; - let sample_frequency = - frequency_table.iter().find(|item| item.0 == sample_index).map(|x| x.1); + let channel_counts: u16 = ReadInto::read(bit_reader, 4)?; esds.audio_object_type = Some(audio_object_type); esds.audio_sample_rate = sample_frequency; diff --git a/third_party/rust/bitreader/.cargo-checksum.json b/third_party/rust/bitreader/.cargo-checksum.json new file mode 100644 index 000000000000..e6dc76a2a438 --- /dev/null +++ b/third_party/rust/bitreader/.cargo-checksum.json @@ -0,0 +1 @@ +{"files":{".cargo-ok":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",".gitignore":"f9b1ca6ae27d1c18215265024629a8960c31379f206d9ed20f64e0b2dcf79805","Cargo.toml":"958f2305ab8afcf59f3eeef619f95e511ee2721654417784bbec5ef135fe608b","LICENSE":"cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30","README.md":"dc19fd728ea91808d5f4109b9343f6a6bfb931f20a3094f4d5d77f9343b09579","src/lib.rs":"343e09a0e40a7d88e69e346bcc0816260e91abafbc9fe854b3aae16305cb717e","src/tests.rs":"bf0d60d6b70f79eb36a394ba51eae7c36e185778f31ef9bfba12399ec60b6e75"},"package":"b245039eddbd1a051b8bfa5d5b6afaad6d34d172057a15d561e80b50b4978e8d"} \ No newline at end of file diff --git a/third_party/rust/bitreader/.cargo-ok b/third_party/rust/bitreader/.cargo-ok new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/third_party/rust/bitreader/.gitignore b/third_party/rust/bitreader/.gitignore new file mode 100644 index 000000000000..a9d37c560c6a --- /dev/null +++ b/third_party/rust/bitreader/.gitignore @@ -0,0 +1,2 @@ +target +Cargo.lock diff --git a/third_party/rust/bitreader/Cargo.toml b/third_party/rust/bitreader/Cargo.toml new file mode 100644 index 000000000000..430224b9ac2f --- /dev/null +++ b/third_party/rust/bitreader/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "bitreader" +version = "0.1.0" +authors = ["Ilkka Rauta "] + +description = """ +BitReader helps reading individual bits from a slice of bytes. + +You can read "unusual" numbers of bits from the byte slice, for example 13 bits +at once. The reader internally keeps track of position within the buffer. +""" + +homepage = "https://github.com/irauta/bitreader" +repository = "https://github.com/irauta/bitreader" + +keywords = ["bit", "bits", "bitstream"] + +license = "Apache-2.0" diff --git a/third_party/rust/bitreader/LICENSE b/third_party/rust/bitreader/LICENSE new file mode 100644 index 000000000000..d64569567334 --- /dev/null +++ b/third_party/rust/bitreader/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/third_party/rust/bitreader/README.md b/third_party/rust/bitreader/README.md new file mode 100644 index 000000000000..823b19c5371a --- /dev/null +++ b/third_party/rust/bitreader/README.md @@ -0,0 +1,19 @@ +# BitReader + +BitReader is a helper type to extract strings of bits from a slice of bytes. + +Here is how you read first a single bit, then three bits and finally four bits from a byte buffer: + + use bitreader::BitReader; + + let slice_of_u8 = &[0b1000_1111]; + let mut reader = BitReader::new(slice_of_u8); + + // You obviously should use try! or some other error handling mechanism here + let a_single_bit = reader.read_u8(1).unwrap(); // 1 + let more_bits = reader.read_u8(3).unwrap(); // 0 + let last_bits_of_byte = reader.read_u8(4).unwrap(); // 0b1111 + +You can naturally read bits from longer buffer of data than just a single byte. + +As you read bits, the internal cursor of BitReader moves on along the stream of bits. Little endian format is assumed when reading the multi-byte values. BitReader supports reading maximum of 64 bits at a time (with read_u64). Reading signed values directly is not supported at the moment. diff --git a/third_party/rust/bitreader/src/lib.rs b/third_party/rust/bitreader/src/lib.rs new file mode 100644 index 000000000000..ab9aeaffb895 --- /dev/null +++ b/third_party/rust/bitreader/src/lib.rs @@ -0,0 +1,330 @@ +// Copyright 2015 Ilkka Rauta +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//! BitReader is a helper type to extract strings of bits from a slice of bytes. +//! +//! Here is how you read first a single bit, then three bits and finally four bits from a byte +//! buffer: +//! +//! ``` +//! use bitreader::BitReader; +//! +//! let slice_of_u8 = &[0b1000_1111]; +//! let mut reader = BitReader::new(slice_of_u8); +//! +//! // You probably should use try! or some other error handling mechanism in real code if the +//! // length of the input is not known in advance. +//! let a_single_bit = reader.read_u8(1).unwrap(); +//! assert_eq!(a_single_bit, 1); +//! +//! let more_bits = reader.read_u8(3).unwrap(); +//! assert_eq!(more_bits, 0); +//! +//! let last_bits_of_byte = reader.read_u8(4).unwrap(); +//! assert_eq!(last_bits_of_byte, 0b1111); +//! ``` +//! You can naturally read bits from longer buffer of data than just a single byte. +//! +//! As you read bits, the internal cursor of BitReader moves on along the stream of bits. Little +//! endian format is assumed when reading the multi-byte values. BitReader supports reading maximum +//! of 64 bits at a time (with read_u64). Reading signed values directly is not supported at the +//! moment. +//! +//! The reads do not need to be aligned in any particular way. +//! +//! Reading zero bits is a no-op. +//! +//! You can also skip over a number of bits, in which case there is no arbitrary small limits like +//! when reading the values to a variable. However, you can not seek past the end of the slice, +//! either when reading or when skipping bits. +//! +//! Note that the code will likely not work correctly if the slice is longer than 2^61 bytes, but +//! exceeding that should be pretty unlikely. Let's get back to this when people read exabytes of +//! information one bit at a time. + +use std::fmt; +use std::error::Error; +use std::result; + +#[cfg(test)] +mod tests; + +/// BitReader reads data from a byte slice at the granularity of a single bit. +pub struct BitReader<'a> { + bytes: &'a [u8], + /// Position from the start of the slice, counted as bits instead of bytes + position: u64, + relative_offset: u64, +} + +impl<'a> BitReader<'a> { + /// Construct a new BitReader from a byte slice. The returned reader lives at most as long as + /// the slice given to is valid. + pub fn new(bytes: &'a [u8]) -> BitReader<'a> { + BitReader { + bytes: bytes, + position: 0, + relative_offset: 0, + } + } + + /// Returns a copy of current BitReader, with the difference that its position() returns + /// positions relative to the position of the original BitReader at the construction time. + /// After construction, both readers are otherwise completely independent, except of course + /// for sharing the same source data. + /// + /// ``` + /// use bitreader::BitReader; + /// + /// let bytes = &[0b11110000, 0b00001111]; + /// let mut original = BitReader::new(bytes); + /// assert_eq!(original.read_u8(4).unwrap(), 0b1111); + /// assert_eq!(original.position(), 4); + /// + /// let mut relative = original.relative_reader(); + /// assert_eq!(relative.position(), 0); + /// + /// assert_eq!(original.read_u8(8).unwrap(), 0); + /// assert_eq!(relative.read_u8(8).unwrap(), 0); + /// + /// assert_eq!(original.position(), 12); + /// assert_eq!(relative.position(), 8); + /// ``` + pub fn relative_reader(&self) -> BitReader<'a> { + BitReader { + bytes: self.bytes, + position: self.position, + relative_offset: self.position, + } + } + + /// Read at most 8 bits into a u8. + pub fn read_u8(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_value(bit_count, 8)); + Ok((value & 0xff) as u8) + } + + /// Read at most 16 bits into a u16. + pub fn read_u16(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_value(bit_count, 16)); + Ok((value & 0xffff) as u16) + } + + /// Read at most 32 bits into a u32. + pub fn read_u32(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_value(bit_count, 32)); + Ok((value & 0xffffffff) as u32) + } + + /// Read at most 64 bits into a u64. + pub fn read_u64(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_value(bit_count, 64)); + Ok(value) + } + + /// Read at most 8 bits into a i8. + /// Assumes the bits are stored in two's complement format. + pub fn read_i8(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_signed_value(bit_count, 8)); + Ok((value & 0xff) as i8) + } + + /// Read at most 16 bits into a i16. + /// Assumes the bits are stored in two's complement format. + pub fn read_i16(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_signed_value(bit_count, 16)); + Ok((value & 0xffff) as i16) + } + + /// Read at most 32 bits into a i32. + /// Assumes the bits are stored in two's complement format. + pub fn read_i32(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_signed_value(bit_count, 32)); + Ok((value & 0xffffffff) as i32) + } + + /// Read at most 64 bits into a i64. + /// Assumes the bits are stored in two's complement format. + pub fn read_i64(&mut self, bit_count: u8) -> Result { + let value = try!(self.read_signed_value(bit_count, 64)); + Ok(value) + } + + /// Skip arbitrary number of bits. However, you can skip at most to the end of the byte slice. + pub fn skip(&mut self, bit_count: u64) -> Result<()> { + let end_position = self.position + bit_count; + if end_position > self.bytes.len() as u64 * 8 { + return Err(BitReaderError::NotEnoughData { + position: self.position, + length: (self.bytes.len() * 8) as u64, + requested: bit_count, + }); + } + self.position = end_position; + Ok(()) + } + + /// Returns the position of the cursor, or how many bits have been read so far. + pub fn position(&self) -> u64 { + self.position - self.relative_offset + } + + /// Helper to make sure the "bit cursor" is exactly at the beginning of a byte, or at specific + /// multi-byte alignment position. + /// + /// For example `reader.is_aligned(1)` returns true if exactly n bytes, or n * 8 bits, has been + /// read. Similarly, `reader.is_aligned(4)` returns true if exactly n * 32 bits, or n 4-byte + /// sequences has been read. + /// + /// This function can be used to validate the data is being read properly, for example by + /// adding invocations wrapped into `debug_assert!()` to places where it is known the data + /// should be n-byte aligned. + pub fn is_aligned(&self, alignment_bytes: u32) -> bool { + self.position % (alignment_bytes as u64 * 8) == 0 + } + + fn read_signed_value(&mut self, bit_count: u8, maximum_count: u8) -> Result { + let unsigned = try!(self.read_value(bit_count, maximum_count)); + // Fill the bits above the requested bits with all ones or all zeros, + // depending on the sign bit. + let sign_bit = unsigned >> (bit_count - 1) & 1; + let high_bits = if sign_bit == 1 { -1 } else { 0 }; + Ok(high_bits << bit_count | unsigned as i64) + } + + fn read_value(&mut self, bit_count: u8, maximum_count: u8) -> Result { + if bit_count == 0 { + return Ok(0); + } + if bit_count > maximum_count { + return Err(BitReaderError::TooManyBitsForType { + position: self.position, + requested: bit_count, + allowed: maximum_count, + }); + } + let start_position = self.position; + let end_position = self.position + bit_count as u64; + if end_position > self.bytes.len() as u64 * 8 { + return Err(BitReaderError::NotEnoughData { + position: self.position, + length: (self.bytes.len() * 8) as u64, + requested: bit_count as u64, + }); + } + + let mut value: u64 = 0; + + for i in start_position..end_position { + let byte_index = (i / 8) as usize; + let byte = self.bytes[byte_index]; + let shift = 7 - (i % 8); + let bit = (byte >> shift) as u64 & 1; + value = (value << 1) | bit; + } + + self.position = end_position; + Ok(value) + } +} + +/// Result type for those BitReader operations that can fail. +pub type Result = result::Result; + +/// Error enumeration of BitReader errors. +#[derive(Debug,PartialEq,Copy,Clone)] +pub enum BitReaderError { + /// Requested more bits than there are left in the byte slice at the current position. + NotEnoughData { + position: u64, + length: u64, + requested: u64, + }, + /// Requested more bits than the returned variable can hold, for example more than 8 bits when + /// reading into a u8. + TooManyBitsForType { + position: u64, + requested: u8, + allowed: u8, + } +} + +impl Error for BitReaderError { + fn description(&self) -> &str { + match *self { + BitReaderError::NotEnoughData {..} => "Requested more bits than the byte slice has left", + BitReaderError::TooManyBitsForType {..} => "Requested more bits than the requested integer type can hold", + } + } +} + +impl fmt::Display for BitReaderError { + fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { + //self.description().fmt(fmt) + match *self { + BitReaderError::NotEnoughData { position, length, requested } => write!(fmt, "BitReader: Requested {} bits with only {}/{} bits left (position {})", requested, length - position, length, position), + BitReaderError::TooManyBitsForType { position, requested, allowed } => write!(fmt, "BitReader: Requested {} bits while the type can only hold {} (position {})", requested, allowed, position), + } + } +} + +/// Helper trait to allow reading bits into a variable without explicitly mentioning its type. +/// +/// If you can't or want, for some reason, to use BitReader's read methods (`read_u8` etc.) but +/// want to rely on type inference instead, you can use the ReadInto trait. The trait is +/// implemented for all basic integer types (8/16/32/64 bits, signed/unsigned). +/// +/// ``` +/// use bitreader::{BitReader,ReadInto}; +/// +/// let slice_of_u8 = &[0b1100_0000]; +/// let mut reader = BitReader::new(slice_of_u8); +/// +/// struct Foo { +/// bar: u8 +/// } +/// +/// // No type mentioned here, instead the type of bits is inferred from the type of Foo::bar, +/// // and consequently the correct "overload" is used. +/// let bits = ReadInto::read(&mut reader, 2).unwrap(); +/// +/// let foo = Foo { bar: bits }; +/// assert_eq!(foo.bar, 3) +/// ``` +pub trait ReadInto + where Self: Sized +{ + fn read(reader: &mut BitReader, bits: u8) -> Result; +} + +// There's eight almost identical implementations, let's make this easier. +macro_rules! impl_read_into { + ($T:ty, $method:ident) => ( + impl ReadInto for $T { + fn read(reader: &mut BitReader, bits: u8) -> Result { + reader.$method(bits) + } + } + ) +} + +impl_read_into!(u8, read_u8); +impl_read_into!(u16, read_u16); +impl_read_into!(u32, read_u32); +impl_read_into!(u64, read_u64); + +impl_read_into!(i8, read_i8); +impl_read_into!(i16, read_i16); +impl_read_into!(i32, read_i32); +impl_read_into!(i64, read_i64); diff --git a/third_party/rust/bitreader/src/tests.rs b/third_party/rust/bitreader/src/tests.rs new file mode 100644 index 000000000000..d750d727d5af --- /dev/null +++ b/third_party/rust/bitreader/src/tests.rs @@ -0,0 +1,140 @@ +// Copyright 2015 Ilkka Rauta +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +use super::*; + +#[test] +fn read_buffer() { + let bytes = &[ + 0b1011_0101, 0b0110_1010, 0b1010_1100, 0b1001_1001, + 0b1001_1001, 0b1001_1001, 0b1001_1001, 0b1110_0111, + ]; + + let mut reader = BitReader::new(bytes); + + assert_eq!(reader.read_u8(1).unwrap(), 0b1); + assert_eq!(reader.read_u8(1).unwrap(), 0b0); + assert_eq!(reader.read_u8(2).unwrap(), 0b11); + + assert_eq!(reader.read_u8(4).unwrap(), 0b0101); + + assert!(reader.is_aligned(1)); + + assert_eq!(reader.read_u8(3).unwrap(), 0b11); + assert_eq!(reader.read_u16(10).unwrap(), 0b01_0101_0101); + assert_eq!(reader.read_u8(3).unwrap(), 0b100); + + assert!(reader.is_aligned(1)); + + assert_eq!(reader.read_u32(32).unwrap(), 0b1001_1001_1001_1001_1001_1001_1001_1001); + + assert_eq!(reader.read_u8(4).unwrap(), 0b1110); + assert_eq!(reader.read_u8(3).unwrap(), 0b011); + assert_eq!(reader.read_u8(1).unwrap(), 0b1); + + // Could also be 8 at this point! + assert!(reader.is_aligned(4)); +} + +#[test] +fn try_all_sizes() { + let bytes = &[ + 0x4a, 0x1e, 0x39, 0xbb, 0xd0, 0x07, 0xca, 0x9a, + 0xa6, 0xba, 0x25, 0x52, 0x6f, 0x0a, 0x6a, 0xba, + ]; + + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u64(64).unwrap(), 0x4a1e39bbd007ca9a); + assert_eq!(reader.read_u64(64).unwrap(), 0xa6ba25526f0a6aba); + + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u32(32).unwrap(), 0x4a1e39bb); + assert_eq!(reader.read_u32(32).unwrap(), 0xd007ca9a); + assert_eq!(reader.read_u32(32).unwrap(), 0xa6ba2552); + assert_eq!(reader.read_u32(32).unwrap(), 0x6f0a6aba); + + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u16(16).unwrap(), 0x4a1e); + assert_eq!(reader.read_u16(16).unwrap(), 0x39bb); + assert_eq!(reader.read_u16(16).unwrap(), 0xd007); + assert_eq!(reader.read_u16(16).unwrap(), 0xca9a); + assert_eq!(reader.read_u16(16).unwrap(), 0xa6ba); + assert_eq!(reader.read_u16(16).unwrap(), 0x2552); + assert_eq!(reader.read_u16(16).unwrap(), 0x6f0a); + assert_eq!(reader.read_u16(16).unwrap(), 0x6aba); + + let mut reader = BitReader::new(&bytes[..]); + for byte in bytes { + assert_eq!(reader.read_u8(8).unwrap(), *byte); + } +} + +#[test] +fn skipping_and_zero_reads() { + let bytes = &[ + 0b1011_0101, 0b1110_1010, 0b1010_1100, + ]; + + let mut reader = BitReader::new(bytes); + + assert_eq!(reader.read_u8(4).unwrap(), 0b1011); + // Reading zero bits should be a no-op + assert_eq!(reader.read_u8(0).unwrap(), 0b0); + assert_eq!(reader.read_u8(4).unwrap(), 0b0101); + reader.skip(3).unwrap(); // 0b111 + assert_eq!(reader.read_u16(10).unwrap(), 0b0101010101); + assert_eq!(reader.read_u8(3).unwrap(), 0b100); +} + +#[test] +fn errors() { + let bytes = &[ + 0b1011_0101, 0b1110_1010, 0b1010_1100, + ]; + + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u8(4).unwrap(), 0b1011); + assert_eq!(reader.read_u8(9).unwrap_err(), BitReaderError::TooManyBitsForType { + position: 4, + requested: 9, + allowed: 8 + }); + // If an error happens, it should be possible to resume as if nothing had happened + assert_eq!(reader.read_u8(4).unwrap(), 0b0101); + + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u8(4).unwrap(), 0b1011); + // Same with this error + assert_eq!(reader.read_u32(21).unwrap_err(), BitReaderError::NotEnoughData { + position: 4, + length: (bytes.len() * 8) as u64, + requested: 21 + }); + assert_eq!(reader.read_u8(4).unwrap(), 0b0101); +} + +#[test] +fn signed_values() { + let from = -2048; + let to = 2048; + for x in from..to { + let bytes = &[ + (x >> 8) as u8, + x as u8, + ]; + let mut reader = BitReader::new(bytes); + assert_eq!(reader.read_u8(4).unwrap(), if x < 0 { 0b1111 } else { 0 }); + assert_eq!(reader.read_i16(12).unwrap(), x); + } +} diff --git a/toolkit/library/gtest/rust/Cargo.lock b/toolkit/library/gtest/rust/Cargo.lock index fd8eba6211e4..35e0d1dcf4db 100644 --- a/toolkit/library/gtest/rust/Cargo.lock +++ b/toolkit/library/gtest/rust/Cargo.lock @@ -7,6 +7,11 @@ dependencies = [ "nsstring-gtest 0.1.0", ] +[[package]] +name = "bitreader" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "0.5.3" @@ -45,6 +50,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "mp4parse" version = "0.6.0" dependencies = [ + "bitreader 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -103,6 +109,7 @@ dependencies = [ ] [metadata] +"checksum bitreader 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b245039eddbd1a051b8bfa5d5b6afaad6d34d172057a15d561e80b50b4978e8d" "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" "checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" diff --git a/toolkit/library/rust/Cargo.lock b/toolkit/library/rust/Cargo.lock index 5eaf08ec62d0..7b070d593919 100644 --- a/toolkit/library/rust/Cargo.lock +++ b/toolkit/library/rust/Cargo.lock @@ -5,6 +5,11 @@ dependencies = [ "gkrust-shared 0.1.0", ] +[[package]] +name = "bitreader" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "byteorder" version = "0.5.3" @@ -43,6 +48,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "mp4parse" version = "0.6.0" dependencies = [ + "bitreader 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -90,6 +96,7 @@ dependencies = [ ] [metadata] +"checksum bitreader 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b245039eddbd1a051b8bfa5d5b6afaad6d34d172057a15d561e80b50b4978e8d" "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" "checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" From c97f1c6da6a9dadc0acd4e02d54dde649c15611d Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Wed, 21 Dec 2016 20:19:24 -0800 Subject: [PATCH 50/94] Backed out 3 changesets (bug 1312739) for "'NoneType' object has no attribute 'startswith'" bustage in everything mochitest CLOSED TREE Backed out changeset 1f3f88337227 (bug 1312739) Backed out changeset ecb1d15e8075 (bug 1312739) Backed out changeset b2adce340421 (bug 1312739) --- testing/mochitest/__init__.py | 3 - testing/mochitest/mach_commands.py | 61 +++++++++++++++- .../mochitest/mach_test_package_commands.py | 13 +--- testing/mochitest/mochitest_options.py | 70 ++----------------- testing/tools/mach_test_package_bootstrap.py | 4 +- 5 files changed, 68 insertions(+), 83 deletions(-) delete mode 100644 testing/mochitest/__init__.py diff --git a/testing/mochitest/__init__.py b/testing/mochitest/__init__.py deleted file mode 100644 index 6fbe8159b2db..000000000000 --- a/testing/mochitest/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# 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/. diff --git a/testing/mochitest/mach_commands.py b/testing/mochitest/mach_commands.py index d83b3d0a03a8..fb261ec82708 100644 --- a/testing/mochitest/mach_commands.py +++ b/testing/mochitest/mach_commands.py @@ -6,6 +6,7 @@ from __future__ import absolute_import, unicode_literals from argparse import Namespace from collections import defaultdict +from itertools import chain import logging import os import sys @@ -75,7 +76,61 @@ NOW_RUNNING = ''' ''' +# Maps test flavors to data needed to run them +ALL_FLAVORS = { + 'mochitest': { + 'suite': 'plain', + 'aliases': ('plain', 'mochitest'), + 'enabled_apps': ('firefox', 'android'), + 'extra_args': { + 'flavor': 'plain', + } + }, + 'chrome': { + 'suite': 'chrome', + 'aliases': ('chrome', 'mochitest-chrome'), + 'enabled_apps': ('firefox', 'android'), + 'extra_args': { + 'flavor': 'chrome', + } + }, + 'browser-chrome': { + 'suite': 'browser', + 'aliases': ('browser', 'browser-chrome', 'mochitest-browser-chrome', 'bc'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'browser', + } + }, + 'jetpack-package': { + 'suite': 'jetpack-package', + 'aliases': ('jetpack-package', 'mochitest-jetpack-package', 'jpp'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'jetpack-package', + } + }, + 'jetpack-addon': { + 'suite': 'jetpack-addon', + 'aliases': ('jetpack-addon', 'mochitest-jetpack-addon', 'jpa'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'jetpack-addon', + } + }, + 'a11y': { + 'suite': 'a11y', + 'aliases': ('a11y', 'mochitest-a11y', 'accessibility'), + 'enabled_apps': ('firefox',), + 'extra_args': { + 'flavor': 'a11y', + } + }, +} + SUPPORTED_APPS = ['firefox', 'android'] +SUPPORTED_FLAVORS = list(chain.from_iterable([f['aliases'] for f in ALL_FLAVORS.values()])) +CANONICAL_FLAVORS = sorted([f['aliases'][0] for f in ALL_FLAVORS.values()]) parser = None @@ -276,9 +331,11 @@ class MachCommands(MachCommandBase): conditions=[is_buildapp_in(*SUPPORTED_APPS)], description='Run any flavor of mochitest (integration test).', parser=setup_argument_parser) + @CommandArgument('-f', '--flavor', + metavar='{{{}}}'.format(', '.join(CANONICAL_FLAVORS)), + choices=SUPPORTED_FLAVORS, + help='Only run tests of this flavor.') def run_mochitest_general(self, flavor=None, test_objects=None, resolve_tests=True, **kwargs): - from mochitest.mochitest_options import ALL_FLAVORS - buildapp = None for app in SUPPORTED_APPS: if is_buildapp_in(app)(self): diff --git a/testing/mochitest/mach_test_package_commands.py b/testing/mochitest/mach_test_package_commands.py index ec3404aedef3..71fe62428645 100644 --- a/testing/mochitest/mach_test_package_commands.py +++ b/testing/mochitest/mach_test_package_commands.py @@ -18,23 +18,12 @@ parser = None def run_mochitest(context, **kwargs): - from mochitest_options import ALL_FLAVORS - flavor = kwargs.get('flavor') or 'mochitest' - if flavor not in ALL_FLAVORS: - for fname, fobj in ALL_FLAVORS.iteritems(): - if flavor in fobj['aliases']: - flavor = fname - break - fobj = ALL_FLAVORS[flavor] - kwargs.update(fobj.get('extra_args', {})) - args = Namespace(**kwargs) args.e10s = context.mozharness_config.get('e10s', args.e10s) args.certPath = context.certs_dir if args.test_paths: - install_subdir = fobj.get('install_subdir', fobj['suite']) - test_root = os.path.join(context.package_root, 'mochitest', install_subdir) + test_root = os.path.join(context.package_root, 'mochitest', 'tests') normalize = partial(context.normalize_test_path, test_root) args.test_paths = map(normalize, args.test_paths) diff --git a/testing/mochitest/mochitest_options.py b/testing/mochitest/mochitest_options.py index b7a28b418aee..f64bbeef2620 100644 --- a/testing/mochitest/mochitest_options.py +++ b/testing/mochitest/mochitest_options.py @@ -5,7 +5,6 @@ from abc import ABCMeta, abstractmethod, abstractproperty from argparse import ArgumentParser, SUPPRESS from distutils.util import strtobool -from itertools import chain from urlparse import urlparse import json import os @@ -31,62 +30,6 @@ except ImportError: conditions = None -# Maps test flavors to data needed to run them -ALL_FLAVORS = { - 'mochitest': { - 'suite': 'plain', - 'aliases': ('plain', 'mochitest'), - 'enabled_apps': ('firefox', 'android'), - 'extra_args': { - 'flavor': 'plain', - }, - 'install_subdir': 'tests', - }, - 'chrome': { - 'suite': 'chrome', - 'aliases': ('chrome', 'mochitest-chrome'), - 'enabled_apps': ('firefox', 'android'), - 'extra_args': { - 'flavor': 'chrome', - } - }, - 'browser-chrome': { - 'suite': 'browser', - 'aliases': ('browser', 'browser-chrome', 'mochitest-browser-chrome', 'bc'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'browser', - } - }, - 'jetpack-package': { - 'suite': 'jetpack-package', - 'aliases': ('jetpack-package', 'mochitest-jetpack-package', 'jpp'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'jetpack-package', - } - }, - 'jetpack-addon': { - 'suite': 'jetpack-addon', - 'aliases': ('jetpack-addon', 'mochitest-jetpack-addon', 'jpa'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'jetpack-addon', - } - }, - 'a11y': { - 'suite': 'a11y', - 'aliases': ('a11y', 'mochitest-a11y', 'accessibility'), - 'enabled_apps': ('firefox',), - 'extra_args': { - 'flavor': 'a11y', - } - }, -} -SUPPORTED_FLAVORS = list(chain.from_iterable([f['aliases'] for f in ALL_FLAVORS.values()])) -CANONICAL_FLAVORS = sorted([f['aliases'][0] for f in ALL_FLAVORS.values()]) - - def get_default_valgrind_suppression_files(): # We are trying to locate files in the source tree. So if we # don't know where the source tree is, we must give up. @@ -142,6 +85,8 @@ class ArgumentContainer(): class MochitestArguments(ArgumentContainer): """General mochitest arguments.""" + + FLAVORS = ('a11y', 'browser', 'chrome', 'jetpack-addon', 'jetpack-package', 'plain') LOG_LEVELS = ("DEBUG", "INFO", "WARNING", "ERROR", "FATAL") args = [ @@ -153,10 +98,10 @@ class MochitestArguments(ArgumentContainer): "(to run recursively). If omitted, the entire suite is run.", }], [["-f", "--flavor"], - {"choices": SUPPORTED_FLAVORS, - "metavar": "{{{}}}".format(', '.join(CANONICAL_FLAVORS)), - "default": None, - "help": "Only run tests of this flavor.", + {"default": "plain", + "choices": FLAVORS, + "help": "Mochitest flavor to run, one of {}. Defaults to 'plain'.".format(FLAVORS), + "suppress": build_obj is not None, }], [["--keep-open"], {"nargs": "?", @@ -638,9 +583,6 @@ class MochitestArguments(ArgumentContainer): "$objdir/_tests/testing/mochitest/runtests.py?".format( options.app)) - if options.flavor is None: - options.flavor == 'plain' - if options.gmp_path is None and options.app and build_obj: # Need to fix the location of gmp_fake which might not be shipped in the binary gmp_modules = ( diff --git a/testing/tools/mach_test_package_bootstrap.py b/testing/tools/mach_test_package_bootstrap.py index 2bbfea95f159..f7a8fb397b3a 100644 --- a/testing/tools/mach_test_package_bootstrap.py +++ b/testing/tools/mach_test_package_bootstrap.py @@ -12,8 +12,8 @@ import types SEARCH_PATHS = [ - 'marionette/harness', - 'marionette/harness/marionette_harness/runner/mixins/browsermob-proxy-py', + 'marionette', + 'marionette/marionette/runner/mixins/browsermob-proxy-py', 'marionette/client', 'mochitest', 'mozbase/manifestparser', From 70fab1925d24eb5ea90c531a7dcd2e2acfe81a62 Mon Sep 17 00:00:00 2001 From: Chenxia Liu Date: Wed, 21 Dec 2016 17:04:45 -0800 Subject: [PATCH 51/94] Bug 1325243 - Update UI Telemetry docs to reflect usage of "extras". r=Grisha MozReview-Commit-ID: 9FBXQioCZ2A --HG-- extra : rebase_source : f479791398c94d95bfa4b730d6d57f4dd80580e2 --- mobile/android/docs/uitelemetry.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/android/docs/uitelemetry.rst b/mobile/android/docs/uitelemetry.rst index d592acbb6547..48e428878b87 100644 --- a/mobile/android/docs/uitelemetry.rst +++ b/mobile/android/docs/uitelemetry.rst @@ -66,7 +66,7 @@ Events capture key occurrences. They should be brief and simple, and should not Used for user actions that can be performed in many ways. This field specifies the method by which the action was performed. For example, users can add an item to their reading list either by long-tapping the reader icon in the address bar, or from within reader mode. We would use the same event name for both user actions but specify two methods: ``addressbar`` and ``readermode``. ``extras`` (Optional) - For extra information that may be useful in understanding the event. Make an effort to keep this brief. + For extra information that may be useful in understanding the event (such as a short string, a json blob, etc). ``timestamp`` (Optional) The time at which the event occurred. If not specified, this field defaults to the current value of the realtime clock. From 2eb9f6b181012d516428b67a1bda70c6c0ba82be Mon Sep 17 00:00:00 2001 From: Xidorn Quan Date: Wed, 21 Dec 2016 15:11:12 +1100 Subject: [PATCH 52/94] Bug 1324988 - Enable some style system tests for stylo. r=gps MozReview-Commit-ID: 5wRC8a1tgae --HG-- extra : rebase_source : 47a0812e443cc5320c2585712f6f60338e2d8ad3 --- layout/style/test/mochitest.ini | 3 +++ taskcluster/ci/desktop-test/test-sets.yml | 1 + taskcluster/ci/desktop-test/tests.yml | 17 +++++++++++++++++ .../configs/unittests/linux_unittest.py | 1 + 4 files changed, 22 insertions(+) diff --git a/layout/style/test/mochitest.ini b/layout/style/test/mochitest.ini index 0063feb1fd4d..99f96a11710b 100644 --- a/layout/style/test/mochitest.ini +++ b/layout/style/test/mochitest.ini @@ -206,9 +206,11 @@ support-files = [test_inherit_computation.html] skip-if = toolkit == 'android' [test_inherit_storage.html] +tags = stylo [test_initial_computation.html] skip-if = toolkit == 'android' [test_initial_storage.html] +tags = stylo [test_keyframes_rules.html] [test_load_events_on_stylesheets.html] [test_logical_properties.html] @@ -285,6 +287,7 @@ support-files = unprefixing_service_iframe.html unprefixing_service_utils.js [test_unprefixing_service_prefs.html] support-files = unprefixing_service_iframe.html unprefixing_service_utils.js [test_value_cloning.html] +tags = stylo skip-if = toolkit == 'android' #bug 775227 [test_value_computation.html] skip-if = toolkit == 'android' diff --git a/taskcluster/ci/desktop-test/test-sets.yml b/taskcluster/ci/desktop-test/test-sets.yml index ccb59d5907e5..0f175faa26cf 100644 --- a/taskcluster/ci/desktop-test/test-sets.yml +++ b/taskcluster/ci/desktop-test/test-sets.yml @@ -79,6 +79,7 @@ stylo-tests: - cppunit - crashtest - reftest-stylo + - mochitest-stylo asan-tests: - cppunit diff --git a/taskcluster/ci/desktop-test/tests.yml b/taskcluster/ci/desktop-test/tests.yml index fe9dc8f7321a..d2d17f8e5aba 100644 --- a/taskcluster/ci/desktop-test/tests.yml +++ b/taskcluster/ci/desktop-test/tests.yml @@ -576,6 +576,23 @@ mochitest-webgl: # Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety allow-software-gl-layers: false +mochitest-stylo: + description: "Mochitest run for Stylo" + suite: mochitest/mochitest-stylo + treeherder-symbol: tc-M(s) + loopback-video: true + e10s: false + mozharness: + script: desktop_unittest.py + no-read-buildbot-config: true + config: + by-test-platform: + default: + - unittests/linux_unittest.py + - remove_executables.py + extra-options: + - --mochitest-suite=mochitest-stylo + reftest: description: "Reftest run" suite: reftest/reftest diff --git a/testing/mozharness/configs/unittests/linux_unittest.py b/testing/mozharness/configs/unittests/linux_unittest.py index c70b826bd41d..e1f554c7faf2 100644 --- a/testing/mozharness/configs/unittests/linux_unittest.py +++ b/testing/mozharness/configs/unittests/linux_unittest.py @@ -203,6 +203,7 @@ config = { "jetpack-package-clipboard": ["--flavor=jetpack-package", "--subsuite=clipboard"], "jetpack-addon": ["--flavor=jetpack-addon"], "a11y": ["--flavor=a11y"], + "mochitest-stylo": ["--disable-e10s", "--tag=stylo"], }, # local reftest suites "all_reftest_suites": { From f66e96f7e9604dca92ff089d40131a00ae0a790e Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Wed, 21 Dec 2016 21:32:43 -0800 Subject: [PATCH 53/94] Backed out changeset 9bc09c4c42c8 (bug 1322862) for frequent failures in test_navigation.py TestNavigate.test_go_back --- testing/marionette/evaluate.js | 28 ++++++------------- .../tests/unit/test_execute_script.py | 14 ---------- 2 files changed, 9 insertions(+), 33 deletions(-) diff --git a/testing/marionette/evaluate.js b/testing/marionette/evaluate.js index 208ff0241ae3..2e66430b759e 100644 --- a/testing/marionette/evaluate.js +++ b/testing/marionette/evaluate.js @@ -113,7 +113,7 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { if (opts.async) { sb[CALLBACK] = sb[COMPLETE]; } - sb[ARGUMENTS] = sandbox.cloneInto(args, sb); + sb[ARGUMENTS] = Cu.cloneInto(args, sb, {wrapReflectors: true}); // callback function made private // so that introspection is possible @@ -137,19 +137,21 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { // // see bug 1128760 for more details if (opts.debug) { - sb.window.addEventListener("error", (msg, url, line) => { - let err = new JavaScriptError(`${msg} at ${url}:${line}`); + sb.window.onerror = (msg, url, line) => { + let err = new JavaScriptError(`${msg} at: ${url} line: ${line}`); reject(err); - }); + }; } // timeout and unload handlers - scriptTimeoutID = setTimeout(timeoutHandler, opts.timeout || DEFAULT_TIMEOUT); - sb.window.addEventListener("unload", sandbox.cloneInto(unloadHandler, sb)); + scriptTimeoutID = setTimeout( + timeoutHandler, opts.timeout || DEFAULT_TIMEOUT); + sb.window.addEventListener("unload", unloadHandler); let res; try { - res = Cu.evalInSandbox(src, sb, "1.8", opts.filename || "dummy file", 0); + res = Cu.evalInSandbox( + src, sb, "1.8", opts.filename || "dummy file", 0); } catch (e) { let err = new JavaScriptError( e, @@ -174,18 +176,6 @@ evaluate.sandbox = function (sb, script, args = [], opts = {}) { this.sandbox = {}; -/** - * Provides a safe way to take an object defined in a privileged scope and - * create a structured clone of it in a less-privileged scope. It returns - * a reference to the clone. - * - * Unlike for |Components.utils.cloneInto|, |obj| may contain functions - * and DOM elemnets. - */ -sandbox.cloneInto = function (obj, sb) { - return Cu.cloneInto(obj, sb, {cloneFunctions: true, wrapReflectors: true}); -}; - /** * Augment given sandbox by an adapter that has an {@code exports} * map property, or a normal map, of function names and function diff --git a/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py b/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py index b931726b74cc..a0725fbb0e81 100644 --- a/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py +++ b/testing/marionette/harness/marionette_harness/tests/unit/test_execute_script.py @@ -262,17 +262,6 @@ class TestExecuteContent(MarionetteTestCase): content_timeout_triggered, message="Scheduled setTimeout event was cancelled by call to execute_script") - def test_privileged_code_inspection(self): - # test permission denied on toString of unload event handler - self.marionette.navigate(inline(""" - """)) - self.marionette.execute_script("", sandbox=None) - - # test inspection of arguments - self.marionette.execute_script("__webDriverArguments.toString()") - class TestExecuteChrome(WindowManagerMixin, TestExecuteContent): @@ -335,9 +324,6 @@ class TestExecuteChrome(WindowManagerMixin, TestExecuteContent): def test_window_set_timeout_is_not_cancelled(self): pass - def test_privileged_code_inspection(self): - pass - class TestElementCollections(MarionetteTestCase): def assertSequenceIsInstance(self, seq, typ): From 76cef3b73d93985df9877476121686ec46784e5b Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Wed, 14 Dec 2016 14:34:26 +0800 Subject: [PATCH 54/94] Bug 1322460 - Don't addref/release on the return value of prohibited functions. r=aklotz,Ehsan MozReview-Commit-ID: B0mAMZp5sll --HG-- extra : rebase_source : fb5e25352089e26172189b9c4f2be8c5553fa5a8 --- accessible/windows/uia/uiaRawElmProvider.cpp | 4 ++-- gfx/layers/TextureDIB.cpp | 2 +- gfx/layers/d3d9/TextureD3D9.cpp | 4 ++-- ipc/mscom/DispatchForwarder.cpp | 4 ++-- ipc/mscom/Interceptor.cpp | 11 ++++------- ipc/mscom/Interceptor.h | 2 +- ipc/mscom/WeakRef.cpp | 5 ++--- ipc/mscom/WeakRef.h | 8 ++++---- 8 files changed, 18 insertions(+), 22 deletions(-) diff --git a/accessible/windows/uia/uiaRawElmProvider.cpp b/accessible/windows/uia/uiaRawElmProvider.cpp index 54e54766dec3..9a702a1f02ee 100644 --- a/accessible/windows/uia/uiaRawElmProvider.cpp +++ b/accessible/windows/uia/uiaRawElmProvider.cpp @@ -56,8 +56,8 @@ uiaRawElmProvider::GetIAccessiblePair(__RPC__deref_out_opt IAccessible** aAcc, return CO_E_OBJNOTCONNECTED; *aIdChild = CHILDID_SELF; - *aAcc = mAcc; - mAcc->AddRef(); + RefPtr copy(mAcc); + copy.forget(aAcc); return S_OK; diff --git a/gfx/layers/TextureDIB.cpp b/gfx/layers/TextureDIB.cpp index 79a9469bfa2e..c908c7489b18 100644 --- a/gfx/layers/TextureDIB.cpp +++ b/gfx/layers/TextureDIB.cpp @@ -173,7 +173,7 @@ MemoryDIBTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) // The host will release this ref when it receives the surface descriptor. // We AddRef in case we die before the host receives the pointer. aOutDescriptor = SurfaceDescriptorDIB(reinterpret_cast(mSurface.get())); - mSurface->AddRef(); + mSurface.get()->AddRef(); return true; } diff --git a/gfx/layers/d3d9/TextureD3D9.cpp b/gfx/layers/d3d9/TextureD3D9.cpp index 9828450d18ba..9c35ab9dc08b 100644 --- a/gfx/layers/d3d9/TextureD3D9.cpp +++ b/gfx/layers/d3d9/TextureD3D9.cpp @@ -647,7 +647,7 @@ D3D9TextureData::Unlock() bool D3D9TextureData::Serialize(SurfaceDescriptor& aOutDescriptor) { - mTexture->AddRef(); // Release in TextureHostD3D9::TextureHostD3D9 + mTexture.get()->AddRef(); // Release in TextureHostD3D9::TextureHostD3D9 aOutDescriptor = SurfaceDescriptorD3D9(reinterpret_cast(mTexture.get())); return true; } @@ -835,7 +835,7 @@ TextureHostD3D9::TextureHostD3D9(TextureFlags aFlags, { mTexture = reinterpret_cast(aDescriptor.texture()); MOZ_ASSERT(mTexture); - mTexture->Release(); // see AddRef in TextureClientD3D9::ToSurfaceDescriptor + mTexture.get()->Release(); // see AddRef in TextureClientD3D9::ToSurfaceDescriptor MOZ_ASSERT(mTexture); D3DSURFACE_DESC desc; HRESULT hr = mTexture->GetLevelDesc(0, &desc); diff --git a/ipc/mscom/DispatchForwarder.cpp b/ipc/mscom/DispatchForwarder.cpp index acc76f383ea6..552229b4de65 100644 --- a/ipc/mscom/DispatchForwarder.cpp +++ b/ipc/mscom/DispatchForwarder.cpp @@ -100,8 +100,8 @@ DispatchForwarder::GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo) // ITypeInfo as implemented by COM is apartment-neutral, so we don't need // to wrap it (yay!) if (mTypeInfo) { - *ppTInfo = mTypeInfo.get(); - mTypeInfo->AddRef(); + RefPtr copy(mTypeInfo); + copy.forget(ppTInfo); return S_OK; } HRESULT hr = E_UNEXPECTED; diff --git a/ipc/mscom/Interceptor.cpp b/ipc/mscom/Interceptor.cpp index 0361cfc6df68..6ad67892197f 100644 --- a/ipc/mscom/Interceptor.cpp +++ b/ipc/mscom/Interceptor.cpp @@ -61,7 +61,7 @@ Interceptor::~Interceptor() MOZ_ASSERT(NS_IsMainThread()); for (uint32_t index = 0, len = mInterceptorMap.Length(); index < len; ++index) { MapEntry& entry = mInterceptorMap[index]; - entry.mInterceptor->Release(); + entry.mInterceptor = nullptr; entry.mTargetInterface->Release(); } } @@ -234,12 +234,9 @@ Interceptor::GetInterceptorForIID(REFIID aIid, void** aOutInterceptor) if (entry && entry->mInterceptor) { unkInterceptor = entry->mInterceptor; } else { - // We're inserting unkInterceptor into the map but we still want to hang - // onto it locally so that we can QI it below. - unkInterceptor->AddRef(); - // OTOH we must not touch the refcount for the target interface - // because we are just moving it into the map and its refcounting might - // not be thread-safe. + // MapEntry has a RefPtr to unkInterceptor, OTOH we must not touch the + // refcount for the target interface because we are just moving it into + // the map and its refcounting might not be thread-safe. IUnknown* rawTargetInterface = targetInterface.release(); mInterceptorMap.AppendElement(MapEntry(aIid, unkInterceptor, diff --git a/ipc/mscom/Interceptor.h b/ipc/mscom/Interceptor.h index ecddbddf5769..6630bb018828 100644 --- a/ipc/mscom/Interceptor.h +++ b/ipc/mscom/Interceptor.h @@ -81,7 +81,7 @@ private: , mTargetInterface(aTargetInterface) {} IID mIID; - IUnknown* mInterceptor; + RefPtr mInterceptor; IUnknown* mTargetInterface; }; diff --git a/ipc/mscom/WeakRef.cpp b/ipc/mscom/WeakRef.cpp index 26fd0810feb4..c895fad40b90 100644 --- a/ipc/mscom/WeakRef.cpp +++ b/ipc/mscom/WeakRef.cpp @@ -99,7 +99,7 @@ WeakReferenceSupport::ClearWeakRefs() { for (uint32_t i = 0, len = mWeakRefs.Length(); i < len; ++i) { mWeakRefs[i]->Clear(); - mWeakRefs[i]->Release(); + mWeakRefs[i] = nullptr; } mWeakRefs.Clear(); } @@ -120,8 +120,7 @@ WeakReferenceSupport::GetWeakReference(IWeakReference** aOutWeakRef) return hr; } - mWeakRefs.AppendElement(weakRef.get()); - weakRef->AddRef(); + mWeakRefs.AppendElement(weakRef); return S_OK; } diff --git a/ipc/mscom/WeakRef.h b/ipc/mscom/WeakRef.h index 4b4835aa541e..25ec91d2d600 100644 --- a/ipc/mscom/WeakRef.h +++ b/ipc/mscom/WeakRef.h @@ -70,10 +70,10 @@ private: private: // Using a raw CRITICAL_SECTION here because it can be reentered - CRITICAL_SECTION mCS; - ULONG mRefCnt; - nsTArray mWeakRefs; - Flags mFlags; + CRITICAL_SECTION mCS; + ULONG mRefCnt; + nsTArray> mWeakRefs; + Flags mFlags; }; class WeakRef : public IWeakReference From 80a9198b29bb6ce61d020e4a2837e8b3a5253b29 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:43:21 +0800 Subject: [PATCH 55/94] Bug 1322465 part 1 - Use explicit/MOZ_IMPLICIT for the unary constructors in accessible/. r=Ehsan MozReview-Commit-ID: ItoYyiF1Vjo --HG-- extra : rebase_source : ddfe5a07cc47595ec6b20a07ea2be78a0c3da7eb --- accessible/base/nsAccessibilityService.cpp | 2 +- accessible/windows/ProxyWrappers.h | 6 +++--- accessible/windows/msaa/AccessibleWrap.cpp | 2 +- accessible/windows/msaa/EnumVariant.h | 2 +- accessible/windows/msaa/ServiceProvider.h | 2 +- accessible/windows/sdn/sdnAccessible.h | 2 +- accessible/windows/sdn/sdnDocAccessible.h | 2 +- accessible/windows/sdn/sdnTextAccessible.h | 4 ++-- accessible/windows/uia/uiaRawElmProvider.h | 2 +- 9 files changed, 12 insertions(+), 12 deletions(-) diff --git a/accessible/base/nsAccessibilityService.cpp b/accessible/base/nsAccessibilityService.cpp index 52872e9d53db..4fb0b4fe53b9 100644 --- a/accessible/base/nsAccessibilityService.cpp +++ b/accessible/base/nsAccessibilityService.cpp @@ -406,7 +406,7 @@ class PluginTimerCallBack final : public nsITimerCallback ~PluginTimerCallBack() {} public: - PluginTimerCallBack(nsIContent* aContent) : mContent(aContent) {} + explicit PluginTimerCallBack(nsIContent* aContent) : mContent(aContent) {} NS_DECL_ISUPPORTS diff --git a/accessible/windows/ProxyWrappers.h b/accessible/windows/ProxyWrappers.h index 6e7c84e18f30..5e69b7a468a4 100644 --- a/accessible/windows/ProxyWrappers.h +++ b/accessible/windows/ProxyWrappers.h @@ -16,7 +16,7 @@ namespace a11y { class ProxyAccessibleWrap : public AccessibleWrap { public: - ProxyAccessibleWrap(ProxyAccessible* aProxy) : + explicit ProxyAccessibleWrap(ProxyAccessible* aProxy) : AccessibleWrap(nullptr, nullptr) { mType = eProxyType; @@ -38,7 +38,7 @@ public: class HyperTextProxyAccessibleWrap : public HyperTextAccessibleWrap { public: - HyperTextProxyAccessibleWrap(ProxyAccessible* aProxy) : + explicit HyperTextProxyAccessibleWrap(ProxyAccessible* aProxy) : HyperTextAccessibleWrap(nullptr, nullptr) { mType = eProxyType; @@ -60,7 +60,7 @@ public: class DocProxyAccessibleWrap : public HyperTextProxyAccessibleWrap { public: - DocProxyAccessibleWrap(ProxyAccessible* aProxy) : + explicit DocProxyAccessibleWrap(ProxyAccessible* aProxy) : HyperTextProxyAccessibleWrap(aProxy) { mGenericTypes |= eDocument; } diff --git a/accessible/windows/msaa/AccessibleWrap.cpp b/accessible/windows/msaa/AccessibleWrap.cpp index 02f4f5da04f8..fa27ef1c76d0 100644 --- a/accessible/windows/msaa/AccessibleWrap.cpp +++ b/accessible/windows/msaa/AccessibleWrap.cpp @@ -693,7 +693,7 @@ AccessibleWrap::get_accFocus( class AccessibleEnumerator final : public IEnumVARIANT { public: - AccessibleEnumerator(const nsTArray& aArray) : + explicit AccessibleEnumerator(const nsTArray& aArray) : mArray(aArray), mCurIndex(0) { } AccessibleEnumerator(const AccessibleEnumerator& toCopy) : mArray(toCopy.mArray), mCurIndex(toCopy.mCurIndex) { } diff --git a/accessible/windows/msaa/EnumVariant.h b/accessible/windows/msaa/EnumVariant.h index 39e342dd59a2..273ecbcdfaeb 100644 --- a/accessible/windows/msaa/EnumVariant.h +++ b/accessible/windows/msaa/EnumVariant.h @@ -19,7 +19,7 @@ namespace a11y { class ChildrenEnumVariant final : public IEnumVARIANT { public: - ChildrenEnumVariant(AccessibleWrap* aAnchor) : mAnchorAcc(aAnchor), + explicit ChildrenEnumVariant(AccessibleWrap* aAnchor) : mAnchorAcc(aAnchor), mCurAcc(mAnchorAcc->GetChildAt(0)), mCurIndex(0) { } // IUnknown diff --git a/accessible/windows/msaa/ServiceProvider.h b/accessible/windows/msaa/ServiceProvider.h index b0fc812c5def..1f5aada86336 100644 --- a/accessible/windows/msaa/ServiceProvider.h +++ b/accessible/windows/msaa/ServiceProvider.h @@ -18,7 +18,7 @@ namespace a11y { class ServiceProvider final : public IServiceProvider { public: - ServiceProvider(AccessibleWrap* aAcc) : mAccessible(aAcc) {} + explicit ServiceProvider(AccessibleWrap* aAcc) : mAccessible(aAcc) {} ~ServiceProvider() {} DECL_IUNKNOWN diff --git a/accessible/windows/sdn/sdnAccessible.h b/accessible/windows/sdn/sdnAccessible.h index 2876ad270089..dd37cc131960 100644 --- a/accessible/windows/sdn/sdnAccessible.h +++ b/accessible/windows/sdn/sdnAccessible.h @@ -19,7 +19,7 @@ namespace a11y { class sdnAccessible final : public ISimpleDOMNode { public: - sdnAccessible(nsINode* aNode) : + explicit sdnAccessible(nsINode* aNode) : mNode(aNode) { if (!mNode) diff --git a/accessible/windows/sdn/sdnDocAccessible.h b/accessible/windows/sdn/sdnDocAccessible.h index 22c7124b2b4c..6ee7091bec6f 100644 --- a/accessible/windows/sdn/sdnDocAccessible.h +++ b/accessible/windows/sdn/sdnDocAccessible.h @@ -18,7 +18,7 @@ namespace a11y { class sdnDocAccessible final : public ISimpleDOMDocument { public: - sdnDocAccessible(DocAccessibleWrap* aAccessible) : mAccessible(aAccessible) {}; + explicit sdnDocAccessible(DocAccessibleWrap* aAccessible) : mAccessible(aAccessible) {}; ~sdnDocAccessible() { }; DECL_IUNKNOWN diff --git a/accessible/windows/sdn/sdnTextAccessible.h b/accessible/windows/sdn/sdnTextAccessible.h index ed8eecf294eb..24e72bcfbe4a 100644 --- a/accessible/windows/sdn/sdnTextAccessible.h +++ b/accessible/windows/sdn/sdnTextAccessible.h @@ -17,11 +17,11 @@ struct nsPoint; namespace mozilla { namespace a11y { - + class sdnTextAccessible final : public ISimpleDOMText { public: - sdnTextAccessible(AccessibleWrap* aAccessible) : mAccessible(aAccessible) {}; + explicit sdnTextAccessible(AccessibleWrap* aAccessible) : mAccessible(aAccessible) {}; ~sdnTextAccessible() {} DECL_IUNKNOWN diff --git a/accessible/windows/uia/uiaRawElmProvider.h b/accessible/windows/uia/uiaRawElmProvider.h index f32daa19bc17..1a55d6195ab3 100644 --- a/accessible/windows/uia/uiaRawElmProvider.h +++ b/accessible/windows/uia/uiaRawElmProvider.h @@ -24,7 +24,7 @@ class uiaRawElmProvider final : public IAccessibleEx, public IRawElementProviderSimple { public: - uiaRawElmProvider(AccessibleWrap* aAcc) : mAcc(aAcc) { } + explicit uiaRawElmProvider(AccessibleWrap* aAcc) : mAcc(aAcc) { } // IUnknown DECL_IUNKNOWN From 97d61711ed4faa303a236c03a366e12c3ffc9b3a Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:46:11 +0800 Subject: [PATCH 56/94] Bug 1322465 part 2 - Skip external libraries for implicit conversion checking. r=Ehsan MozReview-Commit-ID: ABmaHC9gGJf --HG-- extra : rebase_source : 501c726e7382085c95d57f84aae9b5f9dcebae34 --- build/clang-plugin/clang-plugin.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build/clang-plugin/clang-plugin.cpp b/build/clang-plugin/clang-plugin.cpp index 595253d21409..61ec15c97565 100644 --- a/build/clang-plugin/clang-plugin.cpp +++ b/build/clang-plugin/clang-plugin.cpp @@ -298,7 +298,10 @@ bool isIgnoredPathForImplicitCtor(const Decl *Declaration) { Begin->compare_lower(StringRef("hunspell")) == 0 || Begin->compare_lower(StringRef("scoped_ptr.h")) == 0 || Begin->compare_lower(StringRef("graphite2")) == 0 || - Begin->compare_lower(StringRef("icu")) == 0) { + Begin->compare_lower(StringRef("icu")) == 0 || + Begin->compare_lower(StringRef("libcubeb")) == 0 || + Begin->compare_lower(StringRef("libstagefright")) == 0 || + Begin->compare_lower(StringRef("cairo")) == 0) { return true; } if (Begin->compare_lower(StringRef("chromium")) == 0) { From 417dd84962e59161d76cbb7175da3293e85e2dc8 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:49:53 +0800 Subject: [PATCH 57/94] Bug 1322465 part 3 - Use explicit/MOZ_IMPLICIT for the unary constructors in dom/. r=Ehsan MozReview-Commit-ID: GV26INAj3k2 --HG-- extra : rebase_source : 9943b8451a69ebd3b8141ae3f9db7c4a48d7852c --- dom/gamepad/windows/WindowsGamepad.cpp | 4 ++-- dom/media/directshow/DirectShowReader.h | 2 +- dom/media/directshow/DirectShowUtils.h | 2 +- dom/media/platforms/wmf/WMFAudioMFTManager.h | 2 +- dom/plugins/base/nsPluginNativeWindowWin.cpp | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dom/gamepad/windows/WindowsGamepad.cpp b/dom/gamepad/windows/WindowsGamepad.cpp index fb3d5cc2fd09..5f60fd0b79d8 100644 --- a/dom/gamepad/windows/WindowsGamepad.cpp +++ b/dom/gamepad/windows/WindowsGamepad.cpp @@ -192,7 +192,7 @@ public: } } - operator bool() { + explicit operator bool() { return module && mXInputGetState; } @@ -306,7 +306,7 @@ public: } } - operator bool() { + explicit operator bool() { return mModule && mHidD_GetProductString && mHidP_GetCaps && diff --git a/dom/media/directshow/DirectShowReader.h b/dom/media/directshow/DirectShowReader.h index 4e314a819d84..a94a24ed2eb2 100644 --- a/dom/media/directshow/DirectShowReader.h +++ b/dom/media/directshow/DirectShowReader.h @@ -46,7 +46,7 @@ class SourceFilter; class DirectShowReader : public MediaDecoderReader { public: - DirectShowReader(AbstractMediaDecoder* aDecoder); + explicit DirectShowReader(AbstractMediaDecoder* aDecoder); virtual ~DirectShowReader(); diff --git a/dom/media/directshow/DirectShowUtils.h b/dom/media/directshow/DirectShowUtils.h index 3bbc122fc78b..dc0432817046 100644 --- a/dom/media/directshow/DirectShowUtils.h +++ b/dom/media/directshow/DirectShowUtils.h @@ -26,7 +26,7 @@ namespace mozilla { class Signal { public: - Signal(CriticalSection* aLock) + explicit Signal(CriticalSection* aLock) : mLock(aLock) { CriticalSectionAutoEnter lock(*mLock); diff --git a/dom/media/platforms/wmf/WMFAudioMFTManager.h b/dom/media/platforms/wmf/WMFAudioMFTManager.h index 5bbbc6108ad5..84981dc6af9c 100644 --- a/dom/media/platforms/wmf/WMFAudioMFTManager.h +++ b/dom/media/platforms/wmf/WMFAudioMFTManager.h @@ -18,7 +18,7 @@ namespace mozilla { class WMFAudioMFTManager : public MFTManager { public: - WMFAudioMFTManager(const AudioInfo& aConfig); + explicit WMFAudioMFTManager(const AudioInfo& aConfig); ~WMFAudioMFTManager(); bool Init(); diff --git a/dom/plugins/base/nsPluginNativeWindowWin.cpp b/dom/plugins/base/nsPluginNativeWindowWin.cpp index 16e4ef6c53e0..8832c93883e9 100644 --- a/dom/plugins/base/nsPluginNativeWindowWin.cpp +++ b/dom/plugins/base/nsPluginNativeWindowWin.cpp @@ -159,7 +159,7 @@ static bool ProcessFlashMessageDelayed(nsPluginNativeWindowWin * aWin, nsNPAPIPl class nsDelayedPopupsEnabledEvent : public Runnable { public: - nsDelayedPopupsEnabledEvent(nsNPAPIPluginInstance *inst) + explicit nsDelayedPopupsEnabledEvent(nsNPAPIPluginInstance *inst) : mInst(inst) {} From f45e9a6e3e147b7ea9ca540f6c6de5557ae57607 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:51:26 +0800 Subject: [PATCH 58/94] Bug 1322465 part 4 - Use explicit/MOZ_IMPLICIT for the unary constructors in extensions/. r=Ehsan MozReview-Commit-ID: JX7AiJNVFNg --HG-- extra : rebase_source : e0c2c7934278dcd8cbbcf3c82ceb405f11de31d5 --- extensions/auth/nsAuthSSPI.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/auth/nsAuthSSPI.h b/extensions/auth/nsAuthSSPI.h index 752b22aef5d8..31cf11153748 100644 --- a/extensions/auth/nsAuthSSPI.h +++ b/extensions/auth/nsAuthSSPI.h @@ -32,7 +32,7 @@ public: NS_DECL_ISUPPORTS NS_DECL_NSIAUTHMODULE - nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE); + explicit nsAuthSSPI(pType package = PACKAGE_TYPE_NEGOTIATE); private: ~nsAuthSSPI(); From 3b76c1d27bfab0851578f1d1a9ee390457f8ceb9 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:54:32 +0800 Subject: [PATCH 59/94] Bug 1322465 part 5 - Use explicit/MOZ_IMPLICIT for the unary constructors in gfx/. r=Ehsan MozReview-Commit-ID: 5sdclirTQCV --HG-- extra : rebase_source : 65b8fe4357ee19e858d3ee406495a1c2c3046c90 --- gfx/2d/FilterNodeD2D1.h | 2 +- gfx/2d/HelpersD2D.h | 2 +- gfx/2d/PathD2D.cpp | 4 ++-- gfx/2d/ScaledFontDWrite.h | 2 +- gfx/2d/StackArray.h | 2 +- gfx/gl/GLContextProviderEGL.cpp | 2 +- gfx/layers/IMFYCbCrImage.cpp | 2 +- gfx/layers/d3d11/CompositorD3D11.cpp | 2 +- gfx/layers/d3d11/ReadbackManagerD3D11.cpp | 2 +- gfx/layers/d3d11/TextureD3D11.cpp | 2 +- gfx/layers/d3d11/TextureD3D11.h | 2 +- gfx/layers/d3d9/CompositorD3D9.cpp | 2 +- gfx/layers/d3d9/DeviceManagerD3D9.h | 4 ++-- gfx/layers/d3d9/TextureD3D9.h | 2 +- gfx/thebes/gfxDWriteFontList.h | 2 +- gfx/thebes/gfxGDIFontList.cpp | 4 ++-- gfx/thebes/gfxGDIFontList.h | 2 +- gfx/thebes/gfxWindowsPlatform.h | 2 +- gfx/thebes/gfxWindowsSurface.h | 10 +++++----- 19 files changed, 26 insertions(+), 26 deletions(-) diff --git a/gfx/2d/FilterNodeD2D1.h b/gfx/2d/FilterNodeD2D1.h index 8c4c6df308d9..1d223a38b355 100644 --- a/gfx/2d/FilterNodeD2D1.h +++ b/gfx/2d/FilterNodeD2D1.h @@ -75,7 +75,7 @@ class FilterNodeConvolveD2D1 : public FilterNodeD2D1 { public: MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(FilterNodeConvolveD2D1, override) - FilterNodeConvolveD2D1(ID2D1DeviceContext *aDC); + explicit FilterNodeConvolveD2D1(ID2D1DeviceContext *aDC); virtual void SetInput(uint32_t aIndex, FilterNode *aFilter) override; diff --git a/gfx/2d/HelpersD2D.h b/gfx/2d/HelpersD2D.h index 11e03f1f34e2..d31ba341d846 100644 --- a/gfx/2d/HelpersD2D.h +++ b/gfx/2d/HelpersD2D.h @@ -707,7 +707,7 @@ static inline void AddRectToSink(ID2D1GeometrySink* aSink, const D2D1_RECT_F& aR class DCCommandSink : public ID2D1CommandSink { public: - DCCommandSink(ID2D1DeviceContext* aCtx) : mCtx(aCtx) + explicit DCCommandSink(ID2D1DeviceContext* aCtx) : mCtx(aCtx) { } diff --git a/gfx/2d/PathD2D.cpp b/gfx/2d/PathD2D.cpp index b10e456e1abe..c03880a91583 100644 --- a/gfx/2d/PathD2D.cpp +++ b/gfx/2d/PathD2D.cpp @@ -19,7 +19,7 @@ namespace gfx { class OpeningGeometrySink : public ID2D1SimplifiedGeometrySink { public: - OpeningGeometrySink(ID2D1SimplifiedGeometrySink *aSink) + explicit OpeningGeometrySink(ID2D1SimplifiedGeometrySink *aSink) : mSink(aSink) , mNeedsFigureEnded(false) { @@ -118,7 +118,7 @@ private: class StreamingGeometrySink : public ID2D1SimplifiedGeometrySink { public: - StreamingGeometrySink(PathSink *aSink) + explicit StreamingGeometrySink(PathSink *aSink) : mSink(aSink) { } diff --git a/gfx/2d/ScaledFontDWrite.h b/gfx/2d/ScaledFontDWrite.h index fc9a26c4230c..033b54d718e1 100644 --- a/gfx/2d/ScaledFontDWrite.h +++ b/gfx/2d/ScaledFontDWrite.h @@ -64,7 +64,7 @@ class GlyphRenderingOptionsDWrite : public GlyphRenderingOptions { public: MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(GlyphRenderingOptionsDWrite) - GlyphRenderingOptionsDWrite(IDWriteRenderingParams *aParams) + explicit GlyphRenderingOptionsDWrite(IDWriteRenderingParams *aParams) : mParams(aParams) { } diff --git a/gfx/2d/StackArray.h b/gfx/2d/StackArray.h index a2451f93059c..d73c36b1c43a 100644 --- a/gfx/2d/StackArray.h +++ b/gfx/2d/StackArray.h @@ -9,7 +9,7 @@ template class StackArray { public: - StackArray(size_t count) { + explicit StackArray(size_t count) { if (count > size) { mData = new T[count]; } else { diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp index ca972e0f3c13..edd56789056c 100644 --- a/gfx/gl/GLContextProviderEGL.cpp +++ b/gfx/gl/GLContextProviderEGL.cpp @@ -43,7 +43,7 @@ // a little helper class AutoDestroyHWND { public: - AutoDestroyHWND(HWND aWnd = nullptr) + explicit AutoDestroyHWND(HWND aWnd = nullptr) : mWnd(aWnd) { } diff --git a/gfx/layers/IMFYCbCrImage.cpp b/gfx/layers/IMFYCbCrImage.cpp index d5943b030362..f89d1696f527 100644 --- a/gfx/layers/IMFYCbCrImage.cpp +++ b/gfx/layers/IMFYCbCrImage.cpp @@ -34,7 +34,7 @@ IMFYCbCrImage::~IMFYCbCrImage() struct AutoLockTexture { - AutoLockTexture(ID3D11Texture2D* aTexture) + explicit AutoLockTexture(ID3D11Texture2D* aTexture) { aTexture->QueryInterface((IDXGIKeyedMutex**)getter_AddRefs(mMutex)); if (!mMutex) { diff --git a/gfx/layers/d3d11/CompositorD3D11.cpp b/gfx/layers/d3d11/CompositorD3D11.cpp index b9594b797580..c7dea6f24704 100644 --- a/gfx/layers/d3d11/CompositorD3D11.cpp +++ b/gfx/layers/d3d11/CompositorD3D11.cpp @@ -68,7 +68,7 @@ namespace TexSlot { struct DeviceAttachmentsD3D11 { - DeviceAttachmentsD3D11(ID3D11Device* device) + explicit DeviceAttachmentsD3D11(ID3D11Device* device) : mSyncHandle(0), mDevice(device), mInitOkay(true) diff --git a/gfx/layers/d3d11/ReadbackManagerD3D11.cpp b/gfx/layers/d3d11/ReadbackManagerD3D11.cpp index 88d75869da8a..9acd6b17453b 100644 --- a/gfx/layers/d3d11/ReadbackManagerD3D11.cpp +++ b/gfx/layers/d3d11/ReadbackManagerD3D11.cpp @@ -36,7 +36,7 @@ class ReadbackResultWriterD3D11 final : public nsIRunnable ~ReadbackResultWriterD3D11() {} NS_DECL_THREADSAFE_ISUPPORTS public: - ReadbackResultWriterD3D11(ReadbackTask *aTask) : mTask(aTask) {} + explicit ReadbackResultWriterD3D11(ReadbackTask *aTask) : mTask(aTask) {} NS_IMETHOD Run() override { diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index ac48aa52974f..59463ffccc35 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -30,7 +30,7 @@ static const GUID sD3D11TextureUsage = class TextureMemoryMeasurer : public IUnknown { public: - TextureMemoryMeasurer(size_t aMemoryUsed) + explicit TextureMemoryMeasurer(size_t aMemoryUsed) { mMemoryUsed = aMemoryUsed; gfxWindowsPlatform::sD3D11SharedTextures += mMemoryUsed; diff --git a/gfx/layers/d3d11/TextureD3D11.h b/gfx/layers/d3d11/TextureD3D11.h index c9722740acbb..0ba8fc89a3ed 100644 --- a/gfx/layers/d3d11/TextureD3D11.h +++ b/gfx/layers/d3d11/TextureD3D11.h @@ -413,7 +413,7 @@ private: class SyncObjectD3D11 : public SyncObject { public: - SyncObjectD3D11(SyncHandle aSyncHandle); + explicit SyncObjectD3D11(SyncHandle aSyncHandle); virtual void FinalizeFrame(); virtual SyncType GetSyncType() { return SyncType::D3D11; } diff --git a/gfx/layers/d3d9/CompositorD3D9.cpp b/gfx/layers/d3d9/CompositorD3D9.cpp index cf38bae12c8b..7d256a471695 100644 --- a/gfx/layers/d3d9/CompositorD3D9.cpp +++ b/gfx/layers/d3d9/CompositorD3D9.cpp @@ -899,7 +899,7 @@ CreateDataSurfaceForTexture(IDirect3DDevice9* aDevice, class AutoSurfaceLock { public: - AutoSurfaceLock(IDirect3DSurface9* aSurface, DWORD aFlags = 0) { + explicit AutoSurfaceLock(IDirect3DSurface9* aSurface, DWORD aFlags = 0) { PodZero(&mRect); HRESULT hr = aSurface->LockRect(&mRect, nullptr, aFlags); diff --git a/gfx/layers/d3d9/DeviceManagerD3D9.h b/gfx/layers/d3d9/DeviceManagerD3D9.h index d27b679ab0ef..3a4f91d5d850 100644 --- a/gfx/layers/d3d9/DeviceManagerD3D9.h +++ b/gfx/layers/d3d9/DeviceManagerD3D9.h @@ -107,11 +107,11 @@ public: private: friend class DeviceManagerD3D9; - SwapChainD3D9(DeviceManagerD3D9 *aDeviceManager); + explicit SwapChainD3D9(DeviceManagerD3D9 *aDeviceManager); // Private destructor, to discourage deletion outside of Release(): ~SwapChainD3D9(); - + bool Init(HWND hWnd); /** diff --git a/gfx/layers/d3d9/TextureD3D9.h b/gfx/layers/d3d9/TextureD3D9.h index 67d7a13a661f..febd8e580c18 100644 --- a/gfx/layers/d3d9/TextureD3D9.h +++ b/gfx/layers/d3d9/TextureD3D9.h @@ -298,7 +298,7 @@ public: virtual bool HasIntermediateBuffer() const override { return true; } protected: - TextureHostD3D9(TextureFlags aFlags); + explicit TextureHostD3D9(TextureFlags aFlags); IDirect3DDevice9* GetDevice(); virtual void UpdatedInternal(const nsIntRegion* aRegion) override; diff --git a/gfx/thebes/gfxDWriteFontList.h b/gfx/thebes/gfxDWriteFontList.h index 1d3b28e2ee74..553d67f493a6 100644 --- a/gfx/thebes/gfxDWriteFontList.h +++ b/gfx/thebes/gfxDWriteFontList.h @@ -207,7 +207,7 @@ protected: class DWriteFontFallbackRenderer final : public IDWriteTextRenderer { public: - DWriteFontFallbackRenderer(IDWriteFactory *aFactory) + explicit DWriteFontFallbackRenderer(IDWriteFactory *aFactory) : mRefCount(0) { HRESULT hr = S_OK; diff --git a/gfx/thebes/gfxGDIFontList.cpp b/gfx/thebes/gfxGDIFontList.cpp index d80c49356bbe..36006f89b6cb 100644 --- a/gfx/thebes/gfxGDIFontList.cpp +++ b/gfx/thebes/gfxGDIFontList.cpp @@ -65,7 +65,7 @@ BuildKeyNameFromFontName(nsAString &aName) class WinUserFontData : public gfxUserFontData { public: - WinUserFontData(HANDLE aFontRef) + explicit WinUserFontData(HANDLE aFontRef) : mFontRef(aFontRef) { } @@ -818,7 +818,7 @@ gfxGDIFontList::MakePlatformFont(const nsAString& aFontName, // so we set up a stack object to ensure it is freed even if we take an // early exit struct FontDataDeleter { - FontDataDeleter(const uint8_t* aFontData) + explicit FontDataDeleter(const uint8_t* aFontData) : mFontData(aFontData) { } ~FontDataDeleter() { free((void*)mFontData); } const uint8_t *mFontData; diff --git a/gfx/thebes/gfxGDIFontList.h b/gfx/thebes/gfxGDIFontList.h index ffb513d649c7..a23576322d1b 100644 --- a/gfx/thebes/gfxGDIFontList.h +++ b/gfx/thebes/gfxGDIFontList.h @@ -283,7 +283,7 @@ protected: class GDIFontFamily : public gfxFontFamily { public: - GDIFontFamily(nsAString &aName) : + explicit GDIFontFamily(nsAString &aName) : gfxFontFamily(aName) {} virtual void FindStyleVariations(FontInfoData *aFontInfoData = nullptr); diff --git a/gfx/thebes/gfxWindowsPlatform.h b/gfx/thebes/gfxWindowsPlatform.h index 8db7cf575986..188f2ca06dd8 100644 --- a/gfx/thebes/gfxWindowsPlatform.h +++ b/gfx/thebes/gfxWindowsPlatform.h @@ -66,7 +66,7 @@ struct IDXGIAdapter1; class MOZ_STACK_CLASS DCFromDrawTarget final { public: - DCFromDrawTarget(mozilla::gfx::DrawTarget& aDrawTarget); + explicit DCFromDrawTarget(mozilla::gfx::DrawTarget& aDrawTarget); ~DCFromDrawTarget() { if (mNeedsRelease) { diff --git a/gfx/thebes/gfxWindowsSurface.h b/gfx/thebes/gfxWindowsSurface.h index 594357a2607d..abd8f0c9ecd8 100644 --- a/gfx/thebes/gfxWindowsSurface.h +++ b/gfx/thebes/gfxWindowsSurface.h @@ -25,16 +25,16 @@ public: FLAG_IS_TRANSPARENT = (1 << 2) }; - gfxWindowsSurface(HDC dc, uint32_t flags = 0); + explicit gfxWindowsSurface(HDC dc, uint32_t flags = 0); // Create from a shared d3d9surface - gfxWindowsSurface(IDirect3DSurface9 *surface, uint32_t flags = 0); + explicit gfxWindowsSurface(IDirect3DSurface9 *surface, uint32_t flags = 0); // Create a DIB surface - gfxWindowsSurface(const mozilla::gfx::IntSize& size, - gfxImageFormat imageFormat = mozilla::gfx::SurfaceFormat::X8R8G8B8_UINT32); + explicit gfxWindowsSurface(const mozilla::gfx::IntSize& size, + gfxImageFormat imageFormat = mozilla::gfx::SurfaceFormat::X8R8G8B8_UINT32); - gfxWindowsSurface(cairo_surface_t *csurf); + explicit gfxWindowsSurface(cairo_surface_t *csurf); virtual already_AddRefed CreateSimilarSurface(gfxContentType aType, const mozilla::gfx::IntSize& aSize); From 0643b83e9bdd680e84d14fe9fc71e1a5d60b3ca2 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:56:04 +0800 Subject: [PATCH 60/94] Bug 1322465 part 6 - Use explicit/MOZ_IMPLICIT for the unary constructors in ipc/. r=aklotz,Ehsan MozReview-Commit-ID: 6vg1HZaWtS --HG-- extra : rebase_source : 3d9a0b6ee94d86c6e9346b59a3567071667c5820 --- ipc/glue/WindowsMessageLoop.h | 2 +- ipc/mscom/EnsureMTA.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ipc/glue/WindowsMessageLoop.h b/ipc/glue/WindowsMessageLoop.h index 80577a712a77..72dc8d7fbe9f 100644 --- a/ipc/glue/WindowsMessageLoop.h +++ b/ipc/glue/WindowsMessageLoop.h @@ -81,7 +81,7 @@ private: class DeferredUpdateMessage : public DeferredMessage { public: - DeferredUpdateMessage(HWND aHWnd); + explicit DeferredUpdateMessage(HWND aHWnd); virtual void Run(); diff --git a/ipc/mscom/EnsureMTA.h b/ipc/mscom/EnsureMTA.h index 4cf667038747..88a4874e769f 100644 --- a/ipc/mscom/EnsureMTA.h +++ b/ipc/mscom/EnsureMTA.h @@ -38,7 +38,7 @@ public: } template - EnsureMTA(const FuncT& aClosure) + explicit EnsureMTA(const FuncT& aClosure) { MOZ_ASSERT(NS_IsMainThread()); if (IsCurrentThreadMTA()) { From e551a0b9790596080fd5b39ac3d46679e1306c7b Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:56:40 +0800 Subject: [PATCH 61/94] Bug 1322465 part 7 - Use explicit/MOZ_IMPLICIT for the unary constructors in media/. r=cpearce,Ehsan MozReview-Commit-ID: Ln63tzmkynd --HG-- extra : rebase_source : 869cca55da15d2394411571f741d8ed2728c3265 --- media/gmp-clearkey/0.1/VideoDecoder.h | 2 +- media/gmp-clearkey/0.1/WMFUtils.h | 6 +++--- .../modules/video_capture/windows/BaseFilter.cpp | 4 ++-- .../webrtc/modules/video_capture/windows/BasePin.cpp | 4 ++-- .../webrtc/modules/video_capture/windows/DShowTools.h | 10 +++++----- .../webrtc/modules/video_capture/windows/MediaType.h | 6 +++--- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/media/gmp-clearkey/0.1/VideoDecoder.h b/media/gmp-clearkey/0.1/VideoDecoder.h index cf021efd7330..7b32a86a0650 100644 --- a/media/gmp-clearkey/0.1/VideoDecoder.h +++ b/media/gmp-clearkey/0.1/VideoDecoder.h @@ -30,7 +30,7 @@ class VideoDecoder : public GMPVideoDecoder , public RefCounted { public: - VideoDecoder(GMPVideoHost *aHostAPI); + explicit VideoDecoder(GMPVideoHost *aHostAPI); virtual void InitDecode(const GMPVideoCodec& aCodecSettings, const uint8_t* aCodecSpecific, diff --git a/media/gmp-clearkey/0.1/WMFUtils.h b/media/gmp-clearkey/0.1/WMFUtils.h index 4d2286d0fdb0..15af03ee449d 100644 --- a/media/gmp-clearkey/0.1/WMFUtils.h +++ b/media/gmp-clearkey/0.1/WMFUtils.h @@ -56,8 +56,8 @@ public: CComPtr(const CComPtr& aOther) : mPtr(nullptr) { Set(aOther.Get()); } CComPtr() : mPtr(nullptr) { } - CComPtr(T* const & aPtr) : mPtr(nullptr) { Set(aPtr); } - CComPtr(const std::nullptr_t& aNullPtr) : mPtr(aNullPtr) { } + MOZ_IMPLICIT CComPtr(T* const & aPtr) : mPtr(nullptr) { Set(aPtr); } + MOZ_IMPLICIT CComPtr(const std::nullptr_t& aNullPtr) : mPtr(aNullPtr) { } T** operator&() { return &mPtr; } T* operator->(){ return mPtr; } operator T*() { return mPtr; } @@ -178,7 +178,7 @@ public: { } - AutoPtr(Type* aPtr) + explicit AutoPtr(Type* aPtr) : mPtr(aPtr) { } diff --git a/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp b/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp index da152a1d5989..2a2bdb818b66 100644 --- a/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp +++ b/media/webrtc/trunk/webrtc/modules/video_capture/windows/BaseFilter.cpp @@ -36,13 +36,13 @@ class DECLSPEC_UUID("0e9924bd-1cb8-48ad-ba31-2fb831b162be") { public: - EnumPins(BaseFilter* aFilter) + explicit EnumPins(BaseFilter* aFilter) : mFilter(aFilter) , mRefCnt(0) { Reset(); } - EnumPins(EnumPins* aEnumPins) + explicit EnumPins(EnumPins* aEnumPins) : mFilter(aEnumPins->mFilter) , mNumPins(aEnumPins->mNumPins) , mPinIdx(aEnumPins->mPinIdx) diff --git a/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp b/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp index 55bea7e7b70b..50bf8d72ed07 100644 --- a/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp +++ b/media/webrtc/trunk/webrtc/modules/video_capture/windows/BasePin.cpp @@ -24,14 +24,14 @@ class DECLSPEC_UUID("4de7a03c-6c3f-4314-949a-ee7e1ad05083") { public: - EnumMediaTypes(BasePin* aPin) + explicit EnumMediaTypes(BasePin* aPin) : mPin(aPin) , mIndex(0) , mRefCnt(0) { } - EnumMediaTypes(EnumMediaTypes* aEnum) + explicit EnumMediaTypes(EnumMediaTypes* aEnum) : mPin(aEnum->mPin) , mIndex(aEnum->mIndex) , mRefCnt(0) diff --git a/media/webrtc/trunk/webrtc/modules/video_capture/windows/DShowTools.h b/media/webrtc/trunk/webrtc/modules/video_capture/windows/DShowTools.h index 4bb0a4a17d70..5698fa3c8303 100644 --- a/media/webrtc/trunk/webrtc/modules/video_capture/windows/DShowTools.h +++ b/media/webrtc/trunk/webrtc/modules/video_capture/windows/DShowTools.h @@ -24,7 +24,7 @@ public: * CriticalSection * @param aName A name which can reference this monitor */ - CriticalSection(const char* aName) + explicit CriticalSection(const char* aName) { ::InitializeCriticalSection(&mCriticalSection); } @@ -78,16 +78,16 @@ public: * Constructor * The constructor aquires the given lock. The destructor * releases the lock. - * - * @param aCriticalSection A valid mozilla::CriticalSection*. + * + * @param aCriticalSection A valid mozilla::CriticalSection*. **/ - CriticalSectionAutoEnter(mozilla::CriticalSection &aCriticalSection) : + explicit CriticalSectionAutoEnter(mozilla::CriticalSection &aCriticalSection) : mCriticalSection(&aCriticalSection) { assert(mCriticalSection); mCriticalSection->Enter(); } - + ~CriticalSectionAutoEnter(void) { mCriticalSection->Leave(); diff --git a/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.h b/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.h index 033ce52e36f5..6f4660500ef1 100644 --- a/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.h +++ b/media/webrtc/trunk/webrtc/modules/video_capture/windows/MediaType.h @@ -19,10 +19,10 @@ namespace media { class MediaType : public AM_MEDIA_TYPE { public: - + MediaType(); - MediaType(const AM_MEDIA_TYPE* aMediaType); - MediaType(const MediaType& aMediaType); + explicit MediaType(const AM_MEDIA_TYPE* aMediaType); + explicit MediaType(const MediaType& aMediaType); ~MediaType(); From 4e68f1ffa796a6143e13d8d03237f7719e8c8168 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:57:15 +0800 Subject: [PATCH 62/94] Bug 1322465 part 8 - Use explicit/MOZ_IMPLICIT for the unary constructors in mfbt/. r=Ehsan MozReview-Commit-ID: 2TpfrAaAIuu --HG-- extra : rebase_source : 4fb5af1beb94c059cbadfaf27fe3949ae8b85efb --- build/clang-plugin/tests/TestCustomHeap.cpp | 2 ++ mfbt/Char16.h | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/build/clang-plugin/tests/TestCustomHeap.cpp b/build/clang-plugin/tests/TestCustomHeap.cpp index ec2d51ebaf5a..c1e82f2fa7b5 100644 --- a/build/clang-plugin/tests/TestCustomHeap.cpp +++ b/build/clang-plugin/tests/TestCustomHeap.cpp @@ -1,9 +1,11 @@ #define MOZ_NONHEAP_CLASS __attribute__((annotate("moz_nonheap_class"))) +#ifndef MOZ_HEAP_ALLOCATOR #define MOZ_HEAP_ALLOCATOR \ _Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic ignored \"-Wgcc-compat\"") \ __attribute__((annotate("moz_heap_allocator"))) \ _Pragma("GCC diagnostic pop") +#endif #include #include diff --git a/mfbt/Char16.h b/mfbt/Char16.h index 3c2f254aa9db..3d129332b43a 100644 --- a/mfbt/Char16.h +++ b/mfbt/Char16.h @@ -20,6 +20,7 @@ #ifdef WIN32 # define MOZ_USE_CHAR16_WRAPPER # include +# include "mozilla/Attributes.h" /** * Win32 API extensively uses wchar_t, which is represented by a separated * builtin type than char16_t per spec. It's not the case for MSVC prior to @@ -39,13 +40,13 @@ private: "char16_t and wchar_t sizes differ"); public: - char16ptr_t(const char16_t* aPtr) : mPtr(aPtr) {} - char16ptr_t(const wchar_t* aPtr) : + MOZ_IMPLICIT char16ptr_t(const char16_t* aPtr) : mPtr(aPtr) {} + MOZ_IMPLICIT char16ptr_t(const wchar_t* aPtr) : mPtr(reinterpret_cast(aPtr)) {} /* Without this, nullptr assignment would be ambiguous. */ - constexpr char16ptr_t(decltype(nullptr)) : mPtr(nullptr) {} + constexpr MOZ_IMPLICIT char16ptr_t(decltype(nullptr)) : mPtr(nullptr) {} operator const char16_t*() const { @@ -59,7 +60,7 @@ public: { return mPtr; } - operator bool() const + MOZ_IMPLICIT operator bool() const { return mPtr != nullptr; } From 9b4a42ffedc350d044dd34c05e2278eaba8d72f0 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:57:53 +0800 Subject: [PATCH 63/94] Bug 1322465 part 9 - Use explicit/MOZ_IMPLICIT for the unary constructors in mozglue/. r=Ehsan MozReview-Commit-ID: MHgGyQGRdM --HG-- extra : rebase_source : 9b5cb97c0264a734cd166393a49252db22af4bf1 --- mozglue/misc/TimeStamp_windows.cpp | 2 +- mozglue/misc/TimeStamp_windows.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mozglue/misc/TimeStamp_windows.cpp b/mozglue/misc/TimeStamp_windows.cpp index cd519affda8a..b5e9b4d73379 100644 --- a/mozglue/misc/TimeStamp_windows.cpp +++ b/mozglue/misc/TimeStamp_windows.cpp @@ -20,7 +20,7 @@ class AutoCriticalSection { public: - AutoCriticalSection(LPCRITICAL_SECTION aSection) + explicit AutoCriticalSection(LPCRITICAL_SECTION aSection) : mSection(aSection) { ::EnterCriticalSection(mSection); diff --git a/mozglue/misc/TimeStamp_windows.h b/mozglue/misc/TimeStamp_windows.h index c87d34efcdd0..3853d0627f1c 100644 --- a/mozglue/misc/TimeStamp_windows.h +++ b/mozglue/misc/TimeStamp_windows.h @@ -30,7 +30,7 @@ class TimeStampValue MFBT_API uint64_t CheckQPC(const TimeStampValue& aOther) const; struct _SomethingVeryRandomHere; - constexpr TimeStampValue(_SomethingVeryRandomHere* aNullValue) + constexpr MOZ_IMPLICIT TimeStampValue(_SomethingVeryRandomHere* aNullValue) : mGTC(0) , mQPC(0) , mHasQPC(false) From cce30331e35bd23acb26d9cc2632470dafee192d Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:58:31 +0800 Subject: [PATCH 64/94] Bug 1322465 part 10 - Use explicit/MOZ_IMPLICIT for the unary constructors in netwerk/. r=Ehsan MozReview-Commit-ID: DjcK1xPJKEF --HG-- extra : rebase_source : fb1257a27fe91bc2fd1d17363fa5551f00c2ceda --- netwerk/wifi/win_wifiScanner.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/netwerk/wifi/win_wifiScanner.cpp b/netwerk/wifi/win_wifiScanner.cpp index a462b9696951..08c97ead7748 100644 --- a/netwerk/wifi/win_wifiScanner.cpp +++ b/netwerk/wifi/win_wifiScanner.cpp @@ -12,7 +12,7 @@ class InterfaceScanCallbackData { public: - InterfaceScanCallbackData(uint32_t numInterfaces) + explicit InterfaceScanCallbackData(uint32_t numInterfaces) : mCurrentlyScanningInterfaces(numInterfaces) { mAllInterfacesDoneScanningEvent = From 10ea845c916a9997d91a05c7557e53986558a8c1 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:59:00 +0800 Subject: [PATCH 65/94] Bug 1322465 part 11 - Use explicit/MOZ_IMPLICIT for the unary constructors in toolkit/. r=Ehsan MozReview-Commit-ID: 7zdrF739NCL --HG-- extra : rebase_source : 32d68c15e32c7d1046928d6782b6853cd56edd9a --- toolkit/components/downloads/nsDownloadScanner.cpp | 2 +- toolkit/components/filewatcher/NativeFileWatcherWin.cpp | 2 +- toolkit/crashreporter/InjectCrashReporter.h | 4 ++-- toolkit/xre/nsNativeAppSupportWin.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/toolkit/components/downloads/nsDownloadScanner.cpp b/toolkit/components/downloads/nsDownloadScanner.cpp index 2ffac1c7cebd..ce4f8febbe74 100644 --- a/toolkit/components/downloads/nsDownloadScanner.cpp +++ b/toolkit/components/downloads/nsDownloadScanner.cpp @@ -291,7 +291,7 @@ nsDownloadScanner::ScannerThreadFunction(void *p) // the main thread too class ReleaseDispatcher : public mozilla::Runnable { public: - ReleaseDispatcher(nsISupports *ptr) + explicit ReleaseDispatcher(nsISupports *ptr) : mPtr(ptr) {} NS_IMETHOD Run(); private: diff --git a/toolkit/components/filewatcher/NativeFileWatcherWin.cpp b/toolkit/components/filewatcher/NativeFileWatcherWin.cpp index 3ff69728a9e0..8bb40bfd4d89 100644 --- a/toolkit/components/filewatcher/NativeFileWatcherWin.cpp +++ b/toolkit/components/filewatcher/NativeFileWatcherWin.cpp @@ -258,7 +258,7 @@ private: class NativeFileWatcherIOTask : public Runnable { public: - NativeFileWatcherIOTask(HANDLE aIOCompletionPort) + explicit NativeFileWatcherIOTask(HANDLE aIOCompletionPort) : mIOCompletionPort(aIOCompletionPort) , mShuttingDown(false) { diff --git a/toolkit/crashreporter/InjectCrashReporter.h b/toolkit/crashreporter/InjectCrashReporter.h index 5b40b49e321c..b56fcf722fe4 100644 --- a/toolkit/crashreporter/InjectCrashReporter.h +++ b/toolkit/crashreporter/InjectCrashReporter.h @@ -14,7 +14,7 @@ namespace mozilla { class InjectCrashRunnable : public Runnable { public: - InjectCrashRunnable(DWORD pid); + explicit InjectCrashRunnable(DWORD pid); NS_IMETHOD Run(); @@ -22,7 +22,7 @@ private: DWORD mPID; nsString mInjectorPath; }; - + } // Namespace mozilla #endif diff --git a/toolkit/xre/nsNativeAppSupportWin.cpp b/toolkit/xre/nsNativeAppSupportWin.cpp index a92e7e4bec15..f0ba3f4dc332 100644 --- a/toolkit/xre/nsNativeAppSupportWin.cpp +++ b/toolkit/xre/nsNativeAppSupportWin.cpp @@ -95,7 +95,7 @@ activateWindow( mozIDOMWindowProxy *win ) { // Simple Win32 mutex wrapper. struct Win32Mutex { - Win32Mutex( const char16_t *name ) + explicit Win32Mutex( const char16_t *name ) : mName( name ), mHandle( 0 ), mState( -1 ) { From 8a91298c2f22f6f17ecd94e26eea2d266675788c Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 16:36:44 +0800 Subject: [PATCH 66/94] Bug 1322465 part 12 - Use explicit/MOZ_IMPLICIT for the unary constructors in tools/. r=Ehsan MozReview-Commit-ID: 5fp6E1T7HrW --HG-- extra : rebase_source : 0fda130fa69d6c0a7e7f3d1838a22c4b5f6459b0 --- tools/profiler/core/platform-win32.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/profiler/core/platform-win32.cc b/tools/profiler/core/platform-win32.cc index b1fe048ad3f5..3270460f1ada 100644 --- a/tools/profiler/core/platform-win32.cc +++ b/tools/profiler/core/platform-win32.cc @@ -49,7 +49,8 @@ class PlatformData { // going to use it in the sampler thread. Using GetThreadHandle() will // not work in this case. We're using OpenThread because DuplicateHandle // for some reason doesn't work in Chrome's sandbox. - PlatformData(int aThreadId) : profiled_thread_(OpenThread(THREAD_GET_CONTEXT | + explicit PlatformData(int aThreadId) : profiled_thread_(OpenThread( + THREAD_GET_CONTEXT | THREAD_SUSPEND_RESUME | THREAD_QUERY_INFORMATION, false, From 561a80e1cd1850c4ec2f4de4c34e9ed4a67f568a Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 15:59:25 +0800 Subject: [PATCH 67/94] Bug 1322465 part 13 - Use explicit/MOZ_IMPLICIT for the unary constructors in uriloader/. r=Ehsan MozReview-Commit-ID: HYBIvXjgKa0 --HG-- extra : rebase_source : 50e0d425691c4dd8d88415e674a2d919891b455f --- uriloader/exthandler/win/nsMIMEInfoWin.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/uriloader/exthandler/win/nsMIMEInfoWin.h b/uriloader/exthandler/win/nsMIMEInfoWin.h index 0a5b678e8adf..7a9e69479653 100644 --- a/uriloader/exthandler/win/nsMIMEInfoWin.h +++ b/uriloader/exthandler/win/nsMIMEInfoWin.h @@ -14,14 +14,14 @@ class nsMIMEInfoWin : public nsMIMEInfoBase, public nsIPropertyBag { virtual ~nsMIMEInfoWin(); public: - nsMIMEInfoWin(const char* aType = "") : nsMIMEInfoBase(aType) {} - nsMIMEInfoWin(const nsACString& aMIMEType) : nsMIMEInfoBase(aMIMEType) {} + explicit nsMIMEInfoWin(const char* aType = "") : nsMIMEInfoBase(aType) {} + explicit nsMIMEInfoWin(const nsACString& aMIMEType) : nsMIMEInfoBase(aMIMEType) {} nsMIMEInfoWin(const nsACString& aType, HandlerClass aClass) : nsMIMEInfoBase(aType, aClass) {} NS_IMETHOD LaunchWithFile(nsIFile* aFile); NS_IMETHOD GetHasDefaultHandler(bool * _retval); - NS_IMETHOD GetPossibleLocalHandlers(nsIArray **_retval); + NS_IMETHOD GetPossibleLocalHandlers(nsIArray **_retval); NS_DECL_ISUPPORTS_INHERITED NS_DECL_NSIPROPERTYBAG From 9e66f3af060f34c2cf20332d6ffef5eca4c97944 Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 16:00:43 +0800 Subject: [PATCH 68/94] Bug 1322465 part 14 - Use explicit/MOZ_IMPLICIT for the unary constructors in widget/. r=Ehsan MozReview-Commit-ID: JOrzksTzwVT --HG-- extra : rebase_source : a7e92ef309025f6243fc8dba5cf30dfda591b181 --- widget/windows/CompositorWidgetParent.h | 2 +- widget/windows/IEnumFE.h | 2 +- widget/windows/IMMHandler.cpp | 8 ++++---- widget/windows/JumpListItem.h | 2 +- widget/windows/KeyboardLayout.cpp | 2 +- widget/windows/TSFTextStore.cpp | 6 +++--- widget/windows/TSFTextStore.h | 4 ++-- widget/windows/WinModifierKeyState.h | 2 +- widget/windows/WinTaskbar.cpp | 2 +- widget/windows/WinUtils.h | 4 ++-- widget/windows/WindowHook.h | 2 +- widget/windows/nsDataObj.h | 2 +- widget/windows/nsImageClipboard.h | 2 +- widget/windows/nsNativeDragSource.h | 2 +- widget/windows/nsNativeDragTarget.h | 2 +- widget/windows/nsScreenWin.h | 2 +- widget/windows/nsSound.cpp | 2 +- widget/windows/nsWindow.cpp | 2 +- widget/windows/nsWindowDefs.h | 2 +- 19 files changed, 26 insertions(+), 26 deletions(-) diff --git a/widget/windows/CompositorWidgetParent.h b/widget/windows/CompositorWidgetParent.h index 6fc13a3499ef..86aa38f1d30f 100644 --- a/widget/windows/CompositorWidgetParent.h +++ b/widget/windows/CompositorWidgetParent.h @@ -17,7 +17,7 @@ class CompositorWidgetParent final public WinCompositorWidget { public: - CompositorWidgetParent(const CompositorWidgetInitData& aInitData); + explicit CompositorWidgetParent(const CompositorWidgetInitData& aInitData); ~CompositorWidgetParent() override; mozilla::ipc::IPCResult RecvEnterPresentLock() override; diff --git a/widget/windows/IEnumFE.h b/widget/windows/IEnumFE.h index d3875865a909..fe5c785cb9e2 100644 --- a/widget/windows/IEnumFE.h +++ b/widget/windows/IEnumFE.h @@ -60,7 +60,7 @@ private: class CEnumFormatEtc final : public IEnumFORMATETC { public: - CEnumFormatEtc(nsTArray& aArray); + explicit CEnumFormatEtc(nsTArray& aArray); CEnumFormatEtc(); ~CEnumFormatEtc(); diff --git a/widget/windows/IMMHandler.cpp b/widget/windows/IMMHandler.cpp index c98115cc3651..7a6e60b1c40c 100644 --- a/widget/windows/IMMHandler.cpp +++ b/widget/windows/IMMHandler.cpp @@ -54,7 +54,7 @@ HandleSeparator(nsACString& aDesc) class GetIMEGeneralPropertyName : public nsAutoCString { public: - GetIMEGeneralPropertyName(DWORD aFlags) + explicit GetIMEGeneralPropertyName(DWORD aFlags) { if (!aFlags) { AppendLiteral("no flags"); @@ -90,7 +90,7 @@ public: class GetIMEUIPropertyName : public nsAutoCString { public: - GetIMEUIPropertyName(DWORD aFlags) + explicit GetIMEUIPropertyName(DWORD aFlags) { if (!aFlags) { AppendLiteral("no flags"); @@ -114,7 +114,7 @@ public: class GetWritingModeName : public nsAutoCString { public: - GetWritingModeName(const WritingMode& aWritingMode) + explicit GetWritingModeName(const WritingMode& aWritingMode) { if (!aWritingMode.IsVertical()) { Assign("Horizontal"); @@ -132,7 +132,7 @@ public: class GetReconvertStringLog : public nsAutoCString { public: - GetReconvertStringLog(RECONVERTSTRING* aReconv) + explicit GetReconvertStringLog(RECONVERTSTRING* aReconv) { AssignLiteral("{ dwSize="); AppendInt(static_cast(aReconv->dwSize)); diff --git a/widget/windows/JumpListItem.h b/widget/windows/JumpListItem.h index 6d195c8eac76..0575ba658287 100644 --- a/widget/windows/JumpListItem.h +++ b/widget/windows/JumpListItem.h @@ -33,7 +33,7 @@ public: mItemType(nsIJumpListItem::JUMPLIST_ITEM_EMPTY) {} - JumpListItemBase(int32_t type) : + explicit JumpListItemBase(int32_t type) : mItemType(type) {} diff --git a/widget/windows/KeyboardLayout.cpp b/widget/windows/KeyboardLayout.cpp index 2e59e528cece..bc16530a77a6 100644 --- a/widget/windows/KeyboardLayout.cpp +++ b/widget/windows/KeyboardLayout.cpp @@ -503,7 +503,7 @@ GetAppCommandDeviceName(LPARAM aDevice) class MOZ_STACK_CLASS GetAppCommandKeysName final : public nsAutoCString { public: - GetAppCommandKeysName(WPARAM aKeys) + explicit GetAppCommandKeysName(WPARAM aKeys) { if (aKeys & MK_CONTROL) { AppendLiteral("MK_CONTROL"); diff --git a/widget/windows/TSFTextStore.cpp b/widget/windows/TSFTextStore.cpp index ebcfea9d8170..fd843c9b400e 100644 --- a/widget/windows/TSFTextStore.cpp +++ b/widget/windows/TSFTextStore.cpp @@ -104,7 +104,7 @@ GetFindFlagName(DWORD aFindFlag) class GetACPFromPointFlagName : public nsAutoCString { public: - GetACPFromPointFlagName(DWORD aFlags) + explicit GetACPFromPointFlagName(DWORD aFlags) { if (!aFlags) { AppendLiteral("no flags (0)"); @@ -648,7 +648,7 @@ GetModifiersName(Modifiers aModifiers) class GetWritingModeName : public nsAutoCString { public: - GetWritingModeName(const WritingMode& aWritingMode) + explicit GetWritingModeName(const WritingMode& aWritingMode) { if (!aWritingMode.IsVertical()) { AssignLiteral("Horizontal"); @@ -700,7 +700,7 @@ class InputScopeImpl final : public ITfInputScope ~InputScopeImpl() {} public: - InputScopeImpl(const nsTArray& aList) + explicit InputScopeImpl(const nsTArray& aList) : mInputScopes(aList) { MOZ_LOG(sTextStoreLog, LogLevel::Info, diff --git a/widget/windows/TSFTextStore.h b/widget/windows/TSFTextStore.h index a146fec49210..5a83abbc8f93 100644 --- a/widget/windows/TSFTextStore.h +++ b/widget/windows/TSFTextStore.h @@ -596,7 +596,7 @@ protected: class MOZ_STACK_CLASS AutoSetTemporarySelection final { public: - AutoSetTemporarySelection(Selection& aSelection) + explicit AutoSetTemporarySelection(Selection& aSelection) : mSelection(aSelection) { mDirty = mSelection.IsDirty(); @@ -712,7 +712,7 @@ protected: class MOZ_STACK_CLASS AutoPendingActionAndContentFlusher final { public: - AutoPendingActionAndContentFlusher(TSFTextStore* aTextStore) + explicit AutoPendingActionAndContentFlusher(TSFTextStore* aTextStore) : mTextStore(aTextStore) { MOZ_ASSERT(!mTextStore->mIsRecordingActionsWithoutLock); diff --git a/widget/windows/WinModifierKeyState.h b/widget/windows/WinModifierKeyState.h index f2c1704b966a..9127eaac3b6f 100644 --- a/widget/windows/WinModifierKeyState.h +++ b/widget/windows/WinModifierKeyState.h @@ -20,7 +20,7 @@ class MOZ_STACK_CLASS ModifierKeyState final public: ModifierKeyState(); ModifierKeyState(bool aIsShiftDown, bool aIsControlDown, bool aIsAltDown); - ModifierKeyState(Modifiers aModifiers); + explicit ModifierKeyState(Modifiers aModifiers); void Update(); diff --git a/widget/windows/WinTaskbar.cpp b/widget/windows/WinTaskbar.cpp index 698b7ec0e5c9..47bef06873b4 100644 --- a/widget/windows/WinTaskbar.cpp +++ b/widget/windows/WinTaskbar.cpp @@ -125,7 +125,7 @@ class DefaultController final : public nsITaskbarPreviewController ~DefaultController() {} HWND mWnd; public: - DefaultController(HWND hWnd) + explicit DefaultController(HWND hWnd) : mWnd(hWnd) { } diff --git a/widget/windows/WinUtils.h b/widget/windows/WinUtils.h index 69d73528cb7f..b35c0c1c808e 100644 --- a/widget/windows/WinUtils.h +++ b/widget/windows/WinUtils.h @@ -592,7 +592,7 @@ public: NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSIRUNNABLE - AsyncDeleteIconFromDisk(const nsAString &aIconPath); + explicit AsyncDeleteIconFromDisk(const nsAString &aIconPath); private: virtual ~AsyncDeleteIconFromDisk(); @@ -606,7 +606,7 @@ public: NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSIRUNNABLE - AsyncDeleteAllFaviconsFromDisk(bool aIgnoreRecent = false); + explicit AsyncDeleteAllFaviconsFromDisk(bool aIgnoreRecent = false); private: virtual ~AsyncDeleteAllFaviconsFromDisk(); diff --git a/widget/windows/WindowHook.h b/widget/windows/WindowHook.h index 69df4eb2feb0..ba402bc34bbb 100644 --- a/widget/windows/WindowHook.h +++ b/widget/windows/WindowHook.h @@ -49,7 +49,7 @@ private: bool operator!= (const CallbackData &rhs) const { return !(*this == rhs); } - operator bool () const { + explicit operator bool () const { return !!cb; } }; diff --git a/widget/windows/nsDataObj.h b/widget/windows/nsDataObj.h index 5d0c141b31c7..0b12e83cb8d9 100644 --- a/widget/windows/nsDataObj.h +++ b/widget/windows/nsDataObj.h @@ -93,7 +93,7 @@ protected: nsCOMPtr mIOThread; public: // construction, destruction - nsDataObj(nsIURI *uri = nullptr); + explicit nsDataObj(nsIURI *uri = nullptr); virtual ~nsDataObj(); public: // IUnknown methods - see iunknown.h for documentation diff --git a/widget/windows/nsImageClipboard.h b/widget/windows/nsImageClipboard.h index 25b33cc56c0c..d7ffb19d8ad2 100644 --- a/widget/windows/nsImageClipboard.h +++ b/widget/windows/nsImageClipboard.h @@ -30,7 +30,7 @@ Any other render format? HTML? class nsImageToClipboard { public: - nsImageToClipboard(imgIContainer* aInImage, bool aWantDIBV5 = true); + explicit nsImageToClipboard(imgIContainer* aInImage, bool aWantDIBV5 = true); ~nsImageToClipboard(); // Call to get the actual bits that go on the clipboard. If |nullptr|, the diff --git a/widget/windows/nsNativeDragSource.h b/widget/windows/nsNativeDragSource.h index 19d1275993e6..9172291fb129 100644 --- a/widget/windows/nsNativeDragSource.h +++ b/widget/windows/nsNativeDragSource.h @@ -24,7 +24,7 @@ public: // construct an nsNativeDragSource referencing adapter // nsNativeDragSource(nsIDragSource * adapter); - nsNativeDragSource(nsIDOMDataTransfer* aDataTransfer); + explicit nsNativeDragSource(nsIDOMDataTransfer* aDataTransfer); ~nsNativeDragSource(); // IUnknown methods - see iunknown.h for documentation diff --git a/widget/windows/nsNativeDragTarget.h b/widget/windows/nsNativeDragTarget.h index fbc28fc92939..4989e44d4d9c 100644 --- a/widget/windows/nsNativeDragTarget.h +++ b/widget/windows/nsNativeDragTarget.h @@ -29,7 +29,7 @@ class nsIWidget; class nsNativeDragTarget final : public IDropTarget { public: - nsNativeDragTarget(nsIWidget * aWidget); + explicit nsNativeDragTarget(nsIWidget * aWidget); ~nsNativeDragTarget(); // IUnknown members - see iunknown.h for documentation diff --git a/widget/windows/nsScreenWin.h b/widget/windows/nsScreenWin.h index 0560c5534284..55e6aa5e1d39 100644 --- a/widget/windows/nsScreenWin.h +++ b/widget/windows/nsScreenWin.h @@ -14,7 +14,7 @@ class nsScreenWin final : public nsBaseScreen { public: - nsScreenWin ( HMONITOR inScreen ); + explicit nsScreenWin ( HMONITOR inScreen ); ~nsScreenWin(); NS_IMETHOD GetId(uint32_t* aId); diff --git a/widget/windows/nsSound.cpp b/widget/windows/nsSound.cpp index a7e3f8e7cabb..5635f8356b9d 100644 --- a/widget/windows/nsSound.cpp +++ b/widget/windows/nsSound.cpp @@ -62,7 +62,7 @@ protected: class SoundReleaser: public mozilla::Runnable { public: - SoundReleaser(nsSound* aSound) : + explicit SoundReleaser(nsSound* aSound) : mSound(aSound) { } diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index 8dbfe81b0e8f..86a2f59f8ea6 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -283,7 +283,7 @@ namespace mozilla { class CurrentWindowsTimeGetter { public: - CurrentWindowsTimeGetter(HWND aWnd) + explicit CurrentWindowsTimeGetter(HWND aWnd) : mWnd(aWnd) { } diff --git a/widget/windows/nsWindowDefs.h b/widget/windows/nsWindowDefs.h index 48a9356d28de..286c066017f8 100644 --- a/widget/windows/nsWindowDefs.h +++ b/widget/windows/nsWindowDefs.h @@ -117,7 +117,7 @@ struct MSGResult // If mConsumed is true, the caller shouldn't call next wndproc. bool mConsumed; - MSGResult(LRESULT* aResult = nullptr) : + explicit MSGResult(LRESULT* aResult = nullptr) : mResult(aResult ? *aResult : mDefaultResult), mConsumed(false) { } From 5f4802bf0b260e7edbe0268a8499e5532e42fd6d Mon Sep 17 00:00:00 2001 From: Ting-Yu Chou Date: Fri, 16 Dec 2016 16:01:11 +0800 Subject: [PATCH 69/94] Bug 1322465 part 15 - Use explicit/MOZ_IMPLICIT for the unary constructors in xpcom/. r=bobowen,Ehsan MozReview-Commit-ID: JtmtNbPwNOg --HG-- extra : rebase_source : f877b0504c7106a0874b23b8cfc0eab12d610767 --- xpcom/base/nsWindowsHelpers.h | 8 ++++---- xpcom/glue/nsVersionComparator.h | 2 +- xpcom/tests/windows/TestNtPathToDosPath.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xpcom/base/nsWindowsHelpers.h b/xpcom/base/nsWindowsHelpers.h index 66505b3458af..9cd75bdcf449 100644 --- a/xpcom/base/nsWindowsHelpers.h +++ b/xpcom/base/nsWindowsHelpers.h @@ -19,7 +19,7 @@ class AutoCriticalSection { public: - AutoCriticalSection(LPCRITICAL_SECTION aSection) + explicit AutoCriticalSection(LPCRITICAL_SECTION aSection) : mSection(aSection) { ::EnterCriticalSection(mSection); @@ -150,7 +150,7 @@ protected: { } - nsSimpleRef(RawRef aRawRef) : mRawRef(aRawRef) + explicit nsSimpleRef(RawRef aRawRef) : mRawRef(aRawRef) { } @@ -219,7 +219,7 @@ public: // nsAutoRef work as intention. class nsHGLOBAL { public: - nsHGLOBAL(HGLOBAL hGlobal) : m_hGlobal(hGlobal) + MOZ_IMPLICIT nsHGLOBAL(HGLOBAL hGlobal) : m_hGlobal(hGlobal) { } @@ -255,7 +255,7 @@ public: // another specialization for nsAutoRefTraits. class nsHPRINTER { public: - nsHPRINTER(HANDLE hPrinter) : m_hPrinter(hPrinter) + MOZ_IMPLICIT nsHPRINTER(HANDLE hPrinter) : m_hPrinter(hPrinter) { } diff --git a/xpcom/glue/nsVersionComparator.h b/xpcom/glue/nsVersionComparator.h index 0dbf8532b0b6..dcf77bc40f15 100644 --- a/xpcom/glue/nsVersionComparator.h +++ b/xpcom/glue/nsVersionComparator.h @@ -122,7 +122,7 @@ private: #ifdef XP_WIN struct VersionW { - VersionW(const char16_t* aVersionStringW) + explicit VersionW(const char16_t* aVersionStringW) { versionContentW = reinterpret_cast(wcsdup(char16ptr_t(aVersionStringW))); diff --git a/xpcom/tests/windows/TestNtPathToDosPath.cpp b/xpcom/tests/windows/TestNtPathToDosPath.cpp index b826d4f2045d..eaa5a7a9b6bb 100644 --- a/xpcom/tests/windows/TestNtPathToDosPath.cpp +++ b/xpcom/tests/windows/TestNtPathToDosPath.cpp @@ -16,7 +16,7 @@ class DriveMapping { public: - DriveMapping(const nsAString& aRemoteUNCPath); + explicit DriveMapping(const nsAString& aRemoteUNCPath); ~DriveMapping(); bool From daf2b57f942b04fc192d1d5d488c0f01fc599d48 Mon Sep 17 00:00:00 2001 From: Brian Birtles Date: Thu, 22 Dec 2016 08:47:14 +0900 Subject: [PATCH 70/94] Bug 1316764 - Update animations on layers whenever the frame generation is not equal; r=hiro This fixes a problem where we fail to update animations on layers when an EffectSet is destroyed. In this case when we call RestyleManager::GetAnimationGenerationForFrame in ElementRestyler::AddLayerChangesForAnimation(), it will return zero but the animation generation on the layer will be set to some positive non-zero value. If we compare the two generation numbers using < we will think the layer is up-to-date. Using != fixes this. We only used < while we had independent generation numbers of animations and transitions but that was fixed in bug 1229280. MozReview-Commit-ID: Jsunjc145GR --HG-- extra : rebase_source : 75a6e324bdefeb12d1a8edc31b745b59a50bda61 --- layout/base/RestyleManager.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/layout/base/RestyleManager.cpp b/layout/base/RestyleManager.cpp index c7916e121dd5..cf913d7e5fca 100644 --- a/layout/base/RestyleManager.cpp +++ b/layout/base/RestyleManager.cpp @@ -1530,9 +1530,6 @@ ElementRestyler::ElementRestyler(nsPresContext* aPresContext, void ElementRestyler::AddLayerChangesForAnimation() { - // Bug 847286 - We should have separate animation generation counters - // on layers for transitions and animations and use != comparison below - // rather than a > comparison. uint64_t frameGeneration = RestyleManager::GetAnimationGenerationForFrame(mFrame); @@ -1541,7 +1538,7 @@ ElementRestyler::AddLayerChangesForAnimation() LayerAnimationInfo::sRecords) { Layer* layer = FrameLayerBuilder::GetDedicatedLayer(mFrame, layerInfo.mLayerType); - if (layer && frameGeneration > layer->GetAnimationGeneration()) { + if (layer && frameGeneration != layer->GetAnimationGeneration()) { // If we have a transform layer but don't have any transform style, we // probably just removed the transform but haven't destroyed the layer // yet. In this case we will add the appropriate change hint From 60f87e60ecf71472e7604485eed857b77eadf377 Mon Sep 17 00:00:00 2001 From: karo Date: Wed, 21 Dec 2016 14:49:50 +1300 Subject: [PATCH 71/94] Bug 1321076 - Updated VPXDecoder to decode alpha frames. r=jya VPXDecoder initializes a second context when alpha is encountered. MozReview-Commit-ID: FMzHFvP8YK0 --HG-- extra : rebase_source : a287670aa62949e8811f678810eb3ac5e3acdbe3 --- dom/media/platforms/agnostic/VPXDecoder.cpp | 107 +++++++++++++++----- dom/media/platforms/agnostic/VPXDecoder.h | 5 + 2 files changed, 89 insertions(+), 23 deletions(-) diff --git a/dom/media/platforms/agnostic/VPXDecoder.cpp b/dom/media/platforms/agnostic/VPXDecoder.cpp index 77c81b51b357..8d62c81ab9e4 100644 --- a/dom/media/platforms/agnostic/VPXDecoder.cpp +++ b/dom/media/platforms/agnostic/VPXDecoder.cpp @@ -34,6 +34,38 @@ static int MimeTypeToCodec(const nsACString& aMimeType) return -1; } +static nsresult +InitContext(vpx_codec_ctx_t* aCtx, + const VideoInfo& aInfo, + const int aCodec) +{ + int decode_threads = 2; + + vpx_codec_iface_t* dx = nullptr; + if (aCodec == VPXDecoder::Codec::VP8) { + dx = vpx_codec_vp8_dx(); + } + else if (aCodec == VPXDecoder::Codec::VP9) { + dx = vpx_codec_vp9_dx(); + if (aInfo.mDisplay.width >= 2048) { + decode_threads = 8; + } + else if (aInfo.mDisplay.width >= 1024) { + decode_threads = 4; + } + } + decode_threads = std::min(decode_threads, PR_GetNumberOfProcessors()); + + vpx_codec_dec_cfg_t config; + config.threads = decode_threads; + config.w = config.h = 0; // set after decode + + if (!dx || vpx_codec_dec_init(aCtx, dx, &config, 0)) { + return NS_ERROR_FAILURE; + } + return NS_OK; +} + VPXDecoder::VPXDecoder(const CreateDecoderParams& aParams) : mImageContainer(aParams.mImageContainer) , mTaskQueue(aParams.mTaskQueue) @@ -44,6 +76,7 @@ VPXDecoder::VPXDecoder(const CreateDecoderParams& aParams) { MOZ_COUNT_CTOR(VPXDecoder); PodZero(&mVPX); + PodZero(&mVPXAlpha); } VPXDecoder::~VPXDecoder() @@ -60,29 +93,18 @@ VPXDecoder::Shutdown() RefPtr VPXDecoder::Init() { - int decode_threads = 2; - - vpx_codec_iface_t* dx = nullptr; - if (mCodec == Codec::VP8) { - dx = vpx_codec_vp8_dx(); - } else if (mCodec == Codec::VP9) { - dx = vpx_codec_vp9_dx(); - if (mInfo.mDisplay.width >= 2048) { - decode_threads = 8; - } else if (mInfo.mDisplay.width >= 1024) { - decode_threads = 4; + if (NS_FAILED(InitContext(&mVPX, mInfo, mCodec))) { + return VPXDecoder::InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, + __func__); + } + if (mInfo.HasAlpha()) { + if (NS_FAILED(InitContext(&mVPXAlpha, mInfo, mCodec))) { + return VPXDecoder::InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, + __func__); } } - decode_threads = std::min(decode_threads, PR_GetNumberOfProcessors()); - - vpx_codec_dec_cfg_t config; - config.threads = decode_threads; - config.w = config.h = 0; // set after decode - - if (!dx || vpx_codec_dec_init(&mVPX, dx, &config, 0)) { - return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__); - } - return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__); + return VPXDecoder::InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, + __func__); } void @@ -121,14 +143,27 @@ VPXDecoder::DoDecode(MediaRawData* aSample) RESULT_DETAIL("VPX error: %s", vpx_codec_err_to_string(r))); } - vpx_codec_iter_t iter = nullptr; - vpx_image_t *img; + vpx_codec_iter_t iter = nullptr; + vpx_image_t *img; + vpx_image_t *img_alpha = nullptr; + bool alpha_decoded = false; while ((img = vpx_codec_get_frame(&mVPX, &iter))) { NS_ASSERTION(img->fmt == VPX_IMG_FMT_I420 || img->fmt == VPX_IMG_FMT_I444, "WebM image format not I420 or I444"); + NS_ASSERTION(!alpha_decoded, + "Multiple frames per packet that contains alpha"); + if (aSample->AlphaSize() > 0) { + if(!alpha_decoded){ + MediaResult rv = DecodeAlpha(&img_alpha, aSample); + if (NS_FAILED(rv)) { + return(rv); + } + alpha_decoded = true; + } + } // Chroma shifts are rounded down as per the decoding examples in the SDK VideoData::YCbCrBuffer b; b.mPlanes[0].mData = img->planes[0]; @@ -223,6 +258,32 @@ VPXDecoder::Drain() mTaskQueue->Dispatch(NewRunnableMethod(this, &VPXDecoder::ProcessDrain)); } +MediaResult +VPXDecoder::DecodeAlpha(vpx_image_t** aImgAlpha, + MediaRawData* aSample) +{ + vpx_codec_err_t r = vpx_codec_decode(&mVPXAlpha, + aSample->AlphaData(), + aSample->AlphaSize(), + nullptr, + 0); + if (r) { + LOG("VPX decode alpha error: %s", vpx_codec_err_to_string(r)); + return MediaResult( + NS_ERROR_DOM_MEDIA_DECODE_ERR, + RESULT_DETAIL("VPX decode alpha error: %s", vpx_codec_err_to_string(r))); + } + + vpx_codec_iter_t iter = nullptr; + + *aImgAlpha = vpx_codec_get_frame(&mVPXAlpha, &iter); + NS_ASSERTION((*aImgAlpha)->fmt == VPX_IMG_FMT_I420 || + (*aImgAlpha)->fmt == VPX_IMG_FMT_I444, + "WebM image format not I420 or I444"); + + return NS_OK; +} + /* static */ bool VPXDecoder::IsVPX(const nsACString& aMimeType, uint8_t aCodecMask) diff --git a/dom/media/platforms/agnostic/VPXDecoder.h b/dom/media/platforms/agnostic/VPXDecoder.h index d420ec069b77..b76d0d21fc7f 100644 --- a/dom/media/platforms/agnostic/VPXDecoder.h +++ b/dom/media/platforms/agnostic/VPXDecoder.h @@ -50,6 +50,8 @@ private: void ProcessDecode(MediaRawData* aSample); MediaResult DoDecode(MediaRawData* aSample); void ProcessDrain(); + MediaResult DecodeAlpha(vpx_image_t** aImgAlpha, + MediaRawData* aSample); const RefPtr mImageContainer; const RefPtr mTaskQueue; @@ -59,6 +61,9 @@ private: // VPx decoder state vpx_codec_ctx_t mVPX; + // VPx alpha decoder state + vpx_codec_ctx_t mVPXAlpha; + const VideoInfo& mInfo; const int mCodec; From a91edd5c7a0a725eb379b19ddfad0123c16f87c2 Mon Sep 17 00:00:00 2001 From: karo Date: Wed, 21 Dec 2016 15:00:17 +1300 Subject: [PATCH 72/94] Bug 1321076 - PDMFactory defaults to using VPXDecoder when alpha is present. r=jya FFmpegDecoderModule and AndroidDecoderModule returns nullptr if alpha is present, then PDMFactory rolls over to using VPXDecoder. MozReview-Commit-ID: H2JaolEfJgR --HG-- extra : rebase_source : a2b4bad848c6350041c2cff805803fb5728342d2 --- dom/media/platforms/android/AndroidDecoderModule.cpp | 7 +++++++ dom/media/platforms/ffmpeg/FFmpegDecoderModule.h | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/dom/media/platforms/android/AndroidDecoderModule.cpp b/dom/media/platforms/android/AndroidDecoderModule.cpp index 01759ac303fd..9904686083a2 100644 --- a/dom/media/platforms/android/AndroidDecoderModule.cpp +++ b/dom/media/platforms/android/AndroidDecoderModule.cpp @@ -174,6 +174,13 @@ AndroidDecoderModule::SupportsMimeType(const nsACString& aMimeType, already_AddRefed AndroidDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams) { + // Temporary - forces use of VPXDecoder when alpha is present. + // Bug 1263836 will handle alpha scenario once implemented. It will shift + // the check for alpha to PDMFactory but not itself remove the need for a + // check. + if (aParams.VideoConfig().HasAlpha()) { + return nullptr; + } MediaFormat::LocalRef format; const VideoInfo& config = aParams.VideoConfig(); diff --git a/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h b/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h index 969ac7e0be23..4fc8ca72df81 100644 --- a/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h +++ b/dom/media/platforms/ffmpeg/FFmpegDecoderModule.h @@ -33,6 +33,13 @@ public: already_AddRefed CreateVideoDecoder(const CreateDecoderParams& aParams) override { + // Temporary - forces use of VPXDecoder when alpha is present. + // Bug 1263836 will handle alpha scenario once implemented. It will shift + // the check for alpha to PDMFactory but not itself remove the need for a + // check. + if (aParams.VideoConfig().HasAlpha()) { + return nullptr; + } RefPtr decoder = new FFmpegVideoDecoder(mLib, aParams.mTaskQueue, From 00b888683912e92cadef8e1428067d5a9c558e71 Mon Sep 17 00:00:00 2001 From: karo Date: Wed, 21 Dec 2016 15:00:46 +1300 Subject: [PATCH 73/94] Bug 1321076 - Added util functions to help with YUVA to BGRA conversion. r=jya MozReview-Commit-ID: JZDdbM2gt0g --HG-- extra : rebase_source : 572dbf59e8a3b41e6c7366d1579a28e365062260 --- dom/media/MediaData.cpp | 2 ++ gfx/ycbcr/YCbCrUtils.cpp | 21 +++++++++++++++++++++ gfx/ycbcr/YCbCrUtils.h | 16 +++++++++++++--- gfx/ycbcr/yuv_convert.cpp | 21 +++++++++++++++++++++ gfx/ycbcr/yuv_convert.h | 13 ++++++++++++- 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/dom/media/MediaData.cpp b/dom/media/MediaData.cpp index eae9981530b7..33eee810d954 100644 --- a/dom/media/MediaData.cpp +++ b/dom/media/MediaData.cpp @@ -8,6 +8,8 @@ #include "MediaInfo.h" #include "VideoUtils.h" #include "ImageContainer.h" +#include "mozilla/layers/SharedRGBImage.h" +#include "YCbCrUtils.h" #ifdef MOZ_WIDGET_GONK #include diff --git a/gfx/ycbcr/YCbCrUtils.cpp b/gfx/ycbcr/YCbCrUtils.cpp index 8821978574c8..4a570d68414b 100644 --- a/gfx/ycbcr/YCbCrUtils.cpp +++ b/gfx/ycbcr/YCbCrUtils.cpp @@ -153,5 +153,26 @@ ConvertYCbCrToRGB(const layers::PlanarYCbCrData& aData, } } +void +ConvertYCbCrAToARGB(const uint8_t* aSrcY, + const uint8_t* aSrcU, + const uint8_t* aSrcV, + const uint8_t* aSrcA, + int aSrcStrideYA, int aSrcStrideUV, + uint8_t* aDstARGB, int aDstStrideARGB, + int aWidth, int aHeight) { + + ConvertYCbCrAToARGB32(aSrcY, + aSrcU, + aSrcV, + aSrcA, + aDstARGB, + aWidth, + aHeight, + aSrcStrideYA, + aSrcStrideUV, + aDstStrideARGB); +} + } // namespace gfx } // namespace mozilla diff --git a/gfx/ycbcr/YCbCrUtils.h b/gfx/ycbcr/YCbCrUtils.h index 1cd2e1c4fd77..98db5f06c5a1 100644 --- a/gfx/ycbcr/YCbCrUtils.h +++ b/gfx/ycbcr/YCbCrUtils.h @@ -3,8 +3,8 @@ * 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 MOZILLA_GFX_UTILS_H_ -#define MOZILLA_GFX_UTILS_H_ +#ifndef Y_CB_CR_UTILS_H_ +#define Y_CB_CR_UTILS_H_ #include "mozilla/gfx/Types.h" #include "ImageContainer.h" @@ -24,7 +24,17 @@ ConvertYCbCrToRGB(const layers::PlanarYCbCrData& aData, unsigned char* aDestBuffer, int32_t aStride); +// Currently this function only has support for I420 type. +void +ConvertYCbCrAToARGB(const uint8_t* aSrcY, + const uint8_t* aSrcU, + const uint8_t* aSrcV, + const uint8_t* aSrcA, + int aSrcStrideYA, int aSrcStrideUV, + uint8_t* aDstARGB, int aDstStrideARGB, + int aWidth, int aHeight); + } // namespace gfx } // namespace mozilla -#endif /* MOZILLA_GFX_UTILS_H_ */ +#endif /* Y_CB_CR_UTILS_H_ */ diff --git a/gfx/ycbcr/yuv_convert.cpp b/gfx/ycbcr/yuv_convert.cpp index 78fd4ee89a3b..59a1b5084e81 100644 --- a/gfx/ycbcr/yuv_convert.cpp +++ b/gfx/ycbcr/yuv_convert.cpp @@ -505,6 +505,27 @@ void ScaleYCbCrToRGB32_deprecated(const uint8* y_buf, if (has_mmx) EMMS(); } +void ConvertYCbCrAToARGB32(const uint8* y_buf, + const uint8* u_buf, + const uint8* v_buf, + const uint8* a_buf, + uint8* argb_buf, + int pic_width, + int pic_height, + int ya_pitch, + int uv_pitch, + int argb_pitch) { + + // The downstream graphics stack expects an attenuated input, hence why the + // attenuation parameter is set. + DebugOnly err = libyuv::I420AlphaToARGB(y_buf, ya_pitch, + u_buf, uv_pitch, + v_buf, uv_pitch, + a_buf, ya_pitch, + argb_buf, argb_pitch, + pic_width, pic_height, 1); + MOZ_ASSERT(!err); +} } // namespace gfx } // namespace mozilla diff --git a/gfx/ycbcr/yuv_convert.h b/gfx/ycbcr/yuv_convert.h index 266a23d4565a..22217b8774e3 100644 --- a/gfx/ycbcr/yuv_convert.h +++ b/gfx/ycbcr/yuv_convert.h @@ -104,7 +104,18 @@ void ScaleYCbCrToRGB32_deprecated(const uint8* yplane, Rotate view_rotate, ScaleFilter filter); +void ConvertYCbCrAToARGB32(const uint8* yplane, + const uint8* uplane, + const uint8* vplane, + const uint8* aplane, + uint8* argbframe, + int pic_width, + int pic_height, + int yastride, + int uvstride, + int argbstride); + } // namespace gfx } // namespace mozilla - + #endif // MEDIA_BASE_YUV_CONVERT_H_ From 1da7e759db51cbaa321285b7af05fdfa282b7308 Mon Sep 17 00:00:00 2001 From: karo Date: Wed, 21 Dec 2016 15:19:46 +1300 Subject: [PATCH 74/94] Bug 1321076 - New overloaded CreateAndCopy method that takes alpha plane and returns VideoData with SharedRGBImage, in the case of alpha. r=jya MozReview-Commit-ID: AIJxPRjGvrg --HG-- extra : rebase_source : fcde786d529f69ba6fe2a533e351a8b33afa1de7 --- dom/media/MediaData.cpp | 138 +++++++++++++++++++++++++++++++--------- dom/media/MediaData.h | 11 ++++ 2 files changed, 119 insertions(+), 30 deletions(-) diff --git a/dom/media/MediaData.cpp b/dom/media/MediaData.cpp index 33eee810d954..82f040523f25 100644 --- a/dom/media/MediaData.cpp +++ b/dom/media/MediaData.cpp @@ -95,6 +95,45 @@ ValidatePlane(const VideoData::YCbCrBuffer::Plane& aPlane) aPlane.mStride > 0; } +static bool ValidateBufferAndPicture(const VideoData::YCbCrBuffer& aBuffer, + const IntRect& aPicture) +{ + // The following situation should never happen unless there is a bug + // in the decoder + if (aBuffer.mPlanes[1].mWidth != aBuffer.mPlanes[2].mWidth || + aBuffer.mPlanes[1].mHeight != aBuffer.mPlanes[2].mHeight) { + NS_ERROR("C planes with different sizes"); + return false; + } + + // The following situations could be triggered by invalid input + if (aPicture.width <= 0 || aPicture.height <= 0) { + // In debug mode, makes the error more noticeable + MOZ_ASSERT(false, "Empty picture rect"); + return false; + } + if (!ValidatePlane(aBuffer.mPlanes[0]) || + !ValidatePlane(aBuffer.mPlanes[1]) || + !ValidatePlane(aBuffer.mPlanes[2])) { + NS_WARNING("Invalid plane size"); + return false; + } + + // Ensure the picture size specified in the headers can be extracted out of + // the frame we've been supplied without indexing out of bounds. + CheckedUint32 xLimit = aPicture.x + CheckedUint32(aPicture.width); + CheckedUint32 yLimit = aPicture.y + CheckedUint32(aPicture.height); + if (!xLimit.isValid() || xLimit.value() > aBuffer.mPlanes[0].mStride || + !yLimit.isValid() || yLimit.value() > aBuffer.mPlanes[0].mHeight) + { + // The specified picture dimensions can't be contained inside the video + // frame, we'll stomp memory if we try to copy it. Fail. + NS_WARNING("Overflowing picture rect"); + return false; + } + return true; +} + #ifdef MOZ_WIDGET_GONK static bool IsYV12Format(const VideoData::YCbCrBuffer::Plane& aYPlane, @@ -263,36 +302,7 @@ VideoData::CreateAndCopyData(const VideoInfo& aInfo, return v.forget(); } - // The following situation should never happen unless there is a bug - // in the decoder - if (aBuffer.mPlanes[1].mWidth != aBuffer.mPlanes[2].mWidth || - aBuffer.mPlanes[1].mHeight != aBuffer.mPlanes[2].mHeight) { - NS_ERROR("C planes with different sizes"); - return nullptr; - } - - // The following situations could be triggered by invalid input - if (aPicture.width <= 0 || aPicture.height <= 0) { - // In debug mode, makes the error more noticeable - MOZ_ASSERT(false, "Empty picture rect"); - return nullptr; - } - if (!ValidatePlane(aBuffer.mPlanes[0]) || !ValidatePlane(aBuffer.mPlanes[1]) || - !ValidatePlane(aBuffer.mPlanes[2])) { - NS_WARNING("Invalid plane size"); - return nullptr; - } - - // Ensure the picture size specified in the headers can be extracted out of - // the frame we've been supplied without indexing out of bounds. - CheckedUint32 xLimit = aPicture.x + CheckedUint32(aPicture.width); - CheckedUint32 yLimit = aPicture.y + CheckedUint32(aPicture.height); - if (!xLimit.isValid() || xLimit.value() > aBuffer.mPlanes[0].mStride || - !yLimit.isValid() || yLimit.value() > aBuffer.mPlanes[0].mHeight) - { - // The specified picture dimensions can't be contained inside the video - // frame, we'll stomp memory if we try to copy it. Fail. - NS_WARNING("Overflowing picture rect"); + if (!ValidateBufferAndPicture(aBuffer, aPicture)) { return nullptr; } @@ -350,6 +360,74 @@ VideoData::CreateAndCopyData(const VideoInfo& aInfo, return v.forget(); } + +/* static */ +already_AddRefed +VideoData::CreateAndCopyData(const VideoInfo& aInfo, + ImageContainer* aContainer, + int64_t aOffset, + int64_t aTime, + int64_t aDuration, + const YCbCrBuffer& aBuffer, + const YCbCrBuffer::Plane &aAlphaPlane, + bool aKeyframe, + int64_t aTimecode, + const IntRect& aPicture) +{ + if (!aContainer) { + // Create a dummy VideoData with no image. This gives us something to + // send to media streams if necessary. + RefPtr v(new VideoData(aOffset, + aTime, + aDuration, + aKeyframe, + aTimecode, + aInfo.mDisplay, + 0)); + return v.forget(); + } + + if (!ValidateBufferAndPicture(aBuffer, aPicture)) { + return nullptr; + } + + RefPtr v(new VideoData(aOffset, + aTime, + aDuration, + aKeyframe, + aTimecode, + aInfo.mDisplay, + 0)); + + // Convert from YUVA to BGRA format on the software side. + RefPtr videoImage = + aContainer->CreateSharedRGBImage(); + v->mImage = videoImage; + + if (!v->mImage) { + return nullptr; + } + if (!videoImage->Allocate(IntSize(aBuffer.mPlanes[0].mWidth, + aBuffer.mPlanes[0].mHeight), + SurfaceFormat::B8G8R8A8)) { + return nullptr; + } + uint8_t* argb_buffer = videoImage->GetBuffer(); + IntSize size = videoImage->GetSize(); + + // The naming convention for libyuv and associated utils is word-order. + // The naming convention in the gfx stack is byte-order. + ConvertYCbCrAToARGB(aBuffer.mPlanes[0].mData, + aBuffer.mPlanes[1].mData, + aBuffer.mPlanes[2].mData, + aAlphaPlane.mData, + aBuffer.mPlanes[0].mStride, aBuffer.mPlanes[1].mStride, + argb_buffer, size.width * 4, + size.width, size.height); + + return v.forget(); +} + /* static */ already_AddRefed VideoData::CreateFromImage(const VideoInfo& aInfo, diff --git a/dom/media/MediaData.h b/dom/media/MediaData.h index 88c5e6d92711..3f1dfff39f24 100644 --- a/dom/media/MediaData.h +++ b/dom/media/MediaData.h @@ -479,6 +479,17 @@ public: int64_t aTimecode, const IntRect& aPicture); + static already_AddRefed CreateAndCopyData(const VideoInfo& aInfo, + ImageContainer* aContainer, + int64_t aOffset, + int64_t aTime, + int64_t aDuration, + const YCbCrBuffer &aBuffer, + const YCbCrBuffer::Plane &aAlphaPlane, + bool aKeyframe, + int64_t aTimecode, + const IntRect& aPicture); + static already_AddRefed CreateAndCopyIntoTextureClient(const VideoInfo& aInfo, int64_t aOffset, int64_t aTime, From c70714c3e2edc59b0eb913e10d80f4c5f4668e15 Mon Sep 17 00:00:00 2001 From: karo Date: Wed, 21 Dec 2016 15:21:35 +1300 Subject: [PATCH 75/94] Bug 1321076 - In the case of alpha, VPXDecoder uses overloaded CreateAndCopy that takes alpha plane. r=jya MozReview-Commit-ID: AIJxPRjGvrg --HG-- extra : rebase_source : 15da81910ab6909ba9659e1f5c7ea86e4d0ebaa4 --- dom/media/platforms/agnostic/VPXDecoder.cpp | 43 +++++++++++++++------ 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/dom/media/platforms/agnostic/VPXDecoder.cpp b/dom/media/platforms/agnostic/VPXDecoder.cpp index 8d62c81ab9e4..daa7e33bb311 100644 --- a/dom/media/platforms/agnostic/VPXDecoder.cpp +++ b/dom/media/platforms/agnostic/VPXDecoder.cpp @@ -198,17 +198,38 @@ VPXDecoder::DoDecode(MediaRawData* aSample) RESULT_DETAIL("VPX Unknown image format")); } - RefPtr v = - VideoData::CreateAndCopyData(mInfo, - mImageContainer, - aSample->mOffset, - aSample->mTime, - aSample->mDuration, - b, - aSample->mKeyframe, - aSample->mTimecode, - mInfo.ScaledImageRect(img->d_w, - img->d_h)); + RefPtr v; + if (!img_alpha) { + v = VideoData::CreateAndCopyData(mInfo, + mImageContainer, + aSample->mOffset, + aSample->mTime, + aSample->mDuration, + b, + aSample->mKeyframe, + aSample->mTimecode, + mInfo.ScaledImageRect(img->d_w, + img->d_h)); + } else { + VideoData::YCbCrBuffer::Plane alpha_plane; + alpha_plane.mData = img_alpha->planes[0]; + alpha_plane.mStride = img_alpha->stride[0]; + alpha_plane.mHeight = img_alpha->d_h; + alpha_plane.mWidth = img_alpha->d_w; + alpha_plane.mOffset = alpha_plane.mSkip = 0; + v = VideoData::CreateAndCopyData(mInfo, + mImageContainer, + aSample->mOffset, + aSample->mTime, + aSample->mDuration, + b, + alpha_plane, + aSample->mKeyframe, + aSample->mTimecode, + mInfo.ScaledImageRect(img->d_w, + img->d_h)); + + } if (!v) { LOG("Image allocation error source %ldx%ld display %ldx%ld picture %ldx%ld", From 90a759ae3f754bf4b9f07f799566df5a2665dc08 Mon Sep 17 00:00:00 2001 From: Henri Sivonen Date: Fri, 15 Jul 2016 14:49:22 +0300 Subject: [PATCH 76/94] Bug 1225255 - Encode URL query string segments to bytes with HTML numeric character references for unmappable characters. r=valentin MozReview-Commit-ID: HDJxSSZZYlw --HG-- extra : rebase_source : e7fda143123a593b9d84ac4c924b9b1bef57f415 --- netwerk/base/nsStandardURL.cpp | 54 ++----------------- netwerk/base/nsStandardURL.h | 4 +- .../query-encoding/resources/resolve-url.js | 2 +- 3 files changed, 7 insertions(+), 53 deletions(-) diff --git a/netwerk/base/nsStandardURL.cpp b/netwerk/base/nsStandardURL.cpp index c6779b2945dd..4c5311a7b121 100644 --- a/netwerk/base/nsStandardURL.cpp +++ b/netwerk/base/nsStandardURL.cpp @@ -154,52 +154,6 @@ char nsStandardURL::gHostLimitDigits[] = { '/', '\\', '?', '#', 0 }; } \ PR_END_MACRO -//---------------------------------------------------------------------------- - -static nsresult -EncodeString(nsIUnicodeEncoder *encoder, const nsAFlatString &str, nsACString &result) -{ - nsresult rv; - int32_t len = str.Length(); - int32_t maxlen; - - rv = encoder->GetMaxLength(str.get(), len, &maxlen); - if (NS_FAILED(rv)) - return rv; - - char buf[256], *p = buf; - if (uint32_t(maxlen) > sizeof(buf) - 1) { - p = (char *) malloc(maxlen + 1); - if (!p) - return NS_ERROR_OUT_OF_MEMORY; - } - - rv = encoder->Convert(str.get(), &len, p, &maxlen); - if (NS_FAILED(rv)) - goto end; - if (rv == NS_ERROR_UENC_NOMAPPING) { - NS_WARNING("unicode conversion failed"); - rv = NS_ERROR_UNEXPECTED; - goto end; - } - p[maxlen] = 0; - result.Assign(p); - - len = sizeof(buf) - 1; - rv = encoder->Finish(buf, &len); - if (NS_FAILED(rv)) - goto end; - buf[len] = 0; - result.Append(buf); - -end: - encoder->Reset(); - - if (p != buf) - free(p); - return rv; -} - //---------------------------------------------------------------------------- // nsStandardURL::nsPrefObserver //---------------------------------------------------------------------------- @@ -262,7 +216,7 @@ nsSegmentEncoder::EncodeSegmentCount(const char *str, // we have to encode this segment if (mEncoder || InitUnicodeEncoder()) { NS_ConvertUTF8toUTF16 ucsBuf(Substring(str + pos, str + pos + len)); - if (NS_SUCCEEDED(EncodeString(mEncoder, ucsBuf, encBuf))) { + if (mEncoder->Encode(ucsBuf, encBuf)) { str = encBuf.get(); pos = 0; len = encBuf.Length(); @@ -311,14 +265,14 @@ nsSegmentEncoder::InitUnicodeEncoder() // "replacement" won't survive another label resolution nsDependentCString label(mCharset); if (label.EqualsLiteral("replacement")) { - mEncoder = EncodingUtils::EncoderForEncoding(label); - return true; + // Returning false here causes the caller to use UTF-8. + return false; } nsAutoCString encoding; if (!EncodingUtils::FindEncodingForLabelNoReplacement(label, encoding)) { return false; } - mEncoder = EncodingUtils::EncoderForEncoding(encoding); + mEncoder = MakeUnique(encoding); return true; } diff --git a/netwerk/base/nsStandardURL.h b/netwerk/base/nsStandardURL.h index 562322c105a5..c73697fc6104 100644 --- a/netwerk/base/nsStandardURL.h +++ b/netwerk/base/nsStandardURL.h @@ -10,7 +10,7 @@ #include "nsISerializable.h" #include "nsIFileURL.h" #include "nsIStandardURL.h" -#include "nsIUnicodeEncoder.h" +#include "nsNCRFallbackEncoderWrapper.h" #include "nsIObserver.h" #include "nsCOMPtr.h" #include "nsURLHelper.h" @@ -143,7 +143,7 @@ public: /* internal -- HPUX compiler can't handle this being private */ const char* mCharset; // Caller should keep this alive for // the life of the segment encoder - nsCOMPtr mEncoder; + mozilla::UniquePtr mEncoder; }; friend class nsSegmentEncoder; diff --git a/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js b/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js index b1b78e7f4720..45cedb267b9c 100644 --- a/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js +++ b/testing/web-platform/tests/html/infrastructure/urls/resolving-urls/query-encoding/resources/resolve-url.js @@ -14,7 +14,7 @@ onload = function() { 'utf-16be':'%C3%A5', 'utf-16le':'%C3%A5', 'windows-1252':'%E5', - 'windows-1251':'%3F' + 'windows-1251':'&%23229;' }; var expected_current = expected_obj[encoding]; var expected_utf8 = expected_obj['utf-8']; From 11b9ff4fc5747233948726583dab0b6ab31098f0 Mon Sep 17 00:00:00 2001 From: Luca Greco Date: Mon, 19 Dec 2016 16:50:27 -0500 Subject: [PATCH 77/94] Bug 1322782 - ContentScripts MatchPattern should ignore the URL fragment. r=kmag MozReview-Commit-ID: 6dCXpV27V7j --HG-- extra : rebase_source : 157a7bff9429c7658c64b0ad28d74e73eb1376e0 --- toolkit/modules/addons/MatchPattern.jsm | 10 +++++++--- toolkit/modules/tests/xpcshell/test_MatchPattern.js | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/toolkit/modules/addons/MatchPattern.jsm b/toolkit/modules/addons/MatchPattern.jsm index f47074840df9..4dff81fd2319 100644 --- a/toolkit/modules/addons/MatchPattern.jsm +++ b/toolkit/modules/addons/MatchPattern.jsm @@ -91,9 +91,13 @@ SingleMatchPattern.prototype = { }, matches(uri, ignorePath = false) { - return (this.schemes.includes(uri.scheme) && - this.hostMatch(uri) && - (ignorePath || this.pathMatch(uri.path))); + return ( + this.schemes.includes(uri.scheme) && + this.hostMatch(uri) && + (ignorePath || ( + this.pathMatch(uri.cloneIgnoringRef().path) + )) + ); }, }; diff --git a/toolkit/modules/tests/xpcshell/test_MatchPattern.js b/toolkit/modules/tests/xpcshell/test_MatchPattern.js index 6e713d7b3881..a0560d249277 100644 --- a/toolkit/modules/tests/xpcshell/test_MatchPattern.js +++ b/toolkit/modules/tests/xpcshell/test_MatchPattern.js @@ -89,4 +89,7 @@ function run_test() pass({url:"http://mozilla.org", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); pass({url:"http://mozilla.com", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); fail({url:"http://mozilla.biz", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); + + // Match url with fragments. + pass({url: "http://mozilla.org/base#some-fragment", pattern: "http://mozilla.org/base"}); } From c0703cc9dfa5d43b78c85d77d9130d286e083482 Mon Sep 17 00:00:00 2001 From: Luca Greco Date: Tue, 20 Dec 2016 23:22:57 -0500 Subject: [PATCH 78/94] Bug 1322782 - Fixed coding style in MatchPattern tests. r=kmag MozReview-Commit-ID: JsF5J5vyeLQ --HG-- extra : rebase_source : 66e0eef2676474a7b0388a2542017b973c31b095 --- .../tests/xpcshell/test_MatchPattern.js | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/toolkit/modules/tests/xpcshell/test_MatchPattern.js b/toolkit/modules/tests/xpcshell/test_MatchPattern.js index a0560d249277..583038361078 100644 --- a/toolkit/modules/tests/xpcshell/test_MatchPattern.js +++ b/toolkit/modules/tests/xpcshell/test_MatchPattern.js @@ -26,69 +26,69 @@ function fail({url, pattern}) function run_test() { // Invalid pattern. - fail({url:"http://mozilla.org", pattern:""}); + fail({url: "http://mozilla.org", pattern: ""}); // Pattern must include trailing slash. - fail({url:"http://mozilla.org", pattern:"http://mozilla.org"}); + fail({url: "http://mozilla.org", pattern: "http://mozilla.org"}); // Protocol not allowed. - fail({url:"http://mozilla.org", pattern:"gopher://wuarchive.wustl.edu/"}); + fail({url: "http://mozilla.org", pattern: "gopher://wuarchive.wustl.edu/"}); - pass({url:"http://mozilla.org", pattern:"http://mozilla.org/"}); - pass({url:"http://mozilla.org/", pattern:"http://mozilla.org/"}); + pass({url: "http://mozilla.org", pattern: "http://mozilla.org/"}); + pass({url: "http://mozilla.org/", pattern: "http://mozilla.org/"}); - pass({url:"http://mozilla.org/", pattern:"*://mozilla.org/"}); - pass({url:"https://mozilla.org/", pattern:"*://mozilla.org/"}); - fail({url:"file://mozilla.org/", pattern:"*://mozilla.org/"}); - fail({url:"ftp://mozilla.org/", pattern:"*://mozilla.org/"}); + pass({url: "http://mozilla.org/", pattern: "*://mozilla.org/"}); + pass({url: "https://mozilla.org/", pattern: "*://mozilla.org/"}); + fail({url: "file://mozilla.org/", pattern: "*://mozilla.org/"}); + fail({url: "ftp://mozilla.org/", pattern: "*://mozilla.org/"}); - fail({url:"http://mozilla.com", pattern:"http://*mozilla.com*/"}); - fail({url:"http://mozilla.com", pattern:"http://mozilla.*/"}); - fail({url:"http://mozilla.com", pattern:"http:/mozilla.com/"}); + fail({url: "http://mozilla.com", pattern: "http://*mozilla.com*/"}); + fail({url: "http://mozilla.com", pattern: "http://mozilla.*/"}); + fail({url: "http://mozilla.com", pattern: "http:/mozilla.com/"}); - pass({url:"http://google.com", pattern:"http://*.google.com/"}); - pass({url:"http://docs.google.com", pattern:"http://*.google.com/"}); + pass({url: "http://google.com", pattern: "http://*.google.com/"}); + pass({url: "http://docs.google.com", pattern: "http://*.google.com/"}); - pass({url:"http://mozilla.org:8080", pattern:"http://mozilla.org/"}); - pass({url:"http://mozilla.org:8080", pattern:"*://mozilla.org/"}); - fail({url:"http://mozilla.org:8080", pattern:"http://mozilla.org:8080/"}); + pass({url: "http://mozilla.org:8080", pattern: "http://mozilla.org/"}); + pass({url: "http://mozilla.org:8080", pattern: "*://mozilla.org/"}); + fail({url: "http://mozilla.org:8080", pattern: "http://mozilla.org:8080/"}); // Now try with * in the path. - pass({url:"http://mozilla.org", pattern:"http://mozilla.org/*"}); - pass({url:"http://mozilla.org/", pattern:"http://mozilla.org/*"}); + pass({url: "http://mozilla.org", pattern: "http://mozilla.org/*"}); + pass({url: "http://mozilla.org/", pattern: "http://mozilla.org/*"}); - pass({url:"http://mozilla.org/", pattern:"*://mozilla.org/*"}); - pass({url:"https://mozilla.org/", pattern:"*://mozilla.org/*"}); - fail({url:"file://mozilla.org/", pattern:"*://mozilla.org/*"}); - fail({url:"http://mozilla.com", pattern:"http://mozilla.*/*"}); + pass({url: "http://mozilla.org/", pattern: "*://mozilla.org/*"}); + pass({url: "https://mozilla.org/", pattern: "*://mozilla.org/*"}); + fail({url: "file://mozilla.org/", pattern: "*://mozilla.org/*"}); + fail({url: "http://mozilla.com", pattern: "http://mozilla.*/*"}); - pass({url:"http://google.com", pattern:"http://*.google.com/*"}); - pass({url:"http://docs.google.com", pattern:"http://*.google.com/*"}); + pass({url: "http://google.com", pattern: "http://*.google.com/*"}); + pass({url: "http://docs.google.com", pattern: "http://*.google.com/*"}); // Check path stuff. - fail({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/"}); - pass({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/*"}); - pass({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/a*f"}); - pass({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/a*"}); - pass({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/*f"}); - fail({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/*e"}); - fail({url:"http://mozilla.com/abc/def", pattern:"http://mozilla.com/*c"}); + fail({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/"}); + pass({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/*"}); + pass({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/a*f"}); + pass({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/a*"}); + pass({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/*f"}); + fail({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/*e"}); + fail({url: "http://mozilla.com/abc/def", pattern: "http://mozilla.com/*c"}); - fail({url:"http:///a.html", pattern:"http:///a.html"}); - pass({url:"file:///foo", pattern:"file:///foo*"}); - pass({url:"file:///foo/bar.html", pattern:"file:///foo*"}); + fail({url: "http:///a.html", pattern: "http:///a.html"}); + pass({url: "file:///foo", pattern: "file:///foo*"}); + pass({url: "file:///foo/bar.html", pattern: "file:///foo*"}); - pass({url:"http://mozilla.org/a", pattern:""}); - pass({url:"https://mozilla.org/a", pattern:""}); - pass({url:"ftp://mozilla.org/a", pattern:""}); - pass({url:"file:///a", pattern:""}); - fail({url:"gopher://wuarchive.wustl.edu/a", pattern:""}); + pass({url: "http://mozilla.org/a", pattern: ""}); + pass({url: "https://mozilla.org/a", pattern: ""}); + pass({url: "ftp://mozilla.org/a", pattern: ""}); + pass({url: "file:///a", pattern: ""}); + fail({url: "gopher://wuarchive.wustl.edu/a", pattern: ""}); // Multiple patterns. - pass({url:"http://mozilla.org", pattern:["http://mozilla.org/"]}); - pass({url:"http://mozilla.org", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); - pass({url:"http://mozilla.com", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); - fail({url:"http://mozilla.biz", pattern:["http://mozilla.org/", "http://mozilla.com/"]}); + pass({url: "http://mozilla.org", pattern: ["http://mozilla.org/"]}); + pass({url: "http://mozilla.org", pattern: ["http://mozilla.org/", "http://mozilla.com/"]}); + pass({url: "http://mozilla.com", pattern: ["http://mozilla.org/", "http://mozilla.com/"]}); + fail({url: "http://mozilla.biz", pattern: ["http://mozilla.org/", "http://mozilla.com/"]}); // Match url with fragments. pass({url: "http://mozilla.org/base#some-fragment", pattern: "http://mozilla.org/base"}); From 0bdf96120a01c5e4bd1067c9b434976f3e9e4d42 Mon Sep 17 00:00:00 2001 From: Cykesiopka Date: Wed, 21 Dec 2016 22:09:10 +0800 Subject: [PATCH 79/94] Bug 1323998 - Stop using Scoped.h NSS types in dtlsidentity.(cpp|h) and nricectx.cpp. r=mt Scoped.h is deprecated. MozReview-Commit-ID: IRFLV2mfN4J --HG-- extra : rebase_source : 4c2a73ed8c1e9c695716aafb2da099f60f889454 --- dom/media/webrtc/RTCCertificate.cpp | 7 ++-- media/mtransport/dtlsidentity.cpp | 44 ++++++++++++------------- media/mtransport/dtlsidentity.h | 13 ++++---- media/mtransport/nricectx.cpp | 4 +-- media/mtransport/transportlayerdtls.cpp | 4 +-- security/manager/ssl/ScopedNSSTypes.h | 10 ------ 6 files changed, 37 insertions(+), 45 deletions(-) diff --git a/dom/media/webrtc/RTCCertificate.cpp b/dom/media/webrtc/RTCCertificate.cpp index 8934a7f7da29..d956d233db7b 100644 --- a/dom/media/webrtc/RTCCertificate.cpp +++ b/dom/media/webrtc/RTCCertificate.cpp @@ -13,6 +13,7 @@ #include "mozilla/dom/RTCCertificateBinding.h" #include "mozilla/dom/WebCryptoCommon.h" #include "mozilla/dom/WebCryptoTask.h" +#include "mozilla/Move.h" #include "mozilla/Sprintf.h" #include @@ -333,9 +334,9 @@ RTCCertificate::CreateDtlsIdentity() const if (isAlreadyShutDown() || !mPrivateKey || !mCertificate) { return nullptr; } - SECKEYPrivateKey* key = SECKEY_CopyPrivateKey(mPrivateKey.get()); - CERTCertificate* cert = CERT_DupCertificate(mCertificate.get()); - RefPtr id = new DtlsIdentity(key, cert, mAuthType); + UniqueSECKEYPrivateKey key(SECKEY_CopyPrivateKey(mPrivateKey.get())); + UniqueCERTCertificate cert(CERT_DupCertificate(mCertificate.get())); + RefPtr id = new DtlsIdentity(Move(key), Move(cert), mAuthType); return id; } diff --git a/media/mtransport/dtlsidentity.cpp b/media/mtransport/dtlsidentity.cpp index 2eda501cfe40..92e627c2bcda 100644 --- a/media/mtransport/dtlsidentity.cpp +++ b/media/mtransport/dtlsidentity.cpp @@ -19,14 +19,14 @@ namespace mozilla { RefPtr DtlsIdentity::Generate() { - ScopedPK11SlotInfo slot(PK11_GetInternalSlot()); + UniquePK11SlotInfo slot(PK11_GetInternalSlot()); if (!slot) { return nullptr; } uint8_t random_name[16]; - SECStatus rv = PK11_GenerateRandomOnSlot(slot, random_name, + SECStatus rv = PK11_GenerateRandomOnSlot(slot.get(), random_name, sizeof(random_name)); if (rv != SECSuccess) return nullptr; @@ -39,7 +39,7 @@ RefPtr DtlsIdentity::Generate() { } std::string subject_name_string = "CN=" + name; - ScopedCERTName subject_name(CERT_AsciiToName(subject_name_string.c_str())); + UniqueCERTName subject_name(CERT_AsciiToName(subject_name_string.c_str())); if (!subject_name) { return nullptr; } @@ -55,26 +55,24 @@ RefPtr DtlsIdentity::Generate() { memcpy(ecdsaParams.data + 2, oidData->oid.data, oidData->oid.len); ecdsaParams.len = oidData->oid.len + 2; - ScopedSECKEYPrivateKey private_key; - ScopedSECKEYPublicKey public_key; SECKEYPublicKey *pubkey; - - private_key = - PK11_GenerateKeyPair(slot, + UniqueSECKEYPrivateKey private_key( + PK11_GenerateKeyPair(slot.get(), CKM_EC_KEY_PAIR_GEN, &ecdsaParams, &pubkey, - PR_FALSE, PR_TRUE, nullptr); + PR_FALSE, PR_TRUE, nullptr)); if (private_key == nullptr) return nullptr; - public_key = pubkey; + UniqueSECKEYPublicKey public_key(pubkey); + pubkey = nullptr; - ScopedCERTSubjectPublicKeyInfo spki( - SECKEY_CreateSubjectPublicKeyInfo(pubkey)); + UniqueCERTSubjectPublicKeyInfo spki( + SECKEY_CreateSubjectPublicKeyInfo(public_key.get())); if (!spki) { return nullptr; } - ScopedCERTCertificateRequest certreq( - CERT_CreateCertificateRequest(subject_name, spki, nullptr)); + UniqueCERTCertificateRequest certreq( + CERT_CreateCertificateRequest(subject_name.get(), spki.get(), nullptr)); if (!certreq) { return nullptr; } @@ -94,22 +92,23 @@ RefPtr DtlsIdentity::Generate() { PRTime notBefore = now - oneDay; PRTime notAfter = now + (PRTime(30) * oneDay); - ScopedCERTValidity validity(CERT_CreateValidity(notBefore, notAfter)); + UniqueCERTValidity validity(CERT_CreateValidity(notBefore, notAfter)); if (!validity) { return nullptr; } unsigned long serial; // Note: This serial in principle could collide, but it's unlikely - rv = PK11_GenerateRandomOnSlot(slot, + rv = PK11_GenerateRandomOnSlot(slot.get(), reinterpret_cast(&serial), sizeof(serial)); if (rv != SECSuccess) { return nullptr; } - ScopedCERTCertificate certificate( - CERT_CreateCertificate(serial, subject_name, validity, certreq)); + UniqueCERTCertificate certificate( + CERT_CreateCertificate(serial, subject_name.get(), validity.get(), + certreq.get())); if (!certificate) { return nullptr; } @@ -129,7 +128,7 @@ RefPtr DtlsIdentity::Generate() { innerDER.len = 0; innerDER.data = nullptr; - if (!SEC_ASN1EncodeItem(arena, &innerDER, certificate, + if (!SEC_ASN1EncodeItem(arena, &innerDER, certificate.get(), SEC_ASN1_GET(CERT_CertificateTemplate))) { return nullptr; } @@ -140,15 +139,16 @@ RefPtr DtlsIdentity::Generate() { } rv = SEC_DerSignData(arena, signedCert, innerDER.data, innerDER.len, - private_key, + private_key.get(), SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE); if (rv != SECSuccess) { return nullptr; } certificate->derCert = *signedCert; - RefPtr identity = - new DtlsIdentity(private_key.forget(), certificate.forget(), ssl_kea_ecdh); + RefPtr identity = new DtlsIdentity(Move(private_key), + Move(certificate), + ssl_kea_ecdh); return identity.forget(); } diff --git a/media/mtransport/dtlsidentity.h b/media/mtransport/dtlsidentity.h index 8dd742ce57fb..f6627460de25 100644 --- a/media/mtransport/dtlsidentity.h +++ b/media/mtransport/dtlsidentity.h @@ -9,10 +9,11 @@ #include #include "m_cpp_utils.h" +#include "mozilla/Move.h" #include "mozilla/RefPtr.h" #include "nsISupportsImpl.h" -#include "sslt.h" #include "ScopedNSSTypes.h" +#include "sslt.h" // All code in this module requires NSS to be live. // Callers must initialize NSS and implement the nsNSSShutdownObject @@ -22,10 +23,10 @@ namespace mozilla { class DtlsIdentity final { public: // This constructor takes ownership of privkey and cert. - DtlsIdentity(SECKEYPrivateKey *privkey, - CERTCertificate *cert, + DtlsIdentity(UniqueSECKEYPrivateKey privkey, + UniqueCERTCertificate cert, SSLKEAType authType) - : private_key_(privkey), cert_(cert), auth_type_(authType) {} + : private_key_(Move(privkey)), cert_(Move(cert)), auth_type_(authType) {} // This is only for use in tests, or for external linkage. It makes a (bad) // instance of this class. @@ -34,7 +35,7 @@ class DtlsIdentity final { // These don't create copies or transfer ownership. If you want these to live // on, make a copy. const UniqueCERTCertificate& cert() const { return cert_; } - SECKEYPrivateKey *privkey() const { return private_key_; } + const UniqueSECKEYPrivateKey& privkey() const { return private_key_; } // Note: this uses SSLKEAType because that is what the libssl API requires. // This is a giant confusing mess, but libssl indexes certificates based on a // key exchange type, not authentication type (as you might have reasonably @@ -62,7 +63,7 @@ class DtlsIdentity final { ~DtlsIdentity() {} DISALLOW_COPY_ASSIGN(DtlsIdentity); - ScopedSECKEYPrivateKey private_key_; + UniqueSECKEYPrivateKey private_key_; UniqueCERTCertificate cert_; SSLKEAType auth_type_; }; diff --git a/media/mtransport/nricectx.cpp b/media/mtransport/nricectx.cpp index abd8870ee853..60147fea1807 100644 --- a/media/mtransport/nricectx.cpp +++ b/media/mtransport/nricectx.cpp @@ -114,11 +114,11 @@ static bool initialized = false; // Implement NSPR-based crypto algorithms static int nr_crypto_nss_random_bytes(UCHAR *buf, int len) { - ScopedPK11SlotInfo slot(PK11_GetInternalSlot()); + UniquePK11SlotInfo slot(PK11_GetInternalSlot()); if (!slot) return R_INTERNAL; - SECStatus rv = PK11_GenerateRandomOnSlot(slot, buf, len); + SECStatus rv = PK11_GenerateRandomOnSlot(slot.get(), buf, len); if (rv != SECSuccess) return R_INTERNAL; diff --git a/media/mtransport/transportlayerdtls.cpp b/media/mtransport/transportlayerdtls.cpp index 55bf53f1b4a8..7f22fcc4f234 100644 --- a/media/mtransport/transportlayerdtls.cpp +++ b/media/mtransport/transportlayerdtls.cpp @@ -518,7 +518,7 @@ bool TransportLayerDtls::Setup() { MOZ_MTLOG(ML_INFO, "Setting up DTLS as server"); // Server side rv = SSL_ConfigSecureServer(ssl_fd.get(), identity_->cert().get(), - identity_->privkey(), + identity_->privkey().get(), identity_->auth_type()); if (rv != SECSuccess) { MOZ_MTLOG(ML_ERROR, "Couldn't set identity"); @@ -1090,7 +1090,7 @@ SECStatus TransportLayerDtls::GetClientAuthDataHook(void *arg, PRFileDesc *fd, return SECFailure; } - *pRetKey = SECKEY_CopyPrivateKey(stream->identity_->privkey()); + *pRetKey = SECKEY_CopyPrivateKey(stream->identity_->privkey().get()); if (!*pRetKey) { CERT_DestroyCertificate(*pRetCert); *pRetCert = nullptr; diff --git a/security/manager/ssl/ScopedNSSTypes.h b/security/manager/ssl/ScopedNSSTypes.h index 4334177fe3e9..64145fbad4b3 100644 --- a/security/manager/ssl/ScopedNSSTypes.h +++ b/security/manager/ssl/ScopedNSSTypes.h @@ -62,19 +62,9 @@ MapSECStatus(SECStatus rv) MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedCERTCertificate, CERTCertificate, CERT_DestroyCertificate) -MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedCERTCertificateRequest, - CERTCertificateRequest, - CERT_DestroyCertificateRequest) -MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedCERTName, - CERTName, - CERT_DestroyName) MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedCERTSubjectPublicKeyInfo, CERTSubjectPublicKeyInfo, SECKEY_DestroySubjectPublicKeyInfo) -MOZ_TYPE_SPECIFIC_SCOPED_POINTER_TEMPLATE(ScopedCERTValidity, - CERTValidity, - CERT_DestroyValidity) -// Deprecated: use the equivalent UniquePtr templates instead. namespace internal { From 563c66bb85a9677576b826876c98980c2b7af3ee Mon Sep 17 00:00:00 2001 From: Brian Stack Date: Fri, 16 Dec 2016 13:06:57 -0800 Subject: [PATCH 80/94] Bug 1324094 - Add correct cache scopes to action tasks r=armenzg,dustin MozReview-Commit-ID: KxtG4cHU0Mm --HG-- extra : rebase_source : 155b4c4b8be716443aaa493a7ed5e3e300305d81 --- taskcluster/taskgraph/action.yml | 3 +-- taskcluster/taskgraph/decision.py | 1 + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/taskcluster/taskgraph/action.yml b/taskcluster/taskgraph/action.yml index 96befbe80e91..9f2db2efe965 100644 --- a/taskcluster/taskgraph/action.yml +++ b/taskcluster/taskgraph/action.yml @@ -17,10 +17,9 @@ tags: scopes: # Bug 1269443: cache scopes, etc. must be listed explicitly - - "docker-worker:cache:level-1-*" - "docker-worker:cache:tooltool-cache" - "secrets:get:project/taskcluster/gecko/hgfingerprint" - - "assume:repo:hg.mozilla.org/try:*" + - "assume:repo:hg.mozilla.org/{{project}}:*" routes: - "tc-treeherder.v2.{{project}}.{{head_rev}}.{{pushlog_id}}" diff --git a/taskcluster/taskgraph/decision.py b/taskcluster/taskgraph/decision.py index f6664d90780b..b4f00576bca9 100644 --- a/taskcluster/taskgraph/decision.py +++ b/taskcluster/taskgraph/decision.py @@ -181,6 +181,7 @@ def get_action_yml(parameters): action_parameters.update({ "action": "{{action}}", "action_args": "{{action_args}}", + "project": parameters["project"], "from_now": json_time_from_now, "now": current_json_time() }) From ab062f5a9cc0f1534d2b98bf87bb561f7dc8195f Mon Sep 17 00:00:00 2001 From: Cykesiopka Date: Wed, 21 Dec 2016 00:43:05 +0800 Subject: [PATCH 81/94] Bug 1324184 - Stop using deprecated rules in PSM ESLint config. r=keeler The following rules were deprecated in ESLint v3.3.0 with the following replacements: 1. no-native-reassign -> no-global-assign 2. no-spaced-func -> func-call-spacing MozReview-Commit-ID: IF0gRCR9l9p --HG-- extra : rebase_source : 22639c868876d79de4f5b8e011d8bf1b5a02cd06 --- security/manager/.eslintrc.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/security/manager/.eslintrc.js b/security/manager/.eslintrc.js index 6b292f366502..30fb23b6e1d3 100644 --- a/security/manager/.eslintrc.js +++ b/security/manager/.eslintrc.js @@ -29,6 +29,9 @@ module.exports = { // eslint-disable-line no-undef // Always require a trailing EOL "eol-last": "error", + // No spaces between function name and parentheses. + "func-call-spacing": ["error", "never"], + // Require function* name() "generator-star-spacing": ["error", {"before": false, "after": true}], @@ -108,6 +111,9 @@ module.exports = { // eslint-disable-line no-undef // No overwriting defined functions "no-func-assign": "error", + // No reassigning native JS objects or read only globals. + "no-global-assign": "error", + // No invalid regular expressions "no-invalid-regexp": "error", @@ -128,9 +134,6 @@ module.exports = { // eslint-disable-line no-undef "ObjectExpression": true }}], - // No reassigning native JS objects - "no-native-reassign": "error", - // Nested ternary statements are confusing "no-nested-ternary": "error", @@ -158,9 +161,6 @@ module.exports = { // eslint-disable-line no-undef // No declaring variables that hide things like arguments "no-shadow-restricted-names": "error", - // No spaces between function name and parentheses - "no-spaced-func": "error", - // Disallow sparse arrays, eg. let arr = [,,"error"]. "no-sparse-arrays": "error", From 9e010f104974efe15c743ec7e0758ca21cd3a49d Mon Sep 17 00:00:00 2001 From: Cykesiopka Date: Wed, 21 Dec 2016 00:43:17 +0800 Subject: [PATCH 82/94] Bug 1324184 - Enable "no-tabs", "no-template-curly-in-string" and "quotes" ESLint rules for PSM. r=keeler Also sorts the rule list alphabetically. MozReview-Commit-ID: 9LwgwfiViom --HG-- extra : rebase_source : 4fb1e49f3c3d9fe363654d0b7398f2088a7e3aea --- security/manager/.eslintrc.js | 22 ++- .../pki/resources/content/certManager.js | 16 +-- .../pki/resources/content/certViewer.js | 22 +-- .../pki/resources/content/changepassword.js | 2 +- .../pki/resources/content/device_manager.js | 25 ++-- .../pki/resources/content/exceptionDialog.js | 6 +- .../manager/pki/resources/content/pippki.js | 6 +- .../test_stricttransportsecurity.html | 46 ++++--- .../test_sts_privatebrowsing_perwindowpb.html | 75 +++++----- .../ssl/tests/unit/test_cert_blocklist.js | 17 +-- .../ssl/tests/unit/test_cert_chains.js | 2 +- .../ssl/tests/unit/test_cert_signatures.js | 4 +- .../ssl/tests/unit/test_content_signing.js | 6 +- .../manager/ssl/tests/unit/test_getchain.js | 8 +- .../ssl/tests/unit/test_hash_algorithms.js | 4 +- security/manager/ssl/tests/unit/test_hmac.js | 4 +- .../ssl/tests/unit/test_ocsp_fetch_method.js | 4 +- .../manager/ssl/tests/unit/test_ocsp_url.js | 6 +- .../ssl/tests/unit/test_pinning_dynamic.js | 128 ++++++++++++------ .../tests/unit/test_pinning_header_parsing.js | 4 +- .../ssl/tests/unit/test_sss_eviction.js | 2 +- .../ssl/tests/unit/test_sss_savestate.js | 6 +- security/manager/tools/genHPKPStaticPins.js | 4 +- security/manager/tools/genRootCAHashes.js | 4 +- security/manager/tools/getHSTSPreloadList.js | 2 +- security/manager/tools/makeCNNICHashes.js | 2 +- 26 files changed, 235 insertions(+), 192 deletions(-) diff --git a/security/manager/.eslintrc.js b/security/manager/.eslintrc.js index 30fb23b6e1d3..1fd38b3556c4 100644 --- a/security/manager/.eslintrc.js +++ b/security/manager/.eslintrc.js @@ -84,12 +84,6 @@ module.exports = { // eslint-disable-line no-undef // No duplicate cases in switch statements "no-duplicate-case": "error", - // Disallow use of eval(). - "no-eval": "error", - - // No labels - "no-labels": "error", - // If an if block ends with a return no need for an else block "no-else-return": "error", @@ -99,6 +93,9 @@ module.exports = { // eslint-disable-line no-undef // Disallow empty destructuring "no-empty-pattern": "error", + // Disallow use of eval(). + "no-eval": "error", + // No assigning to exception variable "no-ex-assign": "error", @@ -120,6 +117,9 @@ module.exports = { // eslint-disable-line no-undef // No odd whitespace characters "no-irregular-whitespace": "error", + // No labels. + "no-labels": "error", + // No single if block inside an else block "no-lonely-if": "error", @@ -164,6 +164,12 @@ module.exports = { // eslint-disable-line no-undef // Disallow sparse arrays, eg. let arr = [,,"error"]. "no-sparse-arrays": "error", + // Disallow tabs. + "no-tabs": "error", + + // Disallow template literal placeholder syntax in regular strings. + "no-template-curly-in-string": "error", + // Disallow throwing literals (eg. |throw "error"| instead of // |throw new Error("error")|) "no-throw-literal": "error", @@ -186,6 +192,10 @@ module.exports = { // eslint-disable-line no-undef // No using with "no-with": "error", + // Require double quote strings to be used, except cases where another quote + // type is used to avoid escaping. + "quotes": ["error", "double", { "avoidEscape": true }], + // Always require semicolon at end of statement "semi": ["error", "always"], diff --git a/security/manager/pki/resources/content/certManager.js b/security/manager/pki/resources/content/certManager.js index c52477442b6d..0e334ed7aded 100644 --- a/security/manager/pki/resources/content/certManager.js +++ b/security/manager/pki/resources/content/certManager.js @@ -79,27 +79,27 @@ function LoadCerts() caTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); caTreeView.loadCertsFromCache(certcache, nsIX509Cert.CA_CERT); - document.getElementById('ca-tree').view = caTreeView; + document.getElementById("ca-tree").view = caTreeView; serverTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); - document.getElementById('server-tree').view = serverTreeView; + document.getElementById("server-tree").view = serverTreeView; emailTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); emailTreeView.loadCertsFromCache(certcache, nsIX509Cert.EMAIL_CERT); - document.getElementById('email-tree').view = emailTreeView; + document.getElementById("email-tree").view = emailTreeView; userTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); userTreeView.loadCertsFromCache(certcache, nsIX509Cert.USER_CERT); - document.getElementById('user-tree').view = userTreeView; + document.getElementById("user-tree").view = userTreeView; orphanTreeView = Components.classes[nsCertTree] .createInstance(nsICertTree); orphanTreeView.loadCertsFromCache(certcache, nsIX509Cert.UNKNOWN_CERT); - document.getElementById('orphan-tree').view = orphanTreeView; + document.getElementById("orphan-tree").view = orphanTreeView; enableBackupAllButton(); } @@ -372,7 +372,7 @@ function restoreCerts() // If this is an X509 user certificate, import it as one. var isX509FileType = false; - var fileTypesList = gCertFileTypes.slice(1).split('; *'); + var fileTypesList = gCertFileTypes.slice(1).split("; *"); for (var type of fileTypesList) { if (fp.file.path.endsWith(type)) { isX509FileType = true; @@ -532,8 +532,8 @@ function addEmailCert() function addException() { - window.openDialog('chrome://pippki/content/exceptionDialog.xul', "", - 'chrome,centerscreen,modal'); + window.openDialog("chrome://pippki/content/exceptionDialog.xul", "", + "chrome,centerscreen,modal"); var certcache = certdb.getCerts(); serverTreeView.loadCertsFromCache(certcache, nsIX509Cert.SERVER_CERT); serverTreeView.selection.clearSelection(); diff --git a/security/manager/pki/resources/content/certViewer.js b/security/manager/pki/resources/content/certViewer.js index b13bb15ac533..339dd5c5a2bf 100644 --- a/security/manager/pki/resources/content/certViewer.js +++ b/security/manager/pki/resources/content/certViewer.js @@ -251,10 +251,10 @@ function addTreeItemToTreeChild(treeChild, label, value, addTwistie) } function displaySelected() { - var asn1Tree = document.getElementById('prettyDumpTree') + var asn1Tree = document.getElementById("prettyDumpTree") .view.QueryInterface(nsIASN1Tree); var items = asn1Tree.selection; - var certDumpVal = document.getElementById('certDumpVal'); + var certDumpVal = document.getElementById("certDumpVal"); if (items.currentIndex != -1) { var value = asn1Tree.getDisplayData(items.currentIndex); certDumpVal.value = value; @@ -268,16 +268,16 @@ function BuildPrettyPrint(cert) var certDumpTree = Components.classes[nsASN1Tree]. createInstance(nsIASN1Tree); certDumpTree.loadASN1Structure(cert.ASN1Structure); - document.getElementById('prettyDumpTree').view = certDumpTree; + document.getElementById("prettyDumpTree").view = certDumpTree; } function addAttributeFromCert(nodeName, value) { var node = document.getElementById(nodeName); if (!value) { - value = bundle.getString('notPresent'); + value = bundle.getString("notPresent"); } - node.setAttribute('value', value); + node.setAttribute("value", value); } /** @@ -304,15 +304,15 @@ function DisplayGeneralDataFromCert(cert) function updateCertDump() { - var asn1Tree = document.getElementById('prettyDumpTree') + var asn1Tree = document.getElementById("prettyDumpTree") .view.QueryInterface(nsIASN1Tree); - var tree = document.getElementById('treesetDump'); + var tree = document.getElementById("treesetDump"); if (tree.currentIndex < 0) { doPrompt("No items are selected."); //This should never happen. } else { var item = tree.contentView.getItemAtIndex(tree.currentIndex); - var dbKey = item.firstChild.firstChild.getAttribute('display'); + var dbKey = item.firstChild.firstChild.getAttribute("display"); // Get the cert from the cert database var certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB); var cert = certdb.findCertByDBKey(dbKey); @@ -324,9 +324,9 @@ function updateCertDump() function getCurrentCert() { var realIndex; - var tree = document.getElementById('treesetDump'); + var tree = document.getElementById("treesetDump"); if (tree.view.selection.isSelected(tree.currentIndex) - && document.getElementById('prettyprint_tab').selected) { + && document.getElementById("prettyprint_tab").selected) { /* if the user manually selected a cert on the Details tab, then take that one */ realIndex = tree.currentIndex; @@ -338,7 +338,7 @@ function getCurrentCert() } if (realIndex >= 0) { var item = tree.contentView.getItemAtIndex(realIndex); - var dbKey = item.firstChild.firstChild.getAttribute('display'); + var dbKey = item.firstChild.firstChild.getAttribute("display"); var certdb = Components.classes[nsX509CertDB].getService(nsIX509CertDB); var cert = certdb.findCertByDBKey(dbKey); return cert; diff --git a/security/manager/pki/resources/content/changepassword.js b/security/manager/pki/resources/content/changepassword.js index 823145697396..0993fa0037eb 100644 --- a/security/manager/pki/resources/content/changepassword.js +++ b/security/manager/pki/resources/content/changepassword.js @@ -106,7 +106,7 @@ function process() } // Select first password field - document.getElementById('pw1').focus(); + document.getElementById("pw1").focus(); } else { // Select old password field oldpwbox.setAttribute("hidden", "false"); diff --git a/security/manager/pki/resources/content/device_manager.js b/security/manager/pki/resources/content/device_manager.js index 7d16c588836e..d6113d9f9e0a 100644 --- a/security/manager/pki/resources/content/device_manager.js +++ b/security/manager/pki/resources/content/device_manager.js @@ -144,7 +144,7 @@ var selected_module; /* get the slot selected by the user (can only be one-at-a-time) */ function getSelectedItem() { - var tree = document.getElementById('device_tree'); + var tree = document.getElementById("device_tree"); if (tree.currentIndex < 0) return; var item = tree.contentView.getItemAtIndex(tree.currentIndex); selected_slot = null; @@ -202,17 +202,14 @@ function enableButtons() } showSlotInfo(); } - var thebutton = document.getElementById('login_button'); - thebutton.setAttribute("disabled", login_toggle); - thebutton = document.getElementById('logout_button'); - thebutton.setAttribute("disabled", logout_toggle); - thebutton = document.getElementById('change_pw_button'); - thebutton.setAttribute("disabled", pw_toggle); - thebutton = document.getElementById('unload_button'); - thebutton.setAttribute("disabled", unload_toggle); - // not implemented - //thebutton = document.getElementById('change_slotname_button'); - //thebutton.setAttribute("disabled", toggle); + document.getElementById("login_button") + .setAttribute("disabled", login_toggle); + document.getElementById("logout_button") + .setAttribute("disabled", logout_toggle); + document.getElementById("change_pw_button") + .setAttribute("disabled", pw_toggle); + document.getElementById("unload_button") + .setAttribute("disabled", unload_toggle); } // clear the display of information for the slot @@ -229,7 +226,7 @@ function ClearDeviceList() ClearInfoList(); skip_enable_buttons = true; - var tree = document.getElementById('device_tree'); + var tree = document.getElementById("device_tree"); tree.view.selection.clearSelection(); skip_enable_buttons = false; @@ -402,7 +399,7 @@ function doUnload() // handle card insertion and removal function onSmartCardChange() { - var tree = document.getElementById('device_tree'); + var tree = document.getElementById("device_tree"); var index = tree.currentIndex; tree.currentIndex = 0; ClearDeviceList(); diff --git a/security/manager/pki/resources/content/exceptionDialog.js b/security/manager/pki/resources/content/exceptionDialog.js index 0ca24a614dca..36ae332e7db4 100644 --- a/security/manager/pki/resources/content/exceptionDialog.js +++ b/security/manager/pki/resources/content/exceptionDialog.js @@ -63,7 +63,7 @@ function initExceptionDialog() { if (args[0].location) { // We were pre-seeded with a location. document.getElementById("locationTextBox").value = args[0].location; - document.getElementById('checkCertButton').disabled = false; + document.getElementById("checkCertButton").disabled = false; if (args[0].sslStatus) { gSSLStatus = args[0].sslStatus; @@ -106,7 +106,7 @@ function checkCert() { var req = new XMLHttpRequest(); try { if (uri) { - req.open('GET', uri.prePath, false); + req.open("GET", uri.prePath, false); req.channel.notificationCallbacks = new badCertListener(); req.send(null); } @@ -176,7 +176,7 @@ function resetDialog() { * Called by input textboxes to manage UI state */ function handleTextChange() { - var checkCertButton = document.getElementById('checkCertButton'); + var checkCertButton = document.getElementById("checkCertButton"); checkCertButton.disabled = !(document.getElementById("locationTextBox").value); if (gNeedReset) { gNeedReset = false; diff --git a/security/manager/pki/resources/content/pippki.js b/security/manager/pki/resources/content/pippki.js index ba3b40786040..d3508dd3e882 100644 --- a/security/manager/pki/resources/content/pippki.js +++ b/security/manager/pki/resources/content/pippki.js @@ -37,7 +37,7 @@ function getDERString(cert) { var length = {}; var derArray = cert.getRawDER(length); - var derString = ''; + var derString = ""; for (var i = 0; i < derArray.length; i++) { derString += String.fromCharCode(derArray[i]); } @@ -48,7 +48,7 @@ function getPKCS7String(cert, chainMode) { var length = {}; var pkcs7Array = cert.exportAsCMS(chainMode, length); - var pkcs7String = ''; + var pkcs7String = ""; for (var i = 0; i < pkcs7Array.length; i++) { pkcs7String += String.fromCharCode(pkcs7Array[i]); } @@ -125,7 +125,7 @@ function exportToFile(parent, cert) return; } - var content = ''; + var content = ""; switch (fp.filterIndex) { case 1: content = getPEMString(cert); diff --git a/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_stricttransportsecurity.html b/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_stricttransportsecurity.html index 67568863819e..c40be9b76251 100644 --- a/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_stricttransportsecurity.html +++ b/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_stricttransportsecurity.html @@ -14,39 +14,45 @@ SimpleTest.waitForExplicitFinish(); - const STSPATH = "/tests/security/manager/ssl/tests/mochitest/stricttransportsecurity"; + const STSPATH = + "tests/security/manager/ssl/tests/mochitest/stricttransportsecurity"; // initialized manually here - var testsleft = {'plain': 4, 'subdom': 4}; + var testsleft = {plain: 4, subdom: 4}; var roundsLeft = 2; var testframes = { - 'samedom': - {'url': "http://example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'SECURE', 'subdom': 'SECURE'}}, - 'subdom': - {'url': "http://test1.example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'INSECURE', 'subdom': 'SECURE'}}, - 'otherdom': - {'url': "http://example.org" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'INSECURE', 'subdom': 'INSECURE'}}, - 'alreadysecure': - {'url': "https://test2.example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'SECURE', 'subdom': 'SECURE'}}, + samedom: { + url: `http://example.com/${STSPATH}/verify.sjs`, + expected: {plain: "SECURE", subdom: "SECURE"} + }, + subdom: { + url: `http://test1.example.com/${STSPATH}/verify.sjs`, + expected: {plain: "INSECURE", subdom: "SECURE"} + }, + otherdom: { + url: `http://example.org/${STSPATH}/verify.sjs`, + expected: {plain: "INSECURE", subdom: "INSECURE"} + }, + alreadysecure: { + url: `https://test2.example.com/${STSPATH}/verify.sjs`, + expected: {plain: "SECURE", subdom: "SECURE"} + }, }; function startRound(round) { let frame = document.createElement("iframe"); - frame.setAttribute('id', 'ifr_bootstrap'); - frame.setAttribute('src', "https://example.com" + STSPATH + "/" + round + "_bootstrap.html"); + frame.setAttribute("id", "ifr_bootstrap"); + frame.setAttribute("src", + `https://example.com/${STSPATH}/${round}_bootstrap.html`); document.body.appendChild(frame); } function endRound(round) { // remove all the iframes in the document - document.body.removeChild(document.getElementById('ifr_bootstrap')); + document.body.removeChild(document.getElementById("ifr_bootstrap")); for (let test in testframes) { - document.body.removeChild(document.getElementById('ifr_' + test)); + document.body.removeChild(document.getElementById("ifr_" + test)); } // clean up the STS state @@ -56,8 +62,8 @@ function loadVerifyFrames(round) { for (let test in testframes) { let frame = document.createElement("iframe"); - frame.setAttribute('id', 'ifr_' + test); - frame.setAttribute('src', testframes[test].url + '?id=' + test); + frame.setAttribute("id", "ifr_" + test); + frame.setAttribute("src", testframes[test].url + "?id=" + test); document.body.appendChild(frame); } } diff --git a/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_sts_privatebrowsing_perwindowpb.html b/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_sts_privatebrowsing_perwindowpb.html index 882030b67926..5d4f9f6a00b7 100644 --- a/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_sts_privatebrowsing_perwindowpb.html +++ b/security/manager/ssl/tests/mochitest/stricttransportsecurity/test_sts_privatebrowsing_perwindowpb.html @@ -22,7 +22,8 @@ const Cc = Components.classes; const Ci = Components.interfaces; const Cu = Components.utils; - const STSPATH = "/tests/security/manager/ssl/tests/mochitest/stricttransportsecurity"; + const STSPATH = + "tests/security/manager/ssl/tests/mochitest/stricttransportsecurity"; const NUM_TEST_FRAMES = 4; const CONTENT_PAGE = "http://mochi.test:8888/chrome/security/manager/ssl/tests/mochitest/stricttransportsecurity/page_blank.html"; @@ -44,26 +45,22 @@ SpecialPowers.Services.prefs.setIntPref("browser.startup.page", 0); var testframes = { - 'samedom': - {'url': "http://example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'SECURE', - 'subdom': 'SECURE', - 'nosts': 'INSECURE'}}, - 'subdom': - {'url': "http://test1.example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'INSECURE', - 'subdom': 'SECURE', - 'nosts': 'INSECURE'}}, - 'otherdom': - {'url': "http://example.org" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'INSECURE', - 'subdom': 'INSECURE', - 'nosts': 'INSECURE'}}, - 'alreadysecure': - {'url': "https://test2.example.com" + STSPATH + "/verify.sjs", - 'expected': {'plain': 'SECURE', - 'subdom': 'SECURE', - 'nosts': 'SECURE'}}, + samedom: { + url: `http://example.com/${STSPATH}/verify.sjs`, + expected: {plain: "SECURE", subdom: "SECURE", nosts: "INSECURE"} + }, + subdom: { + url: `http://test1.example.com/${STSPATH}/verify.sjs`, + expected: {plain: "INSECURE", subdom: "SECURE", nosts: "INSECURE"} + }, + otherdom: { + url: `http://example.org/${STSPATH}/verify.sjs`, + expected: {plain: "INSECURE", subdom: "INSECURE", nosts: "INSECURE"} + }, + alreadysecure: { + url: `https://test2.example.com/${STSPATH}/verify.sjs`, + expected: {plain: "SECURE", subdom: "SECURE", nosts: "SECURE"} + }, }; function whenDelayedStartupFinished(aWindow, aCallback) { @@ -95,12 +92,12 @@ SimpleTest.info("TESTS LEFT IN ROUND " + currentround + ": " + testsleftinround); let browser = win.gBrowser.selectedBrowser; - let src = "https://example.com" + STSPATH + "/" + round + "_bootstrap.html"; + let src = `https://example.com/${STSPATH}/${round}_bootstrap.html`; ContentTask.spawn(browser, src, function* (contentSrc) { let frame = content.document.createElement("iframe"); - frame.setAttribute('id', 'ifr_bootstrap'); - frame.setAttribute('src', contentSrc); + frame.setAttribute("id", "ifr_bootstrap"); + frame.setAttribute("src", contentSrc); return new Promise(resolve => { frame.addEventListener("load", resolve); @@ -112,24 +109,24 @@ } function loadVerifyFrames(win, isPrivate, round) { - loadVerifyFrame(win, isPrivate, testframes.samedom, 'samedom', function() { - loadVerifyFrame(win, isPrivate, testframes.subdom, 'subdom', function() { - loadVerifyFrame(win, isPrivate, testframes.otherdom, 'otherdom', function() { - loadVerifyFrame(win, isPrivate, testframes.alreadysecure, 'alreadysecure'); + loadVerifyFrame(win, isPrivate, testframes.samedom, "samedom", function() { + loadVerifyFrame(win, isPrivate, testframes.subdom, "subdom", function() { + loadVerifyFrame(win, isPrivate, testframes.otherdom, "otherdom", function() { + loadVerifyFrame(win, isPrivate, testframes.alreadysecure, "alreadysecure"); }); }); }); } function loadVerifyFrame(win, isPrivate, test, testName, aCallback) { - let id = 'ifr_' + testName; - let src = test.url + '?id=' + testName; + let id = "ifr_" + testName; + let src = test.url + "?id=" + testName; let browser = win.gBrowser.selectedBrowser; ContentTask.spawn(browser, [id, src], function* ([contentId, contentSrc]) { let frame = content.document.createElement("iframe"); - frame.setAttribute('id', contentId); - frame.setAttribute('src', contentSrc); + frame.setAttribute("id", contentId); + frame.setAttribute("src", contentSrc); return new Promise(resolve => { frame.addEventListener("load", () => { @@ -139,7 +136,7 @@ content.document.body.appendChild(frame); }); }).then(scheme => { - if (scheme == 'https:') { + if (scheme == "https:") { onMessageReceived(win, isPrivate, "SECURE " + testName); } else { onMessageReceived(win, isPrivate, "INSECURE " + testName); @@ -184,10 +181,10 @@ let browser = win.gBrowser.selectedBrowser; ContentTask.spawn(browser, testframes, function* (contentTestFrames) { content.document.body.removeChild( - content.document.getElementById('ifr_bootstrap')); + content.document.getElementById("ifr_bootstrap")); for (let test in contentTestFrames) { content.document.body.removeChild( - content.document.getElementById('ifr_' + test)); + content.document.getElementById("ifr_" + test)); } }).then(() => { currentround = ""; @@ -208,7 +205,7 @@ testOnWindow(false, function(win) { SimpleTest.info("In public window"); dump_STSState(false); - startRound(win, false, 'plain'); + startRound(win, false, "plain"); }); } @@ -216,7 +213,7 @@ testOnWindow(true, function(win) { SimpleTest.info("In private window"); dump_STSState(true); - startRound(win, true, 'subdom'); + startRound(win, true, "subdom"); }); } @@ -224,7 +221,7 @@ testOnWindow(false, function(win) { SimpleTest.info("In a new public window"); dump_STSState(false); - startRound(win, false, 'nosts'); + startRound(win, false, "nosts"); }); } @@ -265,7 +262,7 @@ function nextTest() { SimpleTest.executeSoon(tests.length ? tests.shift() : finish); } - window.addEventListener('load', nextTest, false); + window.addEventListener("load", nextTest, false); diff --git a/security/manager/ssl/tests/unit/test_cert_blocklist.js b/security/manager/ssl/tests/unit/test_cert_blocklist.js index 54eb4101ee25..4a647274edb6 100644 --- a/security/manager/ssl/tests/unit/test_cert_blocklist.js +++ b/security/manager/ssl/tests/unit/test_cert_blocklist.js @@ -146,17 +146,10 @@ function load_cert(cert, trust) { function test_is_revoked(certList, issuerString, serialString, subjectString, pubKeyString) { - let issuer = converter.convertToByteArray(issuerString ? issuerString : '', - {}); - - let serial = converter.convertToByteArray(serialString ? serialString : '', - {}); - - let subject = converter.convertToByteArray(subjectString ? subjectString : '', - {}); - - let pubKey = converter.convertToByteArray(pubKeyString ? pubKeyString : '', - {}); + let issuer = converter.convertToByteArray(issuerString || "", {}); + let serial = converter.convertToByteArray(serialString || "", {}); + let subject = converter.convertToByteArray(subjectString || "", {}); + let pubKey = converter.convertToByteArray(pubKeyString || "", {}); return certList.isCertRevoked(issuer, issuerString ? issuerString.length : 0, @@ -291,7 +284,7 @@ function run_test() { // test a subject / pubKey revocation ok(test_is_revoked(certList, "nonsense", "more nonsense", - "some imaginary subject", "some imaginary pubkey"), + "some imaginary subject", "some imaginary pubkey"), "issuer / serial pair should be blocked"); // Check the blocklist entry has been persisted properly to the backing diff --git a/security/manager/ssl/tests/unit/test_cert_chains.js b/security/manager/ssl/tests/unit/test_cert_chains.js index 8abcb4e65cc9..54c89eb67378 100644 --- a/security/manager/ssl/tests/unit/test_cert_chains.js +++ b/security/manager/ssl/tests/unit/test_cert_chains.js @@ -32,7 +32,7 @@ function test_cert_equals() { } function test_cert_list_serialization() { - let certList = build_cert_chain(['default-ee', 'expired-ee']); + let certList = build_cert_chain(["default-ee", "expired-ee"]); // Serialize the cert list to a string let serHelper = Cc["@mozilla.org/network/serialization-helper;1"] diff --git a/security/manager/ssl/tests/unit/test_cert_signatures.js b/security/manager/ssl/tests/unit/test_cert_signatures.js index bab34a3bfa5a..5bd2e16a8a7b 100644 --- a/security/manager/ssl/tests/unit/test_cert_signatures.js +++ b/security/manager/ssl/tests/unit/test_cert_signatures.js @@ -25,9 +25,9 @@ function readAndTamperWithNthByte(certificatePath, n) { // remember, n is negative at this point n = der.length + n; } - let replacement = '\x22'; + let replacement = "\x22"; if (der.charCodeAt(n) == replacement) { - replacement = '\x23'; + replacement = "\x23"; } der = der.substring(0, n) + replacement + der.substring(n + 1); return btoa(der); diff --git a/security/manager/ssl/tests/unit/test_content_signing.js b/security/manager/ssl/tests/unit/test_content_signing.js index 99ea33a3ac80..eacb6038b952 100644 --- a/security/manager/ssl/tests/unit/test_content_signing.js +++ b/security/manager/ssl/tests/unit/test_content_signing.js @@ -35,9 +35,9 @@ function loadChain(prefix, names) { function run_test() { // set up some data - const DATA = readFile(do_get_file(TEST_DATA_DIR + 'test.txt')); + const DATA = readFile(do_get_file(TEST_DATA_DIR + "test.txt")); const GOOD_SIGNATURE = "p384ecdsa=" + - readFile(do_get_file(TEST_DATA_DIR + 'test.txt.signature')) + readFile(do_get_file(TEST_DATA_DIR + "test.txt.signature")) .trim(); const BAD_SIGNATURE = "p384ecdsa=WqRXFQ7tnlVufpg7A-ZavXvWd2Zln0o4woHBy26C2r" + @@ -200,7 +200,7 @@ function run_test() { // ensure we test each bad section on its own... badChains.push(badSection); // ... and as part of a chain with good certificates - badChains.push(badSection + '\n' + chainSuffix); + badChains.push(badSection + "\n" + chainSuffix); } for (let badChain of badChains) { diff --git a/security/manager/ssl/tests/unit/test_getchain.js b/security/manager/ssl/tests/unit/test_getchain.js index f12317810664..2d5a82f05195 100644 --- a/security/manager/ssl/tests/unit/test_getchain.js +++ b/security/manager/ssl/tests/unit/test_getchain.js @@ -10,9 +10,9 @@ const certdb = Cc["@mozilla.org/security/x509certdb;1"] .getService(Ci.nsIX509CertDB); // This is the list of certificates needed for the test. var certList = [ - 'ee', - 'ca-1', - 'ca-2', + "ee", + "ca-1", + "ca-2", ]; // Since all the ca's are identical expect for the serial number @@ -24,7 +24,7 @@ function get_ca_array() { let enumerator = allCerts.getEnumerator(); while (enumerator.hasMoreElements()) { let cert = enumerator.getNext().QueryInterface(Ci.nsIX509Cert); - if (cert.commonName == 'ca') { + if (cert.commonName == "ca") { ret_array[parseInt(cert.serialNumber, 16)] = cert; } } diff --git a/security/manager/ssl/tests/unit/test_hash_algorithms.js b/security/manager/ssl/tests/unit/test_hash_algorithms.js index 17ccd0781063..72c2d77c624f 100644 --- a/security/manager/ssl/tests/unit/test_hash_algorithms.js +++ b/security/manager/ssl/tests/unit/test_hash_algorithms.js @@ -46,7 +46,7 @@ function doHash(algo, value, cmp) { let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Ci.nsIScriptableUnicodeConverter); - converter.charset = 'utf8'; + converter.charset = "utf8"; value = converter.convertToByteArray(value); hash.update(value, value.length); equal(hexdigest(hash.finish(false)), cmp, @@ -64,7 +64,7 @@ function doHashStream(algo, value, cmp) { let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"] .createInstance(Ci.nsIScriptableUnicodeConverter); - converter.charset = 'utf8'; + converter.charset = "utf8"; let stream = converter.convertToInputStream(value); hash.updateFromStream(stream, stream.available()); equal(hexdigest(hash.finish(false)), cmp, diff --git a/security/manager/ssl/tests/unit/test_hmac.js b/security/manager/ssl/tests/unit/test_hmac.js index 7adc4619069e..81fb77db8a13 100644 --- a/security/manager/ssl/tests/unit/test_hmac.js +++ b/security/manager/ssl/tests/unit/test_hmac.js @@ -31,8 +31,8 @@ function getHMAC(data, key, alg) { } function testHMAC(alg) { - const key1 = 'MyKey_ABCDEFGHIJKLMN'; - const key2 = 'MyKey_01234567890123'; + const key1 = "MyKey_ABCDEFGHIJKLMN"; + const key2 = "MyKey_01234567890123"; const dataA = "Secret message"; const dataB = "Secres message"; diff --git a/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js b/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js index de89a413131b..1489bec6a2e0 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js +++ b/security/manager/ssl/tests/unit/test_ocsp_fetch_method.js @@ -29,8 +29,8 @@ function check_cert_err(cert_name, expected_error) { } function run_test() { - addCertFromFile(certdb, "test_ocsp_fetch_method/ca.pem", 'CTu,CTu,CTu'); - addCertFromFile(certdb, "test_ocsp_fetch_method/int.pem", ',,'); + addCertFromFile(certdb, "test_ocsp_fetch_method/ca.pem", "CTu,CTu,CTu"); + addCertFromFile(certdb, "test_ocsp_fetch_method/int.pem", ",,"); // Enabled so that we can force ocsp failure responses. Services.prefs.setBoolPref("security.OCSP.require", true); diff --git a/security/manager/ssl/tests/unit/test_ocsp_url.js b/security/manager/ssl/tests/unit/test_ocsp_url.js index 799c934d01cb..a4f1bcd4b15e 100644 --- a/security/manager/ssl/tests/unit/test_ocsp_url.js +++ b/security/manager/ssl/tests/unit/test_ocsp_url.js @@ -31,8 +31,8 @@ function check_cert_err(cert_name, expected_error) { } function run_test() { - addCertFromFile(certdb, "test_ocsp_url/ca.pem", 'CTu,CTu,CTu'); - addCertFromFile(certdb, "test_ocsp_url/int.pem", ',,'); + addCertFromFile(certdb, "test_ocsp_url/ca.pem", "CTu,CTu,CTu"); + addCertFromFile(certdb, "test_ocsp_url/int.pem", ",,"); // Enabled so that we can force ocsp failure responses. Services.prefs.setBoolPref("security.OCSP.require", true); @@ -97,7 +97,7 @@ function run_test() { add_test(function() { clearOCSPCache(); - let ocspResponder = start_ocsp_responder(["no-path-url"], ['']); + let ocspResponder = start_ocsp_responder(["no-path-url"], [""]); check_cert_err("no-path-url", PRErrorCodeSuccess); ocspResponder.stop(run_next_test); }); diff --git a/security/manager/ssl/tests/unit/test_pinning_dynamic.js b/security/manager/ssl/tests/unit/test_pinning_dynamic.js index 2c314b53a7e1..61d70049acd8 100644 --- a/security/manager/ssl/tests/unit/test_pinning_dynamic.js +++ b/security/manager/ssl/tests/unit/test_pinning_dynamic.js @@ -117,15 +117,23 @@ function checkStateRead(aSubject, aTopic, aData) { // the written entry is for a.pinning2.example.com without subdomains // and b.pinning2.example.com with subdomains - checkFail(certFromFile('a.pinning2.example.com-badca'), "a.pinning2.example.com"); - checkOK(certFromFile('a.pinning2.example.com-pinningroot'), "a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-badca'), "x.a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-pinningroot'), "x.a.pinning2.example.com"); + checkFail(certFromFile("a.pinning2.example.com-badca"), + "a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-pinningroot"), + "a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-badca"), + "x.a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-pinningroot"), + "x.a.pinning2.example.com"); - checkFail(certFromFile('b.pinning2.example.com-badca'), "b.pinning2.example.com"); - checkOK(certFromFile('b.pinning2.example.com-pinningroot'), "b.pinning2.example.com"); - checkFail(certFromFile('x.b.pinning2.example.com-badca'), "x.b.pinning2.example.com"); - checkOK(certFromFile('x.b.pinning2.example.com-pinningroot'), "x.b.pinning2.example.com"); + checkFail(certFromFile("b.pinning2.example.com-badca"), + "b.pinning2.example.com"); + checkOK(certFromFile("b.pinning2.example.com-pinningroot"), + "b.pinning2.example.com"); + checkFail(certFromFile("x.b.pinning2.example.com-badca"), + "x.b.pinning2.example.com"); + checkOK(certFromFile("x.b.pinning2.example.com-pinningroot"), + "x.b.pinning2.example.com"); checkDefaultSiteHPKPStatus(); @@ -134,14 +142,22 @@ function checkStateRead(aSubject, aTopic, aData) { gSSService.setKeyPins("a.pinning2.example.com", true, new Date().getTime() + 1000000, 2, [NON_ISSUED_KEY_HASH, PINNING_ROOT_KEY_HASH]); - checkFail(certFromFile('a.pinning2.example.com-badca'), "a.pinning2.example.com"); - checkOK(certFromFile('a.pinning2.example.com-pinningroot'), "a.pinning2.example.com"); - checkFail(certFromFile('x.a.pinning2.example.com-badca'), "x.a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-pinningroot'), "x.a.pinning2.example.com"); - checkFail(certFromFile('b.pinning2.example.com-badca'), "b.pinning2.example.com"); - checkOK(certFromFile('b.pinning2.example.com-pinningroot'), "b.pinning2.example.com"); - checkFail(certFromFile('x.b.pinning2.example.com-badca'), "x.b.pinning2.example.com"); - checkOK(certFromFile('x.b.pinning2.example.com-pinningroot'), "x.b.pinning2.example.com"); + checkFail(certFromFile("a.pinning2.example.com-badca"), + "a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-pinningroot"), + "a.pinning2.example.com"); + checkFail(certFromFile("x.a.pinning2.example.com-badca"), + "x.a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-pinningroot"), + "x.a.pinning2.example.com"); + checkFail(certFromFile("b.pinning2.example.com-badca"), + "b.pinning2.example.com"); + checkOK(certFromFile("b.pinning2.example.com-pinningroot"), + "b.pinning2.example.com"); + checkFail(certFromFile("x.b.pinning2.example.com-badca"), + "x.b.pinning2.example.com"); + checkOK(certFromFile("x.b.pinning2.example.com-pinningroot"), + "x.b.pinning2.example.com"); ok(gSSService.isSecureHost(Ci.nsISiteSecurityService.HEADER_HPKP, "a.pinning2.example.com", 0), @@ -156,15 +172,23 @@ function checkStateRead(aSubject, aTopic, aData) { gSSService.setKeyPins("a.pinning2.example.com", false, new Date().getTime() + 1000000, 2, [NON_ISSUED_KEY_HASH, PINNING_ROOT_KEY_HASH]); - checkFail(certFromFile('a.pinning2.example.com-badca'), "a.pinning2.example.com"); - checkOK(certFromFile('a.pinning2.example.com-pinningroot'), "a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-badca'), "x.a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-pinningroot'), "x.a.pinning2.example.com"); + checkFail(certFromFile("a.pinning2.example.com-badca"), + "a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-pinningroot"), + "a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-badca"), + "x.a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-pinningroot"), + "x.a.pinning2.example.com"); - checkFail(certFromFile('b.pinning2.example.com-badca'), "b.pinning2.example.com"); - checkOK(certFromFile('b.pinning2.example.com-pinningroot'), "b.pinning2.example.com"); - checkFail(certFromFile('x.b.pinning2.example.com-badca'), "x.b.pinning2.example.com"); - checkOK(certFromFile('x.b.pinning2.example.com-pinningroot'), "x.b.pinning2.example.com"); + checkFail(certFromFile("b.pinning2.example.com-badca"), + "b.pinning2.example.com"); + checkOK(certFromFile("b.pinning2.example.com-pinningroot"), + "b.pinning2.example.com"); + checkFail(certFromFile("x.b.pinning2.example.com-badca"), + "x.b.pinning2.example.com"); + checkOK(certFromFile("x.b.pinning2.example.com-pinningroot"), + "x.b.pinning2.example.com"); checkDefaultSiteHPKPStatus(); @@ -173,15 +197,23 @@ function checkStateRead(aSubject, aTopic, aData) { gSSService.setKeyPins("a.pinning2.example.com", true, new Date().getTime() + 1000000, 1, ["not a hash"]); }, /NS_ERROR_ILLEGAL_VALUE/, "Attempting to set an invalid pin should fail"); - checkFail(certFromFile('a.pinning2.example.com-badca'), "a.pinning2.example.com"); - checkOK(certFromFile('a.pinning2.example.com-pinningroot'), "a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-badca'), "x.a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-pinningroot'), "x.a.pinning2.example.com"); + checkFail(certFromFile("a.pinning2.example.com-badca"), + "a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-pinningroot"), + "a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-badca"), + "x.a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-pinningroot"), + "x.a.pinning2.example.com"); - checkFail(certFromFile('b.pinning2.example.com-badca'), "b.pinning2.example.com"); - checkOK(certFromFile('b.pinning2.example.com-pinningroot'), "b.pinning2.example.com"); - checkFail(certFromFile('x.b.pinning2.example.com-badca'), "x.b.pinning2.example.com"); - checkOK(certFromFile('x.b.pinning2.example.com-pinningroot'), "x.b.pinning2.example.com"); + checkFail(certFromFile("b.pinning2.example.com-badca"), + "b.pinning2.example.com"); + checkOK(certFromFile("b.pinning2.example.com-pinningroot"), + "b.pinning2.example.com"); + checkFail(certFromFile("x.b.pinning2.example.com-badca"), + "x.b.pinning2.example.com"); + checkOK(certFromFile("x.b.pinning2.example.com-pinningroot"), + "x.b.pinning2.example.com"); checkDefaultSiteHPKPStatus(); @@ -209,38 +241,46 @@ function checkStateRead(aSubject, aTopic, aData) { // Check a dynamic addition works as expected // first, it should succeed with the badCA - because there's no pin - checkOK(certFromFile('b.preload.example.com-badca'), "b.preload.example.com"); + checkOK(certFromFile("b.preload.example.com-badca"), "b.preload.example.com"); // then we add a pin, and we should get a failure (ensuring the expiry is // after the test timeout) gSSService.setKeyPins("b.preload.example.com", false, new Date().getTime() + 1000000, 2, [NON_ISSUED_KEY_HASH, PINNING_ROOT_KEY_HASH], true); - checkFail(certFromFile('b.preload.example.com-badca'), "b.preload.example.com"); + checkFail(certFromFile("b.preload.example.com-badca"), "b.preload.example.com"); do_timeout(1250, checkExpiredState); } function checkExpiredState() { - checkOK(certFromFile('a.pinning2.example.com-badca'), "a.pinning2.example.com"); - checkOK(certFromFile('a.pinning2.example.com-pinningroot'), "a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-badca'), "x.a.pinning2.example.com"); - checkOK(certFromFile('x.a.pinning2.example.com-pinningroot'), "x.a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-badca"), + "a.pinning2.example.com"); + checkOK(certFromFile("a.pinning2.example.com-pinningroot"), + "a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-badca"), + "x.a.pinning2.example.com"); + checkOK(certFromFile("x.a.pinning2.example.com-pinningroot"), + "x.a.pinning2.example.com"); - checkFail(certFromFile('b.pinning2.example.com-badca'), "b.pinning2.example.com"); - checkOK(certFromFile('b.pinning2.example.com-pinningroot'), "b.pinning2.example.com"); - checkFail(certFromFile('x.b.pinning2.example.com-badca'), "x.b.pinning2.example.com"); - checkOK(certFromFile('x.b.pinning2.example.com-pinningroot'), "x.b.pinning2.example.com"); + checkFail(certFromFile("b.pinning2.example.com-badca"), + "b.pinning2.example.com"); + checkOK(certFromFile("b.pinning2.example.com-pinningroot"), + "b.pinning2.example.com"); + checkFail(certFromFile("x.b.pinning2.example.com-badca"), + "x.b.pinning2.example.com"); + checkOK(certFromFile("x.b.pinning2.example.com-pinningroot"), + "x.b.pinning2.example.com"); checkPreloadClear(); } function checkPreloadClear() { // Check that the preloaded pins still work after private data is cleared gSSService.clearAll(); - checkFail(certFromFile('b.preload.example.com-badca'), "b.preload.example.com"); + checkFail(certFromFile("b.preload.example.com-badca"), "b.preload.example.com"); // Check that the preloaded pins are cleared when we clear preloads gSSService.clearPreloads(); - checkOK(certFromFile('b.preload.example.com-badca'), "b.preload.example.com"); + checkOK(certFromFile("b.preload.example.com-badca"), "b.preload.example.com"); do_test_finished(); } diff --git a/security/manager/ssl/tests/unit/test_pinning_header_parsing.js b/security/manager/ssl/tests/unit/test_pinning_header_parsing.js index fb4b32353749..2c4ee5cb56ee 100644 --- a/security/manager/ssl/tests/unit/test_pinning_header_parsing.js +++ b/security/manager/ssl/tests/unit/test_pinning_header_parsing.js @@ -24,7 +24,7 @@ function loadCert(cert_name, trust_string) { function checkFailParseInvalidPin(pinValue) { let sslStatus = new FakeSSLStatus( - certFromFile('a.pinning2.example.com-pinningroot')); + certFromFile("a.pinning2.example.com-pinningroot")); let uri = Services.io.newURI("https://a.pinning2.example.com", null, null); throws(() => { gSSService.processHeader(Ci.nsISiteSecurityService.HEADER_HPKP, uri, @@ -34,7 +34,7 @@ function checkFailParseInvalidPin(pinValue) { function checkPassValidPin(pinValue, settingPin, expectedMaxAge) { let sslStatus = new FakeSSLStatus( - certFromFile('a.pinning2.example.com-pinningroot')); + certFromFile("a.pinning2.example.com-pinningroot")); let uri = Services.io.newURI("https://a.pinning2.example.com", null, null); let maxAge = {}; diff --git a/security/manager/ssl/tests/unit/test_sss_eviction.js b/security/manager/ssl/tests/unit/test_sss_eviction.js index 0ac8983f679f..a666ed00adb0 100644 --- a/security/manager/ssl/tests/unit/test_sss_eviction.js +++ b/security/manager/ssl/tests/unit/test_sss_eviction.js @@ -21,7 +21,7 @@ function do_state_written(aSubject, aTopic, aData) { ok(stateFile.exists()); let stateFileContents = readFile(stateFile); // the last part is removed because it's the empty string after the final \n - let lines = stateFileContents.split('\n').slice(0, -1); + let lines = stateFileContents.split("\n").slice(0, -1); // We can receive multiple data-storage-written events. In particular, we // may receive one where DataStorage wrote out data before we were done // processing all of our headers. In this case, the data may not be diff --git a/security/manager/ssl/tests/unit/test_sss_savestate.js b/security/manager/ssl/tests/unit/test_sss_savestate.js index 7353b14287f8..4cd8d8f5abb4 100644 --- a/security/manager/ssl/tests/unit/test_sss_savestate.js +++ b/security/manager/ssl/tests/unit/test_sss_savestate.js @@ -29,15 +29,15 @@ function checkStateWritten(aSubject, aTopic, aData) { ok(stateFile.exists()); let stateFileContents = readFile(stateFile); // the last line is removed because it's just a trailing newline - let lines = stateFileContents.split('\n').slice(0, -1); + let lines = stateFileContents.split("\n").slice(0, -1); equal(lines.length, EXPECTED_ENTRIES); let sites = {}; // a map of domain name -> [the entry in the state file] for (let line of lines) { - let parts = line.split('\t'); + let parts = line.split("\t"); let host = parts[0]; let score = parts[1]; let lastAccessed = parts[2]; - let entry = parts[3].split(','); + let entry = parts[3].split(","); let expectedColumns = EXPECTED_HSTS_COLUMNS; if (host.indexOf("HPKP") != -1) { expectedColumns = EXPECTED_HPKP_COLUMNS; diff --git a/security/manager/tools/genHPKPStaticPins.js b/security/manager/tools/genHPKPStaticPins.js index 3a7bd86e0b90..11ac8e583b80 100644 --- a/security/manager/tools/genHPKPStaticPins.js +++ b/security/manager/tools/genHPKPStaticPins.js @@ -19,7 +19,7 @@ if (arguments.length != 3) { ""); } -var { 'classes': Cc, 'interfaces': Ci, 'utils': Cu, 'results': Cr } = Components; +const { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components; var { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {}); var { FileUtils } = Cu.import("resource://gre/modules/FileUtils.jsm", {}); @@ -236,7 +236,7 @@ function downloadAndParseChromeCerts(filename, certNameToSKD, certSKDToName) { let chromeName; for (let line of lines) { // Skip comments and newlines. - if (line.length == 0 || line[0] == '#') { + if (line.length == 0 || line[0] == "#") { continue; } switch (state) { diff --git a/security/manager/tools/genRootCAHashes.js b/security/manager/tools/genRootCAHashes.js index 0d6f1df48f5b..5f2838c5bd61 100644 --- a/security/manager/tools/genRootCAHashes.js +++ b/security/manager/tools/genRootCAHashes.js @@ -62,7 +62,7 @@ function writeString(fos, string) { // Remove all colons from a string function stripColons(hexString) { - return hexString.replace(/:/g, ''); + return hexString.replace(/:/g, ""); } // Expect an array of bytes and make it C-formatted @@ -110,7 +110,7 @@ function loadTrustAnchors(file) { function writeTrustAnchors(file) { let fos = FileUtils.openSafeFileOutputStream(file); - let serializedData = JSON.stringify(gTrustAnchors, null, ' '); + let serializedData = JSON.stringify(gTrustAnchors, null, " "); fos.write(JSON_HEADER, JSON_HEADER.length); fos.write(serializedData, serializedData.length); diff --git a/security/manager/tools/getHSTSPreloadList.js b/security/manager/tools/getHSTSPreloadList.js index 33a72f13fa90..7bc7c35bef49 100644 --- a/security/manager/tools/getHSTSPreloadList.js +++ b/security/manager/tools/getHSTSPreloadList.js @@ -321,7 +321,7 @@ function output(sortedStatuses, currentList) { // lengths of string literals, and the preload list is large enough // that it runs into said limits. for (let c of status.name) { - writeTo("'" + c + "', ", fos); + writeTo("'" + c + "', ", fos); } writeTo("'\\0',\n", fos); } diff --git a/security/manager/tools/makeCNNICHashes.js b/security/manager/tools/makeCNNICHashes.js index 1b558949e4d9..4752613d1da8 100644 --- a/security/manager/tools/makeCNNICHashes.js +++ b/security/manager/tools/makeCNNICHashes.js @@ -199,7 +199,7 @@ function compareCertificatesByHash(certA, certB) { function certToPEM(cert) { let der = cert.getRawDER({}); - let derString = ''; + let derString = ""; for (let i = 0; i < der.length; i++) { derString += String.fromCharCode(der[i]); } From 526630bfba6b023dbe08d1986c74e77137d64be5 Mon Sep 17 00:00:00 2001 From: Bob Silverberg Date: Tue, 20 Dec 2016 09:24:06 -0500 Subject: [PATCH 83/94] Bug 1324760 - Expose a function that clears plugin data in sanitize.js, r=mak MozReview-Commit-ID: A8AxhyzyEwk --HG-- extra : rebase_source : 6c3c2c09fa011f36f38549d442bd6c85c880b281 --- browser/base/content/sanitize.js | 148 ++++++++++-------- .../test/plugins/browser_clearplugindata.js | 70 ++++----- 2 files changed, 115 insertions(+), 103 deletions(-) diff --git a/browser/base/content/sanitize.js b/browser/base/content/sanitize.js index 5091e4fdc5ed..c45704c8e381 100644 --- a/browser/base/content/sanitize.js +++ b/browser/base/content/sanitize.js @@ -278,79 +278,16 @@ Sanitizer.prototype = { } // Clear plugin data. - // As evidenced in bug 1253204, clearing plugin data can sometimes be - // very, very long, for mysterious reasons. Unfortunately, this is not - // something actionable by Mozilla, so crashing here serves no purpose. - // - // For this reason, instead of waiting for sanitization to always - // complete, we introduce a soft timeout. Once this timeout has - // elapsed, we proceed with the shutdown of Firefox. - let promiseClearPluginCookies; try { - // We don't want to wait for this operation to complete... - promiseClearPluginCookies = this.promiseClearPluginCookies(range); - - // ... at least, not for more than 10 seconds. - yield Promise.race([ - promiseClearPluginCookies, - new Promise(resolve => setTimeout(resolve, 10000 /* 10 seconds */)) - ]); + yield Sanitizer.clearPluginData(range); } catch (ex) { seenException = ex; } - // Detach waiting for plugin cookies to be cleared. - promiseClearPluginCookies.catch(() => { - // If this exception is raised before the soft timeout, it - // will appear in `seenException`. Otherwise, it's too late - // to do anything about it. - }); - if (seenException) { throw seenException; } }), - - promiseClearPluginCookies: Task.async(function* (range) { - const FLAG_CLEAR_ALL = Ci.nsIPluginHost.FLAG_CLEAR_ALL; - let ph = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); - - // Determine age range in seconds. (-1 means clear all.) We don't know - // that range[1] is actually now, so we compute age range based - // on the lower bound. If range results in a negative age, do nothing. - let age = range ? (Date.now() / 1000 - range[0] / 1000000) : -1; - if (!range || age >= 0) { - let tags = ph.getPluginTags(); - for (let tag of tags) { - let refObj = {}; - let probe = ""; - if (/\bFlash\b/.test(tag.name)) { - probe = tag.loaded ? "FX_SANITIZE_LOADED_FLASH" - : "FX_SANITIZE_UNLOADED_FLASH"; - TelemetryStopwatch.start(probe, refObj); - } - try { - let rv = yield new Promise(resolve => - ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, age, resolve) - ); - // If the plugin doesn't support clearing by age, clear everything. - if (rv == Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED) { - yield new Promise(resolve => - ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, -1, resolve) - ); - } - if (probe) { - TelemetryStopwatch.finish(probe, refObj); - } - } catch (ex) { - // Ignore errors from plug-ins - if (probe) { - TelemetryStopwatch.cancel(probe, refObj); - } - } - } - } - }) }, offlineApps: { @@ -705,6 +642,12 @@ Sanitizer.prototype = { yield promiseReady; }) }, + + pluginData: { + clear: Task.async(function* (range) { + yield Sanitizer.clearPluginData(range); + }), + }, } }; @@ -774,6 +717,83 @@ Sanitizer.getClearRange = function(ts) { return [startDate, endDate]; }; +Sanitizer.clearPluginData = Task.async(function* (range) { + // Clear plugin data. + // As evidenced in bug 1253204, clearing plugin data can sometimes be + // very, very long, for mysterious reasons. Unfortunately, this is not + // something actionable by Mozilla, so crashing here serves no purpose. + // + // For this reason, instead of waiting for sanitization to always + // complete, we introduce a soft timeout. Once this timeout has + // elapsed, we proceed with the shutdown of Firefox. + let seenException; + + let promiseClearPluginData = Task.async(function* () { + const FLAG_CLEAR_ALL = Ci.nsIPluginHost.FLAG_CLEAR_ALL; + let ph = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost); + + // Determine age range in seconds. (-1 means clear all.) We don't know + // that range[1] is actually now, so we compute age range based + // on the lower bound. If range results in a negative age, do nothing. + let age = range ? (Date.now() / 1000 - range[0] / 1000000) : -1; + if (!range || age >= 0) { + let tags = ph.getPluginTags(); + for (let tag of tags) { + let refObj = {}; + let probe = ""; + if (/\bFlash\b/.test(tag.name)) { + probe = tag.loaded ? "FX_SANITIZE_LOADED_FLASH" + : "FX_SANITIZE_UNLOADED_FLASH"; + TelemetryStopwatch.start(probe, refObj); + } + try { + let rv = yield new Promise(resolve => + ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, age, resolve) + ); + // If the plugin doesn't support clearing by age, clear everything. + if (rv == Components.results.NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED) { + yield new Promise(resolve => + ph.clearSiteData(tag, null, FLAG_CLEAR_ALL, -1, resolve) + ); + } + if (probe) { + TelemetryStopwatch.finish(probe, refObj); + } + } catch (ex) { + // Ignore errors from plug-ins + if (probe) { + TelemetryStopwatch.cancel(probe, refObj); + } + } + } + } + }); + + try { + // We don't want to wait for this operation to complete... + promiseClearPluginData = promiseClearPluginData(range); + + // ... at least, not for more than 10 seconds. + yield Promise.race([ + promiseClearPluginData, + new Promise(resolve => setTimeout(resolve, 10000 /* 10 seconds */)) + ]); + } catch (ex) { + seenException = ex; + } + + // Detach waiting for plugin data to be cleared. + promiseClearPluginData.catch(() => { + // If this exception is raised before the soft timeout, it + // will appear in `seenException`. Otherwise, it's too late + // to do anything about it. + }); + + if (seenException) { + throw seenException; + } +}); + Sanitizer._prefs = null; Sanitizer.__defineGetter__("prefs", function() { diff --git a/browser/base/content/test/plugins/browser_clearplugindata.js b/browser/base/content/test/plugins/browser_clearplugindata.js index 8f26f42c6eb9..ef19d044b5ef 100644 --- a/browser/base/content/test/plugins/browser_clearplugindata.js +++ b/browser/base/content/test/plugins/browser_clearplugindata.js @@ -46,14 +46,14 @@ add_task(function* () { window.focus(); gTestBrowser = null; }); -}); -add_task(function* () { Services.prefs.setBoolPref("plugins.click_to_play", true); setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in"); setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Second Test Plug-in"); +}); +function* setPrefs(cookies, pluginData) { sanitizer = new Sanitizer(); sanitizer.ignoreTimespan = false; sanitizer.prefDomain = "privacy.cpd."; @@ -61,67 +61,59 @@ add_task(function* () { itemPrefs.setBoolPref("history", false); itemPrefs.setBoolPref("downloads", false); itemPrefs.setBoolPref("cache", false); - itemPrefs.setBoolPref("cookies", true); // plugin data + itemPrefs.setBoolPref("cookies", cookies); itemPrefs.setBoolPref("formdata", false); itemPrefs.setBoolPref("offlineApps", false); itemPrefs.setBoolPref("passwords", false); itemPrefs.setBoolPref("sessions", false); itemPrefs.setBoolPref("siteSettings", false); -}); + itemPrefs.setBoolPref("pluginData", pluginData); +} -add_task(function* () { +function* testClearingData(url) { // Load page to set data for the plugin. gBrowser.selectedTab = gBrowser.addTab(); gTestBrowser = gBrowser.selectedBrowser; - yield promiseTabLoadEvent(gBrowser.selectedTab, testURL1); + yield promiseTabLoadEvent(gBrowser.selectedTab, url); yield promiseUpdatePluginBindings(gTestBrowser); ok(stored(["foo.com", "bar.com", "baz.com", "qux.com"]), "Data stored for sites"); - // Clear 20 seconds ago - let now_uSec = Date.now() * 1000; - sanitizer.range = [now_uSec - 20 * 1000000, now_uSec]; - yield sanitizer.sanitize(); - - ok(stored(["bar.com", "qux.com"]), "Data stored for sites"); - ok(!stored(["foo.com"]), "Data cleared for foo.com"); - ok(!stored(["baz.com"]), "Data cleared for baz.com"); - - // Clear everything - sanitizer.range = null; - yield sanitizer.sanitize(); - - ok(!stored(null), "All data cleared"); - - gBrowser.removeCurrentTab(); - gTestBrowser = null; -}); - -add_task(function* () { - // Load page to set data for the plugin. - gBrowser.selectedTab = gBrowser.addTab(); - gTestBrowser = gBrowser.selectedBrowser; - - yield promiseTabLoadEvent(gBrowser.selectedTab, testURL2); - - yield promiseUpdatePluginBindings(gTestBrowser); - - ok(stored(["foo.com", "bar.com", "baz.com", "qux.com"]), - "Data stored for sites"); - - // Attempt to clear 20 seconds ago. The plugin will throw + // Clear 20 seconds ago. + // In the case of testURL2 the plugin will throw // NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED, which should result in us // clearing all data regardless of age. let now_uSec = Date.now() * 1000; sanitizer.range = [now_uSec - 20 * 1000000, now_uSec]; yield sanitizer.sanitize(); + if (url == testURL1) { + ok(stored(["bar.com", "qux.com"]), "Data stored for sites"); + ok(!stored(["foo.com"]), "Data cleared for foo.com"); + ok(!stored(["baz.com"]), "Data cleared for baz.com"); + + // Clear everything. + sanitizer.range = null; + yield sanitizer.sanitize(); + } + ok(!stored(null), "All data cleared"); gBrowser.removeCurrentTab(); gTestBrowser = null; -}); +} +add_task(function* () { + // Test when santizing cookies. + yield setPrefs(true, false); + yield testClearingData(testURL1); + yield testClearingData(testURL2); + + // Test when santizing pluginData. + yield setPrefs(false, true); + yield testClearingData(testURL1); + yield testClearingData(testURL2); +}); From dea6f824427ffbaf041aec5d8b4af6c6a2e828d7 Mon Sep 17 00:00:00 2001 From: ctai Date: Wed, 21 Dec 2016 20:42:48 +0800 Subject: [PATCH 84/94] Bug 1325053 - Remove media attribute code and set the currentSrc attribute to urlString after type checking in HTMLMediaElement. r=jwwang According to current WhatWG HTML spec, the checking of media attribute in SourceElement is removed. Fix the Gecko code to reflect current spec. MozReview-Commit-ID: 43d9zL9Fvih --HG-- extra : rebase_source : beb87387cb1d55eb42713fbb0d344c0c64a0b6da --- dom/html/HTMLMediaElement.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp index 3ba00179418c..afef50957919 100644 --- a/dom/html/HTMLMediaElement.cpp +++ b/dom/html/HTMLMediaElement.cpp @@ -2163,18 +2163,9 @@ void HTMLMediaElement::LoadFromSourceChildren() return; } } - nsAutoString media; HTMLSourceElement *childSrc = HTMLSourceElement::FromContent(child); - MOZ_ASSERT(childSrc, "Expect child to be HTMLSourceElement"); - if (childSrc && !childSrc->MatchesCurrentMedia()) { - const char16_t* params[] = { media.get(), src.get() }; - ReportLoadError("MediaLoadSourceMediaNotMatched", params, ArrayLength(params)); - DealWithFailedElement(child); - return; - } - LOG(LogLevel::Debug, ("%p Trying load from =%s type=%s media=%s", this, - NS_ConvertUTF16toUTF8(src).get(), NS_ConvertUTF16toUTF8(type).get(), - NS_ConvertUTF16toUTF8(media).get())); + LOG(LogLevel::Debug, ("%p Trying load from =%s type=%s", this, + NS_ConvertUTF16toUTF8(src).get(), NS_ConvertUTF16toUTF8(type).get())); nsCOMPtr uri; NewURIFromString(src, getter_AddRefs(uri)); From 44a9ea25d44feea7681226166bef53fe934f844e Mon Sep 17 00:00:00 2001 From: ctai Date: Wed, 21 Dec 2016 21:34:49 +0800 Subject: [PATCH 85/94] Bug 1325053 - Enable video_008.htm. r=jwwang This bug also fix test case video_008.htm. MozReview-Commit-ID: 1onyh3K1R7v --HG-- extra : rebase_source : 22c86e46ae6d99f038502f9fc020a7a8d2ea5ab9 --- .../embedded-content/media-elements/video_008.htm.ini | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 testing/web-platform/meta/html/semantics/embedded-content/media-elements/video_008.htm.ini diff --git a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/video_008.htm.ini b/testing/web-platform/meta/html/semantics/embedded-content/media-elements/video_008.htm.ini deleted file mode 100644 index b0fec23003c7..000000000000 --- a/testing/web-platform/meta/html/semantics/embedded-content/media-elements/video_008.htm.ini +++ /dev/null @@ -1,5 +0,0 @@ -[video_008.htm] - type: testharness - [HTML5 Media Elements: 'media' attribute] - expected: FAIL - From 6db62e5479360407739d19af31c347ef076d9bfb Mon Sep 17 00:00:00 2001 From: ctai Date: Wed, 21 Dec 2016 23:30:23 +0800 Subject: [PATCH 86/94] Bug 1325053 - Remove test_source_media.html. r=jwwang The media attribute in source element is no longer needed in media element case. Remove related test case. MozReview-Commit-ID: 7ckvEAl6HL4 --HG-- extra : rebase_source : d5346029fb115a0445733c90d43af00fe4919aa8 --- dom/media/test/mochitest.ini | 1 - dom/media/test/test_source_media.html | 71 --------------------------- 2 files changed, 72 deletions(-) delete mode 100644 dom/media/test/test_source_media.html diff --git a/dom/media/test/mochitest.ini b/dom/media/test/mochitest.ini index aec119cb252e..587578d95403 100644 --- a/dom/media/test/mochitest.ini +++ b/dom/media/test/mochitest.ini @@ -882,7 +882,6 @@ skip-if = true # bug 1021673 [test_seekToNextFrame.html] tags=seektonextframe [test_source.html] -[test_source_media.html] [test_source_null.html] [test_source_write.html] [test_standalone.html] diff --git a/dom/media/test/test_source_media.html b/dom/media/test/test_source_media.html deleted file mode 100644 index 0889ef050be1..000000000000 --- a/dom/media/test/test_source_media.html +++ /dev/null @@ -1,71 +0,0 @@ - - - - -Media test: media attribute for the source element. - - - - - - -
-
-
- - From 3b8bb20163d32fd71b3619b120c6cd5aef85807f Mon Sep 17 00:00:00 2001 From: James Cheng Date: Wed, 21 Dec 2016 15:50:04 +0800 Subject: [PATCH 87/94] Bug 1325005 - Preference on media.decoder.recycle.enabled not only for Nightly build. r=jolin MozReview-Commit-ID: Ivsy0Y6ot13 --HG-- extra : rebase_source : 70aefea4badc57f2616e59464c2585b628029cae --- mobile/android/app/mobile.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/mobile/android/app/mobile.js b/mobile/android/app/mobile.js index 55c5f7d19168..3e94fa2209d8 100644 --- a/mobile/android/app/mobile.js +++ b/mobile/android/app/mobile.js @@ -619,10 +619,8 @@ pref("media.video-queue.default-size", 3); // (the most recent) image data. pref("media.video-queue.send-to-compositor-size", 1); -#ifdef NIGHTLY_BUILD // Allow to check if the decoder supports recycling only on Fennec nightly build. pref("media.decoder.recycle.enabled", true); -#endif // Enable the MediaCodec PlatformDecoderModule by default. pref("media.android-media-codec.enabled", true); From a654e25d184cce3562bb8d832e54289b39d7d106 Mon Sep 17 00:00:00 2001 From: Masatoshi Kimura Date: Tue, 15 Nov 2016 06:56:01 +0900 Subject: [PATCH 88/94] Bug 1317569 - Unship d3dcompiler_43.dll. r=glandium MozReview-Commit-ID: DSOOKc94wNV --HG-- extra : rebase_source : 007a4c974ba16f2dc6e77e4b78e919769e0af8d1 extra : source : b448674d91482b214fb2a6c4e83d2e86638f28ef --- browser/config/mozconfigs/win32/common-opt | 1 - browser/config/mozconfigs/win32/debug | 1 - browser/installer/Makefile.in | 3 - browser/installer/package-manifest.in | 4 -- build/moz.configure/old.configure | 1 - gfx/angle/Makefile.in | 4 -- gfx/angle/moz.build | 3 - gfx/angle/src/libANGLE/moz.build | 8 --- gfx/angle/src/libEGL/moz.build | 8 --- gfx/angle/src/libGLESv2/moz.build | 8 --- gfx/gl/moz.build | 2 - old-configure.in | 81 ---------------------- toolkit/library/libxul.mk | 10 --- 13 files changed, 134 deletions(-) diff --git a/browser/config/mozconfigs/win32/common-opt b/browser/config/mozconfigs/win32/common-opt index 0511afdc42da..06147deb887f 100644 --- a/browser/config/mozconfigs/win32/common-opt +++ b/browser/config/mozconfigs/win32/common-opt @@ -4,7 +4,6 @@ ac_add_options --enable-update-channel=${MOZ_UPDATE_CHANNEL} ac_add_options --enable-jemalloc -ac_add_options --enable-require-all-d3dc-versions if [ -f /c/builds/gapi.data ]; then _gapi_keyfile=/c/builds/gapi.data diff --git a/browser/config/mozconfigs/win32/debug b/browser/config/mozconfigs/win32/debug index e8bb581a0703..6b629103fb88 100644 --- a/browser/config/mozconfigs/win32/debug +++ b/browser/config/mozconfigs/win32/debug @@ -6,7 +6,6 @@ ac_add_options --enable-debug ac_add_options --enable-dmd ac_add_options --enable-profiling # needed for --enable-dmd to work on Windows ac_add_options --enable-verify-mar -ac_add_options --enable-require-all-d3dc-versions # Needed to enable breakpad in application.ini export MOZILLA_OFFICIAL=1 diff --git a/browser/installer/Makefile.in b/browser/installer/Makefile.in index 55df797ef7aa..ccfce3cd9af9 100644 --- a/browser/installer/Makefile.in +++ b/browser/installer/Makefile.in @@ -61,9 +61,6 @@ DEFINES += -DMOZ_ANGLE_RENDERER=$(MOZ_ANGLE_RENDERER) ifdef MOZ_D3DCOMPILER_VISTA_DLL DEFINES += -DMOZ_D3DCOMPILER_VISTA_DLL=$(MOZ_D3DCOMPILER_VISTA_DLL) endif -ifdef MOZ_D3DCOMPILER_XP_DLL -DEFINES += -DMOZ_D3DCOMPILER_XP_DLL=$(MOZ_D3DCOMPILER_XP_DLL) -endif endif DEFINES += -DMOZ_CHILD_PROCESS_NAME=$(MOZ_CHILD_PROCESS_NAME) diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index ad09e5244312..143c927a679a 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -589,10 +589,6 @@ #ifdef MOZ_D3DCOMPILER_VISTA_DLL @BINPATH@/@MOZ_D3DCOMPILER_VISTA_DLL@ #endif - -#ifdef MOZ_D3DCOMPILER_XP_DLL -@BINPATH@/@MOZ_D3DCOMPILER_XP_DLL@ -#endif #endif # MOZ_ANGLE_RENDERER ; [Browser Chrome Files] diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure index b32c3f7b79e8..cd6c37cf4c7c 100644 --- a/build/moz.configure/old.configure +++ b/build/moz.configure/old.configure @@ -214,7 +214,6 @@ def old_configure_options(*options): '--enable-readline', '--enable-reflow-perf', '--enable-release', - '--enable-require-all-d3dc-versions', '--enable-safe-browsing', '--enable-sandbox', '--enable-signmar', diff --git a/gfx/angle/Makefile.in b/gfx/angle/Makefile.in index da63a55ca4b3..0394b352b8fa 100755 --- a/gfx/angle/Makefile.in +++ b/gfx/angle/Makefile.in @@ -9,10 +9,6 @@ ifdef MOZ_D3DCOMPILER_VISTA_DLL_PATH cp -fp "$(MOZ_D3DCOMPILER_VISTA_DLL_PATH)" "$(DIST)/bin" endif -ifdef MOZ_D3DCOMPILER_XP_CAB - expand '$(MOZ_D3DCOMPILER_XP_CAB)' -F:$(MOZ_D3DCOMPILER_XP_DLL) '$(DIST)/bin' -endif - endif include $(topsrcdir)/config/rules.mk diff --git a/gfx/angle/moz.build b/gfx/angle/moz.build index 1da8356a51ee..2a40e0ac67cf 100755 --- a/gfx/angle/moz.build +++ b/gfx/angle/moz.build @@ -139,9 +139,6 @@ if CONFIG['GNU_CXX']: '-Wno-shadow-local', ] -if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: - LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']] - DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True DEFINES['_HAS_EXCEPTIONS'] = 0 diff --git a/gfx/angle/src/libANGLE/moz.build b/gfx/angle/src/libANGLE/moz.build index 605f30ded7a8..f9b6b7005c05 100755 --- a/gfx/angle/src/libANGLE/moz.build +++ b/gfx/angle/src/libANGLE/moz.build @@ -352,9 +352,6 @@ if CONFIG['GNU_CXX']: '-Wno-shadow-local', ] -if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: - LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']] - DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True DEFINES['_HAS_EXCEPTIONS'] = 0 @@ -387,11 +384,6 @@ DEFINES['ANGLE_DEFAULT_D3D11'] = "0" if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: OS_LIBS += [ 'd3d9', 'dxguid' ] -else: - EXTRA_DSO_LDOPTS += [ - '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - ] Library('libANGLE') diff --git a/gfx/angle/src/libEGL/moz.build b/gfx/angle/src/libEGL/moz.build index 8e99d44ff713..c1e33c86e261 100755 --- a/gfx/angle/src/libEGL/moz.build +++ b/gfx/angle/src/libEGL/moz.build @@ -32,9 +32,6 @@ if CONFIG['GNU_CXX']: '-Wno-shadow-local', ] -if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: - LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']] - DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True DEFINES['_HAS_EXCEPTIONS'] = 0 @@ -67,11 +64,6 @@ DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1" if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: OS_LIBS += [ 'd3d9', 'dxguid' ] -else: - EXTRA_DSO_LDOPTS += [ - '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - ] GeckoSharedLibrary('libEGL', linkage=None) diff --git a/gfx/angle/src/libGLESv2/moz.build b/gfx/angle/src/libGLESv2/moz.build index 1d40b3b6793a..08c60c213184 100755 --- a/gfx/angle/src/libGLESv2/moz.build +++ b/gfx/angle/src/libGLESv2/moz.build @@ -39,9 +39,6 @@ if CONFIG['GNU_CXX']: '-Wno-shadow-local', ] -if CONFIG['MOZ_DIRECTX_SDK_PATH'] and not CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: - LOCAL_INCLUDES += ['%' + '%s/include/' % CONFIG['MOZ_DIRECTX_SDK_PATH']] - DEFINES['_CRT_SECURE_NO_DEPRECATE'] = True DEFINES['_HAS_EXCEPTIONS'] = 0 @@ -73,11 +70,6 @@ DEFINES['ANGLE_ENABLE_KEYEDMUTEX'] = "1" if CONFIG['MOZ_HAS_WINSDK_WITH_D3D']: OS_LIBS += [ 'd3d9', 'dxguid' ] -else: - EXTRA_DSO_LDOPTS += [ - '\'%s/lib/%s/d3d9.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - '\'%s/lib/%s/dxguid.lib\'' % (CONFIG['MOZ_DIRECTX_SDK_PATH'], CONFIG['MOZ_D3D_CPU_SUFFIX']), - ] GeckoSharedLibrary('libGLESv2', linkage=None) diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build index 596612bb8e50..6f43a495da7c 100644 --- a/gfx/gl/moz.build +++ b/gfx/gl/moz.build @@ -150,8 +150,6 @@ FINAL_LIBRARY = 'xul' if CONFIG['MOZ_D3DCOMPILER_VISTA_DLL']: DEFINES['MOZ_D3DCOMPILER_VISTA_DLL'] = CONFIG['MOZ_D3DCOMPILER_VISTA_DLL'] -if CONFIG['MOZ_D3DCOMPILER_XP_DLL']: - DEFINES['MOZ_D3DCOMPILER_XP_DLL'] = CONFIG['MOZ_D3DCOMPILER_XP_DLL'] CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['TK_CFLAGS'] diff --git a/old-configure.in b/old-configure.in index 932eae28b491..2d8714d756a1 100644 --- a/old-configure.in +++ b/old-configure.in @@ -3273,9 +3273,6 @@ MOZ_D3D_CPU_SUFFIX= MOZ_HAS_WINSDK_WITH_D3D= MOZ_D3DCOMPILER_VISTA_DLL= MOZ_D3DCOMPILER_VISTA_DLL_PATH= -MOZ_DIRECTX_SDK_PATH= -MOZ_D3DCOMPILER_XP_DLL= -MOZ_D3DCOMPILER_XP_CAB= if test "$COMPILE_ENVIRONMENT" ; then case "$target_os" in @@ -3294,11 +3291,6 @@ x86_64) ;; esac -MOZ_ARG_ENABLE_BOOL(require-all-d3dc-versions, -[ --enable-require-all-d3dc-versions Require all versions of the D3D compiler needed for supported Windows systems.], - MOZ_REQUIRE_ALL_D3DCS=1, - MOZ_REQUIRE_ALL_D3DCS=) - # This is potentially set in external mozconfig files; if it's set, # then the build exposes the "webgl" context name, which is reserved # for conformant implementations. @@ -3356,89 +3348,19 @@ if test -n "$MOZ_ANGLE_RENDERER"; then MOZ_CHECK_HEADER(d3d10.h, MOZ_HAS_WINSDK_WITH_D3D=1) fi - ###################################### - # Find _43 for use by XP. - - if test "$HAVE_64BIT_BUILD"; then - AC_MSG_RESULT([We are building a 64-bit binary, skip checking d3dcompiler_43.]) - else - # Get the SDK path from the registry. - # First try to get the June 2010 SDK - MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK (June 2010)' | head -n 1` - if test -z "$MOZ_DIRECTX_SDK_REG_KEY" ; then - # Otherwise just take whatever comes first - MOZ_DIRECTX_SDK_REG_KEY=`reg query 'HKLM\Software\Microsoft\DirectX' //s | grep 'Microsoft DirectX SDK' | head -n 1` - fi - MOZ_DIRECTX_SDK_PATH=`reg query "$MOZ_DIRECTX_SDK_REG_KEY" //v InstallPath | grep REG_SZ | sed 's/.*\([[a-zA-Z]]\)\\:\\\\/\\1\\:\\\\/' | sed 's,\\\\,/,g'` - - if test -n "$MOZ_DIRECTX_SDK_PATH" && - test -f "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/dxguid.lib ; then - AC_MSG_RESULT([Found DirectX SDK via registry, using $MOZ_DIRECTX_SDK_PATH]) - else - AC_MSG_RESULT([DirectX SDK not found.]) - MOZ_DIRECTX_SDK_PATH= - fi - - # Check that our DirectX SDK is acceptable. - if test -n "$MOZ_DIRECTX_SDK_PATH"; then - if test -n "`echo $MOZ_DIRECTX_SDK_REG_KEY | grep 'February 2010'`" ; then - AC_MSG_RESULT([Found the February 2010 DirectX SDK, which is unacceptable to ANGLE.]) - MOZ_DIRECTX_SDK_PATH= - fi - fi - - if test -n "$MOZ_DIRECTX_SDK_PATH"; then - # Find a D3D compiler DLL in the DirectX SDK, if we didn't find one already. - # Get the SDK numeric version (e.g. 43) by looking at the dependencies of d3dx9.lib - MOZ_D3DX9_VERSION=`dumpbin //headers "$MOZ_DIRECTX_SDK_PATH"/lib/$MOZ_D3D_CPU_SUFFIX/d3dx9.lib | egrep d3dx9_[[0-9]][[0-9]]\.dll | head -n1 | sed 's/.*\([[0-9]][[0-9]]\).*/\\1/g'` - - if test -n "$MOZ_D3DX9_VERSION" ; then - MOZ_D3DCOMPILER_XP_CAB=`find "$MOZ_DIRECTX_SDK_PATH"/Redist -name *D3DCompiler_${MOZ_D3DX9_VERSION}_${MOZ_D3D_CPU_SUFFIX}.cab | head -n1` - - if test -n "$MOZ_D3DCOMPILER_XP_CAB"; then - MOZ_D3DCOMPILER_XP_DLL=D3DCompiler_$MOZ_D3DX9_VERSION.dll - else - AC_MSG_RESULT([Couldn't find a CAB containing the D3D compiler DLL.]) - AC_MSG_ERROR([DirectX SDK at "$MOZ_DIRECTX_SDK_PATH" appears broken.]) - MOZ_DIRECTX_SDK_PATH= - fi - else - AC_MSG_RESULT([Couldn't determine the D3DX9 version for the DirectX SDK.]) - MOZ_DIRECTX_SDK_PATH= - fi - else - AC_MSG_RESULT([Couldn't find an acceptable DirectX SDK for ANGLE, needed for d3dcompiler_43.]) - fi - fi - ###################################### # Check that we found what we needed. MOZ_FOUND_A_D3D_COMPILER= - MOZ_FOUND_BOTH_D3D_COMPILERS=1 if test -n "$MOZ_D3DCOMPILER_VISTA_DLL"; then MOZ_FOUND_A_D3D_COMPILER=1 AC_MSG_RESULT([Found d3dcompiler DLL for Vista+: $MOZ_D3DCOMPILER_VISTA_DLL]) - else - MOZ_FOUND_BOTH_D3D_COMPILERS= - fi - - if test -n "$MOZ_D3DCOMPILER_XP_DLL"; then - MOZ_FOUND_A_D3D_COMPILER=1 - AC_MSG_RESULT([Found d3dcompiler DLL for XP: $MOZ_D3DCOMPILER_XP_DLL]) - else - MOZ_FOUND_BOTH_D3D_COMPILERS= fi if test -z "$CROSS_COMPILE"; then if test -z "MOZ_FOUND_A_D3D_COMPILER"; then AC_MSG_ERROR([Couldn't find an acceptable D3D compiler DLL.]) fi - - if test -n "$MOZ_REQUIRE_ALL_D3DCS" -a -z "$MOZ_FOUND_BOTH_D3D_COMPILERS"; then - AC_MSG_ERROR([Both D3D compilers _43 and _46+ are required by --enable-require-d3d-compilers.]) - AC_MSG_ERROR([ Install Windows SDK 8.0+, as well as DirectX SDK (June 2010 version or newer), or reconfigure without this flag.]) - fi fi fi # MOZ_ANGLE_RENDERER @@ -5266,9 +5188,6 @@ AC_SUBST(MOZ_D3D_CPU_SUFFIX) AC_SUBST(MOZ_HAS_WINSDK_WITH_D3D) AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL) AC_SUBST(MOZ_D3DCOMPILER_VISTA_DLL_PATH) -AC_SUBST(MOZ_DIRECTX_SDK_PATH) -AC_SUBST(MOZ_D3DCOMPILER_XP_DLL) -AC_SUBST(MOZ_D3DCOMPILER_XP_CAB) AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS) AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS) diff --git a/toolkit/library/libxul.mk b/toolkit/library/libxul.mk index d918d9c84ce4..9e7e8beee93c 100644 --- a/toolkit/library/libxul.mk +++ b/toolkit/library/libxul.mk @@ -16,16 +16,6 @@ EXTRA_DEPS += symverscript endif endif -ifdef MOZ_WEBRTC -ifeq (WINNT,$(OS_TARGET)) -ifndef MOZ_HAS_WINSDK_WITH_D3D -OS_LDFLAGS += \ - -LIBPATH:'$(MOZ_DIRECTX_SDK_PATH)/lib/$(MOZ_D3D_CPU_SUFFIX)' \ - $(NULL) -endif -endif -endif - # Generate GDB pretty printer-autoload files only on Linux. OSX's GDB is # too old to support Python pretty-printers; if this changes, we could make # this 'ifdef GNU_CC'. From 0b4ad7bfb1e104dc44866459f3d207d219db419a Mon Sep 17 00:00:00 2001 From: Masatoshi Kimura Date: Tue, 15 Nov 2016 07:02:49 +0900 Subject: [PATCH 89/94] Bug 1317569 - Stop testing d3dcompiler_43.dll during EGL initialization. r=jrmuizel MozReview-Commit-ID: BDtgOD4Elba --HG-- extra : rebase_source : cea0c8f56084822a03972bca61ae9a6f3566ad54 extra : source : 18477e73fc758633d7a87bfe57d951a87525eede --- gfx/gl/GLLibraryEGL.cpp | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp index 130bce119152..250c167e19db 100644 --- a/gfx/gl/GLLibraryEGL.cpp +++ b/gfx/gl/GLLibraryEGL.cpp @@ -321,10 +321,10 @@ GLLibraryEGL::EnsureInitialized(bool forceAccel, nsACString* const out_failureId // Also note that we intentionally leak the libs we load. do { - // Windows 8.1 has d3dcompiler_47.dll in the system directory. + // Windows 8.1+ has d3dcompiler_47.dll in the system directory. // Try it first. Note that _46 will never be in the system - // directory and we ship with at least _43. So there is no point - // trying _46 and _43 in the system directory. + // directory. So there is no point trying _46 in the system + // directory. if (LoadLibrarySystem32(L"d3dcompiler_47.dll")) break; @@ -334,11 +334,6 @@ GLLibraryEGL::EnsureInitialized(bool forceAccel, nsACString* const out_failureId break; #endif -#ifdef MOZ_D3DCOMPILER_XP_DLL - if (LoadLibraryForEGLOnWindows(NS_LITERAL_STRING(NS_STRINGIFY(MOZ_D3DCOMPILER_XP_DLL)))) - break; -#endif - MOZ_ASSERT(false, "d3dcompiler DLL loading failed."); } while (false); From 2351d9ac6c4b37c1826db1fc06229c3f9d244a17 Mon Sep 17 00:00:00 2001 From: Wei-Cheng Pan Date: Fri, 4 Nov 2016 18:13:13 +0800 Subject: [PATCH 90/94] Bug 1323946 - Use MOZ_MUST_USE for netwerk/protocol/res r=valentin MozReview-Commit-ID: 7tcOml6jKdj --HG-- extra : rebase_source : 76cae2125b93ad68871408187f04ef02bcc228c6 --- chrome/nsChromeRegistryChrome.cpp | 7 ++++++- layout/style/nsLayoutStylesheetCache.cpp | 5 ++++- .../protocol/res/ExtensionProtocolHandler.h | 12 +++++++----- .../protocol/res/SubstitutingProtocolHandler.h | 18 +++++++++--------- .../res/nsISubstitutingProtocolHandler.idl | 8 ++++---- netwerk/protocol/res/nsResProtocolHandler.h | 12 ++++++------ 6 files changed, 36 insertions(+), 26 deletions(-) diff --git a/chrome/nsChromeRegistryChrome.cpp b/chrome/nsChromeRegistryChrome.cpp index 037e86631780..c8a6bce81360 100644 --- a/chrome/nsChromeRegistryChrome.cpp +++ b/chrome/nsChromeRegistryChrome.cpp @@ -987,5 +987,10 @@ nsChromeRegistryChrome::ManifestResource(ManifestProcessingContext& cx, int line return; } - rph->SetSubstitution(host, resolved); + rv = rph->SetSubstitution(host, resolved); + if (NS_FAILED(rv)) { + LogMessageWithContext(cx.GetManifestURI(), lineno, nsIScriptError::warningFlag, + "Warning: cannot set substitution for '%s'.", + uri); + } } diff --git a/layout/style/nsLayoutStylesheetCache.cpp b/layout/style/nsLayoutStylesheetCache.cpp index a65a7ec29bbc..b259b1f121a9 100644 --- a/layout/style/nsLayoutStylesheetCache.cpp +++ b/layout/style/nsLayoutStylesheetCache.cpp @@ -599,7 +599,10 @@ AnnotateCrashReport(nsIURI* aURI) annotation.AppendLiteral("(ResolveURI failed)\n"); } else { nsAutoCString resolvedSpec; - handler->ResolveURI(aURI, resolvedSpec); + nsresult rv = handler->ResolveURI(aURI, resolvedSpec); + if (NS_FAILED(rv)) { + annotation.AppendPrintf("(ResolveURI failed with 0x%08x)\n", rv); + } annotation.Append(NS_ConvertUTF8toUTF16(resolvedSpec)); annotation.Append('\n'); } diff --git a/netwerk/protocol/res/ExtensionProtocolHandler.h b/netwerk/protocol/res/ExtensionProtocolHandler.h index 081f8cd62478..ebafd68d34dd 100644 --- a/netwerk/protocol/res/ExtensionProtocolHandler.h +++ b/netwerk/protocol/res/ExtensionProtocolHandler.h @@ -28,12 +28,14 @@ public: protected: ~ExtensionProtocolHandler() {} - bool ResolveSpecialCases(const nsACString& aHost, - const nsACString& aPath, - const nsACString& aPathname, - nsACString& aResult) override; + MOZ_MUST_USE bool ResolveSpecialCases(const nsACString& aHost, + const nsACString& aPath, + const nsACString& aPathname, + nsACString& aResult) override; - virtual nsresult SubstituteChannel(nsIURI* uri, nsILoadInfo* aLoadInfo, nsIChannel** result) override; + virtual MOZ_MUST_USE nsresult SubstituteChannel(nsIURI* uri, + nsILoadInfo* aLoadInfo, + nsIChannel** result) override; }; } // namespace net diff --git a/netwerk/protocol/res/SubstitutingProtocolHandler.h b/netwerk/protocol/res/SubstitutingProtocolHandler.h index a59c5595d528..c70af05bdd30 100644 --- a/netwerk/protocol/res/SubstitutingProtocolHandler.h +++ b/netwerk/protocol/res/SubstitutingProtocolHandler.h @@ -37,17 +37,17 @@ public: bool HasSubstitution(const nsACString& aRoot) const { return mSubstitutions.Get(aRoot, nullptr); } - nsresult CollectSubstitutions(InfallibleTArray& aResources); + MOZ_MUST_USE nsresult CollectSubstitutions(InfallibleTArray& aResources); protected: virtual ~SubstitutingProtocolHandler() {} void ConstructInternal(); - nsresult SendSubstitution(const nsACString& aRoot, nsIURI* aBaseURI); + MOZ_MUST_USE nsresult SendSubstitution(const nsACString& aRoot, nsIURI* aBaseURI); // Override this in the subclass to try additional lookups after checking // mSubstitutions. - virtual nsresult GetSubstitutionInternal(const nsACString& aRoot, nsIURI** aResult) + virtual MOZ_MUST_USE nsresult GetSubstitutionInternal(const nsACString& aRoot, nsIURI** aResult) { *aResult = nullptr; return NS_ERROR_NOT_AVAILABLE; @@ -55,17 +55,17 @@ protected: // Override this in the subclass to check for special case when resolving URIs // _before_ checking substitutions. - virtual bool ResolveSpecialCases(const nsACString& aHost, - const nsACString& aPath, - const nsACString& aPathname, - nsACString& aResult) + virtual MOZ_MUST_USE bool ResolveSpecialCases(const nsACString& aHost, + const nsACString& aPath, + const nsACString& aPathname, + nsACString& aResult) { return false; } // Override this in the subclass to check for special case when opening // channels. - virtual nsresult SubstituteChannel(nsIURI* uri, nsILoadInfo* aLoadInfo, nsIChannel** result) + virtual MOZ_MUST_USE nsresult SubstituteChannel(nsIURI* uri, nsILoadInfo* aLoadInfo, nsIChannel** result) { return NS_OK; } @@ -97,7 +97,7 @@ class SubstitutingURL : public nsStandardURL public: SubstitutingURL() : nsStandardURL(true) {} virtual nsStandardURL* StartClone(); - virtual nsresult EnsureFile(); + virtual MOZ_MUST_USE nsresult EnsureFile(); NS_IMETHOD GetClassIDNoAlloc(nsCID *aCID); }; diff --git a/netwerk/protocol/res/nsISubstitutingProtocolHandler.idl b/netwerk/protocol/res/nsISubstitutingProtocolHandler.idl index e2c816a85577..e999ff2c156e 100644 --- a/netwerk/protocol/res/nsISubstitutingProtocolHandler.idl +++ b/netwerk/protocol/res/nsISubstitutingProtocolHandler.idl @@ -21,19 +21,19 @@ interface nsISubstitutingProtocolHandler : nsIProtocolHandler * A root key should always be lowercase; however, this may not be * enforced. */ - void setSubstitution(in ACString root, in nsIURI baseURI); + [must_use] void setSubstitution(in ACString root, in nsIURI baseURI); /** * Gets the substitution for the root key. * * @throws NS_ERROR_NOT_AVAILABLE if none exists. */ - nsIURI getSubstitution(in ACString root); + [must_use] nsIURI getSubstitution(in ACString root); /** * Returns TRUE if the substitution exists and FALSE otherwise. */ - boolean hasSubstitution(in ACString root); + [must_use] boolean hasSubstitution(in ACString root); /** * Utility function to resolve a substituted URI. A resolved URI is not @@ -42,5 +42,5 @@ interface nsISubstitutingProtocolHandler : nsIProtocolHandler * * @throws NS_ERROR_NOT_AVAILABLE if resURI.host() is an unknown root key. */ - AUTF8String resolveURI(in nsIURI resURI); + [must_use] AUTF8String resolveURI(in nsIURI resURI); }; diff --git a/netwerk/protocol/res/nsResProtocolHandler.h b/netwerk/protocol/res/nsResProtocolHandler.h index 00f8d1b13278..cfda9ee46bf7 100644 --- a/netwerk/protocol/res/nsResProtocolHandler.h +++ b/netwerk/protocol/res/nsResProtocolHandler.h @@ -29,7 +29,7 @@ public: /* aEnforceFileOrJar = */ false) {} - nsresult Init(); + MOZ_MUST_USE nsresult Init(); NS_IMETHOD SetSubstitution(const nsACString& aRoot, nsIURI* aBaseURI) override; @@ -49,13 +49,13 @@ public: } protected: - nsresult GetSubstitutionInternal(const nsACString& aRoot, nsIURI** aResult) override; + MOZ_MUST_USE nsresult GetSubstitutionInternal(const nsACString& aRoot, nsIURI** aResult) override; virtual ~nsResProtocolHandler() {} - bool ResolveSpecialCases(const nsACString& aHost, - const nsACString& aPath, - const nsACString& aPathname, - nsACString& aResult) override; + MOZ_MUST_USE bool ResolveSpecialCases(const nsACString& aHost, + const nsACString& aPath, + const nsACString& aPathname, + nsACString& aResult) override; private: nsCString mAppURI; From 57a8e37fefa14909d0e38ec01576d37c1fd554ea Mon Sep 17 00:00:00 2001 From: Makoto Kato Date: Wed, 21 Dec 2016 14:44:11 +0900 Subject: [PATCH 91/94] Bug 1324994 - Add Linux/aarch64 target to rust.configure. r=glandium MozReview-Commit-ID: 2St6G9FiOHz --HG-- extra : rebase_source : 62c3e963035972d02c4e6f0e8b7770ded25e42d1 --- build/moz.configure/rust.configure | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build/moz.configure/rust.configure b/build/moz.configure/rust.configure index e1a7c82c299d..26b7d058a7ad 100644 --- a/build/moz.configure/rust.configure +++ b/build/moz.configure/rust.configure @@ -125,6 +125,7 @@ def rust_triple_alias(host_or_target): ('x86', 'Linux'): 'i686-unknown-linux-gnu', # Linux ('x86_64', 'Linux'): 'x86_64-unknown-linux-gnu', + ('aarch64', 'Linux'): 'aarch64-unknown-linux-gnu', # OS X and iOS ('x86', 'OSX'): 'i686-apple-darwin', ('x86', 'iOS'): 'i386-apple-ios', @@ -132,6 +133,7 @@ def rust_triple_alias(host_or_target): # Android ('x86', 'Android'): 'i686-linux-android', ('arm', 'Android'): 'armv7-linux-androideabi', + ('aarch64', 'Android'): 'aarch64-linux-android', # Windows # XXX better detection of CXX needed here, to figure out whether # we need i686-pc-windows-gnu instead, since mingw32 builds work. From c731ba15684578dae2caa0d65c9a5fad1db979f5 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru Date: Mon, 19 Dec 2016 15:28:16 +0100 Subject: [PATCH 92/94] Bug 1324382 - Update mach to download clang-format 4.0 r=gps MozReview-Commit-ID: INeMSbEloA3 --HG-- extra : rebase_source : 35dc4214a243d87e35b769f5a624b0f30bb9f208 --- tools/mach_commands.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/mach_commands.py b/tools/mach_commands.py index 898073bb6384..16691ee71260 100644 --- a/tools/mach_commands.py +++ b/tools/mach_commands.py @@ -231,12 +231,11 @@ class FormatProvider(MachCommandBase): import urllib2 plat = platform.system() - fmt = plat.lower() + "/clang-format-3.5" - fmt_diff = "clang-format-diff-3.5" + fmt = plat.lower() + "/clang-format-4.0" + fmt_diff = "clang-format-diff-4.0" - # We are currently using a modified version of clang-format hosted on people.mozilla.org. - # This is a temporary work around until we upstream the necessary changes and we can use - # a system version of clang-format. See bug 961541. + # We are currently using an unmodified snapshot of upstream clang-format. + # This is a temporary work around until clang 4.0 has been released with our changes. if plat == "Windows": fmt += ".exe" else: @@ -267,7 +266,7 @@ class FormatProvider(MachCommandBase): "--include", "glob:**.c", "--include", "glob:**.cpp", "--include", "glob:**.h", "--exclude", "listfile:.clang-format-ignore"], stdout=PIPE) else: - git_process = Popen(["git", "diff", "-U0", "HEAD^"], stdout=PIPE) + git_process = Popen(["git", "diff", "--no-color", "-U0", "HEAD^"], stdout=PIPE) try: diff_process = Popen(["filterdiff", "--include=*.h", "--include=*.cpp", "--exclude-from-file=.clang-format-ignore"], @@ -287,9 +286,10 @@ class FormatProvider(MachCommandBase): return cf_process.communicate()[0] def locate_or_fetch(self, root): + import urllib2 target = os.path.join(self._mach_context.state_dir, os.path.basename(root)) if not os.path.exists(target): - site = "https://people.mozilla.org/~ajones/clang-format/" + site = "https://people.mozilla.org/~sledru/clang-format/" if self.prompt and raw_input("Download clang-format executables from {0} (yN)? ".format(site)).lower() != 'y': print("Download aborted.") return 1 From 983701185045ecacf489b645454b13f9a22c5722 Mon Sep 17 00:00:00 2001 From: Shing Lyu Date: Wed, 14 Dec 2016 15:44:39 +0800 Subject: [PATCH 93/94] Bug 1323399 - Fix the stylo-vs-gecko reftest harness. r=heycam MozReview-Commit-ID: 7htc3KOGGl6 --HG-- extra : rebase_source : 5be95cd80d3997e5e3146e98c50b4395679c8f00 --- layout/tools/reftest/reftest.jsm | 22 +++++++++++++++++-- .../configs/unittests/linux_unittest.py | 3 ++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/layout/tools/reftest/reftest.jsm b/layout/tools/reftest/reftest.jsm index a4b0860f4179..9f878e941f6e 100644 --- a/layout/tools/reftest/reftest.jsm +++ b/layout/tools/reftest/reftest.jsm @@ -55,6 +55,7 @@ const FOCUS_FILTER_ALL_TESTS = "all"; const FOCUS_FILTER_NEEDS_FOCUS_TESTS = "needs-focus"; const FOCUS_FILTER_NON_NEEDS_FOCUS_TESTS = "non-needs-focus"; var gFocusFilterMode = FOCUS_FILTER_ALL_TESTS; +var gCompareStyloToGecko = false; // "" const BLANK_URL_FOR_CLEARING = "data:text/html;charset=UTF-8,%3C%21%2D%2DCLEAR%2D%2D%3E"; @@ -410,6 +411,12 @@ function InitAndStartRefTests() gFocusFilterMode = prefs.getCharPref("reftest.focusFilterMode"); } catch(e) {} +#ifdef MOZ_STYLO + try { + gCompareStyloToGecko = prefs.getBoolPref("reftest.compareStyloToGecko"); + } catch(e) {} +#endif + gWindowUtils = gContainingWindow.QueryInterface(CI.nsIInterfaceRequestor).getInterface(CI.nsIDOMWindowUtils); if (!gWindowUtils || !gWindowUtils.compareCanvases) throw "nsIDOMWindowUtils inteface missing"; @@ -1313,10 +1320,21 @@ function StartCurrentURI(aState) RestoreChangedPreferences(); + var prefs = Components.classes["@mozilla.org/preferences-service;1"]. + getService(Components.interfaces.nsIPrefBranch); + + if (gCompareStyloToGecko) { + if (gState == 2){ + logger.info("Disabling Servo-backed style system"); + prefs.setBoolPref('layout.css.servo.enabled', false); + } else { + logger.info("Enabling Servo-backed style system"); + prefs.setBoolPref('layout.css.servo.enabled', true); + } + } + var prefSettings = gURLs[0]["prefSettings" + aState]; if (prefSettings.length > 0) { - var prefs = Components.classes["@mozilla.org/preferences-service;1"]. - getService(Components.interfaces.nsIPrefBranch); var badPref = undefined; try { prefSettings.forEach(function(ps) { diff --git a/testing/mozharness/configs/unittests/linux_unittest.py b/testing/mozharness/configs/unittests/linux_unittest.py index e1f554c7faf2..a3ad095e3fad 100644 --- a/testing/mozharness/configs/unittests/linux_unittest.py +++ b/testing/mozharness/configs/unittests/linux_unittest.py @@ -226,7 +226,8 @@ config = { "tests": ["tests/reftest/tests/layout/reftests/reftest.list"]}, "reftest-stylo": { "options": ["--suite=reftest", - "--disable-e10s"], + "--disable-e10s", + "--setpref=reftest.compareStyloToGecko=true"], "tests": ["tests/reftest/tests/layout/reftests/reftest-stylo.list"], }, }, From 6fd5e31454878f1541b31a044ef732f9b1edc20a Mon Sep 17 00:00:00 2001 From: Mark Banner Date: Wed, 7 Dec 2016 13:45:56 +0000 Subject: [PATCH 94/94] Bug 1308420 - Move nsBrowserGlue.js _handleURLBarTelemetry() into BrowserUsageTelemetry. r=mak MozReview-Commit-ID: AYNeNyoCwoG --HG-- extra : rebase_source : 80a6a958bc77c1a2d54315fade912ec9c4a0bea1 --- browser/components/nsBrowserGlue.js | 63 ------------ browser/modules/BrowserUsageTelemetry.jsm | 95 ++++++++++++++++++- .../test/browser_UsageTelemetry_content.js | 1 + ...rowser_UsageTelemetry_content_aboutHome.js | 1 + .../test/browser_UsageTelemetry_urlbar.js | 77 +++++++++++++++ browser/modules/test/head.js | 3 + toolkit/components/telemetry/Histograms.json | 2 +- 7 files changed, 177 insertions(+), 65 deletions(-) diff --git a/browser/components/nsBrowserGlue.js b/browser/components/nsBrowserGlue.js index 433510e30360..e06357185aac 100644 --- a/browser/components/nsBrowserGlue.js +++ b/browser/components/nsBrowserGlue.js @@ -363,9 +363,6 @@ BrowserGlue.prototype = { } }); break; - case "autocomplete-did-enter-text": - this._handleURLBarTelemetry(subject.QueryInterface(Ci.nsIAutoCompleteInput)); - break; case "test-initialize-sanitizer": this._sanitizer.onStartup(); break; @@ -375,64 +372,6 @@ BrowserGlue.prototype = { } }, - _handleURLBarTelemetry(input) { - if (!input || - input.id != "urlbar" || - input.inPrivateContext || - input.popup.selectedIndex < 0) { - return; - } - let controller = - input.popup.view.QueryInterface(Ci.nsIAutoCompleteController); - let idx = input.popup.selectedIndex; - let value = controller.getValueAt(idx); - let action = input._parseActionUrl(value); - let actionType; - if (action) { - actionType = - action.type == "searchengine" && action.params.searchSuggestion ? - "searchsuggestion" : - action.type; - } - if (!actionType) { - let styles = new Set(controller.getStyleAt(idx).split(/\s+/)); - let style = ["autofill", "tag", "bookmark"].find(s => styles.has(s)); - actionType = style || "history"; - } - - Services.telemetry - .getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX") - .add(idx); - - // Ideally this would be a keyed histogram and we'd just add(actionType), - // but keyed histograms aren't currently shown on the telemetry dashboard - // (bug 1151756). - // - // You can add values but don't change any of the existing values. - // Otherwise you'll break our data. - let buckets = { - autofill: 0, - bookmark: 1, - history: 2, - keyword: 3, - searchengine: 4, - searchsuggestion: 5, - switchtab: 6, - tag: 7, - visiturl: 8, - remotetab: 9, - extension: 10, - }; - if (actionType in buckets) { - Services.telemetry - .getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE") - .add(buckets[actionType]); - } else { - Cu.reportError("Unknown FX_URLBAR_SELECTED_RESULT_TYPE type: " + - actionType); - } - }, - // initialization (called on application startup) _init: function BG__init() { let os = Services.obs; @@ -469,7 +408,6 @@ BrowserGlue.prototype = { os.addObserver(this, "restart-in-safe-mode", false); os.addObserver(this, "flash-plugin-hang", false); os.addObserver(this, "xpi-signature-changed", false); - os.addObserver(this, "autocomplete-did-enter-text", false); if (AppConstants.NIGHTLY_BUILD) { os.addObserver(this, AddonWatcher.TOPIC_SLOW_ADDON_DETECTED, false); @@ -524,7 +462,6 @@ BrowserGlue.prototype = { os.removeObserver(this, "browser-search-engine-modified"); os.removeObserver(this, "flash-plugin-hang"); os.removeObserver(this, "xpi-signature-changed"); - os.removeObserver(this, "autocomplete-did-enter-text"); }, _onAppDefaults: function BG__onAppDefaults() { diff --git a/browser/modules/BrowserUsageTelemetry.jsm b/browser/modules/BrowserUsageTelemetry.jsm index cc1745a6b08c..fc8b1c2b1824 100644 --- a/browser/modules/BrowserUsageTelemetry.jsm +++ b/browser/modules/BrowserUsageTelemetry.jsm @@ -5,7 +5,7 @@ "use strict"; -this.EXPORTED_SYMBOLS = ["BrowserUsageTelemetry"]; +this.EXPORTED_SYMBOLS = ["BrowserUsageTelemetry", "URLBAR_SELECTED_RESULT_TYPES"]; const {classes: Cc, interfaces: Ci, utils: Cu} = Components; @@ -23,6 +23,7 @@ const WINDOWS_RESTORED_TOPIC = "sessionstore-windows-restored"; const TAB_RESTORING_TOPIC = "SSTabRestoring"; const TELEMETRY_SUBSESSIONSPLIT_TOPIC = "internal-telemetry-after-subsession-split"; const DOMWINDOW_OPENED_TOPIC = "domwindowopened"; +const AUTOCOMPLETE_ENTER_TEXT_TOPIC = "autocomplete-did-enter-text"; // Probe names. const MAX_TAB_COUNT_SCALAR_NAME = "browser.engagement.max_concurrent_tab_count"; @@ -48,6 +49,24 @@ const KNOWN_ONEOFF_SOURCES = [ "unknown", // Edge case: this is the searchbar (see bug 1195733 comment 7). ]; +/** + * The buckets used for logging telemetry to the FX_URLBAR_SELECTED_RESULT_TYPE + * histogram. + */ +const URLBAR_SELECTED_RESULT_TYPES = { + autofill: 0, + bookmark: 1, + history: 2, + keyword: 3, + searchengine: 4, + searchsuggestion: 5, + switchtab: 6, + tag: 7, + visiturl: 8, + remotetab: 9, + extension: 10, +}; + function getOpenTabsAndWinsCounts() { let tabCount = 0; let winCount = 0; @@ -187,9 +206,82 @@ let URICountListener = { Ci.nsISupportsWeakReference]), }; +let urlbarListener = { + init() { + Services.obs.addObserver(this, AUTOCOMPLETE_ENTER_TEXT_TOPIC, true); + }, + + uninit() { + Services.obs.removeObserver(this, AUTOCOMPLETE_ENTER_TEXT_TOPIC, true); + }, + + observe(subject, topic, data) { + switch (topic) { + case AUTOCOMPLETE_ENTER_TEXT_TOPIC: + this._handleURLBarTelemetry(subject.QueryInterface(Ci.nsIAutoCompleteInput)); + break; + } + }, + + /** + * Used to log telemetry when the user enters text in the urlbar. + * + * @param {nsIAutoCompleteInput} input The autocomplete element where the + * text was entered. + */ + _handleURLBarTelemetry(input) { + if (!input || + input.id != "urlbar" || + input.inPrivateContext || + input.popup.selectedIndex < 0) { + return; + } + let controller = + input.popup.view.QueryInterface(Ci.nsIAutoCompleteController); + let idx = input.popup.selectedIndex; + let value = controller.getValueAt(idx); + let action = input._parseActionUrl(value); + let actionType; + if (action) { + actionType = + action.type == "searchengine" && action.params.searchSuggestion ? + "searchsuggestion" : + action.type; + } + if (!actionType) { + let styles = new Set(controller.getStyleAt(idx).split(/\s+/)); + let style = ["autofill", "tag", "bookmark"].find(s => styles.has(s)); + actionType = style || "history"; + } + + Services.telemetry + .getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX") + .add(idx); + + // Ideally this would be a keyed histogram and we'd just add(actionType), + // but keyed histograms aren't currently shown on the telemetry dashboard + // (bug 1151756). + // + // You can add values but don't change any of the existing values. + // Otherwise you'll break our data. + if (actionType in URLBAR_SELECTED_RESULT_TYPES) { + Services.telemetry + .getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE") + .add(URLBAR_SELECTED_RESULT_TYPES[actionType]); + } else { + Cu.reportError("Unknown FX_URLBAR_SELECTED_RESULT_TYPE type: " + + actionType); + } + }, + + QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, + Ci.nsISupportsWeakReference]), +}; + let BrowserUsageTelemetry = { init() { Services.obs.addObserver(this, WINDOWS_RESTORED_TOPIC, false); + urlbarListener.init(); }, /** @@ -211,6 +303,7 @@ let BrowserUsageTelemetry = { Services.obs.removeObserver(this, DOMWINDOW_OPENED_TOPIC, false); Services.obs.removeObserver(this, TELEMETRY_SUBSESSIONSPLIT_TOPIC, false); Services.obs.removeObserver(this, WINDOWS_RESTORED_TOPIC, false); + urlbarListener.uninit(); }, observe(subject, topic, data) { diff --git a/browser/modules/test/browser_UsageTelemetry_content.js b/browser/modules/test/browser_UsageTelemetry_content.js index 35c6b5a6dd54..8ba285706be6 100644 --- a/browser/modules/test/browser_UsageTelemetry_content.js +++ b/browser/modules/test/browser_UsageTelemetry_content.js @@ -33,6 +33,7 @@ add_task(function* setup() { Services.search.currentEngine = originalEngine; Services.search.removeEngine(engineDefault); Services.search.removeEngine(engineOneOff); + yield PlacesTestUtils.clearHistory(); }); }); diff --git a/browser/modules/test/browser_UsageTelemetry_content_aboutHome.js b/browser/modules/test/browser_UsageTelemetry_content_aboutHome.js index 1818ae5fd95c..a98df386f29e 100644 --- a/browser/modules/test/browser_UsageTelemetry_content_aboutHome.js +++ b/browser/modules/test/browser_UsageTelemetry_content_aboutHome.js @@ -35,6 +35,7 @@ add_task(function* setup() { Services.search.currentEngine = originalEngine; Services.search.removeEngine(engineDefault); Services.search.removeEngine(engineOneOff); + yield PlacesTestUtils.clearHistory(); }); }); diff --git a/browser/modules/test/browser_UsageTelemetry_urlbar.js b/browser/modules/test/browser_UsageTelemetry_urlbar.js index f0de0b0ab78d..5c7746d69ee8 100644 --- a/browser/modules/test/browser_UsageTelemetry_urlbar.js +++ b/browser/modules/test/browser_UsageTelemetry_urlbar.js @@ -8,6 +8,21 @@ const SUGGEST_URLBAR_PREF = "browser.urlbar.suggest.searches"; const SUGGESTION_ENGINE_NAME = "browser_UsageTelemetry usageTelemetrySearchSuggestions.xml"; const ONEOFF_URLBAR_PREF = "browser.urlbar.oneOffSearches"; +XPCOMUtils.defineLazyModuleGetter(this, "URLBAR_SELECTED_RESULT_TYPES", + "resource:///modules/BrowserUsageTelemetry.jsm"); + +function checkHistogramResults(resultIndexes, expected, histogram) { + for (let i = 0; i < resultIndexes.counts.length; i++) { + if (i == expected) { + Assert.equal(resultIndexes.counts[i], 1, + `expected counts should match for ${histogram} index ${i}`); + } else { + Assert.equal(resultIndexes.counts[i], 0, + `unexpected counts should be zero for ${histogram} index ${i}`); + } + } +} + let searchInAwesomebar = Task.async(function* (inputText, win = window) { yield new Promise(r => waitForFocus(r, win)); // Write the search query in the urlbar. @@ -62,12 +77,18 @@ add_task(function* setup() { // Enable Extended Telemetry. yield SpecialPowers.pushPrefEnv({"set": [["toolkit.telemetry.enabled", true]]}); + // Enable local telemetry recording for the duration of the tests. + let oldCanRecord = Services.telemetry.canRecordExtended; + Services.telemetry.canRecordExtended = true; + // Make sure to restore the engine once we're done. registerCleanupFunction(function* () { + Services.telemetry.canRecordExtended = oldCanRecord; Services.search.currentEngine = originalEngine; Services.search.removeEngine(engine); Services.prefs.clearUserPref(SUGGEST_URLBAR_PREF, true); Services.prefs.clearUserPref(ONEOFF_URLBAR_PREF); + yield PlacesTestUtils.clearHistory(); }); }); @@ -75,6 +96,11 @@ add_task(function* test_simpleQuery() { // Let's reset the counts. Services.telemetry.clearScalars(); Services.telemetry.clearEvents(); + let resultIndexHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX"); + let resultTypeHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE"); + resultIndexHist.clear(); + resultTypeHist.clear(); + let search_hist = getSearchCountsHistogram(); let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank"); @@ -100,6 +126,15 @@ add_task(function* test_simpleQuery() { events = events.filter(e => e[1] == "navigation" && e[2] == "search"); checkEvents(events, [["navigation", "search", "urlbar", "enter", {engine: "other-MozSearch"}]]); + // Check the histograms as well. + let resultIndexes = resultIndexHist.snapshot(); + checkHistogramResults(resultIndexes, 0, "FX_URLBAR_SELECTED_RESULT_INDEX"); + + let resultTypes = resultTypeHist.snapshot(); + checkHistogramResults(resultTypes, + URLBAR_SELECTED_RESULT_TYPES.searchengine, + "FX_URLBAR_SELECTED_RESULT_TYPE"); + yield BrowserTestUtils.removeTab(tab); }); @@ -107,6 +142,11 @@ add_task(function* test_searchAlias() { // Let's reset the counts. Services.telemetry.clearScalars(); Services.telemetry.clearEvents(); + let resultIndexHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX"); + let resultTypeHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE"); + resultIndexHist.clear(); + resultTypeHist.clear(); + let search_hist = getSearchCountsHistogram(); let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank"); @@ -132,6 +172,15 @@ add_task(function* test_searchAlias() { events = events.filter(e => e[1] == "navigation" && e[2] == "search"); checkEvents(events, [["navigation", "search", "urlbar", "alias", {engine: "other-MozSearch"}]]); + // Check the histograms as well. + let resultIndexes = resultIndexHist.snapshot(); + checkHistogramResults(resultIndexes, 0, "FX_URLBAR_SELECTED_RESULT_INDEX"); + + let resultTypes = resultTypeHist.snapshot(); + checkHistogramResults(resultTypes, + URLBAR_SELECTED_RESULT_TYPES.searchengine, + "FX_URLBAR_SELECTED_RESULT_TYPE"); + yield BrowserTestUtils.removeTab(tab); }); @@ -139,6 +188,11 @@ add_task(function* test_oneOff() { // Let's reset the counts. Services.telemetry.clearScalars(); Services.telemetry.clearEvents(); + let resultIndexHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX"); + let resultTypeHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE"); + resultIndexHist.clear(); + resultTypeHist.clear(); + let search_hist = getSearchCountsHistogram(); let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank"); @@ -167,6 +221,15 @@ add_task(function* test_oneOff() { events = events.filter(e => e[1] == "navigation" && e[2] == "search"); checkEvents(events, [["navigation", "search", "urlbar", "oneoff", {engine: "other-MozSearch"}]]); + // Check the histograms as well. + let resultIndexes = resultIndexHist.snapshot(); + checkHistogramResults(resultIndexes, 0, "FX_URLBAR_SELECTED_RESULT_INDEX"); + + let resultTypes = resultTypeHist.snapshot(); + checkHistogramResults(resultTypes, + URLBAR_SELECTED_RESULT_TYPES.searchengine, + "FX_URLBAR_SELECTED_RESULT_TYPE"); + yield BrowserTestUtils.removeTab(tab); }); @@ -174,6 +237,11 @@ add_task(function* test_suggestion() { // Let's reset the counts. Services.telemetry.clearScalars(); Services.telemetry.clearEvents(); + let resultIndexHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_INDEX"); + let resultTypeHist = Services.telemetry.getHistogramById("FX_URLBAR_SELECTED_RESULT_TYPE"); + resultIndexHist.clear(); + resultTypeHist.clear(); + let search_hist = getSearchCountsHistogram(); // Create an engine to generate search suggestions and add it as default @@ -214,6 +282,15 @@ add_task(function* test_suggestion() { events = events.filter(e => e[1] == "navigation" && e[2] == "search"); checkEvents(events, [["navigation", "search", "urlbar", "suggestion", {engine: searchEngineId}]]); + // Check the histograms as well. + let resultIndexes = resultIndexHist.snapshot(); + checkHistogramResults(resultIndexes, 3, "FX_URLBAR_SELECTED_RESULT_INDEX"); + + let resultTypes = resultTypeHist.snapshot(); + checkHistogramResults(resultTypes, + URLBAR_SELECTED_RESULT_TYPES.searchsuggestion, + "FX_URLBAR_SELECTED_RESULT_TYPE"); + Services.search.currentEngine = previousEngine; Services.search.removeEngine(suggestionEngine); yield BrowserTestUtils.removeTab(tab); diff --git a/browser/modules/test/head.js b/browser/modules/test/head.js index 8531cd83e18e..04f646c0f062 100644 --- a/browser/modules/test/head.js +++ b/browser/modules/test/head.js @@ -1,5 +1,8 @@ Cu.import("resource://gre/modules/Promise.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils", + "resource://testing-common/PlacesTestUtils.jsm"); + const SINGLE_TRY_TIMEOUT = 100; const NUMBER_OF_TRIES = 30; diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index f60f7aadc8ff..abe84869f3cb 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -5473,7 +5473,7 @@ "kind": "enumerated", "n_values": 14, "bug_numbers": [775825], - "description": "Firefox: The type of the selected result in the URL bar popup. See nsBrowserGlue.js::_handleURLBarTelemetry for the result types." + "description": "Firefox: The type of the selected result in the URL bar popup. See BrowserUsageTelemetry.jsm:URLBAR_SELECTED_RESULT_TYPES for the result types." }, "INNERWINDOWS_WITH_MUTATION_LISTENERS": { "expires_in_version": "never",