Merge mozilla-central to inbound a=merge on a CLOSED TREE

--HG--
extra : amend_source : fe224af87d863a8482fa90b6108ef3c5c93391f9
This commit is contained in:
Coroiu Cristina 2019-07-22 19:08:45 +03:00
commit 6d42386a82
28 changed files with 138 additions and 1059 deletions

View File

@ -18,38 +18,8 @@ loader.lazyRequireGetter(
true true
); );
const { Toolbox } = require("devtools/client/framework/toolbox");
const { gDevTools } = require("devtools/client/framework/devtools");
const { PREFERENCES } = require("../constants"); const { PREFERENCES } = require("../constants");
let addonToolbox = null;
/**
* Start debugging an addon.
*
* @param {String} id
* The addon id to debug.
* @param {DebuggerClient} client
* Required for debugging.
*/
exports.debugAddon = async function(id, client) {
const addonFront = await client.mainRoot.getAddon({ id });
const target = await addonFront.connect();
// Close previous addon debugging toolbox.
if (addonToolbox) {
addonToolbox.destroy();
}
const hostType = Toolbox.HostType.WINDOW;
addonToolbox = await gDevTools.showToolbox(target, null, hostType);
addonToolbox.once("destroy", () => {
addonToolbox = null;
});
};
/** /**
* Uninstall the addon with the provided id. * Uninstall the addon with the provided id.
* Resolves when the addon shutdown has completed. * Resolves when the addon shutdown has completed.

View File

@ -150,7 +150,11 @@ class FontPropertyValue extends PureComponent {
value = this.state.initialValue; value = this.state.initialValue;
} }
this.updateValue(value); // Avoid updating the value if a keyword value like "normal" is present
if (!this.props.valueLabel) {
this.updateValue(value);
}
this.toggleInteractiveState(false); this.toggleInteractiveState(false);
} }

View File

@ -1595,8 +1595,8 @@ var StyleRuleActor = protocol.ActorClassWithSpec(styleRuleSpec, {
text = `${selectorText} {${ruleBodyText}}`; text = `${selectorText} {${ruleBodyText}}`;
} }
const prettyCSS = prettifyCSS(text); const { result } = prettifyCSS(text);
return Promise.resolve(prettyCSS); return Promise.resolve(result);
}, },
/** /**

View File

@ -138,6 +138,7 @@ fail-if = fission
fail-if = fission fail-if = fission
[browser_storage_updates.js] [browser_storage_updates.js]
fail-if = fission fail-if = fission
[browser_styles_getRuleText.js]
[browser_stylesheets_getTextEmpty.js] [browser_stylesheets_getTextEmpty.js]
[browser_stylesheets_nested-iframes.js] [browser_stylesheets_nested-iframes.js]
[browser_register_actor.js] [browser_register_actor.js]

View File

@ -0,0 +1,35 @@
/* 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/ */
"use strict";
// Test that StyleRuleActor.getRuleText returns the contents of the CSS rule.
const CSS_RULE = `#test {
background-color: #f06;
}`;
const CONTENT = `
<style type='text/css'>
${CSS_RULE}
</style>
<div id="test"></div>
`;
const TEST_URI = `data:text/html;charset=utf-8,${encodeURIComponent(CONTENT)}`;
add_task(async function() {
const { inspector, target, walker } = await initInspectorFront(TEST_URI);
const pageStyle = await inspector.getPageStyle();
const element = await walker.querySelector(walker.rootNode, "#test");
const entries = await pageStyle.getApplied(element, { inherited: false });
const rule = entries[1].rule;
const text = await rule.getRuleText();
is(text, CSS_RULE, "CSS rule text content matches");
await target.destroy();
});

View File

@ -240,6 +240,11 @@ void BenchmarkPlayback::DemuxNextSample() {
void BenchmarkPlayback::InitDecoder(UniquePtr<TrackInfo>&& aInfo) { void BenchmarkPlayback::InitDecoder(UniquePtr<TrackInfo>&& aInfo) {
MOZ_ASSERT(OnThread()); MOZ_ASSERT(OnThread());
if (!aInfo) {
Error(MediaResult(NS_ERROR_FAILURE, "Invalid TrackInfo"));
return;
}
RefPtr<PDMFactory> platform = new PDMFactory(); RefPtr<PDMFactory> platform = new PDMFactory();
mInfo = std::move(aInfo); mInfo = std::move(aInfo);
mDecoder = platform->CreateDecoder({*mInfo, mDecoderTaskQueue}); mDecoder = platform->CreateDecoder({*mInfo, mDecoderTaskQueue});

View File

@ -526,7 +526,29 @@ class XMLHttpRequestMainThread final : public XMLHttpRequest,
} }
bool operator<(const HeaderEntry& aOther) const { bool operator<(const HeaderEntry& aOther) const {
return mName < aOther.mName; if (!IsLowercaseResponseHeader()) {
return mName < aOther.mName;
}
uint32_t selfLen = mName.Length();
uint32_t otherLen = aOther.mName.Length();
uint32_t min = XPCOM_MIN(selfLen, otherLen);
for (uint32_t i = 0; i < min; ++i) {
unsigned char self = mName[i];
unsigned char other = aOther.mName[i];
MOZ_ASSERT(!(self >= 'A' && self <= 'Z'));
MOZ_ASSERT(!(other >= 'A' && other <= 'Z'));
if (self == other) {
continue;
}
if (self >= 'a' && self <= 'z') {
self -= 0x20;
}
if (other >= 'a' && other <= 'z') {
other -= 0x20;
}
return self < other;
}
return selfLen < otherLen;
} }
}; };

View File

@ -82,6 +82,8 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(FontFace)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent) NS_IMPL_CYCLE_COLLECTION_UNLINK(mParent)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mLoaded) NS_IMPL_CYCLE_COLLECTION_UNLINK(mLoaded)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mFontFaceSet) NS_IMPL_CYCLE_COLLECTION_UNLINK(mFontFaceSet)
tmp->mInFontFaceSet = false;
tmp->SetUserFontEntry(nullptr);
NS_IMPL_CYCLE_COLLECTION_UNLINK(mOtherFontFaceSets) NS_IMPL_CYCLE_COLLECTION_UNLINK(mOtherFontFaceSets)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END NS_IMPL_CYCLE_COLLECTION_UNLINK_END

View File

