static const char *request_method_strings[] = {"GET", "PUT", "POST"};
struct nsWineURI {
- const nsIURLVtbl *lpIURLVtbl;
+ nsIURL nsIURL_iface;
LONG ref;
BOOL is_doc_uri;
};
-#define NSURI(x) ((nsIURI*) &(x)->lpIURLVtbl)
-#define NSURL(x) ((nsIURL*) &(x)->lpIURLVtbl)
-
static nsresult create_uri(nsIURI*,HTMLWindow*,NSContainer*,nsWineURI**);
static const char *debugstr_nsacstr(const nsACString *nsstr)
uri->channel_bsc = channelbsc;
doc = window->doc;
doc->skip_mutation_notif = TRUE;
- nsres = nsIDocShell_LoadURI(doc_shell, NSURI(uri), NULL, flags, FALSE);
+ nsres = nsIDocShell_LoadURI(doc_shell, (nsIURI*)&uri->nsIURL_iface, NULL, flags, FALSE);
if(doc == window->doc)
doc->skip_mutation_notif = FALSE;
uri->channel_bsc = NULL;
LONG ref = InterlockedDecrement(&This->ref);
if(!ref) {
- nsIURI_Release(NSURI(This->uri));
+ nsIURI_Release(&This->uri->nsIURL_iface);
if(This->owner)
nsISupports_Release(This->owner);
if(This->post_data_stream)
TRACE("(%p)->(%p)\n", This, aName);
- return nsIURI_GetSpec(NSURI(This->uri), aName);
+ return nsIURI_GetSpec(&This->uri->nsIURL_iface, aName);
}
static nsresult NSAPI nsChannel_IsPending(nsIHttpChannel *iface, PRBool *_retval)
TRACE("(%p)->(%p)\n", This, aURI);
- nsIURI_AddRef(NSURI(This->uri));
+ nsIURI_AddRef(&This->uri->nsIURL_iface);
*aURI = (nsIURI*)This->uri;
return NS_OK;
window = wine_uri->window_ref ? wine_uri->window_ref->window : NULL;
if(window)
IHTMLWindow2_AddRef(&window->IHTMLWindow2_iface);
- nsIURI_Release(NSURI(wine_uri));
+ nsIURI_Release(&wine_uri->nsIURL_iface);
return window;
}
return NS_OK;
}
-#define NSURI_THIS(iface) DEFINE_THIS(nsWineURI, IURL, iface)
+static inline nsWineURI *impl_from_nsIURL(nsIURL *iface)
+{
+ return CONTAINING_RECORD(iface, nsWineURI, nsIURL_iface);
+}
static nsresult NSAPI nsURI_QueryInterface(nsIURL *iface, nsIIDRef riid, void **result)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
*result = NULL;
if(IsEqualGUID(&IID_nsISupports, riid)) {
TRACE("(%p)->(IID_nsISupports %p)\n", This, result);
- *result = NSURI(This);
+ *result = &This->nsIURL_iface;
}else if(IsEqualGUID(&IID_nsIURI, riid)) {
TRACE("(%p)->(IID_nsIURI %p)\n", This, result);
- *result = NSURI(This);
+ *result = &This->nsIURL_iface;
}else if(IsEqualGUID(&IID_nsIURL, riid)) {
TRACE("(%p)->(IID_nsIURL %p)\n", This, result);
- *result = NSURL(This);
+ *result = &This->nsIURL_iface;
}else if(IsEqualGUID(&IID_nsWineURI, riid)) {
TRACE("(%p)->(IID_nsWineURI %p)\n", This, result);
*result = This;
}
if(*result) {
- nsIURI_AddRef(NSURI(This));
+ nsIURI_AddRef(&This->nsIURL_iface);
return NS_OK;
}
static nsrefcnt NSAPI nsURI_AddRef(nsIURL *iface)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
LONG ref = InterlockedIncrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
static nsrefcnt NSAPI nsURI_Release(nsIURL *iface)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
LONG ref = InterlockedDecrement(&This->ref);
TRACE("(%p) ref=%d\n", This, ref);
static nsresult NSAPI nsURI_GetSpec(nsIURL *iface, nsACString *aSpec)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aSpec);
static nsresult NSAPI nsURI_SetSpec(nsIURL *iface, const nsACString *aSpec)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, debugstr_nsacstr(aSpec));
static nsresult NSAPI nsURI_GetPrePath(nsIURL *iface, nsACString *aPrePath)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aPrePath);
static nsresult NSAPI nsURI_GetScheme(nsIURL *iface, nsACString *aScheme)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
DWORD scheme;
HRESULT hres;
static nsresult NSAPI nsURI_SetScheme(nsIURL *iface, const nsACString *aScheme)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aScheme));
static nsresult NSAPI nsURI_GetUserPass(nsIURL *iface, nsACString *aUserPass)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aUserPass);
static nsresult NSAPI nsURI_SetUserPass(nsIURL *iface, const nsACString *aUserPass)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aUserPass));
static nsresult NSAPI nsURI_GetUsername(nsIURL *iface, nsACString *aUsername)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aUsername);
static nsresult NSAPI nsURI_SetUsername(nsIURL *iface, const nsACString *aUsername)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aUsername));
static nsresult NSAPI nsURI_GetPassword(nsIURL *iface, nsACString *aPassword)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aPassword);
static nsresult NSAPI nsURI_SetPassword(nsIURL *iface, const nsACString *aPassword)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const char *passa;
WCHAR *pass;
HRESULT hres;
static nsresult NSAPI nsURI_GetHostPort(nsIURL *iface, nsACString *aHostPort)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const WCHAR *ptr;
char *vala;
BSTR val;
static nsresult NSAPI nsURI_SetHostPort(nsIURL *iface, const nsACString *aHostPort)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aHostPort));
static nsresult NSAPI nsURI_GetHost(nsIURL *iface, nsACString *aHost)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aHost);
static nsresult NSAPI nsURI_SetHost(nsIURL *iface, const nsACString *aHost)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aHost));
static nsresult NSAPI nsURI_GetPort(nsIURL *iface, PRInt32 *aPort)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
DWORD port;
HRESULT hres;
static nsresult NSAPI nsURI_SetPort(nsIURL *iface, PRInt32 aPort)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%d)\n", This, aPort);
static nsresult NSAPI nsURI_GetPath(nsIURL *iface, nsACString *aPath)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aPath);
static nsresult NSAPI nsURI_SetPath(nsIURL *iface, const nsACString *aPath)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const char *patha;
WCHAR *path;
HRESULT hres;
static nsresult NSAPI nsURI_Equals(nsIURL *iface, nsIURI *other, PRBool *_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
nsWineURI *other_obj;
nsresult nsres;
HRESULT hres;
nsres = NS_ERROR_UNEXPECTED;
}
- nsIURI_Release(NSURI(other_obj));
+ nsIURI_Release(&other_obj->nsIURL_iface);
return nsres;
}
static nsresult NSAPI nsURI_SchemeIs(nsIURL *iface, const char *scheme, PRBool *_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
WCHAR buf[INTERNET_MAX_SCHEME_LENGTH];
BSTR scheme_name;
HRESULT hres;
static nsresult NSAPI nsURI_Clone(nsIURL *iface, nsIURI **_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
nsIURI *nsuri = NULL;
nsWineURI *wine_uri;
nsresult nsres;
IUri_AddRef(wine_uri->uri);
sync_wine_url(wine_uri);
- *_retval = NSURI(wine_uri);
+ *_retval = (nsIURI*)&wine_uri->nsIURL_iface;
return NS_OK;
}
static nsresult NSAPI nsURI_Resolve(nsIURL *iface, const nsACString *aRelativePath,
nsACString *_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const char *patha;
IUri *new_uri;
WCHAR *path;
static nsresult NSAPI nsURI_GetAsciiSpec(nsIURL *iface, nsACString *aAsciiSpec)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aAsciiSpec);
- return nsIURI_GetSpec(NSURI(This), aAsciiSpec);
+ return nsIURI_GetSpec(&This->nsIURL_iface, aAsciiSpec);
}
static nsresult NSAPI nsURI_GetAsciiHost(nsIURL *iface, nsACString *aAsciiHost)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aAsciiHost);
static nsresult NSAPI nsURI_GetOriginCharset(nsIURL *iface, nsACString *aOriginCharset)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aOriginCharset);
static nsresult NSAPI nsURL_GetFilePath(nsIURL *iface, nsACString *aFilePath)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aFilePath);
static nsresult NSAPI nsURL_SetFilePath(nsIURL *iface, const nsACString *aFilePath)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aFilePath));
static nsresult NSAPI nsURL_GetParam(nsIURL *iface, nsACString *aParam)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aParam);
static nsresult NSAPI nsURL_SetParam(nsIURL *iface, const nsACString *aParam)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aParam));
static nsresult NSAPI nsURL_GetQuery(nsIURL *iface, nsACString *aQuery)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aQuery);
static nsresult NSAPI nsURL_SetQuery(nsIURL *iface, const nsACString *aQuery)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const char *querya;
WCHAR *query;
HRESULT hres;
static nsresult NSAPI nsURL_GetRef(nsIURL *iface, nsACString *aRef)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aRef);
static nsresult NSAPI nsURL_SetRef(nsIURL *iface, const nsACString *aRef)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
const char *refa;
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aRef));
static nsresult NSAPI nsURL_GetDirectory(nsIURL *iface, nsACString *aDirectory)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aDirectory);
static nsresult NSAPI nsURL_SetDirectory(nsIURL *iface, const nsACString *aDirectory)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aDirectory));
static nsresult NSAPI nsURL_GetFileName(nsIURL *iface, nsACString *aFileName)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aFileName);
static nsresult NSAPI nsURL_SetFileName(nsIURL *iface, const nsACString *aFileName)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aFileName));
static nsresult NSAPI nsURL_GetFileBaseName(nsIURL *iface, nsACString *aFileBaseName)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aFileBaseName);
static nsresult NSAPI nsURL_SetFileBaseName(nsIURL *iface, const nsACString *aFileBaseName)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aFileBaseName));
static nsresult NSAPI nsURL_GetFileExtension(nsIURL *iface, nsACString *aFileExtension)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p)\n", This, aFileExtension);
static nsresult NSAPI nsURL_SetFileExtension(nsIURL *iface, const nsACString *aFileExtension)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%s)\n", This, debugstr_nsacstr(aFileExtension));
static nsresult NSAPI nsURL_GetCommonBaseSpec(nsIURL *iface, nsIURI *aURIToCompare, nsACString *_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p %p)\n", This, aURIToCompare, _retval);
static nsresult NSAPI nsURL_GetRelativeSpec(nsIURL *iface, nsIURI *aURIToCompare, nsACString *_retval)
{
- nsWineURI *This = NSURI_THIS(iface);
+ nsWineURI *This = impl_from_nsIURL(iface);
TRACE("(%p)->(%p %p)\n", This, aURIToCompare, _retval);
return NS_ERROR_NOT_IMPLEMENTED;
}
-#undef NSURI_THIS
-
static const nsIURLVtbl nsURLVtbl = {
nsURI_QueryInterface,
nsURI_AddRef,
{
nsWineURI *ret = heap_alloc_zero(sizeof(nsWineURI));
- ret->lpIURLVtbl = &nsURLVtbl;
+ ret->nsIURL_iface.lpVtbl = &nsURLVtbl;
ret->ref = 1;
ret->nsuri = nsuri;
nsres = create_uri(uri, window, NULL, &wine_uri);
if(base_wine_uri)
- nsIURI_Release(NSURI(base_wine_uri));
+ nsIURI_Release(&base_wine_uri->nsIURL_iface);
if(NS_FAILED(nsres))
return nsres;
}
if(!ensure_uri(wine_uri)) {
- nsIURI_Release(NSURI(wine_uri));
+ nsIURI_Release(&wine_uri->nsIURL_iface);
return NS_ERROR_UNEXPECTED;
}
*_retval = translate_url(nscontainer->doc, wine_uri);
}
- nsIURI_Release(NSURI(wine_uri));
+ nsIURI_Release(&wine_uri->nsIURL_iface);
return NS_OK;
}