summaryrefslogtreecommitdiffstats
path: root/base/scoped_comptr_win.h
diff options
context:
space:
mode:
authortommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-08 20:47:31 +0000
committertommi@chromium.org <tommi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-08 20:47:31 +0000
commit837be4ad6a8e740fe45e19e2d1699d21f83f7ea4 (patch)
treec6c041675b8e1e9904716b4effa56c82abdd2b12 /base/scoped_comptr_win.h
parent3a4f703d736db716a5279b821574dcedd170509c (diff)
downloadchromium_src-837be4ad6a8e740fe45e19e2d1699d21f83f7ea4.zip
chromium_src-837be4ad6a8e740fe45e19e2d1699d21f83f7ea4.tar.gz
chromium_src-837be4ad6a8e740fe45e19e2d1699d21f83f7ea4.tar.bz2
Adding a non-templatized version of QI for times when the IID and type aren't associated.
Also fixing the ScopedComPtrVector unit test. The problem with the test was that it expected AddRef to be called twice and Release() once when pushing a pointer to the vector. However that only happens when a push causes a reallocation. When there's no reallocation, there's only a single call to AddRef and no call to Release, causing the test to report failure. The fix is to simply use std::list instead and fix the expected values. TEST=Run *ScopedComPtr* unit tests. BUG=none Review URL: http://codereview.chromium.org/149345 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20183 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/scoped_comptr_win.h')
-rw-r--r--base/scoped_comptr_win.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/base/scoped_comptr_win.h b/base/scoped_comptr_win.h
index 3fa419f..dbe2805 100644
--- a/base/scoped_comptr_win.h
+++ b/base/scoped_comptr_win.h
@@ -89,6 +89,13 @@ class ScopedComPtr : public scoped_refptr<Interface> {
return ptr_->QueryInterface(p);
}
+ // QI for times when the IID is not associated with the type.
+ HRESULT QueryInterface(const IID& iid, void** obj) {
+ DCHECK(obj != NULL);
+ DCHECK(ptr_ != NULL);
+ return ptr_->QueryInterface(iid, obj);
+ }
+
// Queries |other| for the interface this object wraps and returns the
// error code from the other->QueryInterface operation.
HRESULT QueryFrom(IUnknown* object) {