Jacek Caban : mshtml: Store request method in nsChannel.
Alexandre Julliard
julliard at winehq.org
Wed Aug 4 12:27:22 CDT 2010
Module: wine
Branch: master
Commit: 0085383fc765fb10624de4423df074b404bae099
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0085383fc765fb10624de4423df074b404bae099
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Aug 3 21:40:20 2010 +0200
mshtml: Store request method in nsChannel.
---
dlls/mshtml/mshtml_private.h | 8 ++++++++
dlls/mshtml/nsio.c | 21 ++++++++++++++++++---
2 files changed, 26 insertions(+), 3 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index fcdb792..1e7bac8 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -446,6 +446,13 @@ typedef struct nsWineURI nsWineURI;
HRESULT set_wine_url(nsWineURI*,LPCWSTR);
nsresult on_start_uri_open(NSContainer*,nsIURI*,PRBool*);
+/* Keep sync with request_method_strings in nsio.c */
+typedef enum {
+ METHOD_GET,
+ METHOD_PUT,
+ METHOD_POST
+} REQUEST_METHOD;
+
typedef struct {
const nsIHttpChannelVtbl *lpHttpChannelVtbl;
const nsIUploadChannelVtbl *lpUploadChannelVtbl;
@@ -463,6 +470,7 @@ typedef struct {
char *content_type;
char *charset;
PRUint32 response_status;
+ REQUEST_METHOD request_method;
struct list response_headers;
struct list request_headers;
UINT url_scheme;
diff --git a/dlls/mshtml/nsio.c b/dlls/mshtml/nsio.c
index 24b14c3..db6b9eb 100644
--- a/dlls/mshtml/nsio.c
+++ b/dlls/mshtml/nsio.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2006-2007 Jacek Caban for CodeWeavers
+ * Copyright 2006-2010 Jacek Caban for CodeWeavers
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -51,6 +51,8 @@ static nsINetUtil *net_util;
static const WCHAR about_blankW[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
+static const char *request_method_strings[] = {"GET", "PUT", "POST"};
+
struct nsWineURI {
const nsIURLVtbl *lpIURLVtbl;
@@ -1048,10 +1050,21 @@ static nsresult NSAPI nsChannel_SetRequestMethod(nsIHttpChannel *iface,
const nsACString *aRequestMethod)
{
nsChannel *This = NSCHANNEL_THIS(iface);
+ const char *method;
+ unsigned i;
- TRACE("(%p)->(%s): Returning NS_OK\n", This, debugstr_nsacstr(aRequestMethod));
+ TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aRequestMethod));
- return NS_OK;
+ nsACString_GetData(aRequestMethod, &method);
+ for(i=0; i < sizeof(request_method_strings)/sizeof(*request_method_strings); i++) {
+ if(!strcasecmp(method, request_method_strings[i])) {
+ This->request_method = i;
+ return NS_OK;
+ }
+ }
+
+ ERR("Invalid method %s\n", debugstr_a(method));
+ return NS_ERROR_UNEXPECTED;
}
static nsresult NSAPI nsChannel_GetReferrer(nsIHttpChannel *iface, nsIURI **aReferrer)
@@ -1329,6 +1342,7 @@ static nsresult NSAPI nsUploadChannel_SetUploadStream(nsIUploadChannel *iface,
if(aStream)
nsIInputStream_AddRef(aStream);
+ This->request_method = METHOD_POST;
return NS_OK;
}
@@ -2640,6 +2654,7 @@ static nsresult NSAPI nsIOService_NewChannelFromURI(nsIIOService *iface, nsIURI
ret->lpIHttpChannelInternalVtbl = &nsHttpChannelInternalVtbl;
ret->ref = 1;
ret->uri = wine_uri;
+ ret->request_method = METHOD_GET;
list_init(&ret->response_headers);
list_init(&ret->request_headers);
More information about the wine-cvs
mailing list