зеркало из https://github.com/mozilla/pjs.git
Clean up code in part for fix for doing GET rather than POST when NPN_PostURL is called bug 77603 r=av sr=attinasi
This commit is contained in:
Родитель
5339979276
Коммит
37fe825fc1
|
@ -2171,82 +2171,57 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetInstance(nsIPluginInstance *&aInstance)
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarget, void *aPostData, PRUint32 aPostDataLen, void *aHeadersData,
|
NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarget, void *aPostData, PRUint32 aPostDataLen, void *aHeadersData,
|
||||||
PRUint32 aHeadersDataLen)
|
PRUint32 aHeadersDataLen)
|
||||||
{
|
{
|
||||||
nsISupports *container;
|
NS_ENSURE_TRUE(mOwner,NS_ERROR_NULL_POINTER);
|
||||||
nsILinkHandler *lh;
|
NS_ENSURE_TRUE(mContext,NS_ERROR_NULL_POINTER);
|
||||||
nsresult rv;
|
|
||||||
nsIView *view;
|
|
||||||
nsPoint origin;
|
|
||||||
|
|
||||||
if ((nsnull != mOwner) && (nsnull != mContext))
|
// the container of the pres context will give us the link handler
|
||||||
{
|
nsCOMPtr<nsISupports> container;
|
||||||
rv = mOwner->GetOffsetFromView(mContext, origin, &view);
|
nsresult rv = mContext->GetContainer(getter_AddRefs(container));
|
||||||
|
NS_ENSURE_TRUE(container,NS_ERROR_FAILURE);
|
||||||
|
nsCOMPtr<nsILinkHandler> lh = do_QueryInterface(container);
|
||||||
|
NS_ENSURE_TRUE(lh, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
if (NS_OK == rv)
|
nsAutoString uniurl; uniurl.AssignWithConversion(aURL);
|
||||||
{
|
nsAutoString unitarget; unitarget.AssignWithConversion(aTarget);
|
||||||
rv = mContext->GetContainer(&container);
|
nsAutoString fullurl;
|
||||||
|
|
||||||
if (NS_OK == rv)
|
nsCOMPtr<nsIURI> baseURL;
|
||||||
{
|
nsCOMPtr<nsIDocument> doc;
|
||||||
rv = container->QueryInterface(NS_GET_IID(nsILinkHandler), (void **)&lh);
|
rv = GetDocument(getter_AddRefs(doc));
|
||||||
|
if (NS_SUCCEEDED(rv) && doc) {
|
||||||
|
rv = doc->GetBaseURL(*getter_AddRefs(baseURL)); // gets the document's url
|
||||||
|
} else {
|
||||||
|
mOwner->GetFullURL(*getter_AddRefs(baseURL)); // gets the plugin's content url
|
||||||
|
}
|
||||||
|
|
||||||
if (NS_OK == rv)
|
// Create an absolute URL
|
||||||
{
|
NS_MakeAbsoluteURI(fullurl, uniurl, baseURL);
|
||||||
nsAutoString uniurl; uniurl.AssignWithConversion(aURL);
|
|
||||||
nsAutoString unitarget; unitarget.AssignWithConversion(aTarget);
|
|
||||||
nsAutoString fullurl;
|
|
||||||
nsIURI* baseURL;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDocument> doc;
|
NS_ENSURE_TRUE(NS_SUCCEEDED(rv),NS_ERROR_FAILURE);
|
||||||
rv = GetDocument(getter_AddRefs(doc));
|
nsCOMPtr<nsIContent> content;
|
||||||
if (NS_SUCCEEDED(rv) && doc)
|
mOwner->GetContent(getter_AddRefs(content));
|
||||||
{
|
NS_ENSURE_TRUE(content, NS_ERROR_FAILURE);
|
||||||
rv = doc->GetBaseURL(baseURL); // gets the document's url
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mOwner->GetFullURL(baseURL); // gets the plugin's content url
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create an absolute URL
|
nsCOMPtr<nsISupports> result;
|
||||||
rv = NS_MakeAbsoluteURI(fullurl, uniurl, baseURL);
|
nsCOMPtr<nsIInputStream> postDataStream;
|
||||||
|
nsCOMPtr<nsIInputStream> headersDataStream;
|
||||||
NS_IF_RELEASE(baseURL);
|
if (aPostData) {
|
||||||
|
rv = NS_NewPostDataStream(getter_AddRefs(postDataStream), PR_FALSE, (const char *) aPostData, 0);
|
||||||
if (NS_OK == rv) {
|
}
|
||||||
nsIContent* content = nsnull;
|
if (aHeadersData) {
|
||||||
mOwner->GetContent(&content);
|
rv = NS_NewByteInputStream(getter_AddRefs(result), (const char *) aHeadersData, aHeadersDataLen);
|
||||||
nsCOMPtr<nsISupports> result = nsnull;
|
if (result) {
|
||||||
nsCOMPtr<nsIInputStream> postDataStream;
|
headersDataStream = do_QueryInterface(result, &rv);
|
||||||
nsCOMPtr<nsIInputStream> headersDataStream;
|
|
||||||
if (aPostData) {
|
|
||||||
NS_NewPostDataStream(getter_AddRefs(postDataStream),
|
|
||||||
PR_FALSE,
|
|
||||||
(const char *) aPostData, 0);
|
|
||||||
}
|
|
||||||
if (aHeadersData) {
|
|
||||||
NS_NewByteInputStream(getter_AddRefs(result),
|
|
||||||
(const char *) aHeadersData, aHeadersDataLen);
|
|
||||||
if (result) {
|
|
||||||
headersDataStream = do_QueryInterface(result, &rv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rv = lh->OnLinkClick(content, eLinkVerb_Replace,
|
|
||||||
fullurl.get(),
|
|
||||||
unitarget.get(),
|
|
||||||
postDataStream, headersDataStream);
|
|
||||||
NS_IF_RELEASE(content);
|
|
||||||
}
|
|
||||||
NS_RELEASE(lh);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_RELEASE(container);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rv = NS_ERROR_FAILURE;
|
NS_ASSERTION(NS_SUCCEEDED(rv),"failed in creating plugin post data stream");
|
||||||
|
|
||||||
|
rv = lh->OnLinkClick(content, eLinkVerb_Replace,
|
||||||
|
fullurl.get(), unitarget.get(),
|
||||||
|
postDataStream, headersDataStream);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2171,82 +2171,57 @@ NS_IMETHODIMP nsPluginInstanceOwner::GetInstance(nsIPluginInstance *&aInstance)
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarget, void *aPostData, PRUint32 aPostDataLen, void *aHeadersData,
|
NS_IMETHODIMP nsPluginInstanceOwner::GetURL(const char *aURL, const char *aTarget, void *aPostData, PRUint32 aPostDataLen, void *aHeadersData,
|
||||||
PRUint32 aHeadersDataLen)
|
PRUint32 aHeadersDataLen)
|
||||||
{
|
{
|
||||||
nsISupports *container;
|
NS_ENSURE_TRUE(mOwner,NS_ERROR_NULL_POINTER);
|
||||||
nsILinkHandler *lh;
|
NS_ENSURE_TRUE(mContext,NS_ERROR_NULL_POINTER);
|
||||||
nsresult rv;
|
|
||||||
nsIView *view;
|
|
||||||
nsPoint origin;
|
|
||||||
|
|
||||||
if ((nsnull != mOwner) && (nsnull != mContext))
|
// the container of the pres context will give us the link handler
|
||||||
{
|
nsCOMPtr<nsISupports> container;
|
||||||
rv = mOwner->GetOffsetFromView(mContext, origin, &view);
|
nsresult rv = mContext->GetContainer(getter_AddRefs(container));
|
||||||
|
NS_ENSURE_TRUE(container,NS_ERROR_FAILURE);
|
||||||
|
nsCOMPtr<nsILinkHandler> lh = do_QueryInterface(container);
|
||||||
|
NS_ENSURE_TRUE(lh, NS_ERROR_FAILURE);
|
||||||
|
|
||||||
if (NS_OK == rv)
|
nsAutoString uniurl; uniurl.AssignWithConversion(aURL);
|
||||||
{
|
nsAutoString unitarget; unitarget.AssignWithConversion(aTarget);
|
||||||
rv = mContext->GetContainer(&container);
|
nsAutoString fullurl;
|
||||||
|
|
||||||
if (NS_OK == rv)
|
nsCOMPtr<nsIURI> baseURL;
|
||||||
{
|
nsCOMPtr<nsIDocument> doc;
|
||||||
rv = container->QueryInterface(NS_GET_IID(nsILinkHandler), (void **)&lh);
|
rv = GetDocument(getter_AddRefs(doc));
|
||||||
|
if (NS_SUCCEEDED(rv) && doc) {
|
||||||
|
rv = doc->GetBaseURL(*getter_AddRefs(baseURL)); // gets the document's url
|
||||||
|
} else {
|
||||||
|
mOwner->GetFullURL(*getter_AddRefs(baseURL)); // gets the plugin's content url
|
||||||
|
}
|
||||||
|
|
||||||
if (NS_OK == rv)
|
// Create an absolute URL
|
||||||
{
|
NS_MakeAbsoluteURI(fullurl, uniurl, baseURL);
|
||||||
nsAutoString uniurl; uniurl.AssignWithConversion(aURL);
|
|
||||||
nsAutoString unitarget; unitarget.AssignWithConversion(aTarget);
|
|
||||||
nsAutoString fullurl;
|
|
||||||
nsIURI* baseURL;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIDocument> doc;
|
NS_ENSURE_TRUE(NS_SUCCEEDED(rv),NS_ERROR_FAILURE);
|
||||||
rv = GetDocument(getter_AddRefs(doc));
|
nsCOMPtr<nsIContent> content;
|
||||||
if (NS_SUCCEEDED(rv) && doc)
|
mOwner->GetContent(getter_AddRefs(content));
|
||||||
{
|
NS_ENSURE_TRUE(content, NS_ERROR_FAILURE);
|
||||||
rv = doc->GetBaseURL(baseURL); // gets the document's url
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mOwner->GetFullURL(baseURL); // gets the plugin's content url
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create an absolute URL
|
nsCOMPtr<nsISupports> result;
|
||||||
rv = NS_MakeAbsoluteURI(fullurl, uniurl, baseURL);
|
nsCOMPtr<nsIInputStream> postDataStream;
|
||||||
|
nsCOMPtr<nsIInputStream> headersDataStream;
|
||||||
NS_IF_RELEASE(baseURL);
|
if (aPostData) {
|
||||||
|
rv = NS_NewPostDataStream(getter_AddRefs(postDataStream), PR_FALSE, (const char *) aPostData, 0);
|
||||||
if (NS_OK == rv) {
|
}
|
||||||
nsIContent* content = nsnull;
|
if (aHeadersData) {
|
||||||
mOwner->GetContent(&content);
|
rv = NS_NewByteInputStream(getter_AddRefs(result), (const char *) aHeadersData, aHeadersDataLen);
|
||||||
nsCOMPtr<nsISupports> result = nsnull;
|
if (result) {
|
||||||
nsCOMPtr<nsIInputStream> postDataStream;
|
headersDataStream = do_QueryInterface(result, &rv);
|
||||||
nsCOMPtr<nsIInputStream> headersDataStream;
|
|
||||||
if (aPostData) {
|
|
||||||
NS_NewPostDataStream(getter_AddRefs(postDataStream),
|
|
||||||
PR_FALSE,
|
|
||||||
(const char *) aPostData, 0);
|
|
||||||
}
|
|
||||||
if (aHeadersData) {
|
|
||||||
NS_NewByteInputStream(getter_AddRefs(result),
|
|
||||||
(const char *) aHeadersData, aHeadersDataLen);
|
|
||||||
if (result) {
|
|
||||||
headersDataStream = do_QueryInterface(result, &rv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
rv = lh->OnLinkClick(content, eLinkVerb_Replace,
|
|
||||||
fullurl.get(),
|
|
||||||
unitarget.get(),
|
|
||||||
postDataStream, headersDataStream);
|
|
||||||
NS_IF_RELEASE(content);
|
|
||||||
}
|
|
||||||
NS_RELEASE(lh);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_RELEASE(container);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
rv = NS_ERROR_FAILURE;
|
NS_ASSERTION(NS_SUCCEEDED(rv),"failed in creating plugin post data stream");
|
||||||
|
|
||||||
|
rv = lh->OnLinkClick(content, eLinkVerb_Replace,
|
||||||
|
fullurl.get(), unitarget.get(),
|
||||||
|
postDataStream, headersDataStream);
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче