Commit Graph

5644 Commits

Author SHA1 Message Date
Tiberius Oros
649398dfd9 Merge inbound to mozilla-central. a=merge 2018-03-21 12:03:08 +02:00
J. Ryan Stinnett
0cee298854 Bug 1446222 - Move DevTools content process startup to new dir. r=jdescottes
Move and rename the server's process script (and accompanying JSM) that starts
DevTools for an entire content process from `content-process-debugger-server.js`
to `startup/content-process.js`.  `connectToContent` also becomes the more
specific `connectToContentProcess`.

These code paths will likely change more as Site Isolation work continues, but
for now, we have this light cleanup to gather startup-related paths together.

MozReview-Commit-ID: 1evbZMB8T7r

--HG--
rename : devtools/server/content-process-debugger-server.js => devtools/server/startup/content-process.js
rename : devtools/server/content-server.jsm => devtools/server/startup/content-process.jsm
extra : rebase_source : e077dd3dc915ec274f866d53d3539909f8440de1
2018-03-19 21:28:26 -05:00
Kris Maglione
c69ba360c1 Bug 1446676: Part 2 - Update non-overlay automation extensions to be bootstrapped. r=Mossop
In order to remove support for non-bootstrapped extensions, the remaining test
automation extensions need to be migrated to bootstrapped extensions. These
extensions all work by loading a single component, either with a
profile-after-change or command line handler. This is a straightforward
conversion of those components to bootstrap.js scripts.

MozReview-Commit-ID: 5uyNSqRPIVR

--HG--
rename : services/sync/tps/extensions/tps/components/tps-cmdline.js => services/sync/tps/extensions/tps/bootstrap.js
rename : testing/talos/talos/pageloader/components/tp-cmdline.js => testing/talos/talos/pageloader/bootstrap.js
rename : testing/talos/talos/startup_test/sessionrestore/addon/SessionRestoreTalosTest.js => testing/talos/talos/startup_test/sessionrestore/addon/bootstrap.js
rename : testing/talos/talos/talos-powers/components/TalosPowersService.js => testing/talos/talos/talos-powers/bootstrap.js
rename : tools/quitter/QuitterObserver.js => tools/quitter/bootstrap.js
extra : rebase_source : 2df7dce1afe4e9e4054d12adfc1553e5f5d417e2
2018-03-16 22:06:22 -07:00
Emilio Cobos Álvarez
e9676561ce Bug 1446954: Remove support for running tests on automation without stylo configurations. r=froydnj
You can still run them on a --disable-stylo build, as long as that works
(presumably not for long).

I think I haven't missed anything, but please double-check.

MozReview-Commit-ID: 3BIAEjgTLo5
2018-03-20 11:29:08 +01:00
Mark Banner
60f8abf420 Bug 1443093 - Change the update.sh scripts to use in-tree tooltool.py and update the node_modules bundles on the servers. r=mossop
MozReview-Commit-ID: HQLRoOYVjXo

--HG--
extra : rebase_source : 9f2d7925f3f75b6d488056d4e03af92ce63d433c
2018-03-19 10:18:49 +00:00
Mark Banner
0f3ec963be Bug 1443093 - Update eslint-plugin-no-unsanitized to 3.0.0 / eslint to 4.18.2. r=mossop
Also change eslint-plugin-mozilla's globals.js to use eslint-scope rather than escope as
ESLint 4.x changed to eslint-scope. This avoids dependency issues that were masked by the
depedencies of eslint-plugin-no-unsanitized's previous version.

MozReview-Commit-ID: 6wLY7Oj0am3

--HG--
extra : rebase_source : 863313d7907e8246d1f5b0ee83164cc0f943f8f6
2018-03-05 10:34:38 +00:00
Bogdan Tara
7eb4cdd58d Merge mozilla-central to autoland. a=merge CLOSED TREE 2018-03-17 12:34:09 +02:00
Bogdan Tara
4785e99532 Merge inbound to mozilla-central. a=merge 2018-03-17 12:29:57 +02:00
Kris Maglione
313b707b2e Bug 1443964: Part 3 - Remove no-cpows-in-tests rule. r=mconley
The shims that this rule tests for no longer exist.

MozReview-Commit-ID: DMgP7Hczavc

