summaryrefslogtreecommitdiffstats
path: root/src/libs/xpcom18a4/xpcom/tests/SizeTest06.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/libs/xpcom18a4/xpcom/tests/SizeTest06.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/src/libs/xpcom18a4/xpcom/tests/SizeTest06.cpp b/src/libs/xpcom18a4/xpcom/tests/SizeTest06.cpp
new file mode 100644
index 00000000..2c28e7f3
--- /dev/null
+++ b/src/libs/xpcom18a4/xpcom/tests/SizeTest06.cpp
@@ -0,0 +1,231 @@
+// Test06.cpp
+
+#include "nsIDOMWindowInternal.h"
+#include "nsIScriptGlobalObject.h"
+#include "nsIWebShell.h"
+#include "nsIDocShell.h"
+#include "nsIWebShellWindow.h"
+#include "nsCOMPtr.h"
+
+NS_DEF_PTR(nsIScriptGlobalObject);
+NS_DEF_PTR(nsIWebShell);
+NS_DEF_PTR(nsIWebShellContainer);
+NS_DEF_PTR(nsIWebShellWindow);
+
+ /*
+ 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(nsIDOMWindowInternal* aDOMWindow, nsIWebShellWindow** aWebShellWindow)
+ // m388, w214
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ nsIScriptGlobalObject* scriptGlobalObject = 0;
+ nsresult status = aDOMWindow->QueryInterface(NS_GET_IID(nsIScriptGlobalObject), (void**)&scriptGlobalObject);
+ nsIDocShell* docShell = 0;
+ if (scriptGlobalObject)
+ scriptGlobalObject->GetDocShell(&docShell);
+ nsIWebShell* webShell = 0;
+ if (docShell)
+ status=docShell->QueryInterface(NS_GET_IID(nsIWebShell), (void**)&webShell);
+ nsIWebShell* rootWebShell = 0;
+ if (webShell)
+ //status = webShell->GetRootWebShellEvenIfChrome(rootWebShell);
+ {}
+ nsIWebShellContainer* webShellContainer = 0;
+ if (rootWebShell)
+ status = rootWebShell->GetContainer(webShellContainer);
+ if (webShellContainer)
+ status = webShellContainer->QueryInterface(NS_GET_IID(nsIWebShellWindow), (void**)aWebShellWindow);
+ else
+ (*aWebShellWindow) = 0;
+ NS_IF_RELEASE(webShellContainer);
+ NS_IF_RELEASE(rootWebShell);
+ NS_IF_RELEASE(webShell);
+ NS_IF_RELEASE(docShell);
+ NS_IF_RELEASE(scriptGlobalObject);
+// return status;
+}
+
+void // nsresult
+Test06_raw_optimized(nsIDOMWindowInternal* aDOMWindow, nsIWebShellWindow** aWebShellWindow)
+ // m332, w191
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ (*aWebShellWindow) = 0;
+ nsIScriptGlobalObject* scriptGlobalObject;
+ nsresult status = aDOMWindow->QueryInterface(NS_GET_IID(nsIScriptGlobalObject), (void**)&scriptGlobalObject);
+ if (NS_SUCCEEDED(status)) {
+ nsIDocShell* docShell = 0;
+ scriptGlobalObject->GetDocShell(&docShell);
+ if (docShell) {
+ nsIWebShell* webShell = 0;
+ docShell->QueryInterface(NS_GET_IID(nsIWebShell), (void**)webShell);
+ if (webShell) {
+ nsIWebShell* rootWebShell;
+ // status = webShell->GetRootWebShellEvenIfChrome(rootWebShell);
+ if (NS_SUCCEEDED(status)) {
+ nsIWebShellContainer* webShellContainer;
+ status = rootWebShell->GetContainer(webShellContainer);
+ if (NS_SUCCEEDED(status)) {
+ status = webShellContainer->QueryInterface(NS_GET_IID(nsIWebShellWindow), (void**)aWebShellWindow);
+ NS_RELEASE(webShellContainer);
+ }
+ NS_RELEASE(rootWebShell);
+ }
+ NS_RELEASE(webShell);
+ }
+ NS_RELEASE(docShell);
+ }
+ NS_RELEASE(scriptGlobalObject);
+ }
+// return status;
+}
+
+void
+Test06_nsCOMPtr_as_found(nsIDOMWindowInternal* aDOMWindow, nsCOMPtr<nsIWebShellWindow>* aWebShellWindow)
+ // m344, w181/201
+{
+// if (!aDOMWindow)
+// return;
+ nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject = do_QueryInterface(aDOMWindow);
+ nsCOMPtr<nsIDocShell> docShell;
+ if (scriptGlobalObject)
+ scriptGlobalObject->GetDocShell(getter_AddRefs(docShell));
+ nsCOMPtr<nsIWebShell> webShell;
+ if (docShell)
+ webShell = do_QueryInterface(docShell);
+ nsCOMPtr<nsIWebShell> rootWebShell;
+ if (webShell)
+ //webShell->GetRootWebShellEvenIfChrome(*getter_AddRefs(rootWebShell));
+ {}
+ nsCOMPtr<nsIWebShellContainer> webShellContainer;
+ if (rootWebShell)
+ rootWebShell->GetContainer(*getter_AddRefs(webShellContainer));
+ (*aWebShellWindow) = do_QueryInterface(webShellContainer);
+}
+
+void // nsresult
+Test06_nsCOMPtr00(nsIDOMWindowInternal* aDOMWindow, nsIWebShellWindow** aWebShellWindow)
+ // m328, w191/199
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ nsresult status;
+ nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject = do_QueryInterface(aDOMWindow, &status);
+ nsIDocShell* temp0 = 0;
+ if (scriptGlobalObject)
+ scriptGlobalObject->GetDocShell(&temp0);
+ nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
+ nsCOMPtr<nsIWebShell> webShell;
+ if (docShell)
+ webShell=do_QueryInterface(docShell, &status);
+ nsIWebShellContainer* temp2 = 0;
+ if (webShell)
+ status = webShell->GetContainer(temp2);
+ nsCOMPtr<nsIWebShellContainer> webShellContainer = dont_AddRef(temp2);
+ if (webShellContainer)
+ status = webShellContainer->QueryInterface(NS_GET_IID(nsIWebShellWindow), (void**)aWebShellWindow);
+ else
+ (*aWebShellWindow) = 0;
+// return status;
+}
+
+void // nsresult
+Test06_nsCOMPtr_optimized(nsIDOMWindowInternal* aDOMWindow, nsCOMPtr<nsIWebShellWindow>* aWebShellWindow)
+ // m300, w176/182
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ nsresult status;
+ nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject = do_QueryInterface(aDOMWindow, &status);
+ nsIDocShell* temp0 = 0;
+ if (scriptGlobalObject)
+ scriptGlobalObject->GetDocShell(&temp0);
+ nsCOMPtr<nsIWebShell> webShell = do_QueryInterface(temp0, &status);
+ nsIWebShell* temp2 = 0;
+ if (webShell)
+ // status = webShell->GetRootWebShellEvenIfChrome(temp2);
+ {}
+ nsCOMPtr<nsIWebShell> rootWebShell = dont_AddRef(temp2);
+ nsIWebShellContainer* temp3 = 0;
+ if (rootWebShell)
+ status = rootWebShell->GetContainer(temp3);
+ nsCOMPtr<nsIWebShellContainer> webShellContainer = dont_AddRef(temp3);
+ (*aWebShellWindow) = do_QueryInterface(webShellContainer, &status);
+// return status;
+}
+
+void // nsresult
+Test06_nsCOMPtr02(nsIDOMWindowInternal* aDOMWindow, nsIWebShellWindow** aWebShellWindow)
+ // m320, w187/184
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ (*aWebShellWindow) = 0;
+ nsresult status;
+ nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject = do_QueryInterface(aDOMWindow, &status);
+ if (scriptGlobalObject) {
+ nsIDocShell* temp0;
+ scriptGlobalObject->GetDocShell(&temp0);
+ nsCOMPtr<nsIWebShell> webShell = do_QueryInterface(temp0);
+ if (webShell) {
+ nsIWebShellContainer* temp2;
+ status = webShell->GetContainer(temp2);
+ nsCOMPtr<nsIWebShellContainer> webShellContainer = dont_AddRef(temp2);
+ if (webShellContainer)
+ status = webShellContainer->QueryInterface(NS_GET_IID(nsIWebShellWindow), (void**)aWebShellWindow);
+ }
+ }
+// return status;
+}
+
+void // nsresult
+Test06_nsCOMPtr03(nsIDOMWindowInternal* aDOMWindow, nsCOMPtr<nsIWebShellWindow>* aWebShellWindow)
+ // m332, w189/188
+{
+// if (!aDOMWindow)
+// return NS_ERROR_NULL_POINTER;
+ (*aWebShellWindow) = 0;
+ nsresult status;
+ nsCOMPtr<nsIScriptGlobalObject> scriptGlobalObject = do_QueryInterface(aDOMWindow, &status);
+ if (scriptGlobalObject) {
+ nsIDocShell* temp0;
+ scriptGlobalObject->GetDocShell(&temp0);
+ nsCOMPtr<nsIDocShell> docShell = dont_AddRef(temp0);
+ if (docShell) {
+ nsCOMPtr<nsIWebShell> webShell = do_QueryInterface(docShell, &status);
+ if (webShell) {
+ nsIWebShellContainer* temp2;
+ status = webShell->GetContainer(temp2);
+ nsCOMPtr<nsIWebShellContainer> webShellContainer = dont_AddRef(temp2);
+ (*aWebShellWindow) = do_QueryInterface(webShellContainer, &status);
+ }
+ }
+ }
+// return status;
+}