author Kyle Huey <>
Mon, 15 Oct 2012 14:15:25 -0700
changeset 113417 cbfef8616b633b460987030a1b6798b1869e769b
parent 107817 87b00ac22aa8b1340acc1b11b8b466dfabbd468b
child 130749 b1a08130fae67ee3c02c63349628f5b645030cc1
permissions -rw-r--r--
Bug 648610 - Implement <canvas>.toBlob. r=smaug, a=blocking-basecamp

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 */

#include "nsIDOMHTMLElement.idl"

// for jsval
#include "jsapi.h"

 * The nsIDOMHTMLCanvasElement interface is the interface to a HTML
 * <canvas> element.
 * For more information on this interface, please see

interface nsIDOMBlob;
interface nsIDOMFile;
interface nsIVariant;
interface nsIInputStreamCallback;

[scriptable, builtinclass, uuid(8d5fb8a0-7782-11e1-b0c4-0800200c9a67)]
interface nsIDOMMozCanvasPrintState : nsISupports
  // A canvas rendering context.
  readonly attribute nsISupports context;

  // To be called when rendering to the context is done.
  void done();

[scriptable, function, uuid(8d5fb8a0-7782-11e1-b0c4-0800200c9a66)]
interface nsIPrintCallback : nsISupports
  void render(in nsIDOMMozCanvasPrintState ctx);

[scriptable, function, uuid(6e9ffb59-2067-4aef-a51c-65e65a3e0d81)]
interface nsIFileCallback : nsISupports {
  void receive(in nsIDOMBlob file);

[scriptable, uuid(a7062fca-41c6-4520-b777-3bb30fd77273)]
interface nsIDOMHTMLCanvasElement : nsIDOMHTMLElement
  attribute unsigned long width;
  attribute unsigned long height;
  attribute boolean mozOpaque;

  nsISupports getContext(in DOMString contextId,
                         [optional] in jsval contextOptions);

  // Valid calls are:
  //  toDataURL();              -- defaults to image/png
  //  toDataURL(type);          -- uses given type
  //  toDataURL(type, params);  -- uses given type, and any valid parameters
  [optional_argc] DOMString toDataURL([optional] in DOMString type,
                                      [optional] in nsIVariant params);

  // Valid calls are
  // mozGetAsFile(name);              -- defaults to image/png
  // mozGetAsFile(name, type);        -- uses given type
  [optional_argc] nsIDOMFile mozGetAsFile(in DOMString name,
                                          [optional] in DOMString type);

  [optional_argc] void toBlob(in nsIFileCallback callback,
                              [optional] in DOMString type,
                              [optional] in nsIVariant params);

  // A Mozilla-only extension to get a canvas context backed by double-buffered
  // shared memory. Only privileged callers can call this.
  nsISupports MozGetIPCContext(in DOMString contextId);

  // A Mozilla-only extension that returns the canvas' image data as a data
  // stream in the desired image format.
  void mozFetchAsStream(in nsIInputStreamCallback callback,
                                        [optional] in DOMString type);

  // A Mozilla-only callback that is called during the printing process.
  attribute nsIPrintCallback mozPrintCallback;