netwerk/base/nsIThreadRetargetableRequest.idl
author Andrew Osmond <aosmond@mozilla.com>
Fri, 17 Nov 2017 06:45:28 -0500
changeset 392351 b9a29d94ccac646c9336fa75e084bbc8581501ad
parent 386374 7d7c80924f6059d29bb9571220e4a09d4d74a319
permissions -rw-r--r--
Bug 1368776 - Part 15. Cache flags passed to ImageResource::GetImageContainerImpl for consistency. r=tnikkel When FLAG_HIGH_QUALITY_SCALING is used, we need to make sure we continue using that flag when we update the container. We should also use it for comparing whether or not an existing image container is equivalent.

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"

interface nsIEventTarget;

/**
 * nsIThreadRetargetableRequest
 *
 * Should be implemented by requests that support retargeting delivery of
 * data off the main thread.
 */
[uuid(27b84c48-5a73-4ba4-a8a4-8b5e649a145e)]
interface nsIThreadRetargetableRequest : nsISupports
{
  /**
   * Called to retarget delivery of OnDataAvailable to another thread. Should
   * only be called before AsyncOpen for nsIWebsocketChannels, or during
   * OnStartRequest for nsIChannels.
   * Note: For nsIChannels, OnStartRequest and OnStopRequest will still be
   * delivered on the main thread.
   *
   * @param aNewTarget New event target, e.g. thread or threadpool.
   *
   * Note: no return value is given. If the retargeting cannot be handled,
   * normal delivery to the main thread will continue. As such, listeners
   * should be ready to deal with OnDataAvailable on either the main thread or
   * the new target thread.
   */
  void retargetDeliveryTo(in nsIEventTarget aNewTarget);

  /**
   * Returns the event target where OnDataAvailable events will be dispatched.
   *
   * This is only valid after OnStartRequest has been called. Any time before
   * that point, the value may be changed by `retargetDeliveryTo` calls.
   */
  readonly attribute nsIEventTarget deliveryTarget;
};