public nsIStreamListener DoContent(nsACStringBase aMimeContentType, nsIRequest aRequest, nsIInterfaceRequestor aWindowContext, bool aForceSave) { var request = Request.CreateRequest(aRequest); var lChannel = request as HttpChannel; try { if (lChannel != null) { var uri = lChannel.OriginalUri; var contentType = lChannel.ContentType; var contentLength = lChannel.ContentLength; var dispositionFilename = lChannel.ContentDispositionFilename; // Do your contenttype validation, keeping only what you need. // Make sure you clean dispositionFilename before using it. // If you don't want to do anything with that file, you can return null; return(new MyStreamListener(/* ... */)); } } catch (COMException) { /* ... */ } return(null); }
void nsIHttpActivityObserver.ObserveActivity(nsISupports httpChannel, uint activityType, uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { switch (activityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: SocketTransport( httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData ); break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: HttpTransaction(httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData); break; } }
protected virtual void HttpTransaction(nsISupports httpChannel, uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { }
void nsIHttpActivityObserver.ObserveActivity(nsISupports httpChannel, uint activityType, uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { switch (activityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: SocketTransport(httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData); break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: HttpTransaction(httpChannel, activitySubtype, timestamp, extraSizeData, extraStringData); break; } }
//public void ObserveActivity(nsISupports aHttpChannel, uint aActivityType, uint aActivitySubtype, uint aTimestamp, ulong aExtraSizeData, nsACString aExtraStringData) public void ObserveActivity(nsISupports aHttpChannel, UInt32 aActivityType, UInt32 aActivitySubtype, Int64 aTimestamp, UInt64 aExtraSizeData, nsACStringBase aExtraStringData) { nsIHttpChannel httpChannel = Xpcom.QueryInterface<nsIHttpChannel>(aHttpChannel); if (httpChannel != null) { switch (aActivityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: switch (aActivitySubtype) { case nsISocketTransportConstants.STATUS_RESOLVING: break; case nsISocketTransportConstants.STATUS_RESOLVED: break; case nsISocketTransportConstants.STATUS_CONNECTING_TO: break; case nsISocketTransportConstants.STATUS_CONNECTED_TO: break; case nsISocketTransportConstants.STATUS_SENDING_TO: break; case nsISocketTransportConstants.STATUS_WAITING_FOR: break; case nsISocketTransportConstants.STATUS_RECEIVING_FROM: break; } break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: switch (aActivitySubtype) { case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_HEADER: { activeNetworkChannels++; var callbacks = httpChannel.GetNotificationCallbacksAttribute(); var httpChannelXHR = Xpcom.QueryInterface<nsIXMLHttpRequest>(callbacks); if (httpChannelXHR != null) { nsIDOMEventListener origEventListener = httpChannelXHR.GetOnreadystatechangeAttribute(); var newEventListener = new GeckoJavaScriptHttpChannelWrapper(this, httpChannel, origEventListener); origJavaScriptHttpChannels.Add(httpChannel, newEventListener); httpChannelXHR.SetOnreadystatechangeAttribute(newEventListener); } } break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_START: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE: activeNetworkChannels--; break; } break; } } }
protected virtual void HttpTransaction(nsISupports httpChannel,uint activitySubtype, long timestamp, ulong extraSizeData, nsACStringBase extraStringData) { }
void nsIHttpHeaderVisitor.VisitHeader(nsACStringBase aHeader, nsACStringBase aValue) { _func(aHeader.ToString(), aValue.ToString()); }
public void VisitHeader( nsACStringBase aHeader, nsACStringBase aValue ) { Dictionary.Add( aHeader.ToString(), aValue.ToString() ); }
public bool ApplyDecodingForExtension([MarshalAs(UnmanagedType.LPStruct)] nsAUTF8StringBase aExtension, [MarshalAs(UnmanagedType.LPStruct)] nsACStringBase aEncodingType) { throw new NotImplementedException(); }
//public void ObserveActivity(nsISupports aHttpChannel, uint aActivityType, uint aActivitySubtype, uint aTimestamp, ulong aExtraSizeData, nsACString aExtraStringData) public void ObserveActivity(nsISupports aHttpChannel, UInt32 aActivityType, UInt32 aActivitySubtype, Int64 aTimestamp, UInt64 aExtraSizeData, nsACStringBase aExtraStringData) { nsIHttpChannel httpChannel = Xpcom.QueryInterface<nsIHttpChannel>(aHttpChannel); if (httpChannel != null) { switch (aActivityType) { case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_SOCKET_TRANSPORT: switch (aActivitySubtype) { case nsISocketTransportConstants.STATUS_RESOLVING: break; case nsISocketTransportConstants.STATUS_RESOLVED: break; case nsISocketTransportConstants.STATUS_CONNECTING_TO: break; case nsISocketTransportConstants.STATUS_CONNECTED_TO: break; case nsISocketTransportConstants.STATUS_SENDING_TO: break; case nsISocketTransportConstants.STATUS_WAITING_FOR: break; case nsISocketTransportConstants.STATUS_RECEIVING_FROM: break; } break; case nsIHttpActivityObserverConstants.ACTIVITY_TYPE_HTTP_TRANSACTION: switch (aActivitySubtype) { case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_HEADER: { activeNetworkChannels++; ActiveNetworkChannelUrls.Add(nsString.Get(httpChannel.GetURIAttribute().GetSpecAttribute)); var callbacks = httpChannel.GetNotificationCallbacksAttribute(); if (callbacks != null) { var httpChannelXHR = Xpcom.QueryInterface<nsIXMLHttpRequest>(callbacks); if (httpChannelXHR != null) { nsIXMLHttpRequestEventTarget mXMLRequestEvent = Xpcom.QueryInterface<nsIXMLHttpRequestEventTarget>(httpChannelXHR); if (mXMLRequestEvent != null) { GeckoJavaScriptHttpChannelWrapper mEventListener = new GeckoJavaScriptHttpChannelWrapper(this, httpChannel); origJavaScriptHttpChannels.Add(httpChannel, mEventListener); using (nsAString mLoads = new nsAString("load")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } using (nsAString mLoads = new nsAString("abort")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } using (nsAString mLoads = new nsAString("error")) { mXMLRequestEvent.AddEventListener(mLoads, mEventListener, true, false, 0); } Marshal.ReleaseComObject(mXMLRequestEvent); } Marshal.ReleaseComObject(httpChannelXHR); } Marshal.ReleaseComObject(callbacks); } } break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_START: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE: break; case nsIHttpActivityObserverConstants.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE: activeNetworkChannels--; ActiveNetworkChannelUrls.Remove(nsString.Get(httpChannel.GetURIAttribute().GetSpecAttribute)); break; } break; } } }
public void VisitHeader(nsACStringBase aHeader, nsACStringBase aValue) { Dictionary.Add(aHeader.ToString(), aValue.ToString()); }
public void VisitHeader(nsACStringBase aHeader, nsACStringBase aValue) { httpHeadersList.Add(new KeyValuePair <string, string>(aHeader.ToString(), aValue.ToString())); }