--HG--
extra : rebase_source : 765ddd5c62c9449c07ed050e44d86a3bd5c0ae64
extra : amend_source : 627a7694ac07182200f876901ded7a34721cd228
2018-03-07 19:31:28 -08:00
Gurzau Raul
3057041352 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-03-16 19:58:27 +02:00
Sylvestre Ledru
b5f9522581 Bug 1438839 - Finish the flake8 fixes on tools/ r=ahal
MozReview-Commit-ID: F9c4laxe8Pt

--HG--
extra : rebase_source : ed304bcf485a448e863b9bbc82427ae5a88ea2c2
extra : histedit_source : 2c8e0beefee259fe7a31e0436e7a94519a3e05ae
2018-03-15 11:31:12 +01:00
Sylvestre Ledru
a0ab39f145 Bug 1438839 - Fix the remaining flake8 issues by hand r=ahal
MozReview-Commit-ID: Fv1MZIpCL8Z

--HG--
extra : rebase_source : 804567a78a5696997e2aa511814a4f8ff22d9c31
extra : histedit_source : 88401e831d81708b6ed6122666ba9fa8c1de23d5
2018-03-15 11:34:03 +01:00
Sylvestre Ledru
ef5ad1811f Bug 1438839 - autopep8 -i --max-line-length 99 on the tools/ r=ahal
MozReview-Commit-ID: KSKbctxjxl0

--HG--
extra : rebase_source : feebd58ff005750face884035f85a55e0ff638c8
extra : histedit_source : 5d7464caeb41bad25bc99d3b2e32ea5285464499
2018-03-15 11:32:42 +01:00
Sebastian Hengst
d247fb5f4e Bug 1445763 - Update moz.build meta data with "Firefox Build System". r=froydnj
MozReview-Commit-ID: 3FrWJ6441pe

--HG--
extra : rebase_source : c8f1dc45041132252e28869ada6a386270267431
2018-03-14 21:44:46 +01:00
Andrew Halberstadt
35ace05949 Bug 1369711 - [mozlint] Make sure KeyboardInterrupts are handled well wherever they happen r=gps
There a few pieces needed here to properly handle KeyboardInterrupts.

1. All in-progress work needs to abort. Ideally the underlying linters will be
able to catch KeyboardInterrupt, and return partial results (like the flake8
linter does). Linters may alternatively allow the KeyboardInterrupt to
propagate up. Mozlint will catch and handle this appropriately, though any
results found will be lost. The only change to this behaviour was fixing a bug
in the flake8 linter.

2. Any unstarted jobs need to be canceled. In concurrent.futures, there are two
different queues. First, jobs are placed on the work queue, which is just a list
maintained by the parent process. As workers become available, jobs are moved
off the work queue, and onto the call queue (which is a multiprocessing.Queue).
Jobs that live on the work queue can be canceled with 'future.cancel()', whereas
jobs that live on the call queue cannot. The number of extra jobs that are stored
on the call queue is determined by this variable:
https://hg.mozilla.org/mozilla-central/file/deb7714a7bcd/third_party/python/futures/concurrent/futures/process.py#l86

In this patch, the parent process' sigint handler (which will be called on Ctrl-C)
is responsible for canceling all the jobs on the work queue. For the jobs on the
call queue, the best we can do is set a global variable that tells workers to
abort early.

3. Idle workers should exit gracefully. When there are no more jobs left, workers
will block on the call queue (either waiting for more jobs, or waiting for the
executor to send the shutdown signal). If a KeyboardInterrupt is received while a
worker is blocking, it isn't possible to intercept that anywhere (due to quirks
of how concurrent.futures is implemented). The InterruptableQueue class was
created to solve this problem. It will return None instead of propagating
KeyboardInterrupt. A None value will wake the worker up and tell it to gracefully
shutdown. This way, we avoid cryptic tracebacks in the output.

With all of these various pieces solved, pressing Ctrl-C appears to always exit
gracefully, sometimes even printing partial results.

MozReview-Commit-ID: 36Pe3bbUKmk

--HG--
extra : rebase_source : d4c312ee5cc3679eeee1407c5521aed679f84ad4
extra : source : a93a00141bf62f6bc9e30934c0e56f6b2e434bf0
2018-02-23 08:55:06 -05:00
Tom Prince
3267308b01 Bug 1446110: [update-packaging] Specify prefix for temporary files; r=bhearsum
Thunderbird is currently still building on macOS, where `mktemp` requires an
argument.