@ -1,852 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* 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/. */
#include "avcodec.h"
typedef struct FFTContext FFTContext;
typedef struct H264PredContext H264PredContext;
typedef struct RDFTContext RDFTContext;
typedef struct VideoDSPContext VideoDSPContext;
typedef struct VP8DSPContext VP8DSPContext;
typedef struct VP9DSPContext VP9DSPContext;
typedef struct FLACDSPContext FLACDSPContext;
AVHWAccel ff_h263_vaapi_hwaccel;
AVHWAccel ff_h263_videotoolbox_hwaccel;
AVHWAccel ff_h264_d3d11va_hwaccel;
AVHWAccel ff_h264_dxva2_hwaccel;
AVHWAccel ff_h264_vaapi_hwaccel;
AVHWAccel ff_h264_vdpau_hwaccel;
AVHWAccel ff_h264_videotoolbox_hwaccel;
AVHWAccel ff_hevc_d3d11va_hwaccel;
AVHWAccel ff_hevc_dxva2_hwaccel;
AVHWAccel ff_hevc_vaapi_hwaccel;
AVHWAccel ff_hevc_vdpau_hwaccel;
AVHWAccel ff_mpeg1_xvmc_hwaccel;
AVHWAccel ff_mpeg1_vdpau_hwaccel;
AVHWAccel ff_mpeg1_videotoolbox_hwaccel;
AVHWAccel ff_mpeg2_xvmc_hwaccel;
AVHWAccel ff_mpeg2_d3d11va_hwaccel;
AVHWAccel ff_mpeg2_dxva2_hwaccel;
AVHWAccel ff_mpeg2_vaapi_hwaccel;
AVHWAccel ff_mpeg2_vdpau_hwaccel;
AVHWAccel ff_mpeg2_videotoolbox_hwaccel;
AVHWAccel ff_mpeg4_vaapi_hwaccel;
AVHWAccel ff_mpeg4_vdpau_hwaccel;
AVHWAccel ff_mpeg4_videotoolbox_hwaccel;
AVHWAccel ff_vc1_d3d11va_hwaccel;
AVHWAccel ff_vc1_dxva2_hwaccel;
AVHWAccel ff_vc1_vaapi_hwaccel;
AVHWAccel ff_vc1_vdpau_hwaccel;
AVHWAccel ff_wmv3_d3d11va_hwaccel;
AVHWAccel ff_wmv3_dxva2_hwaccel;
AVHWAccel ff_wmv3_vaapi_hwaccel;
AVHWAccel ff_wmv3_vdpau_hwaccel;
AVHWAccel ff_vp9_d3d11va_hwaccel;
AVHWAccel ff_vp9_dxva2_hwaccel;
AVHWAccel ff_vp9_vaapi_hwaccel;
/* Added by FFmpeg 3.4 */
AVHWAccel ff_h264_d3d11va2_hwaccel;
AVHWAccel ff_hevc_d3d11va2_hwaccel;
AVHWAccel ff_hevc_videotoolbox_hwaccel;
AVHWAccel ff_mpeg2_d3d11va2_hwaccel;
AVHWAccel ff_vc1_d3d11va2_hwaccel;
AVHWAccel ff_vp9_d3d11va2_hwaccel;
AVHWAccel ff_wmv3_d3d11va2_hwaccel;
AVCodec ff_a64multi_encoder;
AVCodec ff_a64multi5_encoder;
AVCodec ff_aasc_decoder;
AVCodec ff_aic_decoder;
AVCodec ff_alias_pix_encoder;
AVCodec ff_alias_pix_decoder;
AVCodec ff_amv_encoder;
AVCodec ff_amv_decoder;
AVCodec ff_anm_decoder;
AVCodec ff_ansi_decoder;
AVCodec ff_apng_encoder;
AVCodec ff_apng_decoder;
AVCodec ff_asv1_encoder;
AVCodec ff_asv1_decoder;
AVCodec ff_asv2_encoder;
AVCodec ff_asv2_decoder;
AVCodec ff_aura_decoder;
AVCodec ff_aura2_decoder;
AVCodec ff_avrp_encoder;
AVCodec ff_avrp_decoder;
AVCodec ff_avrn_decoder;
AVCodec ff_avs_decoder;
AVCodec ff_avui_encoder;
AVCodec ff_avui_decoder;
AVCodec ff_ayuv_encoder;
AVCodec ff_ayuv_decoder;
AVCodec ff_bethsoftvid_decoder;
AVCodec ff_bfi_decoder;
AVCodec ff_bink_decoder;
AVCodec ff_bmp_encoder;
AVCodec ff_bmp_decoder;
AVCodec ff_bmv_video_decoder;
AVCodec ff_brender_pix_decoder;
AVCodec ff_c93_decoder;
AVCodec ff_cavs_decoder;
AVCodec ff_cdgraphics_decoder;
AVCodec ff_cdxl_decoder;
AVCodec ff_cfhd_decoder;
AVCodec ff_cinepak_encoder;
AVCodec ff_cinepak_decoder;
AVCodec ff_cljr_encoder;
AVCodec ff_cljr_decoder;
AVCodec ff_cllc_decoder;
AVCodec ff_comfortnoise_encoder;
AVCodec ff_comfortnoise_decoder;
AVCodec ff_cpia_decoder;
AVCodec ff_cscd_decoder;
AVCodec ff_cyuv_decoder;
AVCodec ff_dds_decoder;
AVCodec ff_dfa_decoder;
AVCodec ff_dirac_decoder;
AVCodec ff_dnxhd_encoder;
AVCodec ff_dnxhd_decoder;
AVCodec ff_dpx_encoder;
AVCodec ff_dpx_decoder;
AVCodec ff_dsicinvideo_decoder;
AVCodec ff_dvaudio_decoder;
AVCodec ff_dvvideo_encoder;
AVCodec ff_dvvideo_decoder;
AVCodec ff_dxa_decoder;
AVCodec ff_dxtory_decoder;
AVCodec ff_eacmv_decoder;
AVCodec ff_eamad_decoder;
AVCodec ff_eatgq_decoder;
AVCodec ff_eatgv_decoder;
AVCodec ff_eatqi_decoder;
AVCodec ff_eightbps_decoder;
AVCodec ff_eightsvx_exp_decoder;
AVCodec ff_eightsvx_fib_decoder;
AVCodec ff_escape124_decoder;
AVCodec ff_escape130_decoder;
AVCodec ff_exr_decoder;
AVCodec ff_ffv1_encoder;
AVCodec ff_ffv1_decoder;
AVCodec ff_ffvhuff_encoder;
AVCodec ff_ffvhuff_decoder;
AVCodec ff_fic_decoder;
AVCodec ff_flashsv_encoder;
AVCodec ff_flashsv_decoder;
AVCodec ff_flashsv2_encoder;
AVCodec ff_flashsv2_decoder;
AVCodec ff_flic_decoder;
AVCodec ff_flv_encoder;
AVCodec ff_flv_decoder;
AVCodec ff_fourxm_decoder;
AVCodec ff_fraps_decoder;
AVCodec ff_frwu_decoder;
AVCodec ff_g2m_decoder;
AVCodec ff_gif_encoder;
AVCodec ff_gif_decoder;
AVCodec ff_h261_encoder;
AVCodec ff_h261_decoder;
AVCodec ff_h263_encoder;
AVCodec ff_h263_decoder;
AVCodec ff_h263i_decoder;
AVCodec ff_h263p_encoder;
AVCodec ff_h263p_decoder;
AVCodec ff_h264_decoder;
AVCodec ff_h264_crystalhd_decoder;
AVCodec ff_h264_mmal_decoder;
AVCodec ff_h264_qsv_decoder;
AVCodec ff_hap_encoder;
AVCodec ff_hap_decoder;
AVCodec ff_hevc_decoder;
AVCodec ff_hevc_qsv_decoder;
AVCodec ff_hnm4_video_decoder;
AVCodec ff_hq_hqa_decoder;
AVCodec ff_hqx_decoder;
AVCodec ff_huffyuv_encoder;
AVCodec ff_huffyuv_decoder;
AVCodec ff_idcin_decoder;
AVCodec ff_iff_byterun1_decoder;
AVCodec ff_iff_ilbm_decoder;
AVCodec ff_indeo2_decoder;
AVCodec ff_indeo3_decoder;
AVCodec ff_indeo4_decoder;
AVCodec ff_indeo5_decoder;
AVCodec ff_interplay_video_decoder;
AVCodec ff_jpeg2000_encoder;
AVCodec ff_jpeg2000_decoder;
AVCodec ff_jpegls_encoder;
AVCodec ff_jpegls_decoder;
AVCodec ff_jv_decoder;
AVCodec ff_kgv1_decoder;
AVCodec ff_kmvc_decoder;
AVCodec ff_lagarith_decoder;
AVCodec ff_ljpeg_encoder;
AVCodec ff_loco_decoder;
AVCodec ff_mdec_decoder;
AVCodec ff_mimic_decoder;
AVCodec ff_mjpeg_encoder;
AVCodec ff_mjpeg_decoder;
AVCodec ff_mjpegb_decoder;
AVCodec ff_mmvideo_decoder;
AVCodec ff_motionpixels_decoder;
AVCodec ff_mpeg1video_encoder;
AVCodec ff_mpeg1video_decoder;
AVCodec ff_mpeg2video_encoder;
AVCodec ff_mpeg2video_decoder;
AVCodec ff_mpeg4_encoder;
AVCodec ff_mpeg4_decoder;
AVCodec ff_mpeg4_crystalhd_decoder;
AVCodec ff_mpeg4_mmal_decoder;
AVCodec ff_mpegvideo_decoder;
AVCodec ff_mpeg2_crystalhd_decoder;
AVCodec ff_mpeg2_qsv_decoder;
AVCodec ff_msa1_decoder;
AVCodec ff_msmpeg4_crystalhd_decoder;
AVCodec ff_msmpeg4v1_decoder;
AVCodec ff_msmpeg4v2_encoder;
AVCodec ff_msmpeg4v2_decoder;
AVCodec ff_msmpeg4v3_encoder;
AVCodec ff_msmpeg4v3_decoder;
AVCodec ff_msrle_decoder;
AVCodec ff_mss1_decoder;
AVCodec ff_mss2_decoder;
AVCodec ff_msvideo1_encoder;
AVCodec ff_msvideo1_decoder;
AVCodec ff_mszh_decoder;
AVCodec ff_mts2_decoder;
AVCodec ff_mvc1_decoder;
AVCodec ff_mvc2_decoder;
AVCodec ff_mxpeg_decoder;
AVCodec ff_nuv_decoder;
AVCodec ff_paf_video_decoder;
AVCodec ff_pam_encoder;
AVCodec ff_pam_decoder;
AVCodec ff_pbm_encoder;
AVCodec ff_pbm_decoder;
AVCodec ff_pcx_encoder;
AVCodec ff_pcx_decoder;
AVCodec ff_pgm_encoder;
AVCodec ff_pgm_decoder;
AVCodec ff_pgmyuv_encoder;
AVCodec ff_pgmyuv_decoder;
AVCodec ff_pictor_decoder;
AVCodec ff_png_encoder;
AVCodec ff_png_decoder;
AVCodec ff_ppm_encoder;
AVCodec ff_ppm_decoder;
AVCodec ff_prores_encoder;
AVCodec ff_prores_decoder;
AVCodec ff_prores_aw_encoder;
AVCodec ff_prores_ks_encoder;
AVCodec ff_prores_lgpl_decoder;
AVCodec ff_ptx_decoder;
AVCodec ff_qdraw_decoder;
AVCodec ff_qpeg_decoder;
AVCodec ff_qtrle_encoder;
AVCodec ff_qtrle_decoder;
AVCodec ff_r10k_encoder;
AVCodec ff_r10k_decoder;
AVCodec ff_r210_encoder;
AVCodec ff_r210_decoder;
AVCodec ff_rawvideo_encoder;
AVCodec ff_rawvideo_decoder;
AVCodec ff_rl2_decoder;
AVCodec ff_roq_encoder;
AVCodec ff_roq_decoder;
AVCodec ff_rpza_decoder;
AVCodec ff_rv10_encoder;
AVCodec ff_rv10_decoder;
AVCodec ff_rv20_encoder;
AVCodec ff_rv20_decoder;
AVCodec ff_rv30_decoder;
AVCodec ff_rv40_decoder;
AVCodec ff_s302m_encoder;
AVCodec ff_s302m_decoder;
AVCodec ff_sanm_decoder;
AVCodec ff_sgi_encoder;
AVCodec ff_sgi_decoder;
AVCodec ff_sgirle_decoder;
AVCodec ff_smacker_decoder;
AVCodec ff_smc_decoder;
AVCodec ff_smvjpeg_decoder;
AVCodec ff_snow_encoder;
AVCodec ff_snow_decoder;
AVCodec ff_sp5x_decoder;
AVCodec ff_sunrast_encoder;
AVCodec ff_sunrast_decoder;
AVCodec ff_svq1_encoder;
AVCodec ff_svq1_decoder;
AVCodec ff_svq3_decoder;
AVCodec ff_targa_encoder;
AVCodec ff_targa_decoder;
AVCodec ff_targa_y216_decoder;
AVCodec ff_tdsc_decoder;
AVCodec ff_theora_decoder;
AVCodec ff_thp_decoder;
AVCodec ff_tiertexseqvideo_decoder;
AVCodec ff_tiff_encoder;
AVCodec ff_tiff_decoder;
AVCodec ff_tmv_decoder;
AVCodec ff_truemotion1_decoder;
AVCodec ff_truemotion2_decoder;
AVCodec ff_tscc_decoder;
AVCodec ff_tscc2_decoder;
AVCodec ff_txd_decoder;
AVCodec ff_ulti_decoder;
AVCodec ff_utvideo_encoder;
AVCodec ff_utvideo_decoder;
AVCodec ff_v210_encoder;
AVCodec ff_v210_decoder;
AVCodec ff_v210x_decoder;
AVCodec ff_v308_encoder;
AVCodec ff_v308_decoder;
AVCodec ff_v408_encoder;
AVCodec ff_v408_decoder;
AVCodec ff_v410_encoder;
AVCodec ff_v410_decoder;
AVCodec ff_vb_decoder;
AVCodec ff_vble_decoder;
AVCodec ff_vc1_decoder;
AVCodec ff_vc1_crystalhd_decoder;
AVCodec ff_vc1image_decoder;
AVCodec ff_vc1_qsv_decoder;
AVCodec ff_vc2_encoder;
AVCodec ff_vcr1_decoder;
AVCodec ff_vmdvideo_decoder;
AVCodec ff_vmnc_decoder;
AVCodec ff_vp3_decoder;
AVCodec ff_vp5_decoder;
AVCodec ff_vp6_decoder;
AVCodec ff_vp6a_decoder;
AVCodec ff_vp6f_decoder;
AVCodec ff_vp7_decoder;
AVCodec ff_vqa_decoder;
AVCodec ff_webp_decoder;
AVCodec ff_wmv1_encoder;
AVCodec ff_wmv1_decoder;
AVCodec ff_wmv2_encoder;
AVCodec ff_wmv2_decoder;
AVCodec ff_wmv3_decoder;
AVCodec ff_wmv3_crystalhd_decoder;
AVCodec ff_wmv3image_decoder;
AVCodec ff_wnv1_decoder;
AVCodec ff_xan_wc3_decoder;
AVCodec ff_xan_wc4_decoder;
AVCodec ff_xbm_encoder;
AVCodec ff_xbm_decoder;
AVCodec ff_xface_encoder;
AVCodec ff_xface_decoder;
AVCodec ff_xl_decoder;
AVCodec ff_xwd_encoder;
AVCodec ff_xwd_decoder;
AVCodec ff_y41p_encoder;
AVCodec ff_y41p_decoder;
AVCodec ff_yop_decoder;
AVCodec ff_yuv4_encoder;
AVCodec ff_yuv4_decoder;
AVCodec ff_zero12v_decoder;
AVCodec ff_zerocodec_decoder;
AVCodec ff_zlib_encoder;
AVCodec ff_zlib_decoder;
AVCodec ff_zmbv_encoder;
AVCodec ff_zmbv_decoder;
AVCodec ff_aac_encoder;
AVCodec ff_aac_decoder;
AVCodec ff_aac_fixed_decoder;
AVCodec ff_aac_latm_decoder;
AVCodec ff_ac3_encoder;
AVCodec ff_ac3_decoder;
AVCodec ff_ac3_fixed_encoder;
AVCodec ff_ac3_fixed_decoder;
AVCodec ff_alac_encoder;
AVCodec ff_alac_decoder;
AVCodec ff_als_decoder;
AVCodec ff_amrnb_decoder;
AVCodec ff_amrwb_decoder;
AVCodec ff_ape_decoder;
AVCodec ff_atrac1_decoder;
AVCodec ff_atrac3_decoder;
AVCodec ff_atrac3p_decoder;
AVCodec ff_binkaudio_dct_decoder;
AVCodec ff_binkaudio_rdft_decoder;
AVCodec ff_bmv_audio_decoder;
AVCodec ff_cook_decoder;
AVCodec ff_dca_encoder;
AVCodec ff_dca_decoder;
AVCodec ff_dsd_lsbf_decoder;
AVCodec ff_dsd_msbf_decoder;
AVCodec ff_dsd_lsbf_planar_decoder;
AVCodec ff_dsd_msbf_planar_decoder;
AVCodec ff_dsicinaudio_decoder;
AVCodec ff_dss_sp_decoder;
AVCodec ff_eac3_encoder;
AVCodec ff_eac3_decoder;
AVCodec ff_evrc_decoder;
AVCodec ff_ffwavesynth_decoder;
AVCodec ff_flac_encoder;
AVCodec ff_g723_1_encoder;
AVCodec ff_g723_1_decoder;
AVCodec ff_g729_decoder;
AVCodec ff_gsm_decoder;
AVCodec ff_gsm_ms_decoder;
AVCodec ff_iac_decoder;
AVCodec ff_imc_decoder;
AVCodec ff_mace3_decoder;
AVCodec ff_mace6_decoder;
AVCodec ff_metasound_decoder;
AVCodec ff_mlp_decoder;
AVCodec ff_mp1_decoder;
AVCodec ff_mp1float_decoder;
AVCodec ff_mp2_encoder;
AVCodec ff_mp2_decoder;
AVCodec ff_mp2float_decoder;
AVCodec ff_mp2fixed_encoder;
AVCodec ff_mp3_decoder;
AVCodec ff_mp3float_decoder;
AVCodec ff_mp3adu_decoder;
AVCodec ff_mp3adufloat_decoder;
AVCodec ff_mp3on4_decoder;
AVCodec ff_mp3on4float_decoder;
AVCodec ff_mpc7_decoder;
AVCodec ff_mpc8_decoder;
AVCodec ff_nellymoser_encoder;
AVCodec ff_nellymoser_decoder;
AVCodec ff_on2avc_decoder;
AVCodec ff_opus_decoder;
AVCodec ff_paf_audio_decoder;
AVCodec ff_qcelp_decoder;
AVCodec ff_qdm2_decoder;
AVCodec ff_ra_144_encoder;
AVCodec ff_ra_144_decoder;
AVCodec ff_ra_288_decoder;
AVCodec ff_ralf_decoder;
AVCodec ff_shorten_decoder;
AVCodec ff_sipr_decoder;
AVCodec ff_smackaud_decoder;
AVCodec ff_sonic_encoder;
AVCodec ff_sonic_decoder;
AVCodec ff_sonic_ls_encoder;
AVCodec ff_tak_decoder;
AVCodec ff_truehd_decoder;
AVCodec ff_truespeech_decoder;
AVCodec ff_tta_encoder;
AVCodec ff_tta_decoder;
AVCodec ff_twinvq_decoder;
AVCodec ff_vmdaudio_decoder;
AVCodec ff_vorbis_encoder;
AVCodec ff_vorbis_decoder;
AVCodec ff_wavpack_encoder;
AVCodec ff_wavpack_decoder;
AVCodec ff_wmalossless_decoder;
AVCodec ff_wmapro_decoder;
AVCodec ff_wmav1_encoder;
AVCodec ff_wmav1_decoder;
AVCodec ff_wmav2_encoder;
AVCodec ff_wmav2_decoder;
AVCodec ff_wmavoice_decoder;
AVCodec ff_ws_snd1_decoder;
AVCodec ff_pcm_alaw_encoder;
AVCodec ff_pcm_alaw_decoder;
AVCodec ff_pcm_bluray_decoder;
AVCodec ff_pcm_dvd_decoder;
AVCodec ff_pcm_f32be_encoder;
AVCodec ff_pcm_f32be_decoder;
AVCodec ff_pcm_f32le_encoder;
AVCodec ff_pcm_f32le_decoder;
AVCodec ff_pcm_f64be_encoder;
AVCodec ff_pcm_f64be_decoder;
AVCodec ff_pcm_f64le_encoder;
AVCodec ff_pcm_f64le_decoder;
AVCodec ff_pcm_lxf_decoder;
AVCodec ff_pcm_mulaw_encoder;
AVCodec ff_pcm_mulaw_decoder;
AVCodec ff_pcm_s8_encoder;
AVCodec ff_pcm_s8_decoder;
AVCodec ff_pcm_s8_planar_encoder;
AVCodec ff_pcm_s8_planar_decoder;
AVCodec ff_pcm_s16be_encoder;
AVCodec ff_pcm_s16be_decoder;
AVCodec ff_pcm_s16be_planar_encoder;
AVCodec ff_pcm_s16be_planar_decoder;
AVCodec ff_pcm_s16le_encoder;
AVCodec ff_pcm_s16le_decoder;
AVCodec ff_pcm_s16le_planar_encoder;
AVCodec ff_pcm_s16le_planar_decoder;
AVCodec ff_pcm_s24be_encoder;
AVCodec ff_pcm_s24be_decoder;
AVCodec ff_pcm_s24daud_encoder;
AVCodec ff_pcm_s24daud_decoder;
AVCodec ff_pcm_s24le_encoder;
AVCodec ff_pcm_s24le_decoder;
AVCodec ff_pcm_s24le_planar_encoder;
AVCodec ff_pcm_s24le_planar_decoder;
AVCodec ff_pcm_s32be_encoder;
AVCodec ff_pcm_s32be_decoder;
AVCodec ff_pcm_s32le_encoder;
AVCodec ff_pcm_s32le_decoder;
AVCodec ff_pcm_s32le_planar_encoder;
AVCodec ff_pcm_s32le_planar_decoder;
AVCodec ff_pcm_u8_encoder;
AVCodec ff_pcm_u8_decoder;
AVCodec ff_pcm_u16be_encoder;
AVCodec ff_pcm_u16be_decoder;
AVCodec ff_pcm_u16le_encoder;
AVCodec ff_pcm_u16le_decoder;
AVCodec ff_pcm_u24be_encoder;
AVCodec ff_pcm_u24be_decoder;
AVCodec ff_pcm_u24le_encoder;
AVCodec ff_pcm_u24le_decoder;
AVCodec ff_pcm_u32be_encoder;
AVCodec ff_pcm_u32be_decoder;
AVCodec ff_pcm_u32le_encoder;
AVCodec ff_pcm_u32le_decoder;
AVCodec ff_pcm_zork_decoder;
AVCodec ff_interplay_dpcm_decoder;
AVCodec ff_roq_dpcm_encoder;
AVCodec ff_roq_dpcm_decoder;
AVCodec ff_sol_dpcm_decoder;
AVCodec ff_xan_dpcm_decoder;
AVCodec ff_adpcm_4xm_decoder;
AVCodec ff_adpcm_adx_encoder;
AVCodec ff_adpcm_adx_decoder;
AVCodec ff_adpcm_afc_decoder;
AVCodec ff_adpcm_ct_decoder;
AVCodec ff_adpcm_dtk_decoder;
AVCodec ff_adpcm_ea_decoder;
AVCodec ff_adpcm_ea_maxis_xa_decoder;
AVCodec ff_adpcm_ea_r1_decoder;
AVCodec ff_adpcm_ea_r2_decoder;
AVCodec ff_adpcm_ea_r3_decoder;
AVCodec ff_adpcm_ea_xas_decoder;
AVCodec ff_adpcm_g722_encoder;
AVCodec ff_adpcm_g722_decoder;
AVCodec ff_adpcm_g726_encoder;
AVCodec ff_adpcm_g726_decoder;
AVCodec ff_adpcm_g726le_decoder;
AVCodec ff_adpcm_ima_amv_decoder;
AVCodec ff_adpcm_ima_apc_decoder;
AVCodec ff_adpcm_ima_dk3_decoder;
AVCodec ff_adpcm_ima_dk4_decoder;
AVCodec ff_adpcm_ima_ea_eacs_decoder;
AVCodec ff_adpcm_ima_ea_sead_decoder;
AVCodec ff_adpcm_ima_iss_decoder;
AVCodec ff_adpcm_ima_oki_decoder;
AVCodec ff_adpcm_ima_qt_encoder;
AVCodec ff_adpcm_ima_qt_decoder;
AVCodec ff_adpcm_ima_rad_decoder;
AVCodec ff_adpcm_ima_smjpeg_decoder;
AVCodec ff_adpcm_ima_wav_encoder;
AVCodec ff_adpcm_ima_wav_decoder;
AVCodec ff_adpcm_ima_ws_decoder;
AVCodec ff_adpcm_ms_encoder;
AVCodec ff_adpcm_ms_decoder;
AVCodec ff_adpcm_sbpro_2_decoder;
AVCodec ff_adpcm_sbpro_3_decoder;
AVCodec ff_adpcm_sbpro_4_decoder;
AVCodec ff_adpcm_swf_encoder;
AVCodec ff_adpcm_swf_decoder;
AVCodec ff_adpcm_thp_decoder;
AVCodec ff_adpcm_thp_le_decoder;
AVCodec ff_adpcm_vima_decoder;
AVCodec ff_adpcm_xa_decoder;
AVCodec ff_adpcm_yamaha_encoder;
AVCodec ff_adpcm_yamaha_decoder;
AVCodec ff_vima_decoder;
AVCodec ff_ssa_encoder;
AVCodec ff_ssa_decoder;
AVCodec ff_ass_encoder;
AVCodec ff_ass_decoder;
AVCodec ff_ccaption_decoder;
AVCodec ff_dvbsub_encoder;
AVCodec ff_dvbsub_decoder;
AVCodec ff_dvdsub_encoder;
AVCodec ff_dvdsub_decoder;
AVCodec ff_jacosub_decoder;
AVCodec ff_microdvd_decoder;
AVCodec ff_movtext_encoder;
AVCodec ff_movtext_decoder;
AVCodec ff_mpl2_decoder;
AVCodec ff_pgssub_decoder;
AVCodec ff_pjs_decoder;
AVCodec ff_realtext_decoder;
AVCodec ff_sami_decoder;
AVCodec ff_srt_encoder;
AVCodec ff_srt_decoder;
AVCodec ff_stl_decoder;
AVCodec ff_subrip_encoder;
AVCodec ff_subrip_decoder;
AVCodec ff_subviewer_decoder;
AVCodec ff_subviewer1_decoder;
AVCodec ff_text_decoder;
AVCodec ff_vplayer_decoder;
AVCodec ff_webvtt_encoder;
AVCodec ff_webvtt_decoder;
AVCodec ff_xsub_encoder;
AVCodec ff_xsub_decoder;
AVCodec ff_libcelt_decoder;
AVCodec ff_libdcadec_decoder;
AVCodec ff_libfaac_encoder;
AVCodec ff_libfdk_aac_encoder;
AVCodec ff_libfdk_aac_decoder;
AVCodec ff_libgsm_encoder;
AVCodec ff_libgsm_decoder;
AVCodec ff_libgsm_ms_encoder;
AVCodec ff_libgsm_ms_decoder;
AVCodec ff_libilbc_encoder;
AVCodec ff_libilbc_decoder;
AVCodec ff_libmp3lame_encoder;
AVCodec ff_libopencore_amrnb_encoder;
AVCodec ff_libopencore_amrnb_decoder;
AVCodec ff_libopencore_amrwb_decoder;
AVCodec ff_libopenjpeg_encoder;
AVCodec ff_libopenjpeg_decoder;
AVCodec ff_libopus_encoder;
AVCodec ff_libopus_decoder;
AVCodec ff_libschroedinger_encoder;
AVCodec ff_libschroedinger_decoder;
AVCodec ff_libshine_encoder;
AVCodec ff_libspeex_encoder;
AVCodec ff_libspeex_decoder;
AVCodec ff_libstagefright_h264_decoder;
AVCodec ff_libtheora_encoder;
AVCodec ff_libtwolame_encoder;
AVCodec ff_libutvideo_encoder;
AVCodec ff_libutvideo_decoder;
AVCodec ff_libvo_aacenc_encoder;
AVCodec ff_libvo_amrwbenc_encoder;
AVCodec ff_libvorbis_encoder;
AVCodec ff_libvorbis_decoder;
AVCodec ff_libvpx_vp8_encoder;
AVCodec ff_libvpx_vp8_decoder;
AVCodec ff_libvpx_vp9_encoder;
AVCodec ff_libvpx_vp9_decoder;
AVCodec ff_libwavpack_encoder;
AVCodec ff_libwebp_anim_encoder;
AVCodec ff_libwebp_encoder;
AVCodec ff_libx262_encoder;
AVCodec ff_libx264_encoder;
AVCodec ff_libx264rgb_encoder;
AVCodec ff_libx265_encoder;
AVCodec ff_libxavs_encoder;
AVCodec ff_libxvid_encoder;
AVCodec ff_libzvbi_teletext_decoder;
AVCodec ff_libaacplus_encoder;
AVCodec ff_bintext_decoder;
AVCodec ff_xbin_decoder;
AVCodec ff_idf_decoder;
AVCodec ff_libopenh264_encoder;
AVCodec ff_h264_qsv_encoder;
AVCodec ff_nvenc_encoder;
AVCodec ff_nvenc_h264_encoder;
AVCodec ff_nvenc_hevc_encoder;
AVCodec ff_hevc_qsv_encoder;
AVCodec ff_libkvazaar_encoder;
AVCodec ff_mpeg2_qsv_encoder;
AVCodec ff_dxv_decoder;
AVCodec ff_mpeg2_mmal_decoder;
AVCodec ff_rscc_decoder;
AVCodec ff_screenpresso_decoder;
AVCodec ff_sdx2_dpcm_decoder;
AVCodec ff_vc1_mmal_decoder;
AVCodec ff_wrapped_avframe_encoder;
AVCodec ff_interplay_acm_decoder;
AVCodec ff_xma1_decoder;
AVCodec ff_xma2_decoder;
AVCodec ff_adpcm_aica_decoder;
AVCodec ff_adpcm_psx_decoder;
AVCodec ff_text_encoder;
AVCodec ff_vp9_cuvid_decoder;
AVCodec ff_vp8_cuvid_decoder;
AVCodec ff_vc1_cuvid_decoder;
AVCodec ff_mjpeg_vaapi_encoder;
AVCodec ff_hevc_vaapi_encoder;
AVCodec ff_hevc_nvenc_encoder;
AVCodec ff_hevc_cuvid_decoder;
AVCodec ff_h264_videotoolbox_encoder;
AVCodec ff_h264_vaapi_encoder;
AVCodec ff_h264_omx_encoder;
AVCodec ff_h264_nvenc_encoder;
AVCodec ff_h264_cuvid_decoder;
AVCodec ff_qdm2_at_decoder;
AVCodec ff_qdmc_at_decoder;
AVCodec ff_pcm_mulaw_at_decoder;
AVCodec ff_pcm_mulaw_at_encoder;
AVCodec ff_pcm_alaw_at_decoder;
AVCodec ff_pcm_alaw_at_encoder;
AVCodec ff_mp3_at_decoder;
AVCodec ff_mp2_at_decoder;
AVCodec ff_mp1_at_decoder;
AVCodec ff_ilbc_at_decoder;
AVCodec ff_ilbc_at_encoder;
AVCodec ff_gsm_ms_at_decoder;
AVCodec ff_eac3_at_decoder;
AVCodec ff_amr_nb_at_decoder;
AVCodec ff_alac_at_decoder;
AVCodec ff_alac_at_encoder;
AVCodec ff_adpcm_ima_qt_at_decoder;
AVCodec ff_ac3_at_decoder;
AVCodec ff_aac_at_decoder;
AVCodec ff_aac_at_encoder;
AVCodec ff_adpcm_mtaf_decoder;
AVCodec ff_adpcm_ima_dat4_decoder;
AVCodec ff_dst_decoder;
AVCodec ff_ylc_decoder;
AVCodec ff_truemotion2rt_decoder;
AVCodec ff_sheervideo_decoder;
AVCodec ff_magicyuv_decoder;
AVCodec ff_m101_decoder;
AVCodec ff_h264_mediacodec_decoder;
/* Added by FFmpeg 3.2 */
AVCodec ff_vp9_mediacodec_decoder;
AVCodec ff_vp8_mediacodec_decoder;
AVCodec ff_mpeg4_mediacodec_decoder;
AVCodec ff_mpeg4_cuvid_decoder;
AVCodec ff_mpeg2_cuvid_decoder;
AVCodec ff_mjpeg_cuvid_decoder;
AVCodec ff_hevc_mediacodec_decoder;
AVCodec ff_libopenh264_decoder;
AVCodec ff_pcm_s64le_decoder;
AVCodec ff_pcm_s64le_encoder;
AVCodec ff_pcm_s64be_decoder;
AVCodec ff_pcm_s64be_encoder;
AVCodec ff_truehd_encoder;
AVCodec ff_mlp_encoder;
/* Added by FFmpeg 3.4 */
AVCodec ff_clearvideo_decoder;
AVCodec ff_fits_encoder;
AVCodec ff_fits_decoder;
AVCodec ff_fmvc_decoder;
AVCodec ff_gdv_decoder;
AVCodec ff_h263_v4l2m2m_decoder;
AVCodec ff_h264_v4l2m2m_decoder;
AVCodec ff_h264_rkmpp_decoder;
AVCodec ff_hevc_rkmpp_decoder;
AVCodec ff_hevc_v4l2m2m_decoder;
AVCodec ff_mpeg4_v4l2m2m_decoder;
AVCodec ff_mpeg1_v4l2m2m_decoder;
AVCodec ff_mpeg2_v4l2m2m_decoder;
AVCodec ff_mpeg2_mediacodec_decoder;
AVCodec ff_mscc_decoder;
AVCodec ff_pixlet_decoder;
AVCodec ff_psd_decoder;
AVCodec ff_scpr_decoder;
AVCodec ff_speedhq_decoder;
AVCodec ff_srgc_decoder;
AVCodec ff_vc1_v4l2m2m_decoder;
AVCodec ff_vp8_rkmpp_decoder;
AVCodec ff_vp8_v4l2m2m_decoder;
AVCodec ff_vp9_rkmpp_decoder;
AVCodec ff_vp9_v4l2m2m_decoder;
AVCodec ff_bitpacked_decoder;
AVCodec ff_wrapped_avframe_decoder;
AVCodec ff_xpm_decoder;
AVCodec ff_atrac3al_decoder;
AVCodec ff_atrac3pal_decoder;
AVCodec ff_dolby_e_decoder;
AVCodec ff_opus_encoder;
AVCodec ff_qdmc_decoder;
AVCodec ff_pcm_f16le_decoder;
AVCodec ff_pcm_f24le_decoder;
AVCodec ff_gremlin_dpcm_decoder;
AVCodec ff_adpcm_g726le_encoder;
AVCodec ff_librsvg_decoder;
AVCodec ff_h263_v4l2m2m_encoder;
AVCodec ff_h264_v4l2m2m_encoder;
AVCodec ff_hevc_v4l2m2m_encoder;
AVCodec ff_mpeg2_vaapi_encoder;
AVCodec ff_mpeg4_v4l2m2m_encoder;
AVCodec ff_vp8_qsv_decoder;
AVCodec ff_vp8_v4l2m2m_encoder;
AVCodec ff_vp8_vaapi_encoder;
AVCodec ff_vp9_vaapi_encoder;
AVCodecParser ff_aac_parser;
AVCodecParser ff_aac_latm_parser;
AVCodecParser ff_ac3_parser;
AVCodecParser ff_adx_parser;
AVCodecParser ff_bmp_parser;
AVCodecParser ff_cavsvideo_parser;
AVCodecParser ff_cook_parser;
AVCodecParser ff_dca_parser;
AVCodecParser ff_dirac_parser;
AVCodecParser ff_dnxhd_parser;
AVCodecParser ff_dpx_parser;
AVCodecParser ff_dvaudio_parser;
AVCodecParser ff_dvbsub_parser;
AVCodecParser ff_dvdsub_parser;
AVCodecParser ff_dvd_nav_parser;
AVCodecParser ff_flac_parser;
AVCodecParser ff_g729_parser;
AVCodecParser ff_gsm_parser;
AVCodecParser ff_h261_parser;
AVCodecParser ff_h263_parser;
AVCodecParser ff_h264_parser;
AVCodecParser ff_hevc_parser;
AVCodecParser ff_mjpeg_parser;
AVCodecParser ff_mlp_parser;
AVCodecParser ff_mpeg4video_parser;
AVCodecParser ff_mpegaudio_parser;
AVCodecParser ff_mpegvideo_parser;
AVCodecParser ff_opus_parser;
AVCodecParser ff_png_parser;
AVCodecParser ff_pnm_parser;
AVCodecParser ff_rv30_parser;
AVCodecParser ff_rv40_parser;
AVCodecParser ff_tak_parser;
AVCodecParser ff_vc1_parser;
AVCodecParser ff_vorbis_parser;
AVCodecParser ff_vp3_parser;
/* Added by FFmpeg 3.4 */
AVCodecParser ff_sipr_parser;
AVCodecParser ff_xma_parser;
AVBitStreamFilter ff_aac_adtstoasc_bsf;
AVBitStreamFilter ff_chomp_bsf;
AVBitStreamFilter ff_dump_extradata_bsf;
AVBitStreamFilter ff_h264_mp4toannexb_bsf;
AVBitStreamFilter ff_hevc_mp4toannexb_bsf;
AVBitStreamFilter ff_imx_dump_header_bsf;
AVBitStreamFilter ff_mjpeg2jpeg_bsf;
AVBitStreamFilter ff_mjpega_dump_header_bsf;
AVBitStreamFilter ff_mp3_header_decompress_bsf;
AVBitStreamFilter ff_mpeg4_unpack_bframes_bsf;
AVBitStreamFilter ff_mov2textsub_bsf;
AVBitStreamFilter ff_noise_bsf;
AVBitStreamFilter ff_remove_extradata_bsf;
AVBitStreamFilter ff_text2movsub_bsf;
void ff_fft_init_arm(FFTContext *s) {}
void ff_fft_init_mips(FFTContext *s) {}
void ff_fft_init_ppc(FFTContext *s) {}
void ff_rdft_init_arm(RDFTContext *s) {}
void ff_h264_pred_init_arm(H264PredContext *h, int codec_id,
const int bit_depth, const int chroma_format_idc) {}
void ff_h264_pred_init_mips(H264PredContext *h, int codec_id,
const int bit_depth, const int chroma_format_idc) {}
void ff_me_cmp_init_static(void) {}
int ff_frame_thread_encoder_init(AVCodecContext *avctx, AVDictionary *options) { return 0; }
void ff_frame_thread_encoder_free(AVCodecContext *avctx) {}
int ff_thread_video_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet_ptr) { return 0; }
void ff_videodsp_init_arm(VideoDSPContext *ctx, int bpc) {}
void ff_videodsp_init_ppc(VideoDSPContext *ctx, int bpc) {}
void ff_videodsp_init_mips(VideoDSPContext *ctx, int bpc) {}
void ff_vp7dsp_init(VP8DSPContext *c) {}
void ff_vp78dsp_init_arm(VP8DSPContext *c) {}
void ff_vp78dsp_init_ppc(VP8DSPContext *c) {}
void ff_vp8dsp_init_arm(VP8DSPContext *c) {}
void ff_vp8dsp_init_mips(VP8DSPContext *c) {}
void ff_vp9dsp_init_mips(VP9DSPContext *dsp, int bpp) {}
void ff_vp9dsp_init_arm(VP9DSPContext *dsp, int bpp) {}
#if !defined(__arm__)
void ff_flacdsp_init_arm(FLACDSPContext *c, enum AVSampleFormat fmt, int channels, int bps) {}
#endif
#if !defined(HAVE_64BIT_BUILD)
void ff_flac_decorrelate_indep8_16_sse2(uint8_t **out, int32_t **in, int channels, int len, int shift) {}
void ff_flac_decorrelate_indep8_32_avx(uint8_t **out, int32_t **in, int channels, int len, int shift) {}
void ff_flac_decorrelate_indep8_16_avx(uint8_t **out, int32_t **in, int channels, int len, int shift) {}
void ff_flac_decorrelate_indep8_32_sse2(uint8_t **out, int32_t **in, int channels, int len, int shift) {}
#endif

