From 5f491ff8209c9abc1dc8213f6b327847f71a80e5 Mon Sep 17 00:00:00 2001 From: "warren%netscape.com" Date: Wed, 30 Sep 1998 05:29:48 +0000 Subject: [PATCH] New OJI networking APIs. git-svn-id: svn://10.0.0.236/trunk@11533 18797224-902f-48f8-a5cc-f745e15eee43 --- .../plugin/base/public/nsIPluginInputStream.h | 65 +++++++++++ .../base/public/nsIPluginInputStream2.h | 66 +++++++++++ .../base/public/nsIPluginStreamListener.h | 110 ++++++++++++++++++ .../plugin/public/nsIPluginInputStream.h | 65 +++++++++++ .../plugin/public/nsIPluginInputStream2.h | 66 +++++++++++ .../plugin/public/nsIPluginStreamListener.h | 110 ++++++++++++++++++ 6 files changed, 482 insertions(+) create mode 100644 mozilla/modules/plugin/base/public/nsIPluginInputStream.h create mode 100644 mozilla/modules/plugin/base/public/nsIPluginInputStream2.h create mode 100644 mozilla/modules/plugin/base/public/nsIPluginStreamListener.h create mode 100644 mozilla/modules/plugin/public/nsIPluginInputStream.h create mode 100644 mozilla/modules/plugin/public/nsIPluginInputStream2.h create mode 100644 mozilla/modules/plugin/public/nsIPluginStreamListener.h diff --git a/mozilla/modules/plugin/base/public/nsIPluginInputStream.h b/mozilla/modules/plugin/base/public/nsIPluginInputStream.h new file mode 100644 index 00000000000..099169f7da3 --- /dev/null +++ b/mozilla/modules/plugin/base/public/nsIPluginInputStream.h @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginInputStream_h___ +#define nsIPluginInputStream_h___ + +#include "nsplugindefs.h" +#include "nsIInputStream.h" + +/** + * The nsIPluginInputStream interface ... + */ +class nsIPluginInputStream : public nsIInputStream { +public: + + // (Corresponds to NPStream's lastmodified field.) + NS_IMETHOD + GetLastModified(PRUint32 *result) = 0; + + NS_IMETHOD + RequestRead(nsByteRange* rangeList) = 0; + +}; + +#define NS_IPLUGININPUTSTREAM_IID \ +{ /* af160530-542a-11d2-8164-006008119d7a */ \ + 0xaf160530, \ + 0x542a, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginInputStream_h___ */ diff --git a/mozilla/modules/plugin/base/public/nsIPluginInputStream2.h b/mozilla/modules/plugin/base/public/nsIPluginInputStream2.h new file mode 100644 index 00000000000..2a064a651e4 --- /dev/null +++ b/mozilla/modules/plugin/base/public/nsIPluginInputStream2.h @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginInputStream2_h___ +#define nsIPluginInputStream2_h___ + +#include "nsIPluginInputStream.h" + +/** + * The nsIPluginInputStream2 interface ... + */ +class nsIPluginInputStream2 : public nsIPluginInputStream { +public: + + NS_IMETHOD + GetContentLength(PRUint32 *result) = 0; + + NS_IMETHOD + GetHeaderFields(PRUint16& n, const char*const*& names, const char*const*& values) = 0; + + NS_IMETHOD + GetHeaderField(const char* name, const char* *result) = 0; + +}; + +#define NS_IPLUGININPUTSTREAM2_IID \ +{ /* cfb36db0-542a-11d2-8164-006008119d7a */ \ + 0xcfb36db0, \ + 0x542a, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginInputStream2_h___ */ diff --git a/mozilla/modules/plugin/base/public/nsIPluginStreamListener.h b/mozilla/modules/plugin/base/public/nsIPluginStreamListener.h new file mode 100644 index 00000000000..215fab00d83 --- /dev/null +++ b/mozilla/modules/plugin/base/public/nsIPluginStreamListener.h @@ -0,0 +1,110 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginStreamListener_h___ +#define nsIPluginStreamListener_h___ + +#include "nsplugindefs.h" +#include "nsISupports.h" + +class nsIPluginInputStream; + +struct nsPluginStreamInfo { + nsMIMEType contentType; + PRBool seekable; + // more... +}; + +/** + * The nsIPluginStreamListener interface defines the minimum set of functionality that + * the browser will support if it allows plugins. Plugins can call QueryInterface + * to determine if a plugin manager implements more specific APIs or other + * browser interfaces for the plugin to use (e.g. nsINetworkManager). + */ +class nsIPluginStreamListener : public nsISupports { +public: + + /** + * Notify the observer that the URL has started to load. This method is + * called only once, at the beginning of a URL load.