MozReview-Commit-ID: DCoZAYA6tTI

--HG--
extra : rebase_source : 48775eba4f934fd244a74da615bc7754370b504e
2018-03-15 14:10:59 -06:00
Sylvestre Ledru
fa08b7ce18 Bug 1438839 - Add tools/ as part of the whitelist of flake8 r=ahal
MozReview-Commit-ID: 3J44Yz7rV63

--HG--
extra : rebase_source : 4a270af9cc6c4fa37aba9f328643c66d165df2c3
extra : histedit_source : 5f092731ec6a420efccefbd850bdc937acd24b85
2018-02-16 11:48:12 +01:00
Kit Cambridge
bade435150 Bug 1446258 - Expose MessageChannel to System. r=baku
MozReview-Commit-ID: Bd8pvsDk4Ow

--HG--
extra : rebase_source : af02b4370f847a3ab5caf91e84ef46458c274076
2018-03-16 05:36:50 -07:00
Brendan Dahl
8a6f97c45c Bug 1442302 - Remove placesOverlay.xul. r=Gijs,mak,standard8
The overlay was responsible for script loading and defining three elements
(bhTooltip, placesCommands, placesContext). In the majority of places where
the overlay was included only part of it was used. To remove the overlay, the
elements were each split into include files and moved into where they
were used. For the scripts, a JS file was added that defines all the lazy
modules and then this script, globalOverlay.js and utilityOverlay.js were
inlined to everywhere that would have included them from the overlay.

MozReview-Commit-ID: 8T5D46oYWLn

--HG--
rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesCommands.inc.xul
rename : browser/components/places/content/placesOverlay.xul => browser/components/places/content/placesContextMenu.inc.xul
extra : rebase_source : c1071af4ea264a95183cbc65caae98feb23d58e5
2018-03-12 10:43:35 -07:00
Sylvestre Ledru
80b3f60e41 Bug 1445888 - Remove tools/profiler/merge-profiles.py a b2g tool r=julienw
MozReview-Commit-ID: Lt6drB4ncdk

--HG--
extra : rebase_source : 677b30db8f429af16ffaa810408d27542ceb32ad
2018-03-15 11:04:28 +01:00
Xidorn Quan
8031c0838a Bug 1444296 part 2 - Have a separate marker for styles to present stats. r=mstange
MozReview-Commit-ID: FXYnFXDvajw

--HG--
extra : rebase_source : e6b10e1df7d1815afb704b4e6eea812c2affa7fb
extra : source : 1e8a29eb9c2966f458d8019feb9f91323dc4d94a
2018-03-15 11:59:22 +11:00
Brendan Dahl
c52106c442 Bug 1444228 - Remove editBookmarkOverlay.xul. r=standard8
Move the main contents of editBookmarkOverlay.xul into an include file and
inline the DTD and CSS files where used. Convert several chrome tests to
browser tests since the preprocessor is hard to use within the testing
framework.


MozReview-Commit-ID: DpPBOpZSuBN

--HG--
rename : browser/components/places/content/editBookmarkOverlay.js => browser/components/places/content/editBookmark.js
rename : browser/components/places/content/editBookmarkOverlay.xul => browser/components/places/content/editBookmarkPanel.inc.xul
rename : browser/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xul => browser/components/places/tests/browser/browser_bug427633_no_newfolder_if_noip.js
rename : browser/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xul => browser/components/places/tests/browser/browser_bug485100-change-case-loses-tag.js
rename : browser/components/places/tests/chrome/test_bug631374_tags_selector_scroll.xul => browser/components/places/tests/browser/browser_bug631374_tags_selector_scroll.js
rename : browser/components/places/tests/chrome/test_editBookmarkOverlay_keywords.xul => browser/components/places/tests/browser/browser_editBookmark_keywords.js
rename : browser/components/places/tests/chrome/test_editBookmarkOverlay_tags_liveUpdate.xul => browser/components/places/tests/browser/browser_editBookmark_tags_liveUpdate.js
rename : browser/themes/linux/places/editBookmarkOverlay.css => browser/themes/linux/places/editBookmark.css
rename : browser/themes/osx/places/editBookmarkOverlay.css => browser/themes/osx/places/editBookmark.css
rename : browser/themes/windows/places/editBookmarkOverlay.css => browser/themes/windows/places/editBookmark.css
extra : rebase_source : aca072691251c1a44e82ab8091796abd2b140e22
2018-03-16 09:26:49 -07:00
Tom Ritter
069fabef4a Bug 1444167 Add a MinGW Header Capitalization lint job r=ahal
MinGW headers are all lowercase, and because we build FF with MinGW
on Linux - capitalization matters.  But if you're plugging along,
working on Windows, you might forget about that, and wind up
inadvertently breaking the MinGW build because you capitalized
an include file (as is common in Windows development.)

