public BrowserHttpWebResponse (HttpWebRequest request, IntPtr native)
{
this.request = request;
this.response = new MemoryStream ();
progressive = request.AllowReadStreamBuffering;
Headers = new WebHeaderCollection ();
SetMethod (request.Method);
if (native == IntPtr.Zero)
return;
// Get the status code and status text asap, this way we don't have to
// ref/unref the native ptr
int status_code = NativeMethods.http_response_get_response_status (native);
SetStatus ((HttpStatusCode) status_code, (status_code == 200 || status_code == 404) ?
NativeMethods.http_response_get_response_status_text (native) :
"Requested resource was not found");
GCHandle handle = GCHandle.Alloc (this);
NativeMethods.http_response_visit_headers (native, OnHttpHeader, GCHandle.ToIntPtr (handle));
handle.Free ();
}