/* -*- 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 PContent; include protocol PContentDialog; include protocol PDocumentRenderer; include protocol PDocumentRendererShmem; include protocol PDocumentRendererNativeID; include protocol PGeolocationRequest; 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 PBrowser { manager PContent; manages PContentDialog; manages PDocumentRenderer; manages PDocumentRendererShmem; manages PDocumentRendererNativeID; manages PGeolocationRequest; both: AsyncMessage(nsString aMessage, nsString aJSON); parent: /** * When child sends this message, parent should move focus to * the next or previous focusable element. */ MoveFocus(bool forward); Event(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 (PBrowser window); sync SyncMessage(nsString aMessage, nsString aJSON) returns (nsString[] retval); PGeolocationRequest(URI uri); PContentDialog(PRUint32 aType, nsCString aName, nsCString aFeatures, PRInt32[] aIntParams, nsString[] aStringParams); __delete__(); 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. */ MouseEvent(nsString aType, float aX, float aY, PRInt32 aButton, PRInt32 aClickCount, PRInt32 aModifiers, bool aIgnoreRootScrollFrame); /** * @see nsIDOMWindowUtils sendKeyEvent. */ KeyEvent(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); 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); /** * Sent by the chrome process when it no longer wants this remote * . The child side cleans up in response, then * finalizing its death by sending back __delete__() to the * parent. */ Destroy(); /* * FIXME: write protocol! state LIVE: send LoadURL goto LIVE; //etc. send Destroy goto DYING; state DYING: discard send blah; // etc. recv __delete__; */ }; } }