This lint job takes the list of header files from MinGW
(generated by cd mingw-w64/mingw-w64-headers &&
  find . -name "*.h" | xargs -I bob -- basename bob | sort | uniq)
and will alert if they are in an #include statement but not
all-lowercase.

MozReview-Commit-ID: 4QFSdHx5Uak

--HG--
extra : rebase_source : d76c258191d4cbb7665775bd1b8d79028890727f
2018-03-08 13:41:00 -06:00
Sylvestre Ledru
270e2db41d Bug 1445269 - Refresh tools/rewriting/ThirdPartyPaths.txt r=tjr
MozReview-Commit-ID: xui275DKni

--HG--
extra : rebase_source : 8df0979f7a286211f2947e4192fa3b11ec2ac387
2018-03-13 15:59:21 +01:00
Sylvestre Ledru
fd2808c467 Bug 1445245 - Add more directories in the codespell whitelist r=ahal
MozReview-Commit-ID: 5dLm1fus7J0

--HG--
extra : rebase_source : b8359df8fc65f3382f37b891f1bbf1ed5c58da1d
2018-03-13 14:50:20 +01:00
Narcis Beleuzu
49a6cb8875 Backed out 3 changesets (bug 1438839) for linting failure on split-profile.py. CLOSED TREE
Backed out changeset 41c11bf05828 (bug 1438839)
Backed out changeset 40fda8b55cf9 (bug 1438839)
Backed out changeset 37a3c981a785 (bug 1438839)
2018-03-13 10:10:16 +02:00
Sylvestre Ledru
482b8f35cc Bug 1438839 - Fix the remaining flake8 issues by hand r=ahal
MozReview-Commit-ID: Fv1MZIpCL8Z

--HG--
extra : rebase_source : ba62df5928d7d882d135c7d51c4b4175c483fd0a
2018-02-27 14:04:50 +01:00
Sylvestre Ledru
a5176f006e Bug 1438839 - autopep8 -i --max-line-length 99 on the tools/ r=ahal
MozReview-Commit-ID: KSKbctxjxl0

--HG--
extra : rebase_source : ddce23f3e728e29aab4dbccd616ca8e9f31c0817
2018-02-26 23:29:32 +01:00
Sylvestre Ledru
19776440ab Bug 1438839 - Add tools/ as part of the whitelist of flake8 r=ahal
MozReview-Commit-ID: 3J44Yz7rV63

--HG--
extra : rebase_source : 619bb636e412a01b74663c03dae0257d92a449fa
2018-02-16 11:48:12 +01:00
Sylvestre Ledru
8fe4c9151f Bug 1444048 - Codespell: ignore the ignored typos by moving to quiet-level=4 r=standard8
MozReview-Commit-ID: HpIOkKh6SQQ

--HG--
extra : rebase_source : f849f24324e561fe3452743e91f964ccbb1abad0
2018-03-08 10:51:42 +01:00
manikishan
92de2db258 Bug 1431050 - Replace NS_ASSERT with conditional exceptions/console.assert and remove the debug.js module. r=mak
console.assert keeps the same semantics as NS_ASSERT in that it doesn't throw an exception,
but a lot of the places code was using it in a way that would be better served by throwing
an exception when the condition is false.

MozReview-Commit-ID: DEF5HSfYO36
2018-02-03 11:32:25 +05:30
Tom Ritter
f572733682 Bug 1444169 Fix capitalization for a few Windows files r=aklotz
MozReview-Commit-ID: BlWgIVobOBK

