Fix for 77194 (liveconnect does not work for non-applet case)
r=edburns & beard sr=brendan git-svn-id: svn://10.0.0.236/trunk@101468 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
a6ddde9413
commit
85ca40dcdb
@ -1,68 +0,0 @@
|
||||
/* -*- 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.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/NPL/
|
||||
*
|
||||
* 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.org code.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2001 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Patrick Beard <beard@netscape.com>
|
||||
*/
|
||||
|
||||
package netscape.oji;
|
||||
|
||||
import java.net.*;
|
||||
import java.io.*;
|
||||
|
||||
public class ProxyClassLoader extends ClassLoader {
|
||||
private URL mCodebaseURL;
|
||||
|
||||
/**
|
||||
* Creates a class loader for the specified document URL.
|
||||
*/
|
||||
private ProxyClassLoader(String documentURL) throws MalformedURLException {
|
||||
mCodebaseURL = new URL(documentURL);
|
||||
}
|
||||
|
||||
private byte[] download(InputStream input) throws IOException {
|
||||
ByteArrayOutputStream output = new ByteArrayOutputStream(16 * 1024);
|
||||
byte[] buffer = new byte[4096];
|
||||
int count = input.read(buffer);
|
||||
while (count > 0) {
|
||||
output.write(buffer, 0, count);
|
||||
count = input.read(buffer);
|
||||
}
|
||||
input.close();
|
||||
return output.toByteArray();
|
||||
}
|
||||
|
||||
protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
|
||||
Class c = findLoadedClass(name);
|
||||
if (c == null) {
|
||||
try {
|
||||
String path = name.replace('.', '/') + ".class";
|
||||
URL classURL = new URL(mCodebaseURL, path);
|
||||
byte[] data = download(classURL.openStream());
|
||||
c = defineClass(data, 0, data.length);
|
||||
} catch (MalformedURLException mfue) {
|
||||
} catch (IOException ioe) {
|
||||
}
|
||||
if (c == null)
|
||||
c = findSystemClass(name);
|
||||
}
|
||||
if (resolve)
|
||||
resolveClass(c);
|
||||
return c;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,56 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 part of the mozilla.org LDAP XPCOM SDK.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2001 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Xiaobin Lu <Xiaobin.Lu@eng.Sun.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
|
||||
package netscape.oji;
|
||||
import java.net.URLClassLoader;
|
||||
import java.net.URL;
|
||||
import java.net.MalformedURLException;
|
||||
|
||||
public abstract class ProxyClassLoaderFactory {
|
||||
|
||||
public static ClassLoader createClassLoader(final String documentURL)
|
||||
throws MalformedURLException {
|
||||
URL[] documentURLArray = new URL[1];
|
||||
int lastIndx = documentURL.lastIndexOf("/");
|
||||
String urlPath = documentURL.substring(0, lastIndx+1);
|
||||
try {
|
||||
documentURLArray[0] = new URL(urlPath);
|
||||
}
|
||||
catch (MalformedURLException e) {
|
||||
System.out.println("MalformedURLException was caught");
|
||||
return null;
|
||||
}
|
||||
return new URLClassLoader(documentURLArray);
|
||||
}
|
||||
}
|
||||
95
mozilla/modules/oji/src/nsCNullSecurityContext.h
Normal file
95
mozilla/modules/oji/src/nsCNullSecurityContext.h
Normal file
@ -0,0 +1,95 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* 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 part of the mozilla.org LDAP XPCOM SDK.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2001 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s): Xiaobin Lu <Xiaobin.Lu@eng.Sun.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the
|
||||
* terms of the GNU General Public License Version 2 or later (the
|
||||
* "GPL"), in which case the provisions of the GPL are applicable
|
||||
* instead of those above. If you wish to allow use of your
|
||||
* version of this file only under the terms of the GPL and not to
|
||||
* allow others to use your version of this file under the MPL,
|
||||
* indicate your decision by deleting the provisions above and
|
||||
* replace them with the notice and other provisions required by
|
||||
* the GPL. If you do not delete the provisions above, a recipient
|
||||
* may use your version of this file under either the MPL or the
|
||||
* GPL.
|
||||
*/
|
||||
#ifndef nsCNullSecurityContext_h___
|
||||
#define nsCNullSecurityContext_h___
|
||||
|
||||
#include "nsISecurityContext.h"
|
||||
|
||||
class nsCNullSecurityContext : public nsISecurityContext
|
||||
{
|
||||
public:
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
// from nsISupports
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// from nsISecurityContext:
|
||||
|
||||
/**
|
||||
* Get the security context to be used in LiveConnect.
|
||||
* This is used for JavaScript <--> Java.
|
||||
*
|
||||
* @param target -- Possible target.
|
||||
* @param action -- Possible action on the target.
|
||||
* @return -- NS_OK if the target and action is permitted
|
||||
* -- NS_FALSE otherwise.
|
||||
*/
|
||||
NS_IMETHOD Implies(const char* target, const char* action,
|
||||
PRBool* bActionAllowed);
|
||||
|
||||
/**
|
||||
* Get the origin associated with the context.
|
||||
*
|
||||
* @param buf -- Result buffer (managed by the caller.)
|
||||
* @param len -- Buffer length.
|
||||
* @return -- NS_OK if the codebase string was obtained.
|
||||
* -- NS_FALSE otherwise.
|
||||
*/
|
||||
NS_IMETHOD GetOrigin(char* buf, int len);
|
||||
|
||||
/**
|
||||
* Get the certificate associated with the context.
|
||||
*
|
||||
* @param buf -- Result buffer (managed by the caller.)
|
||||
* @param len -- Buffer length.
|
||||
* @return -- NS_OK if the codebase string was obtained.
|
||||
* -- NS_FALSE otherwise.
|
||||
*/
|
||||
NS_IMETHOD GetCertificateID(char* buf, int len);
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// from nsISecureJNI:
|
||||
|
||||
nsCNullSecurityContext() { NS_INIT_REFCNT();};
|
||||
};
|
||||
|
||||
#endif // CSecurityContext_h___
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user