forked from mirrors/gecko-dev
		
	# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D14595 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			148 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			148 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Test06.cpp
 | 
						|
 | 
						|
#include "nsPIDOMWindow.h"
 | 
						|
#include "nsIDocShell.h"
 | 
						|
#include "nsIBaseWindow.h"
 | 
						|
#include "nsCOMPtr.h"
 | 
						|
 | 
						|
NS_DEF_PTR(nsPIDOMWindow);
 | 
						|
NS_DEF_PTR(nsIBaseWindow);
 | 
						|
 | 
						|
/*
 | 
						|
  Windows:
 | 
						|
    nsCOMPtr_optimized           176
 | 
						|
    nsCOMPtr_as_found            181
 | 
						|
    nsCOMPtr_optimized*          182
 | 
						|
    nsCOMPtr02*                  184
 | 
						|
    nsCOMPtr02                   187
 | 
						|
    nsCOMPtr02*                  188
 | 
						|
    nsCOMPtr03                   189
 | 
						|
    raw_optimized, nsCOMPtr00    191
 | 
						|
    nsCOMPtr00*                  199
 | 
						|
    nsCOMPtr_as_found*           201
 | 
						|
    raw                          214
 | 
						|
 | 
						|
  Macintosh:
 | 
						|
    nsCOMPtr_optimized           300    (1.0000)
 | 
						|
    nsCOMPtr02                   320    (1.0667)  i.e., 6.67% bigger than
 | 
						|
  nsCOMPtr_optimized nsCOMPtr00                   328    (1.0933) raw_optimized,
 | 
						|
  nsCOMPtr03    332    (1.1067) nsCOMPtr_as_found            344    (1.1467) raw
 | 
						|
  388    (1.2933)
 | 
						|
 | 
						|
*/
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_raw(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
 | 
						|
// m388, w214
 | 
						|
{
 | 
						|
  //  if (!aDOMWindow)
 | 
						|
  //    return NS_ERROR_NULL_POINTER;
 | 
						|
  nsPIDOMWindow* window = 0;
 | 
						|
  nsresult status =
 | 
						|
      aDOMWindow->QueryInterface(NS_GET_IID(nsPIDOMWindow), (void**)&window);
 | 
						|
  nsIDocShell* docShell = 0;
 | 
						|
  if (window) window->GetDocShell(&docShell);
 | 
						|
  nsIWebShell* rootWebShell = 0;
 | 
						|
  NS_IF_RELEASE(rootWebShell);
 | 
						|
  NS_IF_RELEASE(docShell);
 | 
						|
  NS_IF_RELEASE(window);
 | 
						|
  //    return status;
 | 
						|
}
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_raw_optimized(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
 | 
						|
// m332, w191
 | 
						|
{
 | 
						|
  //  if (!aDOMWindow)
 | 
						|
  //    return NS_ERROR_NULL_POINTER;
 | 
						|
  (*aBaseWindow) = 0;
 | 
						|
  nsPIDOMWindow* window;
 | 
						|
  nsresult status =
 | 
						|
      aDOMWindow->QueryInterface(NS_GET_IID(nsPIDOMWindow), (void**)&window);
 | 
						|
  if (NS_SUCCEEDED(status)) {
 | 
						|
    nsIDocShell* docShell = 0;
 | 
						|
    window->GetDocShell(&docShell);
 | 
						|
    if (docShell) {
 | 
						|
      NS_RELEASE(docShell);
 | 
						|
    }
 | 
						|
    NS_RELEASE(window);
 | 
						|
  }
 | 
						|
  //  return status;
 | 
						|
}
 | 
						|
 | 
						|
void Test06_nsCOMPtr_as_found(nsIDOMWindow* aDOMWindow,
 | 
						|
                              nsCOMPtr<nsIBaseWindow>* aBaseWindow)
 | 
						|
// m344, w181/201
 | 
						|
{
 | 
						|
  //  if (!aDOMWindow)
 | 
						|
  //    return;
 | 
						|
  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow);
 | 
						|
  nsCOMPtr<nsIDocShell> docShell;
 | 
						|
  if (window) window->GetDocShell(getter_AddRefs(docShell));
 | 
						|
}
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_nsCOMPtr00(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
 | 
						|
// m328, w191/199
 | 
						|
{
 | 
						|
  //  if (!aDOMWindow)
 | 
						|
  //    return NS_ERROR_NULL_POINTER;
 | 
						|
  nsresult status;
 | 
						|
  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
 | 
						|
  nsIDocShell* temp0 = 0;
 | 
						|
  if (window) window->GetDocShell(&temp0);
 | 
						|
  nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
 | 
						|
  (*aBaseWindow) = 0;
 | 
						|
  //    return status;
 | 
						|
}
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_nsCOMPtr_optimized(nsIDOMWindow* aDOMWindow,
 | 
						|
                          nsCOMPtr<nsIBaseWindow>* aBaseWindow)
 | 
						|
// m300, w176/182
 | 
						|
{
 | 
						|
  //    if (!aDOMWindow)
 | 
						|
  //      return NS_ERROR_NULL_POINTER;
 | 
						|
  nsresult status;
 | 
						|
  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
 | 
						|
  nsIDocShell* temp0 = 0;
 | 
						|
  if (window) window->GetDocShell(&temp0);
 | 
						|
  (*aBaseWindow) = do_QueryInterface(nullptr, &status);
 | 
						|
  //    return status;
 | 
						|
}
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_nsCOMPtr02(nsIDOMWindow* aDOMWindow, nsIBaseWindow** aBaseWindow)
 | 
						|
// m320, w187/184
 | 
						|
{
 | 
						|
  //    if (!aDOMWindow)
 | 
						|
  //      return NS_ERROR_NULL_POINTER;
 | 
						|
  (*aBaseWindow) = 0;
 | 
						|
  nsresult status;
 | 
						|
  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
 | 
						|
  if (window) {
 | 
						|
    nsIDocShell* temp0;
 | 
						|
    window->GetDocShell(&temp0);
 | 
						|
  }
 | 
						|
  //    return status;
 | 
						|
}
 | 
						|
 | 
						|
void  // nsresult
 | 
						|
Test06_nsCOMPtr03(nsIDOMWindow* aDOMWindow,
 | 
						|
                  nsCOMPtr<nsIBaseWindow>* aBaseWindow)
 | 
						|
// m332, w189/188
 | 
						|
{
 | 
						|
  //    if (!aDOMWindow)
 | 
						|
  //      return NS_ERROR_NULL_POINTER;
 | 
						|
  (*aBaseWindow) = 0;
 | 
						|
  nsresult status;
 | 
						|
  nsCOMPtr<nsPIDOMWindow> window = do_QueryInterface(aDOMWindow, &status);
 | 
						|
  if (window) {
 | 
						|
    nsIDocShell* temp0;
 | 
						|
    window->GetDocShell(&temp0);
 | 
						|
    nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
 | 
						|
    if (docShell) {
 | 
						|
    }
 | 
						|
  }
 | 
						|
  //    return status;
 | 
						|
}
 |