--HG--
extra : rebase_source : 71a8052c562aa7be510e3a4c13a0ca698a04a5ac
2018-03-08 14:49:59 -06:00
Greg Tatum
4f7596f26a Bug 1425605 - Add the start/end mark names to performance.measure profiler markers; r=baku,mstange
MozReview-Commit-ID: I8DzSlSi124

--HG--
extra : rebase_source : 5062bf33824284df7346dae15595f8e1e479bc40
2018-03-08 16:36:53 -06:00
Edouard Oger
4aea0be2d6 Bug 1439777 p2 - Remove weave:ui:* related code. r=markh,tcsc
MozReview-Commit-ID: D1H36YeiJCS

--HG--
extra : rebase_source : 16b7f01ed6f9b03534945d718c567dad0daa4ff3
2018-02-22 16:30:39 +08:00
Daniel Marshall
d337129b4a Bug 1434483 - Renamed profileStorage singleton to formAutofillStorage to make it more clear; r=MattN
MozReview-Commit-ID: CaPYBGLfs5I

--HG--
extra : rebase_source : ea59d03458c0e253201fd2c1476062dfb2e9a3d6
2018-02-10 21:23:19 +00:00
Mark Banner
0722fe3ee3 Bug 1434869 - Automatically mark EXPORTED_SYMBOLS as used, so that we don't need to ignore it in ESLint's no-unused-vars rule. r=florian.
MozReview-Commit-ID: IVMeZHGdVBk

--HG--
extra : rebase_source : 0705e96256baf6dc82811297058aa1d820b2f119
2018-03-06 12:01:59 +00:00
Narcis Beleuzu
8c7d795b53 Backed out 2 changesets (bug 1439777) for xpcshell failures on /test_errorhandler_2.js
Backed out changeset d99402ad9ecc (bug 1439777)
Backed out changeset 1af3426dc956 (bug 1439777)
2018-03-06 04:43:41 +02:00
Edouard Oger
934abf11b3 Bug 1439777 p2 - Remove weave:ui:* related code. r=markh,tcsc
MozReview-Commit-ID: D1H36YeiJCS

--HG--
extra : rebase_source : dd7218b5f0bd36dc4c71d2a7c95a92bba4da2d12
2018-02-22 16:30:39 +08:00
Narcis Beleuzu
34b2bf4c13 Backed out changeset a8130e46c530 (bug 1434483) for ESlint failures on browser_change_shipping.js. CLOSED TREE 2018-03-05 23:50:02 +02:00
Daniel Marshall
57b922d77c Bug 1434483 - Renamed profileStorage singleton to formAutofillStorage to make it more clear; r=MattN
MozReview-Commit-ID: CaPYBGLfs5I

--HG--
extra : rebase_source : 379bd1db1e50ae415806713878e6b3ef36889e89
2018-02-10 21:23:19 +00:00
shindli
51dcc3d916 Backed out 2 changesets (bug 1439777) for browser chrome in browser/components/customizableui/test/browser_remote_tabs_button.js and xpc-shell failures in services/sync/tests/unit/test_errorhandler_2.js on a CLOSED TREE
Backed out changeset 6e83f07e8f2f (bug 1439777)
Backed out changeset 8856efbc78a7 (bug 1439777)

--HG--
extra : histedit_source : 6472e71267b81d2ed8782eeb900c8e12b3e58e52
2018-03-05 18:59:03 +02:00
Edouard Oger
e68b9239b3 Bug 1439777 p2 - Remove weave:ui:* related code. r=markh,tcsc
MozReview-Commit-ID: D1H36YeiJCS

--HG--
extra : rebase_source : e90de5b437cc7fa8afcbe174c7bfb7bdce5b4c90
2018-02-22 16:30:39 +08:00
Markus Stange
0e40b574c1 Bug 1429904 - Remove ProfileBuffer::Reset(). r=njn
MozReview-Commit-ID: AzIyYByoesS

--HG--
extra : rebase_source : bc21f96e01c2bfc9aea0ce90ba43aa8864fb6bbf
2018-02-15 21:49:05 -05:00
Markus Stange
9e2d38db17 Bug 1429904 - Remove unused arguments and return values. r=njn
MozReview-Commit-ID: 9P0TKavkwgA

