зеркало из https://github.com/mozilla/pjs.git
NOT IN BUILD - adding boilerplate for jar protocol handler
This commit is contained in:
Родитель
a2b98618af
Коммит
05b4ee9801
|
@ -0,0 +1,32 @@
|
||||||
|
/* -*- Mode: IDL; 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsIChannel.idl"
|
||||||
|
|
||||||
|
[scriptable, uuid(692303c0-2f83-11d3-8cd0-0060b0fc14a3)]
|
||||||
|
interface nsIJARChannel : nsIChannel
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
|
||||||
|
#define NS_JAR_CHANNEL_PROGID "component://netscape/network/protocol/jar"
|
||||||
|
#define NS_JAR_CHANNEL_PROGID_LENGTH 41
|
||||||
|
|
||||||
|
%}
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __nsjarchannel__h___
|
||||||
|
#define __nsjarchannel__h___
|
||||||
|
|
||||||
|
#include "nsIURI.h"
|
||||||
|
|
||||||
|
class nsJARChannel : nsIJARChannel {
|
||||||
|
public:
|
||||||
|
// nsISupports
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
// nsIChannel
|
||||||
|
NS_DECL_NSICHANNEL
|
||||||
|
|
||||||
|
// nsIJARChannel
|
||||||
|
NS_DECL_NSIJARCHANNEL
|
||||||
|
|
||||||
|
// nsJARChannel
|
||||||
|
nsJARChannel();
|
||||||
|
virtual ~nsJARChannel();
|
||||||
|
|
||||||
|
private:
|
||||||
|
nsIURI *mURI;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __nsjarchannel__h___
|
|
@ -0,0 +1,113 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsJARProtocolHandler.h"
|
||||||
|
#include "nsIURI.h"
|
||||||
|
#include "nsIIOService.h"
|
||||||
|
#include "nsCRT.h"
|
||||||
|
#include "nsIComponentManager.h"
|
||||||
|
#include "nsIServiceManager.h"
|
||||||
|
#include "nsIJARChannel.h"
|
||||||
|
|
||||||
|
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
nsJARProtocolHandler::nsJARProtocolHandler()
|
||||||
|
{
|
||||||
|
NS_INIT_REFCNT();
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsJARProtocolHandler::Init()
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJARProtocolHandler::~nsJARProtocolHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS(nsJARProtocolHandler, nsIProtocolHandler::GetIID());
|
||||||
|
|
||||||
|
NS_METHOD
|
||||||
|
nsJARProtocolHandler::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
|
||||||
|
{
|
||||||
|
if (aOuter)
|
||||||
|
return NS_ERROR_NO_AGGREGATION;
|
||||||
|
|
||||||
|
nsJARProtocolHandler* ph = new nsJARProtocolHandler();
|
||||||
|
if (ph == nsnull)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
NS_ADDREF(ph);
|
||||||
|
nsresult rv = ph->Init();
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
rv = ph->QueryInterface(aIID, aResult);
|
||||||
|
}
|
||||||
|
NS_RELEASE(ph);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// nsIProtocolHandler methods:
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::GetScheme(char* *result)
|
||||||
|
{
|
||||||
|
*result = nsCRT::strdup("jar");
|
||||||
|
if (*result == nsnull)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::GetDefaultPort(PRInt32 *result)
|
||||||
|
{
|
||||||
|
*result = -1; // no port for JAR: URLs
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::MakeAbsolute(const char* aSpec,
|
||||||
|
nsIURI* aBaseURI,
|
||||||
|
char* *result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JAR urls have the following syntax
|
||||||
|
//
|
||||||
|
// jar:<url>!/(entry)
|
||||||
|
//
|
||||||
|
// EXAMPLE: jar:http://www.big.com/blue.jar!/ocean.html
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI,
|
||||||
|
nsIURI **result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri,
|
||||||
|
nsIEventSinkGetter* eventSinkGetter,
|
||||||
|
nsIChannel* *result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
|
@ -0,0 +1,60 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef nsJARProtocolHandler_h___
|
||||||
|
#define nsJARProtocolHandler_h___
|
||||||
|
|
||||||
|
#include "nsIProtocolHandler.h"
|
||||||
|
|
||||||
|
#define NS_JARPROTOCOLHANDLER_CID \
|
||||||
|
{ /* 9e3b6c90-2f75-11d3-8cd0-0060b0fc14a3 */ \
|
||||||
|
0x9e3b6c90, \
|
||||||
|
0x2f75, \
|
||||||
|
0x11d3, \
|
||||||
|
{0x8c, 0xd0, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
|
||||||
|
}
|
||||||
|
|
||||||
|
class nsJARProtocolHandler : public nsIProtocolHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
// nsIProtocolHandler methods:
|
||||||
|
NS_IMETHOD GetScheme(char * *aScheme);
|
||||||
|
NS_IMETHOD GetDefaultPort(PRInt32 *aDefaultPort);
|
||||||
|
NS_IMETHOD MakeAbsolute(const char *aRelativeSpec, nsIURI *aBaseURI,
|
||||||
|
char **_retval);
|
||||||
|
NS_IMETHOD NewURI(const char *aSpec, nsIURI *aBaseURI,
|
||||||
|
nsIURI **_retval);
|
||||||
|
NS_IMETHOD NewChannel(const char* verb, nsIURI* url,
|
||||||
|
nsIEventSinkGetter *eventSinkGetter,
|
||||||
|
nsIChannel **_retval);
|
||||||
|
|
||||||
|
// nsJARProtocolHandler methods:
|
||||||
|
nsJARProtocolHandler();
|
||||||
|
virtual ~nsJARProtocolHandler();
|
||||||
|
|
||||||
|
static NS_METHOD
|
||||||
|
Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
||||||
|
|
||||||
|
nsresult Init();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* nsJARProtocolHandler_h___ */
|
|
@ -0,0 +1,33 @@
|
||||||
|
#! gmake
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
DEPTH = ../../..
|
||||||
|
|
||||||
|
topsrcdir = @top_srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
MODULE = necko
|
||||||
|
|
||||||
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
|
DIRS= \
|
||||||
|
public \
|
||||||
|
src \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!gmake
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
#
|
||||||
|
# Makefile to build the pluggable HTTP
|
||||||
|
#
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
|
||||||
|
DEPTH=..\..\..
|
||||||
|
DIRS= \
|
||||||
|
public \
|
||||||
|
src \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
include <$(DEPTH)\config\rules.mak>
|
|
@ -0,0 +1,41 @@
|
||||||
|
#!gmake
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
MODULE = necko
|
||||||
|
|
||||||
|
DEPTH = ../../../..
|
||||||
|
|
||||||
|
topsrcdir = @top_srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
XPIDL_MODULE = necko_about
|
||||||
|
|
||||||
|
XPIDLSRCS = \
|
||||||
|
nsIJARChannel.idl \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/config.mk
|
||||||
|
|
||||||
|
# hack until necko lands
|
||||||
|
ifndef NECKO
|
||||||
|
PUBLIC = $(DEPTH)/netwerk/dist/include
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
|
@ -0,0 +1,30 @@
|
||||||
|
#!gmake
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
MODULE = necko
|
||||||
|
|
||||||
|
DEPTH = ..\..\..\..
|
||||||
|
include <$(DEPTH)/config/config.mak>
|
||||||
|
|
||||||
|
XPIDL_MODULE = necko_about
|
||||||
|
|
||||||
|
XPIDLSRCS = \
|
||||||
|
.\nsIJARChannel.idl \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
include <$(DEPTH)/config/rules.mak>
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/* -*- Mode: IDL; 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsIChannel.idl"
|
||||||
|
|
||||||
|
[scriptable, uuid(692303c0-2f83-11d3-8cd0-0060b0fc14a3)]
|
||||||
|
interface nsIJARChannel : nsIChannel
|
||||||
|
{
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
%{C++
|
||||||
|
|
||||||
|
#define NS_JAR_CHANNEL_PROGID "component://netscape/network/protocol/jar"
|
||||||
|
#define NS_JAR_CHANNEL_PROGID_LENGTH 41
|
||||||
|
|
||||||
|
%}
|
|
@ -0,0 +1,44 @@
|
||||||
|
/* -*- Mode: IDL; 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsIURI.idl"
|
||||||
|
#include "nsIEnumerator.idl"
|
||||||
|
|
||||||
|
// JAR URLs have the following syntax
|
||||||
|
//
|
||||||
|
// jar:<url>!/(entry)
|
||||||
|
//
|
||||||
|
// EXAMPLE: jar:http://www.big.com/blue.jar!/ocean.html
|
||||||
|
|
||||||
|
[scriptable, uuid(35cef9b0-6d18-11d3-a17f-0050041caf44)]
|
||||||
|
interface nsIJARURI : nsIURI {
|
||||||
|
|
||||||
|
// Enumerates all the entries in the JAR (the root URI).
|
||||||
|
// ARGUMENTS:
|
||||||
|
// aRoot - a string representing the root dir to enumerate from
|
||||||
|
// or null to enumerate the whole thing.
|
||||||
|
nsISimpleEnumerator EnumerateEntries(in string aRoot);
|
||||||
|
|
||||||
|
// Returns the root URI (the one for the actual JAR file) for this JAR.
|
||||||
|
// eg http://www.big.com/blue.jar
|
||||||
|
nsIURI GetRootURI();
|
||||||
|
|
||||||
|
// Returns the entry specified for this JAR URI.
|
||||||
|
// eg ocean.html
|
||||||
|
string GetEntry();
|
||||||
|
};
|
|
@ -0,0 +1,46 @@
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
DEPTH = ../../../..
|
||||||
|
|
||||||
|
topsrcdir = @top_srcdir@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
VPATH = @srcdir@
|
||||||
|
|
||||||
|
MODULE = necko
|
||||||
|
|
||||||
|
LIBRARY_NAME = necko_jar
|
||||||
|
|
||||||
|
IS_COMPONENT = 1
|
||||||
|
|
||||||
|
include $(DEPTH)/config/autoconf.mk
|
||||||
|
|
||||||
|
CPPSRCS = \
|
||||||
|
nsJARProtocolHandler.cpp \
|
||||||
|
nsJARProtocolFactory.cpp \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
REQUIRES = xpcom necko
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/config.mk
|
||||||
|
|
||||||
|
# hack until necko lands
|
||||||
|
ifndef NECKO
|
||||||
|
PUBLIC = $(DEPTH)/netwerk/dist/include
|
||||||
|
endif
|
||||||
|
|
||||||
|
TARGET = $(LIBARY)
|
||||||
|
|
||||||
|
include $(topsrcdir)/config/rules.mk
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!gmake
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
DEPTH=..\..\..\..
|
||||||
|
MODULE=necko
|
||||||
|
|
||||||
|
IS_COMPONENT=1
|
||||||
|
MAKE_OBJ_TYPE=DLL
|
||||||
|
DLLNAME=necko_jar
|
||||||
|
DLL=.\$(OBJDIR)\$(DLLNAME).dll
|
||||||
|
|
||||||
|
LLIBS= $(LLIBS) \
|
||||||
|
$(LIBNSPR) \
|
||||||
|
$(DIST)\lib\xpcom.lib \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
CPP_OBJS= \
|
||||||
|
.\$(OBJDIR)\nsJARProtocolHandler.obj \
|
||||||
|
.\$(OBJDIR)\nsJARProtocolFactory.obj \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
LOCAL_INCLUDES=-I.
|
||||||
|
|
||||||
|
INCLUDES = $(LOCAL_INCLUDES)
|
||||||
|
|
||||||
|
REQUIRES= necko
|
||||||
|
|
||||||
|
INCS = $(INCS) \
|
||||||
|
-I$(DEPTH)\dist\include \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
include <$(DEPTH)\config\rules.mak>
|
||||||
|
|
||||||
|
install:: $(DLL)
|
||||||
|
$(MAKE_INSTALL) $(DLL) $(DIST)\bin\components
|
||||||
|
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __nsjarchannel__h___
|
||||||
|
#define __nsjarchannel__h___
|
||||||
|
|
||||||
|
#include "nsIURI.h"
|
||||||
|
|
||||||
|
class nsJARChannel : nsIJARChannel {
|
||||||
|
public:
|
||||||
|
// nsISupports
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
// nsIChannel
|
||||||
|
NS_DECL_NSICHANNEL
|
||||||
|
|
||||||
|
// nsIJARChannel
|
||||||
|
NS_DECL_NSIJARCHANNEL
|
||||||
|
|
||||||
|
// nsJARChannel
|
||||||
|
nsJARChannel();
|
||||||
|
virtual ~nsJARChannel();
|
||||||
|
|
||||||
|
private:
|
||||||
|
nsIURI *mURI;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // __nsjarchannel__h___
|
|
@ -0,0 +1,113 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "nsJARProtocolHandler.h"
|
||||||
|
#include "nsIURI.h"
|
||||||
|
#include "nsIIOService.h"
|
||||||
|
#include "nsCRT.h"
|
||||||
|
#include "nsIComponentManager.h"
|
||||||
|
#include "nsIServiceManager.h"
|
||||||
|
#include "nsIJARChannel.h"
|
||||||
|
|
||||||
|
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
nsJARProtocolHandler::nsJARProtocolHandler()
|
||||||
|
{
|
||||||
|
NS_INIT_REFCNT();
|
||||||
|
}
|
||||||
|
|
||||||
|
nsresult
|
||||||
|
nsJARProtocolHandler::Init()
|
||||||
|
{
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
nsJARProtocolHandler::~nsJARProtocolHandler()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMPL_ISUPPORTS(nsJARProtocolHandler, nsIProtocolHandler::GetIID());
|
||||||
|
|
||||||
|
NS_METHOD
|
||||||
|
nsJARProtocolHandler::Create(nsISupports *aOuter, REFNSIID aIID, void **aResult)
|
||||||
|
{
|
||||||
|
if (aOuter)
|
||||||
|
return NS_ERROR_NO_AGGREGATION;
|
||||||
|
|
||||||
|
nsJARProtocolHandler* ph = new nsJARProtocolHandler();
|
||||||
|
if (ph == nsnull)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
NS_ADDREF(ph);
|
||||||
|
nsresult rv = ph->Init();
|
||||||
|
if (NS_SUCCEEDED(rv)) {
|
||||||
|
rv = ph->QueryInterface(aIID, aResult);
|
||||||
|
}
|
||||||
|
NS_RELEASE(ph);
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// nsIProtocolHandler methods:
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::GetScheme(char* *result)
|
||||||
|
{
|
||||||
|
*result = nsCRT::strdup("jar");
|
||||||
|
if (*result == nsnull)
|
||||||
|
return NS_ERROR_OUT_OF_MEMORY;
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::GetDefaultPort(PRInt32 *result)
|
||||||
|
{
|
||||||
|
*result = -1; // no port for JAR: URLs
|
||||||
|
return NS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::MakeAbsolute(const char* aSpec,
|
||||||
|
nsIURI* aBaseURI,
|
||||||
|
char* *result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JAR urls have the following syntax
|
||||||
|
//
|
||||||
|
// jar:<url>!/(entry)
|
||||||
|
//
|
||||||
|
// EXAMPLE: jar:http://www.big.com/blue.jar!/ocean.html
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::NewURI(const char *aSpec, nsIURI *aBaseURI,
|
||||||
|
nsIURI **result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
NS_IMETHODIMP
|
||||||
|
nsJARProtocolHandler::NewChannel(const char* verb, nsIURI* uri,
|
||||||
|
nsIEventSinkGetter* eventSinkGetter,
|
||||||
|
nsIChannel* *result)
|
||||||
|
{
|
||||||
|
return NS_ERROR_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
|
@ -0,0 +1,60 @@
|
||||||
|
/* -*- 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef nsJARProtocolHandler_h___
|
||||||
|
#define nsJARProtocolHandler_h___
|
||||||
|
|
||||||
|
#include "nsIProtocolHandler.h"
|
||||||
|
|
||||||
|
#define NS_JARPROTOCOLHANDLER_CID \
|
||||||
|
{ /* 9e3b6c90-2f75-11d3-8cd0-0060b0fc14a3 */ \
|
||||||
|
0x9e3b6c90, \
|
||||||
|
0x2f75, \
|
||||||
|
0x11d3, \
|
||||||
|
{0x8c, 0xd0, 0x00, 0x60, 0xb0, 0xfc, 0x14, 0xa3} \
|
||||||
|
}
|
||||||
|
|
||||||
|
class nsJARProtocolHandler : public nsIProtocolHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NS_DECL_ISUPPORTS
|
||||||
|
|
||||||
|
// nsIProtocolHandler methods:
|
||||||
|
NS_IMETHOD GetScheme(char * *aScheme);
|
||||||
|
NS_IMETHOD GetDefaultPort(PRInt32 *aDefaultPort);
|
||||||
|
NS_IMETHOD MakeAbsolute(const char *aRelativeSpec, nsIURI *aBaseURI,
|
||||||
|
char **_retval);
|
||||||
|
NS_IMETHOD NewURI(const char *aSpec, nsIURI *aBaseURI,
|
||||||
|
nsIURI **_retval);
|
||||||
|
NS_IMETHOD NewChannel(const char* verb, nsIURI* url,
|
||||||
|
nsIEventSinkGetter *eventSinkGetter,
|
||||||
|
nsIChannel **_retval);
|
||||||
|
|
||||||
|
// nsJARProtocolHandler methods:
|
||||||
|
nsJARProtocolHandler();
|
||||||
|
virtual ~nsJARProtocolHandler();
|
||||||
|
|
||||||
|
static NS_METHOD
|
||||||
|
Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
|
||||||
|
|
||||||
|
nsresult Init();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* nsJARProtocolHandler_h___ */
|
Загрузка…
Ссылка в новой задаче