author | Iris Hsiao <ihsiao@mozilla.com> |
Thu, 21 Jul 2016 17:45:05 +0800 | |
changeset 306054 | 0a0f2f8db1e6faa3a56fa69aa280bfbae507c4d3 |
parent 306053 | d3c449980296db1bc307e56ca78022bc49dd823b |
child 306055 | ae502e2271f2464d92ef398d7c8c43f835865bd6 |
push id | 30474 |
push user | cbook@mozilla.com |
push date | Thu, 21 Jul 2016 14:25:10 +0000 |
treeherder | mozilla-central@6b180266ac16 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
bugs | 1280167 |
milestone | 50.0a1 |
backs out | 79b1ba1f1f4bcc68801315438fa632e6c916549e |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/base/WebSocket.cpp +++ b/dom/base/WebSocket.cpp @@ -2628,19 +2628,26 @@ public: : MainThreadWorkerRunnable(aWorkerPrivate) , mImpl(aImpl) { } bool WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override { aWorkerPrivate->AssertIsOnWorkerThread(); + aWorkerPrivate->ModifyBusyCountFromWorker(true); return !NS_FAILED(mImpl->CancelInternal()); } + void PostRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate, + bool aRunResult) override + { + aWorkerPrivate->ModifyBusyCountFromWorker(false); + } + private: RefPtr<WebSocketImpl> mImpl; }; } // namespace // Window closed, stop/reload button pressed, user navigated away from page, etc. NS_IMETHODIMP @@ -2770,29 +2777,31 @@ public: , mWebSocketImpl(aImpl) , mEvent(Move(aEvent)) { } bool WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override { aWorkerPrivate->AssertIsOnWorkerThread(); + aWorkerPrivate->ModifyBusyCountFromWorker(true); // No messages when disconnected. if (mWebSocketImpl->mDisconnectingOrDisconnected) { NS_WARNING("Dispatching a WebSocket event after the disconnection!"); return true; } return !NS_FAILED(mEvent->Run()); } void PostRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate, bool aRunResult) override { + aWorkerPrivate->ModifyBusyCountFromWorker(false); } bool PreDispatch(WorkerPrivate* aWorkerPrivate) override { // We don't call WorkerRunnable::PreDispatch because it would assert the // wrong thing about which thread we're on. We're on whichever thread the // channel implementation is running on (probably the main thread or socket