--HG--
extra : rebase_source : a30467537478805bb0a69bbb016a143555c2dfe8
2018-02-17 19:21:05 -05:00
Markus Stange
28d8be3628 Bug 1429904 - When a JSContext for a thread is about to go away, collect enough information about any JIT entries in the buffer so that the entire buffer can be streamed to JSON. r=njn
This changeset changes behavior.
If the profile is streamed before any JSContext has gone away, we now iterate
over the entire buffer twice (per thread): First, to collect information about
JIT frames, and then again when we build the JSON for the samples. The first
traversal stores small pieces of JSON for JIT fromes in individual strings, and
the second iteration splices those strings into the thread JSON's frame table.

When the JSContext for a thread goes away, we no longer build JSON for samples,
and we don't reset the profiler buffer. We now only build the JSON for JIT
frames. Once the complete profile is requested and we build samples for it, we
iterate over the entire buffer, and look up the cached JIT frame information for
JitReturnAddr entries from the correct range. Different parts of the buffer may
correspond to the life time of different JSContexts: For each JSContext we will
have one range in the JITFrameInfo, and we can look up the correct range based
on the buffer position of the JitReturnAddr entry that we're processing.

This new way of doing things has multiple advantages:
 - We no longer reset the buffer, so we no longer lose information about other
   threads.
 - All threads from a given process now always have sample data for the same
   time range. Before this change, the "partial profile" from a thread that
   lost its JSContext could extend further into the past than the other threads'
   profiles.
 - Requesting profiles multiple times now has more consistent results. Before
   this change, the first requested profile would include the partial profile,
   but then the partial profile was discarded. And the second requested profile
   would not contain any data for the time before the JSContext went away.
 - We now do less work when a thread's JSContext goes away. This should
   decrease the interruption time.

MozReview-Commit-ID: 3KhnPtBijna

--HG--
extra : rebase_source : 2ef5ac933e4db1c98526a2b36147ff031893de9e
extra : intermediate-source : d63b04327077d1ef55f509b365cd2693905b0733
extra : source : f2d8c993aa2c16bc491c55179d545f5a2c727391
2018-02-28 00:17:16 -05:00
Markus Stange
2f171b74fa Bug 1429904 - Add JITFrameInfo. r=njn
MozReview-Commit-ID: DashxIKyzYZ

--HG--
extra : rebase_source : 2c1c01ed2008b0934d27ba10a7ef064453306ee9
2018-02-28 00:13:51 -05:00
Markus Stange
a76d2ed393 Bug 1429904 - Put mUniqueStrings into a UniquePtr. r=njn
In an upcoming patch we'll want to initialize mUniqueStrings by stealing
another object's UniqueJSONStrings, but UniqueJSONStrings itself is not
move-constructible. But UniquePtr is.
Making UniqueJSONStrings itself move-constructible would be a bit tricky
because it has a SpliceableChunkedJSONWriter which is not move-constructible;
and making SpliceableChunkedJSONWriter move-constructible is hard because
there's no obvious "empty but valid" state that we could leave a moved-out-of
SpliceableChunkedJSONWriter in; for example, it expects to have a non-null
WriteFunc at all times.

MozReview-Commit-ID: Q6o61HFTiD

--HG--
extra : rebase_source : e1073be9892cf7cfd6ca4f2562ce939690b3b4d7
2018-02-17 15:50:43 -05:00
Markus Stange
79f37c94cf Bug 1429904 - Give UniqueJSONStrings a copy constructor. r=njn
MozReview-Commit-ID: tlh6qkYX7A

--HG--
extra : rebase_source : 115d834c1e0eed80f54da4aec2db04105b91d90c
2018-02-17 15:39:45 -05:00
Markus Stange
721a2ea7b8 Bug 1429904 - Tell the ProfiledThreadData what the buffer position was when the thread received its JSContext. r=njn
This also renames FlushSamplesAndMarkers to NotifyAboutToLoseJSContext.

MozReview-Commit-ID: FWinMi85yDZ

--HG--
extra : rebase_source : 6d8bfd6937ce757108f80f43e878a2dbead318bd
2018-02-17 15:03:30 -05:00
Markus Stange
15b53ded07 Bug 1429904 - Use a Variant to split the FrameKey members into two groups. r=njn
This makes it clear which combinations of fields are possible.

MozReview-Commit-ID: C3PriO7nWsJ

--HG--
extra : rebase_source : 68df01f11121b09b2f2762581dc28184262abfb8
2018-02-27 23:44:02 -05:00