Commit e5c5dd65 authored by Ben Kelly's avatar Ben Kelly
Browse files

Bug 1300658 P2 Make WorkerRunnable's destined for main thread use the MainThreadTaskQueue. r=baku

parent f7c726cb
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -402,7 +402,7 @@ private:

    RefPtr<MainThreadReleaseRunnable> runnable =
      new MainThreadReleaseRunnable(doomed, loadGroupToCancel);
    if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
    if (NS_FAILED(mWorkerPrivate->DispatchToMainThread(runnable.forget()))) {
      NS_WARNING("Failed to dispatch, going to leak!");
    }

@@ -3858,7 +3858,7 @@ WorkerDebugger::PostMessageToDebugger(const nsAString& aMessage)

  RefPtr<PostDebuggerMessageRunnable> runnable =
    new PostDebuggerMessageRunnable(this, aMessage);
  if (NS_FAILED(NS_DispatchToMainThread(runnable, NS_DISPATCH_NORMAL))) {
  if (NS_FAILED(mWorkerPrivate->DispatchToMainThread(runnable.forget()))) {
    NS_WARNING("Failed to post message to debugger on main thread!");
  }
}
@@ -3883,7 +3883,7 @@ WorkerDebugger::ReportErrorToDebugger(const nsAString& aFilename,

  RefPtr<ReportDebuggerErrorRunnable> runnable =
    new ReportDebuggerErrorRunnable(this, aFilename, aLineno, aMessage);
  if (NS_FAILED(NS_DispatchToMainThread(runnable, NS_DISPATCH_NORMAL))) {
  if (NS_FAILED(mWorkerPrivate->DispatchToMainThread(runnable.forget()))) {
    NS_WARNING("Failed to report error to debugger on main thread!");
  }
}
@@ -4630,7 +4630,7 @@ WorkerPrivate::MaybeDispatchLoadFailedRunnable()
    return;
  }

  MOZ_ALWAYS_SUCCEEDS(NS_DispatchToMainThread(runnable.forget()));
  MOZ_ALWAYS_SUCCEEDS(DispatchToMainThread(runnable.forget()));
}

nsIEventTarget*
@@ -4851,7 +4851,7 @@ WorkerPrivate::ScheduleDeletion(WorkerRanOrNot aRanOrNot)
  else {
    RefPtr<TopLevelWorkerFinishedRunnable> runnable =
      new TopLevelWorkerFinishedRunnable(this);
    if (NS_FAILED(NS_DispatchToMainThread(runnable))) {
    if (NS_FAILED(DispatchToMainThread(runnable.forget()))) {
      NS_WARNING("Failed to dispatch runnable!");
    }
  }
+5 −12
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@
#include "mozilla/DebugOnly.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/ScriptSettings.h"
#include "mozilla/TaskQueue.h"
#include "mozilla/Telemetry.h"

#include "js/RootingAPI.h"
@@ -118,10 +119,7 @@ WorkerRunnable::DispatchInternal()
    return NS_SUCCEEDED(parent->Dispatch(runnable.forget()));
  }

  nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
  MOZ_ASSERT(mainThread);

  return NS_SUCCEEDED(mainThread->Dispatch(runnable.forget(), NS_DISPATCH_NORMAL));
  return NS_SUCCEEDED(mWorkerPrivate->DispatchToMainThread(runnable.forget()));
}

void
@@ -557,10 +555,7 @@ WorkerControlRunnable::DispatchInternal()
    return NS_SUCCEEDED(parent->DispatchControlRunnable(runnable.forget()));
  }

  nsCOMPtr<nsIThread> mainThread = do_GetMainThread();
  MOZ_ASSERT(mainThread);

  return NS_SUCCEEDED(mainThread->Dispatch(runnable.forget(), NS_DISPATCH_NORMAL));
  return NS_SUCCEEDED(mWorkerPrivate->DispatchToMainThread(runnable.forget()));
}

NS_IMPL_ISUPPORTS_INHERITED0(WorkerControlRunnable, WorkerRunnable)
@@ -583,10 +578,8 @@ WorkerMainThreadRunnable::Dispatch(ErrorResult& aRv)
  AutoSyncLoopHolder syncLoop(mWorkerPrivate);

  mSyncLoopTarget = syncLoop.EventTarget();
  RefPtr<WorkerMainThreadRunnable> runnable(this);

  DebugOnly<nsresult> rv =
    NS_DispatchToMainThread(runnable.forget(), NS_DISPATCH_NORMAL);
  DebugOnly<nsresult> rv = mWorkerPrivate->DispatchToMainThread(this);
  MOZ_ASSERT(NS_SUCCEEDED(rv),
             "Should only fail after xpcom-shutdown-threads and we're gone by then");

@@ -682,7 +675,7 @@ WorkerProxyToMainThreadRunnable::Dispatch()
    return false;
  }

  if (NS_WARN_IF(NS_FAILED(NS_DispatchToMainThread(this)))) {
  if (NS_WARN_IF(NS_FAILED(mWorkerPrivate->DispatchToMainThread(this)))) {
    ReleaseWorker();
    RunBackOnWorkerThread();
    return false;