This patch adds telemetry probes to find out how often the cache wins the race but the entry cannot be used because it needs to be revalidated and we cannot send a conditional request.
The reference cycle is supposed to be removed when HttpBackgroundChannelChild::ActorDestroyed, however this operation
is pending due until HttpChannelChild receives OnStartRequest IPC message. Unfortunately the OnStartRequest IPC message
is dropped because of PContent shutdown procedure. So, the reference removal is never executed, which leaks memory
until content process is terminated.
MozReview-Commit-ID: 7R6nt7W690o
--HG--
extra : rebase_source : b7e218d0ff242d5be291007c93833782b2400846
GetMainThreadEventTarget doesn't label runnable with correct doc group or tab group.
In HttpChannelChild we should replace it with |GetNeckoTarget| in general.
By making mIsTrackingResource atomic, HttpChannelChild::ProcessNotifyTrackingResource can be
further changed to do direct function call without dispatching additional runnable on main thread.
MozReview-Commit-ID: LVvoiljHElX
--HG--
extra : rebase_source : 35e85c8afed1411cd60cf2c7ae5cb01cc05f80b2
mBackgroundThread is an nsCOMPtr write on PBackground thread but read on main thread. We need to use
Mutex to ensure memory sync between multiple threads.
MozReview-Commit-ID: 2CJ359ivhQh
--HG--
extra : rebase_source : 53c9087220a15d225d07272815cc1bdd6f75859e
The SPDY status variable was overwrited by other function. Giving it a new
meaningful name to prevent possible regression again.
MozReview-Commit-ID: 4A98mKXXg7P
--HG--
extra : rebase_source : d88777169320f123c12d985f636c507b893b4b8c
We have a minimum requirement of VS 2015 for Windows builds, which supports
the z length modifier for format specifiers. So we don't need SizePrintfMacros.h
any more, and can just use %zu and friends directly everywhere.
MozReview-Commit-ID: 6s78RvPFMzv
--HG--
extra : rebase_source : 009ea39eb4dac1c927aa03e4f97d8ab673de8a0e
This patch introduce new pref "network.http.active_tab_priority" which indicate whether or not we dispatch transactions from active tab before others from background tab.
--HG--
extra : rebase_source : 093ab372d392eec285889f307d4540012e7aac9f
On Mac developer builds, read the repo path and object dir path from the
Info.plist files in the application bundle instead of the
MOZ_DEVELOPER_REPO_DIR and MOZ_DEVELOPER_OBJ_DIR environment variables.
MozReview-Commit-ID: 8UtjkNPGUM1
--HG--
extra : rebase_source : 3e4ce32f2e2c40f8d899bc9190e48298081458d9
Implements PerformanceTiming, nsITimedChannel, and devtools 'tls setup'
Also captures telemetry on this as we do for all other attributes of timedChannel
Also propogates some null transaction timings onto first real
transaction of a connection
MozReview-Commit-ID: 47TQJYVHnKC
--HG--
extra : rebase_source : a7723962986de0c2ab00d479a22c3f5fd185c8b2
In Bug 1338493 I moved the operation thread of HttpBackgroundChannelChild from main thread to STS thread.
All the thread assertion shoudl be updated.
MozReview-Commit-ID: 307jBR48aYc
--HG--
extra : rebase_source : e9bc56d0c70a3a283cda07669e79a59ccf651b33
nsIURI.originCharset had two use cases:
1) Dealing with the spec-incompliant feature of escapes in the hash
(reference) part of the URL.
2) For UI display of non-UTF-8 URLs.
For hash part handling, we use the document charset instead. For pretty
display of query strings on legacy-encoded pages, we no longer care to them
(see bug 817374 comment 18).
Also, the URL Standard has no concept of "origin charset". This patch
removes nsIURI.originCharset for reducing complexity and spec compliance.
MozReview-Commit-ID: 3tHd0VCWSqF
--HG--
extra : rebase_source : b2caa01f75e5dd26078a7679fd7caa319a65af14
In order to identify how HTTP OMT is used in user environment, I add a telemetry HTTP_CHILD_OMT_STATS
to record the success and fail reason for each HttpChannelChild.
- "success": OMT request is accepted and the target thread is not main thread.
- "successMainThread": OMT request is accepted but the target thread is still main thread.
- "failListener": OMT request is rejected by the direct listener of this channel.
- "failListenerChain": OMT request is rejected by one of the listener in the listener chain.
- "notRequested": HTTP OMT is not requested by the channel owner.
MozReview-Commit-ID: 1Gif1oteOOh
--HG--
extra : rebase_source : a46ea42f8d5cb58071dd9d31416423522f3e7c67
PHttpChannel might already be closed while processing OnStopRequestEvent. Need to check mIPCOpen flag
before sending DocumentChannelCleanup message.
MozReview-Commit-ID: 1EHgAAaRNKN
--HG--
extra : rebase_source : 1d9062c3af7379b07673e8a69fdd259cbf1281a4
HttpBackgroundChannelChild::ActorDestroy is always called on STS thread. However OnSocketThread will return wrong
result during shutdown phase. In this case we need to use gSocketTransportService->IsOnCurrentThreadInfallible()
to get correct result. In addition, we should disconnect mChannelChild immediately while ActorDestroy is not
triggered by normal IPDL deletion to release HTTP channel as soon as possible.
MozReview-Commit-ID: CD7v3efS4zf
--HG--
extra : rebase_source : 060536f2720e49be07b50d98d4aef9b4731624e7
Most of the names passed to nsIStringBundle::{Get,Format}StringFromUTF8Name
have one of the two following forms:
- a 16-bit C string literal, which is then converted to an 8-bit string in
order for the lookup to occur;
- an 8-bit C string literal converted to a 16-bit string, which is then
converted back to an 8-bit string in order for the lookup to occur.
This patch introduces and uses alternative methods that can take an 8-bit C
string literal, which requires changing some signatures in other methods and
functions. It replaces all C++ uses of the old methods.
The patch also changes the existing {Get,Format}StringFromName() methods so
they take an AUTF8String argument for the name instead of a wstring, because
that's nicer for JS code.
Even though there is a method for C++ code and a different one for JS code,
|binaryname| is used so that the existing method names can be used for the
common case in both languages.
The change reduces the number of NS_ConvertUTF8toUTF16 and
NS_ConvertUTF16toUTF8 conversions while running Speedometer v2 from ~270,000 to
~160,000. (Most of these conversions involved the string
"deprecatedReferrerDirective" in nsCSPParser.cpp.)
--HG--
extra : rebase_source : 3bee57a501035f76a81230d95186f8c3f460ff8e
In e10s, a channel created by parent does not have a reliable reference
to the inner window ID that initiated the request. Without that, the
channel must request that the content process log and blocked messages
to the web console. This patch creates a new ipdl interface to pass the
message from the parent to the child process. The nsCORSListenerProxy
also needs to keep a reference to the nsIHttpChannel that created it so
it can find its way back to the child. Additionally, the
HttpChannelParent needs to be propagated when creating a new channel for
CORS.
MozReview-Commit-ID: 8CUhlVCTWxt
--HG--
extra : rebase_source : 350f39ad6f7ada39e88dfcc69c4f2c470e2be0de
nsAboutCacheEntry::Channel is introduced by Bug 1266196. Assert_NoQueryNeeded() check is failed
due to nsAboutCacheEntry::Channel return nullptr while QI into a nsCOMPtr<nsIRequest> pointer.
MozReview-Commit-ID: 4lYeN4lNtTm
--HG--
extra : rebase_source : 633bcd0911cc9e9703e9137a398db02fdd1f5aa4
When racing cache with network and the network wins, we don't reset mAvailableCachedAltDataType. So when the cache entry has been opened and has alt-data then nsHttpChannel::GetAlternativeDataType returns alt-data type, but we're delivering raw response (no conversion are applied) from the network.
On Mac and Linux, allow unpacked extension resources to load from outside the extension directory if they're in the repo.
MozReview-Commit-ID: 1xsKV72aUJx
--HG--
extra : rebase_source : 1adefb0977e63935366a45dbf7c471d868655838
Set the content type on remote channels in the moz-extension protocol handler.
MozReview-Commit-ID: H6XtYHjhS1Q
--HG--
extra : rebase_source : 48684ab78458b6723f1fd2c9860a5d36e7f5cc8e
On Mac and Linux, allow unpacked extension resources to load from outside the extension directory if they're in the repo.
MozReview-Commit-ID: 1xsKV72aUJx
--HG--
extra : rebase_source : 5537a3dc2c5e924bd5bc2a242819bed9f4c6c8a6
It's silly to use prmem.h within Firefox code given that in our configuration
its functions are just wrappers for malloc() et al. (Indeed, in some places we
mix PR_Malloc() with free(), or malloc() with PR_Free().)
This patch removes all uses, except for the places where we need to use
PR_Free() to free something allocated by another NSPR function; in those cases
I've added a comment explaining which function did the allocation.
--HG--
extra : rebase_source : 0f781bca68b5bf3c4c191e09e277dfc8becffa09
Remove the system principal check for unpacked (development) moz-extension loads
and rely on the existing host, scheme, and filesystem checks.
MozReview-Commit-ID: 7aI6dJsRJtP
--HG--
extra : rebase_source : 545de6efa0efb3935a22dd6e5375f0b6fe0d3d57
This patch includes changes below:
1. Make nsBaseChannel inherit from NeckoTargetHolder.
2. Change FtpChannelChild due to (1) and also don't use SystemGroup to dispatch nsFtpChildAsyncAlert runnable since nsIPrompt may touch js script.
3. Use NeckoTargetHolder::Dispatch to dispatch runnables in nsBaseChannel.
Note that RedirectRunnable should be on main thread, so I changed the code from NS_DispatchToCurrentThread to NeckoTargetHolder::Dispatch.
Move HttpBackgroundChannelChild from main thread to socket transport thread.
Allow HttpChannelChild.mBgChild to be used on both main thread and STS thread under mutex protection.
MozReview-Commit-ID: 9WAXmJLr8HT
--HG--
extra : rebase_source : 774c71cec9d36412e2101719f5ca930a214f6472
Adds nsISubstitutionObserver so that substitutions set on a
parent nsISubstitutingProtocolHandler which are then propagated
to child processes can be observed in the child.
Updates test_extensionURL.html to set substitutions on the parent
ExtensionProtocolHandler before trying to load moz-extension URI's
using those substitutions.
MozReview-Commit-ID: JaW1A3uZpoO
--HG--
extra : rebase_source : b908a3ef51c2b077809614fd39595c3255dff7ad
Changes ExtensionProtocolHandler to use remote streams for
moz-extension loads of file and JAR URI's to allow for
filesystem read-access sandboxing.
Adds messaging to PNecko to allow child processes to
request an input stream or file descriptor for moz-extension
URI's.
Add ExtensionProtocolHandler singleton so that NeckoParent can
call methods directly and ExtensionProtocolHandler::NewFD
can use a new member variable |mFileOpenerThread| to open files.
Adds FileDescriptorFile, a limited implementation of nsIFile
that wraps a file descriptor, to be sideloaded into
nsJARChannels so that extension JAR files can be read
using a file descriptor without accessing the filesystem
directly.
MozReview-Commit-ID: 1pcnIpjz2yR
--HG--
extra : rebase_source : 9d7334778fc81837b11b98d4e32603f7e5eb3a27
CachePerfStats gathers performance data for single open, read and write operations as well as the whole cache entry opening. It maintains long term and short term average. The long term average filters out excessive values and it represents and average time for a given operation when the cache is not busy. The short term average represents the current cache speed. By comparing these two stats we know pretty quickly that the cache is getting slower and then we race the cache with network immediately without a delay. Otherwise the delay is based on the average cache entry open time.
This patch makes the following changes to the macros.
- Removes PROFILER_LABEL_FUNC. It's only suitable for use in functions outside
classes, due to PROFILER_FUNCTION_NAME not getting class names, and it was
mostly misused.
- Removes PROFILER_FUNCTION_NAME. It's no longer used, and __func__ is
universally available now anyway.
- Combines the first two string literal arguments of PROFILER_LABEL and
PROFILER_LABEL_DYNAMIC into a single argument. There was no good reason for
them to be separate, and it forced a '::' in the label, which isn't always
appropriate. Also, the meaning of the "name_space" argument was interpreted
in an interesting variety of ways.
- Adds an "AUTO_" prefix to PROFILER_LABEL and PROFILER_LABEL_DYNAMIC, to make
it clearer they construct RAII objects rather than just being function calls.
(I myself have screwed up the scoping because of this in the past.)
- Fills in the 'js::ProfileEntry::Category::' qualifier within the macro, so
the caller doesn't need to. This makes a *lot* more of the uses fit onto a
single line.
The patch also makes the following changes to the macro uses (beyond those
required by the changes described above).
- Fixes a bunch of labels that had gotten out of sync with the name of the
class and/or function that encloses them.
- Removes a useless PROFILER_LABEL use within a trivial scope in
EventStateManager::DispatchMouseOrPointerEvent(). It clearly wasn't serving
any useful purpose. It also serves as extra evidence that the AUTO_ prefix is
a good idea.
- Tweaks DecodePool::SyncRunIf{Preferred,Possible} so that the labelling is
done within them, instead of at their callsites, because that's a more
standard way of doing things.
--HG--
extra : rebase_source : 318d1bc6fc1425a94aacbf489dd46e4f83211de4
All the instances are converted as follows.
- nsSubstring --> nsAString
- nsCSubstring --> nsACString
--HG--
extra : rebase_source : cfd2238c52e3cb4d13e3bd5ddb80ba6584ab6d91
All the instances are converted as follows.
- nsAFlatString --> nsString
- nsAFlatCString --> nsCString
--HG--
extra : rebase_source : b37350642c58a85a08363df2e7c610873faa6e41
CachePerfStats gathers performance data for single open, read and write operations as well as the whole cache entry opening. It maintains long term and short term average. The long term average filters out excessive values and it represents and average time for a given operation when the cache is not busy. The short term average represents the current cache speed. By comparing these two stats we know pretty quickly that the cache is getting slower and then we race the cache with network immediately without a delay. Otherwise the delay is based on the average cache entry open time.