Commit Graph

33 Commits

Author SHA1 Message Date
Shih-Chiang Chien
f3b944c4e8 Bug 1426751 - Prevent FlushQueue to be invoked on multiple threads simultaneously. r=mayhemer
This issue is triggered by off-main-thread ODA listener that return error cause from OnDataAvailable callback.
A CancelEvent will be prepend to event queue and trigger race condition between CompleteResume and EndForceEnqueueing.

The `mFlushing` is checked and set in separate critical sections, therefore two threads that executing MayFlushQueue
might both pass the `mFlushing` check and trying to call FlushQueue simultaneously.

The solution is to check and set `mFlushing` in single critical section, so we can guarantee that only one FlushQueue
can be executed at anytime.

In addition, resumption is postponed until no AutoEventEnqueuer is activated. Therefore, CompleteResume will only be
triggered while all the suspension requests and auto enqueue requests are finished.

MozReview-Commit-ID: HpxzgUqYm8C
2018-01-04 18:53:02 +08:00
Nathan Froyd
f8d9d5841e Bug 1347963 - part 5 - make ChannelEventQueue use RecursiveMutex; r=mcmanus
Making ChannelEventQueue slightly faster with RecursiveMutex is a good thing.
2017-07-04 13:43:47 -04:00
Bill McCloskey
5aec5bf1e9 Bug 1365101 - Convert NS_GetCurrentThread uses in netwerk/ (r=meyhemer)
MozReview-Commit-ID: IHBt6XAG8em
2017-06-12 20:21:43 -07:00
Kershaw Chang
fa0c7b5510 Bug 1343743 - Part1: Refactoring for mNeckoTarget and ChannelEvent, r=mayhemer
This patch contains two parts below:
1. mNeckoTarget
Since almost all child channels in necko need mNeckoTarget to dispatch runnables to main thread, it seems worth to have a holder class of mNeckoTarget and ask child channels to inherit it.

2. ChannelEvent
A lot of classes in FTPChannelChild and HttpChannelChild inheriting ChannelEvent and override GetEventTarget. It should be worth to extract the same code and put it in the same space.
2017-06-12 00:21:00 +02:00
Shih-Chiang Chien
699c67d693 Bug 1371203 - Ensure channel object lives longer than the owned ChannelEventQueue. r=mayhemer
MozReview-Commit-ID: BPNJuMsocrf
2017-06-09 19:59:41 +08:00
Shih-Chiang Chien
3888d1d0a4 Bug 1320744 - Part 2, Allow ChannelEventQueue to perform flush on multiple threads. r=mayhemer
MozReview-Commit-ID: Egu2mvwFTUF
2017-03-18 11:36:08 +08:00
Bill McCloskey
509599310e Bug 1318506 - Label HttpChannelChild actors with DocGroup/TabGroup (r=jduell)
This patch tries to figure out which DocGroup or TabGroup a network request
belongs to and then assign the IPC actor to that group. A DocGroup roughly
corresponds to a document and a TabGroup to a tab. Once the assignment is
made, all incoming IPC messages will be labeled with that DocGroup/TabGroup.

MozReview-Commit-ID: EzGCeGdREHl
2016-12-23 11:48:13 -08:00
Andrea Marchesini
fcd1cce239 Bug 1254730 - patch 2 - Better comments and a better management of lifetime of ChannelEvents, r=michal 2016-03-14 18:46:22 +01:00
Andrea Marchesini
d82cb13961 Bug 1254730 - ChannelEventQueue must be thread-safe, r=michal 2016-03-14 17:10:26 +01:00
Nathan Froyd
96e9726fa8 Bug 1247393 - use arrays of UniquePtr in ChannelEventQueue; r=mcmanus 2016-01-20 16:56:04 -05:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
ff0792d13d Bug 1197679 - If nsUnknownDecoder is involved in e10s DivertToParent can break. r=jduell 2015-10-11 18:13:09 +02:00
Birunthan Mohanathas
a29151dc87 Bug 1182996 - Fix and add missing namespace comments. rs=ehsan
The bulk of this commit was generated by running:

  run-clang-tidy.py \
    -checks='-*,llvm-namespace-comment' \
    -header-filter=^/.../mozilla-central/.* \
    -fix