View File

@ -22,7 +22,6 @@ SOURCES += [
'bsf.c', 'bsf.c',
'codec_desc.c', 'codec_desc.c',
'decode.c', 'decode.c',
'dummy_funcs.c',
'flac.c', 'flac.c',
'flacdata.c', 'flacdata.c',
'flacdec.c', 'flacdec.c',

View File

@ -1,37 +0,0 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim:set ts=2 sw=2 sts=2 et cindent: */
/* 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/. */
#include "avutil.h"
#include "hwcontext.h"
// cpu_internal.c
#if !defined(_ARM64_)
int ff_get_cpu_flags_aarch64(void) { return 0; }
#endif
#if !defined(__arm__)
int ff_get_cpu_flags_arm(void) { return 0; }
#endif
int ff_get_cpu_flags_ppc(void) { return 0; }
// float_dsp.c
#include "float_dsp.h"
#if !defined(_ARM64_)
void ff_float_dsp_init_aarch64(AVFloatDSPContext *fdsp) {}
#endif
void ff_float_dsp_init_ppc(AVFloatDSPContext *fdsp, int strict) {}
void ff_float_dsp_init_mips(AVFloatDSPContext *fdsp) {}
#if !defined(__arm__)
void ff_float_dsp_init_arm(AVFloatDSPContext *fdsp) {}
#endif
// cpu.c
#if !defined(_ARM64_)
size_t ff_get_cpu_max_align_aarch64() { return 0; }
#endif
size_t ff_get_cpu_max_align_ppc() { return 0; }
#if !defined(__arm__)
size_t ff_get_cpu_max_align_arm() { return 0; }
#endif

View File

@ -23,7 +23,6 @@ SOURCES += [
'cpu.c', 'cpu.c',
'crc.c', 'crc.c',
'dict.c', 'dict.c',
'dummy_funcs.c',
'error.c', 'error.c',
'eval.c', 'eval.c',
'fifo.c', 'fifo.c',

View File

@ -19,5 +19,5 @@ origin:
license: "ISC" license: "ISC"
# update.sh will update this value # update.sh will update this value
release: "98a1c8e61c78d4e3b8839352617a1e2432717a42 (2019-06-20 13:30:20 -0700)" release: "0b5b52d371598bfe6bee2385c2d74c8901791e92 (2019-07-19 13:45:46 +1200)"

View File

@ -74,7 +74,7 @@ validate_stream_params(cubeb_stream_params * input_stream_params,
XASSERT(input_stream_params || output_stream_params); XASSERT(input_stream_params || output_stream_params);
if (output_stream_params) { if (output_stream_params) {
if (output_stream_params->rate < 1000 || output_stream_params->rate > 192000 || if (output_stream_params->rate < 1000 || output_stream_params->rate > 192000 ||
output_stream_params->channels < 1) { output_stream_params->channels < 1 || output_stream_params->channels > UINT8_MAX) {
return CUBEB_ERROR_INVALID_FORMAT; return CUBEB_ERROR_INVALID_FORMAT;
} }
} }

View File

@ -61,7 +61,7 @@ const char * PRIVATE_AGGREGATE_DEVICE_NAME = "CubebAggregateDevice";
/* Testing empirically, some headsets report a minimal latency that is very /* Testing empirically, some headsets report a minimal latency that is very
* low, but this does not work in practice. Lie and say the minimum is 256 * low, but this does not work in practice. Lie and say the minimum is 256
* frames. */ * frames. */
const uint32_t SAFE_MIN_LATENCY_FRAMES = 256; const uint32_t SAFE_MIN_LATENCY_FRAMES = 128;
const uint32_t SAFE_MAX_LATENCY_FRAMES = 512; const uint32_t SAFE_MAX_LATENCY_FRAMES = 512;
const AudioObjectPropertyAddress DEFAULT_INPUT_DEVICE_PROPERTY_ADDRESS = { const AudioObjectPropertyAddress DEFAULT_INPUT_DEVICE_PROPERTY_ADDRESS = {
@ -241,6 +241,7 @@ struct cubeb_stream {
/* Latency requested by the user. */ /* Latency requested by the user. */
uint32_t latency_frames = 0; uint32_t latency_frames = 0;
atomic<uint32_t> current_latency_frames{ 0 }; atomic<uint32_t> current_latency_frames{ 0 };
atomic<uint32_t> total_output_latency_frames { 0 };
atomic<float> panning{ 0 }; atomic<float> panning{ 0 };
unique_ptr<cubeb_resampler, decltype(&cubeb_resampler_destroy)> resampler; unique_ptr<cubeb_resampler, decltype(&cubeb_resampler_destroy)> resampler;
/* This is true if a device change callback is currently running. */ /* This is true if a device change callback is currently running. */
@ -368,8 +369,10 @@ typedef UInt32 AudioObjectID;
#define AudioGetCurrentHostTime mach_absolute_time #define AudioGetCurrentHostTime mach_absolute_time
#endif
uint64_t uint64_t
AudioConvertHostTimeToNanos(uint64_t host_time) ConvertHostTimeToNanos(uint64_t host_time)
{ {
static struct mach_timebase_info timebase_info; static struct mach_timebase_info timebase_info;
static bool initialized = false; static bool initialized = false;
@ -385,7 +388,6 @@ AudioConvertHostTimeToNanos(uint64_t host_time)
} }
return (uint64_t)answer; return (uint64_t)answer;
} }
#endif
static void static void
audiounit_increment_active_streams(cubeb * ctx) audiounit_increment_active_streams(cubeb * ctx)
@ -583,6 +585,15 @@ audiounit_output_callback(void * user_ptr,
cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr); cubeb_stream * stm = static_cast<cubeb_stream *>(user_ptr);
uint64_t now = ConvertHostTimeToNanos(mach_absolute_time());
uint64_t audio_output_time = ConvertHostTimeToNanos(tstamp->mHostTime);
uint64_t output_latency_ns = audio_output_time - now;
const int ns2s = 1e9;
// The total output latency is the timestamp difference + the stream latency +
// the hardware latency.
stm->total_output_latency_frames = output_latency_ns * stm->output_hw_rate / ns2s + stm->current_latency_frames;
ALOGV("(%p) output: buffers %u, size %u, channels %u, frames %u, total input frames %lu.", ALOGV("(%p) output: buffers %u, size %u, channels %u, frames %u, total input frames %lu.",
stm, stm,
(unsigned int) outBufferList->mNumberBuffers, (unsigned int) outBufferList->mNumberBuffers,
@ -2973,7 +2984,7 @@ audiounit_stream_get_latency(cubeb_stream * stm, uint32_t * latency)
//TODO //TODO
return CUBEB_ERROR_NOT_SUPPORTED; return CUBEB_ERROR_NOT_SUPPORTED;
#else #else
*latency = stm->current_latency_frames; *latency = stm->total_output_latency_frames;
return CUBEB_OK; return CUBEB_OK;
#endif #endif
} }

View File

@ -573,7 +573,9 @@ layout_to_channel_map(cubeb_channel_layout layout, pa_channel_map * cm)
} }
channelMap = channelMap >> 1; channelMap = channelMap >> 1;
} }
cm->channels = cubeb_channel_layout_nb_channels(layout); unsigned int channels_from_layout = cubeb_channel_layout_nb_channels(layout);
assert(channels_from_layout <= UINT8_MAX);
cm->channels = (uint8_t) channels_from_layout;
} }
static void pulse_context_destroy(cubeb * ctx); static void pulse_context_destroy(cubeb * ctx);
@ -826,7 +828,9 @@ create_pa_stream(cubeb_stream * stm,
if (ss.format == PA_SAMPLE_INVALID) if (ss.format == PA_SAMPLE_INVALID)
return CUBEB_ERROR_INVALID_FORMAT; return CUBEB_ERROR_INVALID_FORMAT;
ss.rate = stream_params->rate; ss.rate = stream_params->rate;
ss.channels = stream_params->channels; if (stream_params->channels > UINT8_MAX)
return CUBEB_ERROR_INVALID_FORMAT;
ss.channels = (uint8_t) stream_params->channels;
if (stream_params->layout == CUBEB_LAYOUT_UNDEFINED) { if (stream_params->layout == CUBEB_LAYOUT_UNDEFINED) {
pa_channel_map cm; pa_channel_map cm;

View File

@ -3,7 +3,6 @@ python_version = '3.6'
[packages] [packages]
aiohttp = "*" aiohttp = "*"
datadog = "*"
mar = "*" mar = "*"
redo = "*" redo = "*"
requests = "*" requests = "*"

View File

@ -1,7 +1,7 @@
{ {
"_meta": { "_meta": {
"hash": { "hash": {
"sha256": "8ae855f2ef3d4d9dcaa6dd796ee176980724e8215eea64494710ef603cadd3c5" "sha256": "99aadbfad074e19038b66e1ac7d268cdf10db18212b3e02fe497b8cc60d8bfec"
}, },
"pipfile-spec": 6, "pipfile-spec": 6,
"requires": { "requires": {
@ -181,21 +181,6 @@
], ],
"version": "==2.7" "version": "==2.7"
}, },
"datadog": {
"hashes": [
"sha256:0e33727bd9ef0b8201359accdf12f61fb58ab541bf4062693aca16653f8e7a0a",
"sha256:995e51d142ae3624c86c78369b268f23386bb207df5345d718c241718387875c"
],
"index": "pypi",
"version": "==0.29.3"
},
"decorator": {
"hashes": [
"sha256:86156361c50488b84a3f148056ea716ca587df2f0de1d34750d35c21312725de",
"sha256:f069f3a01830ca754ba5258fde2278454a0b5b79e0d7f5c13b3b97e57d4acff6"
],
"version": "==4.4.0"
},
"dictdiffer": { "dictdiffer": {
"hashes": [ "hashes": [
"sha256:97cf4ef98ebc1acf737074aed41e379cf48ab5ff528c92109dfb8e2e619e6809", "sha256:97cf4ef98ebc1acf737074aed41e379cf48ab5ff528c92109dfb8e2e619e6809",
@ -316,6 +301,17 @@
}, },
"pyasn1": { "pyasn1": {
"hashes": [ "hashes": [
"sha256:061442c60842f6d11051d4fdae9bc197b64bd41573a12234a753a0cb80b4f30b",
"sha256:0ee2449bf4c4e535823acc25624c45a8b454f328d59d3f3eeb82d3567100b9bd",
"sha256:5f9fb05c33e53b9a6ee3b1ed1d292043f83df465852bec876e93b47fd2df7eed",
"sha256:65201d28e081f690a32401e6253cca4449ccacc8f3988e811fae66bd822910ee",
"sha256:79b336b073a52fa3c3d8728e78fa56b7d03138ef59f44084de5f39650265b5ff",
"sha256:8ec20f61483764de281e0b4aba7d12716189700debcfa9e7935780850bf527f3",
"sha256:9458d0273f95d035de4c0d5e0643f25daba330582cc71bb554fe6969c015042a",
"sha256:98d97a1833a29ca61cd04a60414def8f02f406d732f9f0bcb49f769faff1b699",
"sha256:b00d7bfb6603517e189d1ad76967c7e805139f63e43096e5f871d1277f50aea5",
"sha256:b06c0cfd708b806ea025426aace45551f91ea7f557e0c2d4fbd9a4b346873ce0",
"sha256:d14d05984581770333731690f5453efd4b82e1e5d824a1d7976b868a2e5c38e8",
"sha256:da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7", "sha256:da2420fe13a9452d8ae97a0e478adde1dee153b11ba832a95b223a2ba01c10f7",
"sha256:da6b43a8c9ae93bc80e2739efb38cc776ba74a886e3e9318d65fe81a8b8a2c6e" "sha256:da6b43a8c9ae93bc80e2739efb38cc776ba74a886e3e9318d65fe81a8b8a2c6e"
], ],
@ -338,7 +334,6 @@
"sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb", "sha256:7e6584c74aeed623791615e26efd690f29817a27c73085b78e4bad02493df2fb",
"sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e" "sha256:c89805f6f4d64db21ed966fda138f8a5ed7a4fdbc1a8ee329ce1b74e3c74da9e"
], ],
"markers": "python_version >= '2.7'",
"version": "==2.8.0" "version": "==2.8.0"
}, },
"pyyaml": { "pyyaml": {
@ -355,7 +350,6 @@
"sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13", "sha256:c68ea4d3ba1705da1e0d85da6684ac657912679a649e8868bd850d2c299cce13",
"sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19" "sha256:e23d0cc5299223dcc37885dae624f382297717e459ea24053709675a976a3e19"
], ],
"markers": "python_version != '2.6'",
"version": "==5.1" "version": "==5.1"
}, },
"redo": { "redo": {
@ -456,7 +450,6 @@
"sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1", "sha256:b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1",
"sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232" "sha256:dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232"
], ],
"markers": "python_version >= '3.4'",
"version": "==1.25.3" "version": "==1.25.3"
}, },
"yarl": { "yarl": {

View File

@ -25,15 +25,9 @@ from scriptworker.utils import retry_async
from mardor.reader import MarReader from mardor.reader import MarReader
from mardor.signing import get_keysize from mardor.signing import get_keysize
from datadog import initialize, ThreadStats
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
# Create this even when not sending metrics, so the context manager
# statements work.
ddstats = ThreadStats(namespace='releng.releases.partials')
ROOT_URL = os.environ['TASKCLUSTER_ROOT_URL'] ROOT_URL = os.environ['TASKCLUSTER_ROOT_URL']
QUEUE_PREFIX = ("https://queue.taskcluster.net/" QUEUE_PREFIX = ("https://queue.taskcluster.net/"
@ -64,18 +58,6 @@ BCJ_OPTIONS = {
} }
def write_dogrc(api_key):
"""Datadog .dogrc file for command line interface."""
dogrc_path = os.path.join(os.path.expanduser('~'), '.dogrc')
config = configparser.ConfigParser()
config['Connection'] = {
'apikey': api_key,
'appkey': '',
}
with open(dogrc_path, 'w') as f:
config.write(f)
def verify_signature(mar, certs): def verify_signature(mar, certs):
log.info("Checking %s signature", mar) log.info("Checking %s signature", mar)
with open(mar, 'rb') as mar_fh: with open(mar, 'rb') as mar_fh:
@ -334,11 +316,7 @@ async def manage_partial(partial_def, filename_template, artifacts_dir,
dest = os.path.join(work_env.workdir, "{}.mar".format(mar_type)) dest = os.path.join(work_env.workdir, "{}.mar".format(mar_type))
unpack_dir = os.path.join(work_env.workdir, mar_type) unpack_dir = os.path.join(work_env.workdir, mar_type)
metric_tags = [ await retry_download(f, dest)
"platform:{}".format(partial_def['platform']),
]
with ddstats.timer('mar.download.time', tags=metric_tags):
await retry_download(f, dest)
if not os.getenv("MOZ_DISABLE_MAR_CERT_VERIFICATION"): if not os.getenv("MOZ_DISABLE_MAR_CERT_VERIFICATION"):
verify_signature(dest, signing_certs) verify_signature(dest, signing_certs)
@ -346,8 +324,7 @@ async def manage_partial(partial_def, filename_template, artifacts_dir,
complete_mars["%s_size" % mar_type] = os.path.getsize(dest) complete_mars["%s_size" % mar_type] = os.path.getsize(dest)
complete_mars["%s_hash" % mar_type] = get_hash(dest) complete_mars["%s_hash" % mar_type] = get_hash(dest)
with ddstats.timer('mar.unpack.time'): await unpack(work_env, dest, unpack_dir)
await unpack(work_env, dest, unpack_dir)
if mar_type == 'to': if mar_type == 'to':
check_channels_in_files.append(dest) check_channels_in_files.append(dest)
@ -413,25 +390,11 @@ async def manage_partial(partial_def, filename_template, artifacts_dir,
await work_env.download_buildsystem_bits(repo=mar_data["repo"], await work_env.download_buildsystem_bits(repo=mar_data["repo"],
revision=mar_data["revision"]) revision=mar_data["revision"])
metric_tags = [ await generate_partial(work_env, from_path, to_path, dest_mar,
"branch:{}".format(mar_data['branch']), mar_data, use_old_format)
"platform:{}".format(mar_data['platform']),
# If required. Shouldn't add much useful info, but increases
# cardinality of metrics substantially, so avoided.
# "locale:{}".format(mar_data['locale']),
]
with ddstats.timer('generate_partial.time', tags=metric_tags):
await generate_partial(work_env, from_path, to_path, dest_mar,
mar_data, use_old_format)
mar_data["size"] = os.path.getsize(dest_mar) mar_data["size"] = os.path.getsize(dest_mar)
metric_tags.append("unit:bytes")
# Allows us to find out how many releases there were between the two,
# making buckets of the file sizes easier.
metric_tags.append("update_number:{}".format(mar_data.get('update_number', 0)))
ddstats.gauge('partial_mar_size', mar_data['size'], tags=metric_tags)
mar_data["hash"] = get_hash(dest_mar) mar_data["hash"] = get_hash(dest_mar)
shutil.copy(dest_mar, artifacts_dir) shutil.copy(dest_mar, artifacts_dir)
@ -470,8 +433,6 @@ async def async_main(args, signing_certs):
def main(): def main():
start = time.time()
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument("--artifacts-dir", required=True) parser.add_argument("--artifacts-dir", required=True)
parser.add_argument("--sha1-signing-cert", required=True) parser.add_argument("--sha1-signing-cert", required=True)
@ -504,24 +465,6 @@ def main():
assert(get_keysize(signing_certs['sha1']) == 2048) assert(get_keysize(signing_certs['sha1']) == 2048)
assert(get_keysize(signing_certs['sha384']) == 4096) assert(get_keysize(signing_certs['sha384']) == 4096)
# Intended for local testing.
dd_api_key = os.environ.get('DATADOG_API_KEY')
# Intended for Taskcluster.
if not dd_api_key and os.environ.get('DATADOG_API_SECRET'):
dd_api_key = get_secret(os.environ.get('DATADOG_API_SECRET')).get('key')
if dd_api_key:
dd_options = {
'api_key': dd_api_key,
}
log.info("Starting metric collection")
initialize(**dd_options)
ddstats.start(flush_interval=1)
# For use in shell scripts.
write_dogrc(dd_api_key)
else:
log.info("No metric collection")
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
manifest = loop.run_until_complete(async_main(args, signing_certs)) manifest = loop.run_until_complete(async_main(args, signing_certs))
loop.close() loop.close()
@ -532,21 +475,6 @@ def main():
log.debug("{}".format(json.dumps(manifest, indent=2, sort_keys=True))) log.debug("{}".format(json.dumps(manifest, indent=2, sort_keys=True)))
# Warning: Assumption that one partials task will always be for one branch.
metric_tags = [
"branch:{}".format(manifest[0]['branch']),
"platform:{}".format(manifest[0]['platform']),
]
ddstats.timing('task_duration', time.time() - start,
start, tags=metric_tags)
# Wait for all the metrics to flush. If the program ends before
# they've been sent, they'll be dropped.
# Should be more than the flush_interval for the ThreadStats object
if dd_api_key:
time.sleep(10)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View File

@ -63,22 +63,6 @@ Partials are made as part of the ``promote`` task group. The previous
versions used to create the update are specified in ship-it by versions used to create the update are specified in ship-it by
Release Management. Release Management.
Data About Partials
-------------------
Some metrics are collected in Datadog_ about partial update tasks.
The prefix used is ``releng.releases.partials``, so the relevant metric names
will all start with that.
Some dashboards in Datadog are public, some require a login. If you need
access, file a bug under 'Cloud Services :: Operations: Metrics/Monitoring'
Some examples of potentially useful metrics:
* ``releng.releases.partials.partial_mar_size`` (tagged with branch, platform and update-number)
* ``releng.releases.partials.task_duration`` - the time the task took, running partial generation concurrently.
* ``releng.releases.partials.generate_partial.time`` - the time taken to make one partial update
Nightly Partials Nightly Partials
---------------- ----------------
@ -137,5 +121,3 @@ Otherwise, it will depend on ``repackage-signing``.
This is not ideal, as it results in unclear logic in the task graph This is not ideal, as it results in unclear logic in the task graph
generation. It will be improved. generation. It will be improved.
.. _Datadog: https://app.datadoghq.com/metric/explorer

View File

@ -117,8 +117,6 @@ def make_task_description(config, jobs):
'env': { 'env': {
'SHA1_SIGNING_CERT': 'nightly_sha1', 'SHA1_SIGNING_CERT': 'nightly_sha1',
'SHA384_SIGNING_CERT': 'nightly_sha384', 'SHA384_SIGNING_CERT': 'nightly_sha384',
'DATADOG_API_SECRET':
'project/releng/gecko/build/level-{}/datadog-api-key'.format(level),
'EXTRA_PARAMS': '--arch={}'.format(architecture(attributes['build_platform'])), 'EXTRA_PARAMS': '--arch={}'.format(architecture(attributes['build_platform'])),
'MAR_CHANNEL_ID': attributes['mar-channel-id'] 'MAR_CHANNEL_ID': attributes['mar-channel-id']
} }
@ -132,9 +130,7 @@ def make_task_description(config, jobs):
dep_job.task["metadata"]["description"]), dep_job.task["metadata"]["description"]),
'worker-type': 'b-linux', 'worker-type': 'b-linux',
'dependencies': dependencies, 'dependencies': dependencies,
'scopes': [ 'scopes': [],
'secrets:get:project/releng/gecko/build/level-%s/datadog-api-key' % level
],
'attributes': attributes, 'attributes': attributes,
'run-on-projects': dep_job.attributes.get('run_on_projects'), 'run-on-projects': dep_job.attributes.get('run_on_projects'),
'treeherder': treeherder, 'treeherder': treeherder,

View File

@ -353,7 +353,11 @@ browser.Context = class {
subject => subject == win subject => subject == win
); );
win.focus(); // Bug 1509380 - Missing focus/activate event when Firefox is not
// the top-most application. As such wait for the next tick, and
// manually focus the newly opened window.
win.setTimeout(() => win.focus(), 0);
await Promise.all([activated, focused, startup]); await Promise.all([activated, focused, startup]);
// The new window shouldn't get focused. As such set the // The new window shouldn't get focused. As such set the

View File

@ -527,6 +527,11 @@ class DesktopInstance(GeckoInstance):
# when this Firefox version is no longer supported by the client !!! # when this Firefox version is no longer supported by the client !!!
"app.update.auto": False, "app.update.auto": False,
# Don't show the content blocking introduction panel
# We use a larger number than the default 22 to have some buffer
# This can be removed once Firefox 69 and 68 ESR and are no longer supported.
"browser.contentblocking.introCount": 99,
# Enable output for dump() and chrome console API # Enable output for dump() and chrome console API
"browser.dom.window.dump.enabled": True, "browser.dom.window.dump.enabled": True,
"devtools.console.stdout.chrome": True, "devtools.console.stdout.chrome": True,

View File

@ -86,6 +86,11 @@ const RECOMMENDED_PREFS = new Map([
// (bug 1176798, bug 1177018, bug 1210465) // (bug 1176798, bug 1177018, bug 1210465)
["apz.content_response_timeout", 60000], ["apz.content_response_timeout", 60000],
// Don't show the content blocking introduction panel.
// We use a larger number than the default 22 to have some buffer
// This can be removed once Firefox 69 and 68 ESR and are no longer supported.
["browser.contentblocking.introCount", 99],
// Indicate that the download panel has been shown once so that // Indicate that the download panel has been shown once so that
// whichever download test runs first doesn't show the popup // whichever download test runs first doesn't show the popup
// inconsistently. // inconsistently.

View File

@ -163,7 +163,10 @@ class WindowManagerMixin(object):
let win = window.openDialog(url, null, "chrome,centerscreen"); let win = window.openDialog(url, null, "chrome,centerscreen");
let focused = waitForFocus(win); let focused = waitForFocus(win);
win.focus(); // Bug 1509380 - Missing focus/activate event when Firefox is not
// the top-most application. As such wait for the next tick, and
// manually focus the newly opened window.
win.setTimeout(() => win.focus(), 0);
await focused; await focused;
// The new window shouldn't get focused. As such set the // The new window shouldn't get focused. As such set the

View File

@ -7,7 +7,7 @@
async_test((t) => { async_test((t) => {
const client = new XMLHttpRequest() const client = new XMLHttpRequest()
client.onload = t.step_func_done(() => { client.onload = t.step_func_done(() => {
assert_equals(client.getAllResponseHeaders(), "also-here: Mr. PB\r\newok: lego\r\nfoo-test: 1, 2\r\n") assert_equals(client.getAllResponseHeaders(), "also-here: Mr. PB\r\newok: lego\r\nfoo-test: 1, 2\r\n__custom: token\r\n")
}) })
client.onerror = t.unreached_func("unexpected error") client.onerror = t.unreached_func("unexpected error")
client.open("GET", "resources/headers.asis") client.open("GET", "resources/headers.asis")

View File

@ -1,5 +1,6 @@
HTTP/1.1 200 YAYAYAYA HTTP/1.1 200 YAYAYAYA
foo-TEST: 1 foo-TEST: 1
FOO-test: 2 FOO-test: 2
__Custom: token
ALSO-here: Mr. PB ALSO-here: Mr. PB
ewok: lego ewok: lego

View File

@ -2317,7 +2317,7 @@ devtools.changesview:
- 1532583 - 1532583
description: > description: >
Number of times the Copy All Changes button is used in the Changes panel. Number of times the Copy All Changes button is used in the Changes panel.
expires: "70" expires: "73"
kind: uint kind: uint
notification_emails: notification_emails:
- dev-developer-tools@lists.mozilla.org - dev-developer-tools@lists.mozilla.org
@ -2335,7 +2335,7 @@ devtools.changesview:
- 1532583 - 1532583
description: > description: >
Number of times the Copy Rule button is used in the Changes panel. Number of times the Copy Rule button is used in the Changes panel.
expires: "70" expires: "73"
kind: uint kind: uint
notification_emails: notification_emails:
- dev-developer-tools@lists.mozilla.org - dev-developer-tools@lists.mozilla.org
@ -2354,7 +2354,7 @@ devtools.changesview:
description: > description: >
Number of times the Copy Declaration option is picked from the Changes panel Number of times the Copy Declaration option is picked from the Changes panel
context menu. context menu.
expires: "70" expires: "73"
kind: uint kind: uint
notification_emails: notification_emails:
- dev-developer-tools@lists.mozilla.org - dev-developer-tools@lists.mozilla.org
@ -2373,7 +2373,7 @@ devtools.changesview:
description: > description: >
Number of times the Copy Rule option is picked from the Changes panel Number of times the Copy Rule option is picked from the Changes panel
context menu. context menu.
expires: "70" expires: "73"
kind: uint kind: uint
notification_emails: notification_emails:
- dev-developer-tools@lists.mozilla.org - dev-developer-tools@lists.mozilla.org