dom/ipc/PIFrameEmbedding.ipdl
author Blake Kaplan <mrbkap@gmail.com>
Wed, 30 Jun 2010 18:37:04 -0700
changeset 46954 ac7c39e41b1da5f1b19cc9bad82fa2c2eb9b8349
parent 46951 0c5db3a42fb6ff37bc0c9976bdef4bf62b75b928
parent 46953 6c6168cbf011cd169c985dc47fdb57849f56eb3f
permissions -rw-r--r--
Delete one unwanted head on the default branch.

/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is Mozilla Content App.
 *
 * The Initial Developer of the Original Code is
 *   The Mozilla Foundation.
 * Portions created by the Initial Developer are Copyright (C) 2009
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either the GNU General Public License Version 2 or later (the "GPL"), or
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

include protocol PContentProcess;
include protocol PDocumentRenderer;
include protocol PDocumentRendererShmem;
include protocol PDocumentRendererNativeID;
include protocol PGeolocationRequest;
include protocol PContentDialog;

include "mozilla/TabTypes.h";
include "TabMessageUtils.h";
include "gfxMatrix.h";
include "mozilla/net/NeckoMessageUtils.h";

using IPC::URI;
using MagicWindowHandle;
using RemoteDOMEvent;
using gfxMatrix;

namespace mozilla {
namespace dom {

rpc protocol PIFrameEmbedding
{
    manager PContentProcess;
    manages PDocumentRenderer;
    manages PDocumentRendererShmem;
    manages PDocumentRendererNativeID;
    manages PGeolocationRequest;
    manages PContentDialog;

child:
    __delete__();

parent:
    /**
     * When child sends this message, parent should move focus to
     * the next or previous focusable element.
     */
    moveFocus(bool forward);

    sendEvent(RemoteDOMEvent aEvent);

    notifyStateChange(PRUint32 stateFlags, nsresult status);

    notifyProgressChange(PRInt64 curSelfProgress,
                         PRInt64 maxSelfProgress,
                         PRInt64 curTotalProgress,
                         PRInt64 maxTotalProgress);

    notifyLocationChange(nsCString uri);

    notifyStatusChange(nsresult status,
                       nsString message);

    notifySecurityChange(PRUint32 aState);

    sync refreshAttempted(nsCString uri, PRInt32 millis,
                          bool sameURI) returns (bool retval);


    rpc createWindow() returns (PIFrameEmbedding window);

    sync sendSyncMessageToParent(nsString aMessage, nsString aJSON)
      returns (nsString[] retval);

    sendAsyncMessageToParent(nsString aMessage, nsString aJSON);

    PGeolocationRequest(URI uri);

    PContentDialog(PRUint32 aType, nsCString aName, nsCString aFeatures,
                   PRInt32[] aIntParams, nsString[] aStringParams);

child:
    createWidget(MagicWindowHandle parentWidget);

    loadURL(nsCString uri);

    move(PRUint32 x,
         PRUint32 y,
         PRUint32 width,
         PRUint32 height);

    /**
     * Sending an activate message moves focus to the child.
     */
    activate();

  /**
   * @see nsIDOMWindowUtils sendMouseEvent.
   */
    sendMouseEvent(nsString aType,
                   PRInt32 aX, //XXX should be float, but ipdl doesn't seem to support that.
                   PRInt32 aY, //XXX - " -
                   PRInt32 aButton,
                   PRInt32 aClickCount,
                   PRInt32 aModifiers,
                   bool aIgnoreRootScrollFrame);

  /**
   * @see nsIDOMWindowUtils sendKeyEvent.
   */
    sendKeyEvent(nsString aType,
                 PRInt32 aKeyCode,
                 PRInt32 aCharCode,
                 PRInt32 aModifiers,
                 bool aPreventDefault);

    /**
     * Activate event forwarding from client to parent.
     */
    activateFrameEvent(nsString aType, bool capture);

    loadRemoteScript(nsString aURL);

    sendAsyncMessageToChild(nsString aMessage, nsString aJSON);

    PDocumentRenderer(PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h, nsString bgcolor, PRUint32 flags, bool flush);

    // @param matrix the transformation matrix the context we're going to draw into should have.
    PDocumentRendererShmem(PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h, nsString bgcolor, PRUint32 flags, bool flush,
                           gfxMatrix matrix, Shmem buf);

    // @param matrix the transformation matrix the context we're going to draw into should have.
    PDocumentRendererNativeID(PRInt32 x, PRInt32 y, PRInt32 w, PRInt32 h, nsString bgcolor, PRUint32 flags, bool flush,
                              gfxMatrix matrix, PRUint32 nativeID);
};

}
}