2015-07-13 08:25:42 -07:00
Andrea Marchesini
18b38ad706 Bug 1156632 - Remove unused forward class declarations - patch 4 - netwerk image and dom, r=ehsan 2015-04-22 08:29:20 +02:00
Ehsan Akhgari
ea41d8de48 Bug 1145631 - Part 1: Replace MOZ_OVERRIDE and MOZ_FINAL with override and final in the tree; r=froydnj
This patch was automatically generated using the following script:

function convert() {
echo "Converting $1 to $2..."
find . \
       ! -wholename "*/.git*" \
       ! -wholename "obj-ff-dbg*" \
         -type f \
      \( -iname "*.cpp" \
         -o -iname "*.h" \
         -o -iname "*.c" \
         -o -iname "*.cc" \
         -o -iname "*.idl" \
         -o -iname "*.ipdl" \
         -o -iname "*.ipdlh" \
         -o -iname "*.mm" \) | \
    xargs -n 1 sed -i -e "s/\b$1\b/$2/g"
}

convert MOZ_OVERRIDE override
convert MOZ_FINAL final
2015-03-21 12:28:04 -04:00
Nicholas Nethercote
0247de46d8 Bug 1127201 (attempt 2, part 1) - Replace most NS_ABORT_IF_FALSE calls with MOZ_ASSERT. r=Waldo. 2015-02-09 14:34:50 -08:00
Andrew McCreight
e048a7df33 Back out Bug 1127201 (part 2) for various problems. 2015-02-06 15:04:32 -08:00
Nicholas Nethercote
40ab0270d5 Bug 1127201 (part 2) - Convert all NS_ABORT_IF_FALSE calls to MOZ_ASSERT. r=Waldo. 2015-02-04 20:05:36 -08:00
Andrea Marchesini
0f18df1263 Bug 1112307 - Use a thread-safe ChannelEventQueue. r=jduell 2015-01-05 17:31:19 -05:00
Andrea Marchesini
f6b3251699 Bug 1091962 - AutoEventEnqueuer must keep alive ChannelEventQueue, r=smaug, r=jduell 2014-12-04 13:23:33 -08:00
Andrea Marchesini
52dce68b24 Bug 504553 - patch 2 - WebSockes in Workers: WebSocketImpl, thread-safe class, r=smaug 2014-10-10 17:56:43 +01:00
Ehsan Akhgari
be1d8b1947 Bug 1047782 - Fix some bad impliciit constructors in netwerk/; r=mcmanus 2014-08-05 09:20:50 -04:00
Daniel Holbert
634451cb81 Bug 984786 part 7: Give NS_INLINE_DECL_*REFCOUNTING classes private destructor & MOZ_FINAL annotation where appropriate, in /netwerk. r=hurley 2014-04-02 11:20:46 -07:00
Steve Workman
03596e3798 Bug 925623 - Support delivery of WebSocket events off-main-thread in WebSocketChannel r=jduell 2014-03-27 13:58:19 -07:00
Benoit Jacob
c719617d8e Bug 913847 - stop needlessly including nsThreadUtils.h - r=ehsan 2013-09-19 09:54:39 -04:00
Wes Kocher
df60e63207 Backed out changeset 554bfe767519 (bug 913847) for leaking on a CLOSED TREE 2013-09-18 17:21:02 -07:00
Benoit Jacob
7bcf1eee88 Bug 913847 - stop needlessly including nsThreadUtils.h - r=ehsan 2013-09-18 18:50:32 -04:00
Jason Duell
21f901be6f Bug 870564 - Youtube video freezes after a long time r=jdm 2013-06-04 16:10:55 -07:00
Gervase Markham
cb6a072c2a Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Josh Matthews
b02c36b9bf Bug 537787 - Remote websockets. r=jduell 2011-05-04 15:36:23 +02:00
Jason Duell
3b5f86056b Bug 660774 - e10s necko: refactor channelEventQueue to allow async resume/flush. r=jdm 2011-06-11 18:37:09 -07:00
Josh Matthews
5d076fd72b Bug 536289 - Generalize IPDL event queue some more. r=jduell a=blocking-fennec 2010-10-16 01:26:14 -04:00
Josh Matthews
1bfc342660 Bug 598076 - Create EventQueue class to allow multiple necko protocols to reuse IPDL queueing code. r=jduell a=blocking-fennec 2010-09-20 14:37:09 -04:00