/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * 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/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   Licensed to the Apache Software Foundation (ASF) under one or more
 *   contributor license agreements. See the NOTICE file distributed
 *   with this work for additional information regarding copyright
 *   ownership. The ASF licenses this file to you under the Apache
 *   License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 .
 */
#ifndef __com_sun_star_mozilla_XPluginInstancePeer_idl__
#define __com_sun_star_mozilla_XPluginInstancePeer_idl__

#include <com/sun/star/uno/XInterface.idl>

#include <com/sun/star/io/XActiveDataSource.idl>

#include <com/sun/star/io/XInputStream.idl>

#include <com/sun/star/lang/XMultiServiceFactory.idl>


 module com {  module sun {  module star {  module mozilla {


 published interface XPluginInstanceNotifySink;


/** Allows to communicate with a plugin from the office side.
    This interface is oriented for communication with browsers plugins.
 */
published interface XPluginInstancePeer: com::sun::star::uno::XInterface
{

    /** Alters the plugin's window size in the browser window.

        @param width    [in]: the new window width
        @param height   [in]: the new window height

        @return <CODE>TRUE</CODE> on success
     */
    boolean setWindowSize( [in] long width, [in] long height );


    /** Show status / hint message in browser's message area.

        @param message  [in]: the string to be displayed
     */
    void showStatusMessage( [in] string message );


    /** Indicates to the plugin that the document was loaded successfully and scripting
        interfaces are now available.

        @param document         [in]: the active document
        @param servicemanager   [in]: the office servicemanager

     */
    void enableScripting( [in] com::sun::star::uno::XInterface document, [in] com::sun::star::lang::XMultiServiceFactory servicemanager );


    /** Creates a new stream of data produced by the plug-in and consumed by
        the browser.

        @param MIMEDesc [in]:   the MIME type of the plug-in to create
        @param target   [in]:   the name of the target window or frame (supports _blank, _self)
        @param data     [in]:   on success the output stream will be    associated with this instance

     */
    void newStream(
        [in] string MIMEDesc,
        [in] string target,
        [in] com::sun::star::io::XActiveDataSource data
    );


    /** Fetches an URL into the target window. The parameters and their meaning map to the
        corresponding Netscape-API call.

        @param aURL             [in]: the URL to be fetched
        @param target           [in]: the name of the target window or frame (supports _blank, _self)
        @param alternativeHost  [in]: alternativeHost
        @param referrer         [in]: referrer
        @param sink             [in]: the sink is notified on success

     */
    void getURL (
        [in] string aURL,
        [in] string target,
        [in] string alternativeHost,
        [in] string referrer,
        [in] XPluginInstanceNotifySink sink
    );


    /** Posts to a URL with post data and/or post headers. The parameters and their meaning
        map to the corresponding Netscape-API call.

        @param aURL             [in]: the URL to be posted to
        @param postData         [in]: the data to be posted
        @param target           [in]: the name of the target window or frame (supports _blank, _self)
        @param alternativeHost  [in]: alternativeHost
        @param referrer         [in]: referrer
        @param postHeaders      [in]: the header to be posted
        @param sink             [in]: the sink is notified on success

     */
    void postURL (
        [in] string aURL,
        [in] com::sun::star::io::XInputStream postData,
        [in] string target,
        [in] string alternativeHost,
        [in] string referrer,
        [in] com::sun::star::io::XInputStream postHeaders,
        [in] XPluginInstanceNotifySink sink
    );
};


}; }; }; };

#endif

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