+ * + * @return The return value is currently ignored. In the future it may be + * used to cancel the URL load.. + */ + NS_IMETHOD + OnStartBinding(const char* url, const nsPluginStreamInfo* info) = 0; + + /** + * Notify the client that data is available in the input stream. This + * method is called whenver data is written into the input stream by the + * networking library...

+ * + * @param aIStream The input stream containing the data. This stream can + * be either a blocking or non-blocking stream. + * @param length The amount of data that was just pushed into the stream. + * @return The return value is currently ignored. + */ + NS_IMETHOD + OnDataAvailable(const char* url, nsIPluginInputStream* input, + PRUint32 offset, PRUint32 length) = 0; + + NS_IMETHOD + OnFileAvailable(const char* url, const char* fileName) = 0; + + /** + * Notify the observer that the URL has finished loading. This method is + * called once when the networking library has finished processing the + * URL transaction initiatied via the nsINetService::Open(...) call.

+ * + * This method is called regardless of whether the URL loaded successfully.

+ * + * @param status Status code for the URL load. + * @param msg A text string describing the error. + * @return The return value is currently ignored. + */ + NS_IMETHOD + OnStopBinding(const char* url, nsresult status) = 0; + +}; + +#define NS_IPLUGINSTREAMLISTENER_IID \ +{ /* df055770-5448-11d2-8164-006008119d7a */ \ + 0xdf055770, \ + 0x5448, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginStreamListener_h___ */ diff --git a/mozilla/modules/plugin/public/nsIPluginInputStream.h b/mozilla/modules/plugin/public/nsIPluginInputStream.h new file mode 100644 index 00000000000..099169f7da3 --- /dev/null +++ b/mozilla/modules/plugin/public/nsIPluginInputStream.h @@ -0,0 +1,65 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginInputStream_h___ +#define nsIPluginInputStream_h___ + +#include "nsplugindefs.h" +#include "nsIInputStream.h" + +/** + * The nsIPluginInputStream interface ... + */ +class nsIPluginInputStream : public nsIInputStream { +public: + + // (Corresponds to NPStream's lastmodified field.) + NS_IMETHOD + GetLastModified(PRUint32 *result) = 0; + + NS_IMETHOD + RequestRead(nsByteRange* rangeList) = 0; + +}; + +#define NS_IPLUGININPUTSTREAM_IID \ +{ /* af160530-542a-11d2-8164-006008119d7a */ \ + 0xaf160530, \ + 0x542a, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginInputStream_h___ */ diff --git a/mozilla/modules/plugin/public/nsIPluginInputStream2.h b/mozilla/modules/plugin/public/nsIPluginInputStream2.h new file mode 100644 index 00000000000..2a064a651e4 --- /dev/null +++ b/mozilla/modules/plugin/public/nsIPluginInputStream2.h @@ -0,0 +1,66 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginInputStream2_h___ +#define nsIPluginInputStream2_h___ + +#include "nsIPluginInputStream.h" + +/** + * The nsIPluginInputStream2 interface ... + */ +class nsIPluginInputStream2 : public nsIPluginInputStream { +public: + + NS_IMETHOD + GetContentLength(PRUint32 *result) = 0; + + NS_IMETHOD + GetHeaderFields(PRUint16& n, const char*const*& names, const char*const*& values) = 0; + + NS_IMETHOD + GetHeaderField(const char* name, const char* *result) = 0; + +}; + +#define NS_IPLUGININPUTSTREAM2_IID \ +{ /* cfb36db0-542a-11d2-8164-006008119d7a */ \ + 0xcfb36db0, \ + 0x542a, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginInputStream2_h___ */ diff --git a/mozilla/modules/plugin/public/nsIPluginStreamListener.h b/mozilla/modules/plugin/public/nsIPluginStreamListener.h new file mode 100644 index 00000000000..215fab00d83 --- /dev/null +++ b/mozilla/modules/plugin/public/nsIPluginStreamListener.h @@ -0,0 +1,110 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * The contents of this file are subject to the Netscape Public License + * Version 1.0 (the "NPL"); you may not use this file except in + * compliance with the NPL. You may obtain a copy of the NPL at + * http://www.mozilla.org/NPL/ + * + * Software distributed under the NPL is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL + * for the specific language governing rights and limitations under the + * NPL. + * + * The Initial Developer of this code under the NPL is Netscape + * Communications Corporation. Portions created by Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All Rights + * Reserved. + */ + +//////////////////////////////////////////////////////////////////////////////// +/** + * INTERFACE TO NETSCAPE COMMUNICATOR PLUGINS (NEW C++ API). + * + *

