mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-08 04:27:37 +00:00
a96a90e3d9
r=av bug=50811 This bug fix was suggested by Stanley Ho <stanley.ho@eng.sun.com>. Stanley proposed we overload the meaning of the nsIPluginStreamListener argument to nsIPluginManager::{GetURL,PostURL}() so that it also may implement an interface for reading headers. Thus, the browser could QI the plugin's nsIPluginStreamListener instance to this headers reading interface and send the plugin the headers from the response. I have implemented Stanley's above proposal. I have defined a new interface, nsIHTTPHeaderListener.idl with one method: /** * Called for each HTTP Response header. * NOTE: You must copy the values of the params. */ void newResponseHeader(in string headerName, in string headerValue); To affect this fix, I have added a new private method nsPluginStreamListenerPeer:: ReadHeadersFromChannelAndPostToListener(nsIHTTPChannel *httpChannel, nsIHTTPHeaderListener *listener) Then, modified nsPluginStreamListenerPeer::OnDataAvailable() to call this method BEFORE reading the content data. However, this fix makes two important assumptions I would like to check out: * Assumption * By the time nsPluginStreamListenerPeer::OnDataAvailable() gets * called, all the headers have been read. * Assumption: * The return value from nsIHTTPHeader->{GetFieldName,GetValue}() * must be freed. The following files are included in this fix: A modules/plugin/public/nsIHTTPHeaderListener.idl A modules/plugin/public/makefile.win A modules/plugin/public/Makefile.in M modules/plugin/nglsrc/nsPluginHostImpl.cpp
63 lines
1.8 KiB
Plaintext
63 lines
1.8 KiB
Plaintext
#!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 = plugin
|
|
|
|
EXPORTS = \
|
|
nsIEventHandler.h \
|
|
nsIFileUtilities.h \
|
|
nsIMalloc.h \
|
|
nsIPlugin.h \
|
|
nsIPluginInstance.h \
|
|
nsIPluginInstancePeer.h \
|
|
nsIPluginInstancePeer2.h \
|
|
nsIPluginManager.h \
|
|
nsIPluginManager2.h \
|
|
nsIPluginTagInfo.h \
|
|
nsIPluginTagInfo2.h \
|
|
nsIWindowlessPlugInstPeer.h \
|
|
nsIPluginStreamListener.h \
|
|
nsIPluginStreamInfo.h \
|
|
nsplugin.h \
|
|
nsplugindefs.h \
|
|
nsICookieStorage.h
|
|
|
|
# DEPRECATED -- remove before we ship 5.0
|
|
EXPORTS = $(EXPORTS) \
|
|
nsIPluginStream.h \
|
|
nsIPluginStreamPeer.h \
|
|
nsIPluginStreamPeer2.h \
|
|
nsISeekablePluginStreamPeer.h \
|
|
nsILiveConnectPlugin.h \
|
|
nsILiveConnectPlugInstPeer.h \
|
|
nsIJRILiveConnectPlugin.h \
|
|
nsIJRILiveConnectPlugInstPeer.h \
|
|
nsIPluginInputStream.h \
|
|
nsIPluginInputStream2.h
|
|
|
|
XPIDLSRCS = \
|
|
.\nsIScriptablePlugin.idl \
|
|
.\nsIHTTPHeaderListener.idl \
|
|
$(NULL)
|
|
|
|
include <$(DEPTH)/config/rules.mak>
|
|
|