Commit Graph

482 Commits

Author SHA1 Message Date
Nicholas Hurley
a4d48c1eb9 Bug 1505867 - Add pref for hpack table dumps. r=bagder
Now that h2 is pretty well stable, and we're fairly confident in our hpack table implementation, it's worth hiding this logging without some extra hoops, as it's just a lot of noise in logs.

Differential Revision: https://phabricator.services.mozilla.com/D11406

--HG--
extra : moz-landing-system : lando
2018-11-09 07:23:17 +00:00
Nicholas Hurley
27190f4a59 Bug 1434137 - Implement websockets over http/2 - RFC 8441 r=michal,dragana
https://tools.ietf.org/html/rfc8441

This uses our existing http/2 CONNECT infrastructure (modified) to
enable the new extended CONNECT form defined by 8441, and pretend for
the websocket's sake that an http/2 stream is actually a socket. From
the websocket's point of view, this is relatively non-invasive - a few
things have changed (http response code, absence of some headers) versus
http/1.1 websockets, but for the most part, the websocket code doesn't
care.

Differential Revision: https://phabricator.services.mozilla.com/D8016

--HG--
extra : moz-landing-system : lando
2018-11-06 19:29:57 +00:00
Nicholas Hurley
a2d8c9ef38 Bug 1355858 - Blacklist hosts from spdy who are very poorly behaved. r=dragana
In certain cases (such as the case from bug 1050329, where a server claims to speak h2, but really doesn't), we will end up trying every connection to that server as h2 before falling back to http/1.1. Once we know a server is very badly behaved, it doesn't make sense to keep trying h2 (at least for the current browsing session). This adds an in-memory blacklist of origins & conninfos to not try h2 on, so we don't waste round trips trying h2, failing, and then dialing back with http/1.1 except for the first connection to an origin.

Depends on D8436

Differential Revision: https://phabricator.services.mozilla.com/D8437

--HG--
extra : moz-landing-system : lando
2018-10-25 20:52:59 +00:00
Ehsan Akhgari
229b1144b8 Bug 1501404 - Part 5: Remove the XPCOM registration for nsSocketProviderService r=valentin
Depends on D9573

Differential Revision: https://phabricator.services.mozilla.com/D9574

--HG--
extra : moz-landing-system : lando
2018-10-23 20:07:25 +00:00
Ehsan Akhgari
e6c5cd6e52 Bug 1501404 - Part 1: Remove the XPCOM registration for RequestContextService r=valentin
Differential Revision: https://phabricator.services.mozilla.com/D9570

--HG--
extra : moz-landing-system : lando
2018-10-23 20:07:17 +00:00
Chris Peterson
e70234b350 Bug 583181 - Part 2: Add separate definitions for LEGACY_BUILD_ID and LEGACY_UA_GECKO_TRAIL. r=hsivonen
"Gecko trail" is the term used by MDN [1] for the YYYMMDD build date in the UA string's "Gecko/" token. Build ID is a YYYYMMDDHHMMSS build timestamp. Use LEGACY_BUILD_ID to spoof navigator.buildID. Use LEGACY_UA_GECKO_TRAIL to construct the UA string.

[1] https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent/Firefox

Differential Revision: https://phabricator.services.mozilla.com/D7983

--HG--
extra : rebase_source : e2a4d7579d419046f0bad6290078f9a652a770d8
extra : source : 8a26c8598528722a8920513c7fdfea40aefe0dbc
2018-10-01 21:27:34 -07:00
Jonathan Kingston
d8f6d455e1 Bug 1461930 - Replace use of speculativeConnect methods for variants that pass a triggeringPrincipal. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D7701

--HG--
extra : moz-landing-system : lando
2018-10-05 13:42:37 +00:00
Chris Peterson
77fbb409c9 Bug 1490575 - netwerk: Remove #ifdef MOZ_MULET. r=dragana
Mulet was a Firefox OS simulator that is no longer supported: https://wiki.mozilla.org/Mulet

Differential Revision: https://phabricator.services.mozilla.com/D5736

--HG--
extra : rebase_source : e6dd0146f4564e4ea8aa1ce4eaa78e1cfeb421b2
extra : source : 9e3cd534394c0e08ad8fdaa46ac7559a66a09a6b
2018-09-11 23:09:09 -07:00
Junior Hsu
4cd0359acf Bug 1280629 - Part 1: Suspend the http channel if the child process is not able to consume on time r=dragana
Differential Revision: https://phabricator.services.mozilla.com/D2745

--HG--
extra : moz-landing-system : lando
2018-08-15 22:35:58 +00:00
Arthur Edelstein
04dab89db7 Bug 1481096 - Fix incorrectly written pref name r=nwgh
"spdy.default-hpack-buffer" was incorrectly
written as "spdy.hpack-default-buffer".

--HG--
extra : histedit_source : 28dfa00e0accb4e51239a2d31178944034b3eaf5
2018-08-05 16:10:00 +03:00
Kris Maglione
37b1a59b2a Bug 1473631: Part 1 - Replace pref observers with callbacks in nsHttpHandler. r=njn
MozReview-Commit-ID: LtWV0yEwSd6

--HG--
extra : rebase_source : d839e8436ae97932d448d725ff70b0bb2a22d786
2018-07-05 13:10:20 -07:00
David Keeler
9b69a30991 bug 1470030 - convert manually-written nsINSSComponent definition to idl r=fkiefer
Defining nsINSSComponent in idl rather than manually in a header file allows us
to make full use of the machinery that already exists to process and generate
the correct definitions. Furthermore, it enables us to define JS-accessible APIs
on nsINSSComponent, which enables us to build frontend features that can work
directly with the data and functionality the underlying implementation has
access to.

MozReview-Commit-ID: JFI9s12wmRE

--HG--
extra : rebase_source : 16b660e37db681c8823cbb6b7ff59dd0d35f7e73
2018-06-20 16:43:18 -07:00
Andi-Bogdan Postelnicu
90ac230485 Bug 1453795 - Necko - Initialize member fields in classes/ structures. r=michal 2018-06-14 11:19:07 +03:00
Nicholas Hurley
2423735102 Bug 1460310 - Separate HTTP and SPDY identifiers into separate namespaces. r=dragana
MozReview-Commit-ID: E55YpGK7PXI

--HG--
extra : rebase_source : 3146c7de66653262694235043a44be4ccf5ffc33
2018-06-01 11:32:05 -07:00
Michael Kaply
8c11aa5676 Bug 1464025 - Change accept header if locale changes. r=gandalf
MozReview-Commit-ID: HshY3mCab4M

--HG--
extra : rebase_source : f2b6c9e442cfc745e623288388da91ef34273be0
2018-06-06 19:12:45 -05:00
Kate McKinley
fa06a45b28 Bug 1328695 - Use protocol flags to determine if a URI is potentially trustworthy r=ckerschb, r=dveditz, r=mcmanus, r=bz
Before this change, the trusted URI schemes, based on a string whitelist, were:
https, file, resource, app, moz-extension and wss.

This change removes "app" from the list (since we don't implement it),
and adds "about" to the list (because we control the delivery of that).
2018-05-31 07:51:42 +02:00
Sebastian Hengst
0819f35e51 Backed out 4 changesets (bug 525063) on request from Andi. a=backout
Backed out changeset 516c4fb1e4b8 (bug 525063)
Backed out changeset 6ff8aaef2866 (bug 525063)
Backed out changeset bf13e4103150 (bug 525063)
Backed out changeset d7d2f08e051c (bug 525063)
2018-04-13 16:01:28 +03:00
Tristan Bourvon
a3a77c0312 Bug 525063 - Initialize uninitialized class attributes in m-c. r=ehsan 2018-04-10 21:11:02 +02:00
Daniel Stenberg
a204c8eb02 bug 1450583 - require macOS 10.13.4 (uname 17.5.0) for enabling TFO r=mcmanus
MozReview-Commit-ID: LbfgT9oS9O

--HG--
extra : rebase_source : 6099048103e227d25550a2ed2358cf1b3118042a
2018-04-03 14:49:39 +02:00
Nicholas Nethercote
136f284c7d Bug 1436655 - Introduce a mechanism for VarCache prefs to be defined entirely in the binary. r=glandium
Currently VarCache prefs are setup in two parts:

- The vanilla pref part, installed via a data file such as all.js, or via an
  API call.

- The VarCache variable part, setup by an Add*VarCache() call.

Both parts are needed for the pref to actually operate as a proper VarCache
pref. (There are various prefs for which we do one but not the other unless a
certain condition is met.)

This patch introduces a new way of doing things. There is a new file,
modules/libpref/init/StaticPrefList.h, which defines prefs like this:

> VARCACHE_PREF(
>   "layout.accessiblecaret.width",
>   layout_accessiblecaret_width,
>   float, 34.0
> )

This replaces both the existing parts.

The preprocessor is used to generate multiple things from this single
definition:

- A global variable (the VarCache itself).

- A getter for that global variable.

- A call to an init function that unconditionally installs the pref in the
  prefs hash table at startup.

C++ files can include the new StaticPrefs.h file to access the getter.

Rust code cannot use the getter, but can access the global variable directly
via structs.rs. This is similar to how things currently work for Rust code.

Non-VarCache prefs can also be declared in StaticPrefList.h, using PREF instead
of the VARCACHE_PREF.

The new approach has the following advantages.

+ It eliminates the duplication (in all.js and the Add*VarCache() call) of the
  pref name and default value, preventing potential mismatches. (This is a real
  problem in practice!)

+ There is now a single initialization point for these VarCache prefs.
  + This avoids need to find a place to insert the Add*VarCache() calls, which
    are currently spread all over the place.
  + It also eliminates the common pattern whereby these calls are wrapped in a
    execute-once block protected by a static boolean (see bug 1346224).
  + It's no longer possible to have a VarCache pref for which only one of the
    pieces has been setup.

+ It encapsulates the VarCache global variable, so there is no need to declare
  it separately.

+ VarCache reads are done via a getter (e.g. StaticPrefs::foo_bar_baz())
  instead of a raw global variable read.
  + This makes it clearer that you're reading a pref value, and easier to
    search for uses.
  + This prevents accidental writes to the global variable.
  + This prevents accidental mistyping of the pref name.
  + This provides a single chokepoint in the code for such accesses, which make
    adding checking and instrumentation feasible.

+ It subsumes MediaPrefs, and will allow that class to be removed. (gfxPrefs is
  a harder lift, unfortunately.)

+ Once all VarCache prefs are migrated to the new approach, the VarCache
  mechanism will be better encapsulated, with fewer details publicly visible.

+ (Future work) This will allow the pref names to be stored statically, saving
  memory in every process.

The main downside of the new approach is that all of these prefs are in a
single header that is included in quite a few places, so any changes to this
header will cause a fair amount of recompilation.

Another minor downside is that all VarCache prefs are defined and visible from
start-up. For test-only prefs like network.predictor.doing-tests, having them
show in about:config isn't particularly useful.

The patch also moves three network VarCache prefs to the new mechanism as a
basic demonstration. (And note the inconsistencies in the multiple initial
values that were provided for
network.auth.subresource-img-cross-origin-http-auth-allow!) There will be
numerous follow-up bugs to convert the remaining VarCache prefs.

MozReview-Commit-ID: 9ABNpOR16uW
* * *
[mq]: fixup

MozReview-Commit-ID: 6ToT9dQjIAq
2018-03-26 09:39:40 +11:00
Honza Bambas
c940bbdf06 Bug 1430659 - Network requests in "blocked" state for long time (1+ minute) when ipv6 hosts are no longer available. r=valentin 2018-03-16 09:06:00 -04:00
Patrick McManus
aebf4bd069 Bug 1444453 - require version >= 10.13.4 for tfo on mac r=bagder
MozReview-Commit-ID: 6jYWQtcxRuA

--HG--
extra : rebase_source : 522fc28a04b951063c1c199f8017836c4f5f9e6a
2018-03-09 12:26:06 -05:00
Eric Rahm
cc1509e530 Bug 1442756 - Switch nsHttpAuthCache::mDB to nsClassHashtable. r=mayhemer
--HG--
extra : rebase_source : 398e2105ea78c26f14419179fb0387c771384858
2018-03-02 15:04:25 -08:00
Nicholas Hurley
c8b7ecd0d4 Bug 1429973 part 3 - Remove hidden pref to allow plaintext server-timing. r=bagder
MozReview-Commit-ID: 2MfcvRXq7We

--HG--
extra : rebase_source : adf042cba94eecd6c56ba359a68b23d0867f1f8f
2018-02-15 10:30:44 -08:00
Valentin Gosu
55a7a824c6 Bug 1435671 - Reduce binary size by making NS_MutateURI.Apply not be a templated method r=mayhemer
We instead add a templated method NS_MutatorMethod that returns a std::function<nsresult(nsIURIMutator*)> which Apply then calls with mMutator as an argument.
The function returned by NS_MutatorMethod performs a QueryInterface, then calls the passed method with arguments on the result.

MozReview-Commit-ID: Jjqp7gGLG1D

--HG--
extra : rebase_source : f2a17aee7bb66a7ba8652817d43b9aa7ec7ef710
2018-02-21 01:00:54 +01:00
nbeleuzu@mozilla.com
01eef6aff1 Backed out changeset c9dcce0a1068 (bug 1435671) for build bustages on nsIURIMutator.h. CLOSED TREE 2018-02-21 00:06:46 +02:00
Valentin Gosu
f1850e9354 Bug 1435671 - Reduce binary size by making NS_MutateURI.Apply not be a templated method r=mayhemer
We instead add a templated method NS_MutatorMethod that returns a std::function<nsresult(nsIURIMutator*)> which Apply then calls with mMutator as an argument.
The function returned by NS_MutatorMethod performs a QueryInterface, then calls the passed method with arguments on the result.

MozReview-Commit-ID: Jjqp7gGLG1D

--HG--
extra : rebase_source : 592d13349a8c4627c7ce3146ec592f577b39f3cc
2018-02-20 22:39:40 +01:00
Daniel Stenberg
e5d3226694 bug 1434852 - introducing TRR (DOH); r=mcmanus,valentin
Provides an optional resolver mechanism for Firefox that allows running
together with or instead of the native resolver.

TRR offers resolving of host names using a dedicated DNS-over-HTTPS server
(HTTPS is required, HTTP/2 is preferable).

DNS-over-HTTPS (DOH) allows DNS resolves with enhanced privacy, secure
transfers and improved performance.

To keep the failure rate at a minimum, the TRR system manages a dynamic
persistent blacklist for host names that can't be resolved with DOH but works
with the native resolver. Blacklisted entries will not be retried over DOH for
a couple of days. "localhost" and names in the ".local" TLD will not be
resolved via DOH.

TRR is preffed OFF by default and you need to set a URI for an available DOH
server to be able to use it. Since the URI for DOH is set with a name itself,
it may have to use the native resolver for bootstrapping. (Optionally, the
user can set the IP address of the DOH server in a pref to avoid the required
initial native resolve.)

When TRR starts up, it will first verify that it works by checking a
"confirmation" domain name. This confirmation domain is a pref by default set
to "example.com". TRR will also by default await the captive-portal detection
to raise its green flag before getting activated.

All prefs for TRR are under the "network.trr" hierarchy.

The DNS-over-HTTPS spec: https://tools.ietf.org/html/draft-ietf-doh-dns-over-https-03

MozReview-Commit-ID: GuuU6vjTjlm

--HG--
extra : rebase_source : 53fcca757334090ac05fec540ef29d109d5ceed3
2018-02-01 10:20:49 +01:00
Nicholas Hurley
8b3c3ef6cf Bug 1436517 - Limit access to the server-timing header to HTTPS contexts. r=mcmanus
This also introduces a hidden pref to allow server-timing access from
HTTP contexts for the purposes of our xpcshell tests. We'll remove that
once we get h2 (and therefore tls test) support for server-timing
trailers (https://bugzilla.mozilla.org/show_bug.cgi?id=1436601).

This does not reject or otherwise error when receiving server-timing
headers or trailers on non-HTTPS contexts, it just makes it unavailable
outside the channel.

MozReview-Commit-ID: qi4h0VQknE

--HG--
extra : rebase_source : 6e6f139cff04f224878ecbf2bcbc84963221cfb6
2018-02-07 16:05:38 -08:00
Valentin Gosu
b53812bfed Bug 1432187 - Change code to use nsIStandardURLMutator.{init,setDefaultPort} r=mayhemer
MozReview-Commit-ID: K2Uy9ET3Ay6

--HG--
extra : rebase_source : fb5e19bc7b71a6f0264471bf8f07febf1bc55900
2018-01-24 20:33:02 +01:00
Boris Zbarsky
bb72d7fd1d Bug 1431846 part 4. Remove nsIDOMNavigator and nsIMozNavigatorNetwork. r=mystor
MozReview-Commit-ID: LSgeY2dM6gv
2018-01-22 12:59:15 -05:00
Boris Zbarsky
b5937fb6a0 Bug 1431846 part 3. Make nsPIDOMWindowOuter::GetNavigator return dom::Navigator*. r=mystor
MozReview-Commit-ID: DgZWMcSg0PT
2018-01-22 12:59:15 -05:00
Dragana Damjanovic dd.mozilla@gmail.com
88d0518368 Bug 1429426 - Disable TFO if pmls64.dll and rlls64.dll are detected. r=valentin 2018-01-11 15:10:12 +01:00
Honza Bambas
d53e911aed Bug 1425301 - Progressively decrease the 6 seconds maximum quantum delay of tracker script tailing, r=dragana 2018-01-08 06:01:00 +02:00
Dragana Damjanovic
7149091b44 Bug 1426474 - Turn on TFO only for Darwin 17.3 and later. r=hurley 2017-12-21 18:59:05 +01:00
Dragana Damjanovic
66a1074054 Bug 1426366 - Detect http transaction stalls with TFO. r=hurley 2017-12-21 18:32:28 +01:00
Dragana Damjanovic
45d67964d6 Bug 1422895 - TFO should be possible only on Windows 10 Fall Creators Update or later. r=mcmanus 2017-12-20 16:45:30 +01:00
Amy Chung
d0eb2b7593 Bug 1413512 -- Added a telemtry for counting of the HTTP redirection that triggered by top-level document or by subresource. r=schien data=francois 2017-12-15 10:50:19 -06:00
Patrick McManus
dc7b5677f7 Bug 1411316 - necko api for cancelling all transactions r=dragana
test by: :kershaw

MozReview-Commit-ID: BwjsDMiEGZY

--HG--
extra : rebase_source : 5f2bdc49295d19179e26f9c72204e1d8a9fb698a
2017-10-24 09:17:02 -07:00
Honza Bambas
1ee6257bc3 Bug 1386746 - Throttle HTTP response by allowing only small amount of data to read periodically, r=mcmanus 2017-11-28 05:37:00 +02:00
Honza Bambas
4eab23cce4 Bug 1411632 - Introduce onload and DOMContentLoaded telemetry for active tab and network optimization. r=valentin, r=francois 2017-12-02 18:13:43 -05:00
Nicholas Nethercote
9252435548 Bug 1410794 (attempt 2) - Change some |string| occurrences in nsIPrefBranch.idl to |ACString|. r=erahm.
This makes the code nicer. In particular, it removes many getter_Copies()
calls. The patch also converts a lot of nsCStrings to nsAutoCString, which will
avoid heap allocation in the common case.

The patch also renames PREF_CopyCharPref() as PREF_GetCStringPref(), because
it's actually getting a string, not a char, and that matches the existing
GetCString() and GetDefaultCString() methods. Correspondingly, it also renames
PREF_SetCharPref() as PREF_SetCStringPref().

The |aPrefName| arguments in nsIPrefBranch.idl remain as |string| because they
almost always involve passing in C string literals, and passing "foo" is much
nicer than passing NS_LITERAL_CSTRING("foo").

It's worth noting that early versions of this patch used |AUTF8String| instead
of |ACString|. But it turns out that libpref stores prefs internally as Latin1.
And |ACString| is compatible with Latin1 but |AUTF8String| isn't, because
non-ASCII Latin1 strings are not valid UTF-8!

MozReview-Commit-ID: D3f7a1Vl1oE

--HG--
extra : rebase_source : e6e4b15d6d210cfd93686f96400281f02bd1d06b
2017-10-27 10:30:33 +11:00
Jeff Hemphill
e74e880a6c Bug 1403802: Port nsHttpHandler::PrepareAcceptLanguages over to Rust; r=valentin,froydnj 2017-10-22 11:27:59 -07:00
Dragana Damjanovic dd.mozilla@gmail.com
3e2548c099 Bug 1393691 - timeout connection if tls takes too long. r=mcmanus 2017-10-17 14:06:45 +02:00
Shih-Chiang Chien
1d51b00021 Bug 1407683 - use singleton factory method for nsHttpHandler. r=mayhemer
nsHttpHandler is designed only for `getService` but we do not protect against `createInstance`.
The singleton of nsHttpHandler will be replaced by new instance created via `createInstance`.
gHttpHandler will hold a dangling pointer after the new instance is destroyed.

MozReview-Commit-ID: DQV6pmb5BUK

--HG--
extra : rebase_source : a6ab90038853e057c632efb5206cc26dcd71b897
2017-10-12 12:13:56 +08:00
Valentin Gosu
7822c999e1 Bug 910207 - Disable preconnect when user certificates are installed r=keeler
MozReview-Commit-ID: 1vGPxDCAcQR

--HG--
extra : rebase_source : 3dda6f50ddbe1e03c7b7625c6039cb20896ef05e
2017-09-19 01:51:41 +02:00
Valentin Gosu
acc302eb58 Bug 1399300 - Backed out changeset a51cf9c048a1 (bug 910207) a=backout
MozReview-Commit-ID: 3l6B9n7VM1o
2017-09-13 10:51:18 +02:00
Honza Bambas
43860c7a61 Bug 910207 - Prevent client certificate pop-up coming from a speculative connection, r=dkeeler
MozReview-Commit-ID: IHKzHwsJUiQ
2017-09-01 10:42:00 +02:00
Sebastian Hengst
a94fa43e25 Backed out changeset 9c00078ce6ab (bug 910207) for eslint failure at browser/base/content/test/urlbar/browser_urlbar_search_no_speculative_connect_with_client_cert.js:48: Expected method shorthand. r=backout 2017-09-08 20:42:07 +02:00
Honza Bambas
c307957a65 Bug 910207 - Prevent client certificate pop-up coming from a speculative connection, r=dkeeler
MozReview-Commit-ID: CtNPV9kFqJM
2017-09-01 10:42:00 +02:00