This superscedes the old plugin API (npapi.h, npupp.h), and + * eliminates the need for glue files: npunix.c, npwin.cpp and npmac.cpp that + * get linked with the plugin. You will however need to link with the "backward + * adapter" (badapter.cpp) in order to allow your plugin to run in pre-5.0 + * browsers. + * + *

See nsplugin.h for an overview of how this interface fits with the + * overall plugin architecture. + */ +//////////////////////////////////////////////////////////////////////////////// + +#ifndef nsIPluginStreamListener_h___ +#define nsIPluginStreamListener_h___ + +#include "nsplugindefs.h" +#include "nsISupports.h" + +class nsIPluginInputStream; + +struct nsPluginStreamInfo { + nsMIMEType contentType; + PRBool seekable; + // more... +}; + +/** + * The nsIPluginStreamListener interface defines the minimum set of functionality that + * the browser will support if it allows plugins. Plugins can call QueryInterface + * to determine if a plugin manager implements more specific APIs or other + * browser interfaces for the plugin to use (e.g. nsINetworkManager). + */ +class nsIPluginStreamListener : public nsISupports { +public: + + /** + * Notify the observer that the URL has started to load. This method is + * called only once, at the beginning of a URL load.

+ * + * @return The return value is currently ignored. In the future it may be + * used to cancel the URL load.. + */ + NS_IMETHOD + OnStartBinding(const char* url, const nsPluginStreamInfo* info) = 0; + + /** + * Notify the client that data is available in the input stream. This + * method is called whenver data is written into the input stream by the + * networking library...

+ * + * @param aIStream The input stream containing the data. This stream can + * be either a blocking or non-blocking stream. + * @param length The amount of data that was just pushed into the stream. + * @return The return value is currently ignored. + */ + NS_IMETHOD + OnDataAvailable(const char* url, nsIPluginInputStream* input, + PRUint32 offset, PRUint32 length) = 0; + + NS_IMETHOD + OnFileAvailable(const char* url, const char* fileName) = 0; + + /** + * Notify the observer that the URL has finished loading. This method is + * called once when the networking library has finished processing the + * URL transaction initiatied via the nsINetService::Open(...) call.

+ * + * This method is called regardless of whether the URL loaded successfully.

+ * + * @param status Status code for the URL load. + * @param msg A text string describing the error. + * @return The return value is currently ignored. + */ + NS_IMETHOD + OnStopBinding(const char* url, nsresult status) = 0; + +}; + +#define NS_IPLUGINSTREAMLISTENER_IID \ +{ /* df055770-5448-11d2-8164-006008119d7a */ \ + 0xdf055770, \ + 0x5448, \ + 0x11d2, \ + {0x81, 0x64, 0x00, 0x60, 0x08, 0x11, 0x9d, 0x7a} \ +} + +//////////////////////////////////////////////////////////////////////////////// + +#endif /* nsIPluginStreamListener_h___ */