diff --git a/dom/media/PeerConnection.js b/dom/media/PeerConnection.js index 12a6687f7df4..cf526fcea270 100644 --- a/dom/media/PeerConnection.js +++ b/dom/media/PeerConnection.js @@ -1190,59 +1190,36 @@ RTCPeerConnection.prototype = { }); }, - createDataChannel: function(label, dict) { + createDataChannel: function(label, { + maxRetransmits, ordered, negotiated, + id = 0xFFFF, + maxRetransmitTime, + maxPacketLifeTime = maxRetransmitTime, + protocol, + } = {}) { this._checkClosed(); - if (dict == undefined) { - dict = {}; - } - if (dict.maxRetransmitNum != undefined) { - dict.maxRetransmits = dict.maxRetransmitNum; - this.logWarning("Deprecated RTCDataChannelInit dictionary entry maxRetransmitNum used!"); - } - if (dict.outOfOrderAllowed != undefined) { - dict.ordered = !dict.outOfOrderAllowed; // the meaning is swapped with - // the name change - this.logWarning("Deprecated RTCDataChannelInit dictionary entry outOfOrderAllowed used!"); - } - if (dict.preset != undefined) { - dict.negotiated = dict.preset; - this.logWarning("Deprecated RTCDataChannelInit dictionary entry preset used!"); + if (maxRetransmitTime !== undefined) { + this.logWarning("Use maxPacketLifeTime instead of deprecated maxRetransmitTime which will stop working soon in createDataChannel!"); } - if (dict.stream != undefined) { - dict.id = dict.stream; - this.logWarning("Deprecated RTCDataChannelInit dictionary entry stream used!"); - } - - if (dict.maxRetransmitTime !== null && dict.maxRetransmits !== null) { + if (maxPacketLifeTime !== undefined && maxRetransmits !== undefined) { throw new this._win.DOMException( - "Both maxRetransmitTime and maxRetransmits cannot be provided", + "Both maxPacketLifeTime and maxRetransmits cannot be provided", "InvalidParameterError"); } - let protocol; - if (dict.protocol == undefined) { - protocol = ""; - } else { - protocol = dict.protocol; - } - // Must determine the type where we still know if entries are undefined. let type; - if (dict.maxRetransmitTime != undefined) { + if (maxPacketLifeTime) { type = Ci.IPeerConnection.kDataChannelPartialReliableTimed; - } else if (dict.maxRetransmits != undefined) { + } else if (maxRetransmits) { type = Ci.IPeerConnection.kDataChannelPartialReliableRexmit; } else { type = Ci.IPeerConnection.kDataChannelReliable; } - // Synchronous since it doesn't block. - let channel = this._impl.createDataChannel( - label, protocol, type, !dict.ordered, dict.maxRetransmitTime, - dict.maxRetransmits, dict.negotiated ? true : false, - dict.id != undefined ? dict.id : 0xFFFF - ); - return channel; + return this._impl.createDataChannel(label, protocol, type, ordered, + maxPacketLifeTime, maxRetransmits, + negotiated, id); } }; diff --git a/dom/webidl/PeerConnectionImpl.webidl b/dom/webidl/PeerConnectionImpl.webidl index f3348aec8234..d30f6783480c 100644 --- a/dom/webidl/PeerConnectionImpl.webidl +++ b/dom/webidl/PeerConnectionImpl.webidl @@ -101,7 +101,7 @@ interface PeerConnectionImpl { /* Data channels */ [Throws] DataChannel createDataChannel(DOMString label, DOMString protocol, - unsigned short type, boolean outOfOrderAllowed, + unsigned short type, boolean ordered, unsigned short maxTime, unsigned short maxNum, boolean externalNegotiated, unsigned short stream); }; diff --git a/dom/webidl/RTCPeerConnection.webidl b/dom/webidl/RTCPeerConnection.webidl index abbc50b5138d..597de14e83fb 100644 --- a/dom/webidl/RTCPeerConnection.webidl +++ b/dom/webidl/RTCPeerConnection.webidl @@ -38,18 +38,15 @@ enum RTCIceConnectionState { }; dictionary RTCDataChannelInit { - boolean ordered = true; - unsigned short? maxRetransmitTime = null; - unsigned short? maxRetransmits = null; - DOMString protocol = ""; - boolean negotiated = false; // spec currently says 'true'; we disagree - unsigned short? id = null; + boolean ordered = true; + unsigned short maxPacketLifeTime; + unsigned short maxRetransmits; + DOMString protocol = ""; + boolean negotiated = false; + unsigned short id; - // these are deprecated due to renaming in the spec, but still supported for Fx22 - boolean outOfOrderAllowed; // now ordered, and the default changes to keep behavior the same - unsigned short maxRetransmitNum; // now maxRetransmits - boolean preset; // now negotiated - unsigned short stream; // now id + // These are deprecated due to renaming in the spec, but still supported for Fx53 + unsigned short maxRetransmitTime; }; dictionary RTCOfferAnswerOptions { diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp index 3c244a741084..980a6089fefa 100644 --- a/layout/generic/nsTextFrame.cpp +++ b/layout/generic/nsTextFrame.cpp @@ -2064,19 +2064,6 @@ BuildTextRunsScanner::BuildTextRunForFrames(void* aTextBuffer) (mLineContainer->StyleText()->mTextAlign == NS_STYLE_TEXT_ALIGN_JUSTIFY || mLineContainer->StyleText()->mTextAlignLast == NS_STYLE_TEXT_ALIGN_JUSTIFY); - // for word-break style - switch (mLineContainer->StyleText()->mWordBreak) { - case NS_STYLE_WORDBREAK_BREAK_ALL: - mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_BreakAll); - break; - case NS_STYLE_WORDBREAK_KEEP_ALL: - mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_KeepAll); - break; - default: - mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_Normal); - break; - } - const nsStyleText* textStyle = nullptr; const nsStyleFont* fontStyle = nullptr; nsStyleContext* lastStyleContext = nullptr; @@ -2555,6 +2542,19 @@ void BuildTextRunsScanner::SetupBreakSinksForTextRun(gfxTextRun* aTextRun, const void* aTextPtr) { + // for word-break style + switch (mLineContainer->StyleText()->mWordBreak) { + case NS_STYLE_WORDBREAK_BREAK_ALL: + mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_BreakAll); + break; + case NS_STYLE_WORDBREAK_KEEP_ALL: + mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_KeepAll); + break; + default: + mLineBreaker.SetWordBreak(nsILineBreaker::kWordBreak_Normal); + break; + } + // textruns have uniform language const nsStyleFont *styleFont = mMappedFlows[0].mStartFrame->StyleFont(); // We should only use a language for hyphenation if it was specified diff --git a/layout/reftests/text/reftest.list b/layout/reftests/text/reftest.list index 7e4bd55c02ce..b895ecd5acc3 100644 --- a/layout/reftests/text/reftest.list +++ b/layout/reftests/text/reftest.list @@ -122,6 +122,7 @@ HTTP(..) == wordbreak-7a.html wordbreak-7a-ref.html fails HTTP(..) == wordbreak-7b.html wordbreak-7b-ref.html # bug 479829 == wordbreak-8.html wordbreak-8-ref.html pref(gfx.font_rendering.graphite.enabled,true) HTTP(..) == wordbreak-9.html wordbreak-9-ref.html +== wordbreak-dynamic-1.html wordbreak-dynamic-1-ref.html == wordwrap-01.html wordwrap-01-ref.html HTTP(..) == wordwrap-02.html wordwrap-02-ref.html fuzzy-if(gtkWidget,1,177) fuzzy-if(skiaContent,1,50) HTTP(..) == wordwrap-03.html wordwrap-03-ref.html # Fuzzy on Linux because the native textbox gradient is painted in a slightly different position depending on the invalid area. diff --git a/layout/reftests/text/wordbreak-dynamic-1-ref.html b/layout/reftests/text/wordbreak-dynamic-1-ref.html new file mode 100644 index 000000000000..f8feb44cbfe5 --- /dev/null +++ b/layout/reftests/text/wordbreak-dynamic-1-ref.html @@ -0,0 +1,18 @@ + + + + + Reference - word-break: break-all with dynamic change + + + +
a bcdef
+ + diff --git a/layout/reftests/text/wordbreak-dynamic-1.html b/layout/reftests/text/wordbreak-dynamic-1.html new file mode 100644 index 000000000000..930ba6efb5f8 --- /dev/null +++ b/layout/reftests/text/wordbreak-dynamic-1.html @@ -0,0 +1,25 @@ + + + + + Test - word-break: break-all with dynamic change + + + +
a bcdef
+ + + diff --git a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp index 1f1d0041f028..ea40a9631000 100644 --- a/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp +++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionImpl.cpp @@ -1337,7 +1337,7 @@ already_AddRefed PeerConnectionImpl::CreateDataChannel(const nsAString& aLabel, const nsAString& aProtocol, uint16_t aType, - bool outOfOrderAllowed, + bool ordered, uint16_t aMaxTime, uint16_t aMaxNum, bool aExternalNegotiated, @@ -1346,7 +1346,7 @@ PeerConnectionImpl::CreateDataChannel(const nsAString& aLabel, { #if !defined(MOZILLA_EXTERNAL_LINKAGE) RefPtr result; - rv = CreateDataChannel(aLabel, aProtocol, aType, outOfOrderAllowed, + rv = CreateDataChannel(aLabel, aProtocol, aType, ordered, aMaxTime, aMaxNum, aExternalNegotiated, aStream, getter_AddRefs(result)); return result.forget(); @@ -1359,7 +1359,7 @@ NS_IMETHODIMP PeerConnectionImpl::CreateDataChannel(const nsAString& aLabel, const nsAString& aProtocol, uint16_t aType, - bool outOfOrderAllowed, + bool ordered, uint16_t aMaxTime, uint16_t aMaxNum, bool aExternalNegotiated, @@ -1380,7 +1380,7 @@ PeerConnectionImpl::CreateDataChannel(const nsAString& aLabel, } dataChannel = mDataConnection->Open( NS_ConvertUTF16toUTF8(aLabel), NS_ConvertUTF16toUTF8(aProtocol), theType, - !outOfOrderAllowed, + ordered, aType == DataChannelConnection::PARTIAL_RELIABLE_REXMIT ? aMaxNum : (aType == DataChannelConnection::PARTIAL_RELIABLE_TIMED ? aMaxTime : 0), nullptr, nullptr, aExternalNegotiated, aStream diff --git a/mobile/android/base/java/org/mozilla/gecko/telemetry/stores/TelemetryJSONFilePingStore.java b/mobile/android/base/java/org/mozilla/gecko/telemetry/stores/TelemetryJSONFilePingStore.java index 4f129f9669c5..d5238214650a 100644 --- a/mobile/android/base/java/org/mozilla/gecko/telemetry/stores/TelemetryJSONFilePingStore.java +++ b/mobile/android/base/java/org/mozilla/gecko/telemetry/stores/TelemetryJSONFilePingStore.java @@ -196,7 +196,7 @@ public class TelemetryJSONFilePingStore extends TelemetryPingStore { inputStream = new FileInputStream(file); } catch (final FileNotFoundException e) { // permission problem might also cause same exception. To get more debug information. - String fileInfo = String.format("existence: %b, can write: %b, size: %l.", + String fileInfo = String.format("existence: %b, can write: %b, size: %d.", file.exists(), file.canWrite(), file.length()); String msg = String.format( "Expected file to exist but got exception in thread: %s. File info - %s", diff --git a/taskcluster/ci/build/android.yml b/taskcluster/ci/build/android.yml index d16a772da20e..c7e693792b15 100644 --- a/taskcluster/ci/build/android.yml +++ b/taskcluster/ci/build/android.yml @@ -2,9 +2,7 @@ android-api-15/debug: description: "Android 4.0 API15+ Debug" index: product: mobile - job-name: - buildbot: android-api-15-debug - gecko-v2: android-api-15-debug + job-name: android-api-15-debug treeherder: platform: android-4-0-armv7-api15/debug symbol: tc(B) diff --git a/taskcluster/ci/build/linux.yml b/taskcluster/ci/build/linux.yml index 0bc5133a6946..608addb39265 100644 --- a/taskcluster/ci/build/linux.yml +++ b/taskcluster/ci/build/linux.yml @@ -26,9 +26,7 @@ linux64/pgo: description: "Linux64 PGO" index: product: firefox - job-name: - buildbot: linux64-pgo - gecko-v2: linux64-pgo + job-name: linux64-pgo treeherder: platform: linux64/pgo symbol: tc(B) @@ -54,9 +52,7 @@ linux64/debug: description: "Linux64 Debug" index: product: firefox - job-name: - buildbot: linux64-debug - gecko-v2: linux64-debug + job-name: linux64-debug treeherder: platform: linux64/debug symbol: tc(B) @@ -131,8 +127,7 @@ linux/pgo: description: "Linux32 PGO" index: product: firefox - job-name: - gecko-v2: linux-pgo + job-name: linux-pgo treeherder: platform: linux32/pgo symbol: tc(B) diff --git a/taskcluster/ci/build/windows.yml b/taskcluster/ci/build/windows.yml index 67dfe30c5992..ab41ccacf0c0 100644 --- a/taskcluster/ci/build/windows.yml +++ b/taskcluster/ci/build/windows.yml @@ -2,8 +2,7 @@ win32/debug: description: "Win32 Debug" index: product: firefox - job-name: - gecko-v2: win32-debug + job-name: win32-debug treeherder: platform: windows2012-32/debug symbol: tc(B) @@ -22,8 +21,7 @@ win32/opt: description: "Win32 Opt" index: product: firefox - job-name: - gecko-v2: win32-opt + job-name: win32-opt treeherder: platform: windows2012-32/opt symbol: tc(B) @@ -42,8 +40,7 @@ win32/pgo: description: "Win32 Opt PGO" index: product: firefox - job-name: - gecko-v2: win32-pgo + job-name: win32-pgo treeherder: platform: windows2012-32/pgo symbol: tc(B) @@ -63,8 +60,7 @@ win64/debug: description: "Win64 Debug" index: product: firefox - job-name: - gecko-v2: win64-debug + job-name: win64-debug treeherder: platform: windows2012-64/debug symbol: tc(B) @@ -83,8 +79,7 @@ win64/opt: description: "Win64 Opt" index: product: firefox - job-name: - gecko-v2: win64-opt + job-name: win64-opt treeherder: platform: windows2012-64/opt symbol: tc(B) @@ -103,8 +98,7 @@ win64/pgo: description: "Win64 Opt PGO" index: product: firefox - job-name: - gecko-v2: win64-pgo + job-name: win64-pgo treeherder: platform: windows2012-64/pgo symbol: tc(B) diff --git a/taskcluster/ci/hazard/kind.yml b/taskcluster/ci/hazard/kind.yml index 4849cdbd64a3..e04af240ca72 100644 --- a/taskcluster/ci/hazard/kind.yml +++ b/taskcluster/ci/hazard/kind.yml @@ -24,8 +24,7 @@ jobs: description: "JS Shell Hazard Analysis Linux" index: product: firefox - job-name: - gecko-v2: shell-haz-debug + job-name: shell-haz-debug treeherder: platform: linux64/debug symbol: SM-tc(H) @@ -44,8 +43,7 @@ jobs: description: "Browser Hazard Analysis Linux" index: product: firefox - job-name: - gecko-v2: browser-haz-debug + job-name: browser-haz-debug treeherder: platform: linux64/debug symbol: tc(H) diff --git a/taskcluster/ci/l10n/kind.yml b/taskcluster/ci/l10n/kind.yml index cc4e9b2ac50e..04a05b237958 100644 --- a/taskcluster/ci/l10n/kind.yml +++ b/taskcluster/ci/l10n/kind.yml @@ -47,8 +47,7 @@ jobs: linux-l10n/opt: description: "Localization" index: - job-name: - gecko-v2: linux32-l10n-opt + job-name: linux32-l10n-opt treeherder: platform: linux32/opt symbol: tc(L10n) @@ -69,8 +68,7 @@ jobs: linux64-l10n/opt: description: "Localization" index: - job-name: - gecko-v2: linux64-l10n-opt + job-name: linux64-l10n-opt treeherder: platform: linux64/opt symbol: tc(L10n) @@ -92,8 +90,7 @@ jobs: description: "Single Locale Repack" index: product: mobile - job-name: - gecko-v2: android-l10n-opt + job-name: android-l10n-opt treeherder: platform: android-4-0-armv7-api15/opt symbol: tc(L10n) diff --git a/taskcluster/ci/spidermonkey/kind.yml b/taskcluster/ci/spidermonkey/kind.yml index 9e8f9a682a5b..1d75406bf969 100644 --- a/taskcluster/ci/spidermonkey/kind.yml +++ b/taskcluster/ci/spidermonkey/kind.yml @@ -34,9 +34,7 @@ jobs: sm-package/opt: description: "Spidermonkey source package and test" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-package-opt + job-name: sm-package-opt treeherder: symbol: SM-tc(pkg) run: @@ -71,8 +69,7 @@ jobs: sm-mozjs-sys/debug: description: "Build js/src as the mozjs_sys Rust crate" index: - job-name: - gecko-v2: sm-mozjs-sys-debug + job-name: sm-mozjs-sys-debug treeherder: symbol: SM-tc(mozjs-crate) run: @@ -86,9 +83,7 @@ jobs: sm-plain/debug: description: "Spidermonkey Plain" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-plaindebug-debug + job-name: sm-plaindebug-debug treeherder: platform: linux64/debug symbol: SM-tc(p) @@ -107,9 +102,7 @@ jobs: sm-arm-sim/debug: description: "Spidermonkey ARM sim" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-arm-sim-debug + job-name: sm-arm-sim-debug treeherder: symbol: SM-tc(arm) run: @@ -118,9 +111,7 @@ jobs: sm-arm64-sim/debug: description: "Spidermonkey ARM64 sim" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-arm64-sim-debug + job-name: sm-arm64-sim-debug treeherder: symbol: SM-tc(arm64) run: @@ -129,9 +120,7 @@ jobs: sm-asan/opt: description: "Spidermonkey Address Sanitizer" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-asan-opt + job-name: sm-asan-opt treeherder: symbol: SM-tc(asan) run: @@ -141,9 +130,7 @@ jobs: sm-compacting/debug: description: "Spidermonkey Compacting" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-compacting-debug + job-name: sm-compacting-debug treeherder: symbol: SM-tc(cgc) run: @@ -152,9 +139,7 @@ jobs: sm-msan/opt: description: "Spidermonkey Memory Sanitizer" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-msan-opt + job-name: sm-msan-opt treeherder: symbol: SM-tc(msan) run: @@ -164,9 +149,7 @@ jobs: sm-tsan/opt: description: "Spidermonkey Thread Sanitizer" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-tsan-opt + job-name: sm-tsan-opt treeherder: symbol: SM-tc(tsan) tier: 3 @@ -178,9 +161,7 @@ jobs: sm-rootanalysis/debug: description: "Spidermonkey Root Analysis" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-rootanalysis-debug + job-name: sm-rootanalysis-debug treeherder: symbol: SM-tc(r) run: @@ -189,9 +170,7 @@ jobs: sm-nonunified/debug: description: "Spidermonkey Non-Unified Debug" index: - job-name: - buildbot: sm-plain - gecko-v2: sm-nonunified-debug + job-name: sm-nonunified-debug treeherder: platform: linux64/debug symbol: SM-tc(nu) diff --git a/taskcluster/scripts/tester/test-macosx.sh b/taskcluster/scripts/tester/test-macosx.sh index 81c2cb6e1715..a5c0086c1949 100644 --- a/taskcluster/scripts/tester/test-macosx.sh +++ b/taskcluster/scripts/tester/test-macosx.sh @@ -25,12 +25,38 @@ if [[ -z ${MOZHARNESS_URL} ]]; then fail "MOZHARNESS_URL is not set"; fi if [[ -z ${MOZHARNESS_SCRIPT} ]]; then fail "MOZHARNESS_SCRIPT is not set"; fi if [[ -z ${MOZHARNESS_CONFIG} ]]; then fail "MOZHARNESS_CONFIG is not set"; fi -# Unzip the mozharness ZIP file created by the build task -if ! curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then - fail "failed to download mozharness zip" -fi -rm -rf mozharness -unzip -q mozharness.zip +# Download mozharness with exponential backoff +# curl already applies exponential backoff, but not for all +# failed cases, apparently, as we keep getting failed downloads +# with 404 code. +download_mozharness() { + local max_attempts=10 + local timeout=1 + local attempt=0 + + echo "Downloading mozharness" + + while [[ $attempt < $max_attempts ]]; do + if curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then + rm -rf mozharness + if unzip -q mozharness.zip; then + break + else + echo "error unzipping mozharness.zip" >&2 + fi + else + echo "failed to download mozharness zip" >&2 + fi + echo "Download failed, retrying in $timeout seconds..." >&2 + sleep $timeout + timeout=$((timeout*2)) + attempt=$((attempt+1)) + done + + fail "Failed to download and unzip mozharness" +} + +download_mozharness rm mozharness.zip # For telemetry purposes, the build process wants information about the diff --git a/taskcluster/scripts/tester/test-ubuntu.sh b/taskcluster/scripts/tester/test-ubuntu.sh index 3bbafef31dc2..0c2ccc702198 100644 --- a/taskcluster/scripts/tester/test-ubuntu.sh +++ b/taskcluster/scripts/tester/test-ubuntu.sh @@ -69,15 +69,39 @@ cleanup() { } trap cleanup EXIT INT +# Download mozharness with exponential backoff +# curl already applies exponential backoff, but not for all +# failed cases, apparently, as we keep getting failed downloads +# with 404 code. +download_mozharness() { + local max_attempts=10 + local timeout=1 + local attempt=0 + + echo "Downloading mozharness" + + while [[ $attempt < $max_attempts ]]; do + if curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then + rm -rf mozharness + if unzip -q mozharness.zip; then + return 0 + fi + echo "error unzipping mozharness.zip" >&2 + else + echo "failed to download mozharness zip" >&2 + fi + echo "Download failed, retrying in $timeout seconds..." >&2 + sleep $timeout + timeout=$((timeout*2)) + attempt=$((attempt+1)) + done + + fail "Failed to download and unzip mozharness" +} + # Download mozharness if we're told to. if [ ${MOZHARNESS_URL} ]; then - if ! curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL; then - fail "failed to download mozharness zip" - fi - rm -rf mozharness - if ! unzip -q mozharness.zip; then - fail "error unzipping mozharness.zip" - fi + download_mozharness rm mozharness.zip if ! [ -d mozharness ]; then diff --git a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py index 824830ca09f4..60c2f7d141dc 100644 --- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py +++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py @@ -72,7 +72,7 @@ JOB_NAME_WHITELIST = set([ ]) JOB_NAME_WHITELIST_ERROR = """\ -The gecko-v2 job name {} is not in the whitelist in __file__. +The gecko-v2 job name {} is not in the whitelist in gecko_v2_whitelist.py. If this job runs on Buildbot, please ensure that the job names match between Buildbot and TaskCluster, then add the job name to the whitelist. If this is a new job, there is nothing to check -- just add the job to the whitelist. diff --git a/taskcluster/taskgraph/transforms/task.py b/taskcluster/taskgraph/transforms/task.py index 0c72b4601b35..538206e30fc7 100644 --- a/taskcluster/taskgraph/transforms/task.py +++ b/taskcluster/taskgraph/transforms/task.py @@ -89,20 +89,7 @@ task_description_schema = Schema({ 'product': Any('firefox', 'mobile'), # the names to use for this job in the TaskCluster index - 'job-name': Any( - # Assuming the job is named "normally", this is the v2 job name, - # and the v1 and buildbot routes will be determined appropriately. - basestring, - - # otherwise, give separate names for each of the legacy index - # routes; if a name is omitted, no corresponding route will be - # created. - { - # the name as it appears in buildbot routes - Optional('buildbot'): basestring, - Required('gecko-v2'): basestring, - } - ), + 'job-name': basestring, # The rank that the task will receive in the TaskCluster # index. A newly completed task supercedes the currently @@ -314,15 +301,10 @@ GROUP_NAMES = { } UNKNOWN_GROUP_NAME = "Treeherder group {} has no name; add it to " + __file__ -BUILDBOT_ROUTE_TEMPLATES = [ - "index.buildbot.branches.{project}.{job-name-buildbot}", - "index.buildbot.revisions.{head_rev}.{project}.{job-name-buildbot}", -] - V2_ROUTE_TEMPLATES = [ - "index.gecko.v2.{project}.latest.{product}.{job-name-gecko-v2}", - "index.gecko.v2.{project}.pushdate.{build_date_long}.{product}.{job-name-gecko-v2}", - "index.gecko.v2.{project}.revision.{head_rev}.{product}.{job-name-gecko-v2}", + "index.gecko.v2.{project}.latest.{product}.{job-name}", + "index.gecko.v2.{project}.pushdate.{build_date_long}.{product}.{job-name}", + "index.gecko.v2.{project}.revision.{head_rev}.{product}.{job-name}", ] # the roots of the treeherder routes, keyed by treeherder environment @@ -521,30 +503,17 @@ def add_index_routes(config, tasks): continue job_name = index['job-name'] - # unpack the v2 name to v1 and buildbot names - if isinstance(job_name, basestring): - base_name, type_name = job_name.rsplit('-', 1) - job_name = { - 'buildbot': base_name, - 'gecko-v2': '{}-{}'.format(base_name, type_name), - } - - if job_name['gecko-v2'] not in JOB_NAME_WHITELIST: - raise Exception(JOB_NAME_WHITELIST_ERROR.format(job_name['gecko-v2'])) + if job_name not in JOB_NAME_WHITELIST: + raise Exception(JOB_NAME_WHITELIST_ERROR.format(job_name)) subs = config.params.copy() - for n in job_name: - subs['job-name-' + n] = job_name[n] + subs['job-name'] = job_name subs['build_date_long'] = time.strftime("%Y.%m.%d.%Y%m%d%H%M%S", time.gmtime(config.params['build_date'])) subs['product'] = index['product'] - if 'buildbot' in job_name: - for tpl in BUILDBOT_ROUTE_TEMPLATES: - routes.append(tpl.format(**subs)) - if 'gecko-v2' in job_name: - for tpl in V2_ROUTE_TEMPLATES: - routes.append(tpl.format(**subs)) + for tpl in V2_ROUTE_TEMPLATES: + routes.append(tpl.format(**subs)) # The default behavior is to rank tasks according to their tier extra_index = task.setdefault('extra', {}).setdefault('index', {}) @@ -665,7 +634,7 @@ def check_v2_routes(): for mh, tg in [ ('{index}', 'index'), ('{build_product}', '{product}'), - ('{build_name}-{build_type}', '{job-name-gecko-v2}'), + ('{build_name}-{build_type}', '{job-name}'), ('{year}.{month}.{day}.{pushdate}', '{build_date_long}')]: routes = [r.replace(mh, tg) for r in routes]