зеркало из https://github.com/mozilla/pjs.git
Fixing 76356 -- plugin streams don't ask for byte range support, r=gagan, sr=darin
This commit is contained in:
Родитель
f68a4f9360
Коммит
555c6d166c
|
@ -1581,40 +1581,43 @@ nsresult nsPluginStreamListenerPeer::SetUpStreamListener(nsIRequest *request,
|
||||||
return NS_ERROR_NULL_POINTER;
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
|
|
||||||
/*
|
// get httpChannel to retrieve some info we need for nsIPluginStreamInfo setup
|
||||||
|
|
||||||
* Assumption
|
|
||||||
|
|
||||||
* By the time nsPluginStreamListenerPeer::OnDataAvailable() gets
|
|
||||||
* called, all the headers have been read.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
nsCOMPtr<nsIHTTPHeaderListener> headerListener =
|
|
||||||
do_QueryInterface(mPStreamListener);
|
|
||||||
if (headerListener) {
|
|
||||||
|
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
||||||
nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel);
|
nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel);
|
||||||
if (httpChannel) {
|
|
||||||
ReadHeadersFromChannelAndPostToListener(httpChannel, headerListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assumption
|
||||||
|
* By the time nsPluginStreamListenerPeer::OnDataAvailable() gets
|
||||||
|
* called, all the headers have been read.
|
||||||
|
*/
|
||||||
|
nsCOMPtr<nsIHTTPHeaderListener> headerListener = do_QueryInterface(mPStreamListener);
|
||||||
|
if (headerListener && httpChannel)
|
||||||
|
ReadHeadersFromChannelAndPostToListener(httpChannel, headerListener);
|
||||||
|
|
||||||
mSetUpListener = PR_TRUE;
|
mSetUpListener = PR_TRUE;
|
||||||
mPluginStreamInfo->SetSeekable(PR_FALSE);
|
|
||||||
|
// set seekability
|
||||||
|
PRBool bSeekable = PR_FALSE;
|
||||||
|
if (httpChannel)
|
||||||
|
{
|
||||||
|
nsXPIDLCString range;
|
||||||
|
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("accept-ranges")));
|
||||||
|
if(NS_SUCCEEDED(httpChannel->GetResponseHeader(header, getter_Copies(range))))
|
||||||
|
{
|
||||||
|
if (0 == PL_strcmp(range.get(), "bytes"))
|
||||||
|
bSeekable = PR_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mPluginStreamInfo->SetSeekable(bSeekable);
|
||||||
|
|
||||||
// get Last-Modified header for plugin info
|
// get Last-Modified header for plugin info
|
||||||
|
if (httpChannel)
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
{
|
||||||
nsCOMPtr<nsIHTTPChannel> theHTTPChannel = do_QueryInterface(channel);
|
|
||||||
if (theHTTPChannel) {
|
|
||||||
char * lastModified;
|
char * lastModified;
|
||||||
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("last-modified")));
|
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("last-modified")));
|
||||||
|
httpChannel->GetResponseHeader(header, &lastModified);
|
||||||
theHTTPChannel->GetResponseHeader(header, &lastModified);
|
if (lastModified)
|
||||||
if (lastModified) {
|
{
|
||||||
PRTime time64;
|
PRTime time64;
|
||||||
PR_ParseTimeString(lastModified, PR_TRUE, &time64); //convert string time to interger time
|
PR_ParseTimeString(lastModified, PR_TRUE, &time64); //convert string time to interger time
|
||||||
|
|
||||||
|
|
|
@ -1581,40 +1581,43 @@ nsresult nsPluginStreamListenerPeer::SetUpStreamListener(nsIRequest *request,
|
||||||
return NS_ERROR_NULL_POINTER;
|
return NS_ERROR_NULL_POINTER;
|
||||||
|
|
||||||
|
|
||||||
/*
|
// get httpChannel to retrieve some info we need for nsIPluginStreamInfo setup
|
||||||
|
|
||||||
* Assumption
|
|
||||||
|
|
||||||
* By the time nsPluginStreamListenerPeer::OnDataAvailable() gets
|
|
||||||
* called, all the headers have been read.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
nsCOMPtr<nsIHTTPHeaderListener> headerListener =
|
|
||||||
do_QueryInterface(mPStreamListener);
|
|
||||||
if (headerListener) {
|
|
||||||
|
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
||||||
nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel);
|
nsCOMPtr<nsIHTTPChannel> httpChannel = do_QueryInterface(channel);
|
||||||
if (httpChannel) {
|
|
||||||
ReadHeadersFromChannelAndPostToListener(httpChannel, headerListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Assumption
|
||||||
|
* By the time nsPluginStreamListenerPeer::OnDataAvailable() gets
|
||||||
|
* called, all the headers have been read.
|
||||||
|
*/
|
||||||
|
nsCOMPtr<nsIHTTPHeaderListener> headerListener = do_QueryInterface(mPStreamListener);
|
||||||
|
if (headerListener && httpChannel)
|
||||||
|
ReadHeadersFromChannelAndPostToListener(httpChannel, headerListener);
|
||||||
|
|
||||||
mSetUpListener = PR_TRUE;
|
mSetUpListener = PR_TRUE;
|
||||||
mPluginStreamInfo->SetSeekable(PR_FALSE);
|
|
||||||
|
// set seekability
|
||||||
|
PRBool bSeekable = PR_FALSE;
|
||||||
|
if (httpChannel)
|
||||||
|
{
|
||||||
|
nsXPIDLCString range;
|
||||||
|
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("accept-ranges")));
|
||||||
|
if(NS_SUCCEEDED(httpChannel->GetResponseHeader(header, getter_Copies(range))))
|
||||||
|
{
|
||||||
|
if (0 == PL_strcmp(range.get(), "bytes"))
|
||||||
|
bSeekable = PR_TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mPluginStreamInfo->SetSeekable(bSeekable);
|
||||||
|
|
||||||
// get Last-Modified header for plugin info
|
// get Last-Modified header for plugin info
|
||||||
|
if (httpChannel)
|
||||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
{
|
||||||
nsCOMPtr<nsIHTTPChannel> theHTTPChannel = do_QueryInterface(channel);
|
|
||||||
if (theHTTPChannel) {
|
|
||||||
char * lastModified;
|
char * lastModified;
|
||||||
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("last-modified")));
|
nsCOMPtr<nsIAtom> header(dont_AddRef(NS_NewAtom("last-modified")));
|
||||||
|
httpChannel->GetResponseHeader(header, &lastModified);
|
||||||
theHTTPChannel->GetResponseHeader(header, &lastModified);
|
if (lastModified)
|
||||||
if (lastModified) {
|
{
|
||||||
PRTime time64;
|
PRTime time64;
|
||||||
PR_ParseTimeString(lastModified, PR_TRUE, &time64); //convert string time to interger time
|
PR_ParseTimeString(lastModified, PR_TRUE, &time64); //convert string time to interger time
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче