summaryrefslogtreecommitdiffstats
path: root/ppapi/tests
diff options
context:
space:
mode:
authortoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-14 07:22:10 +0000
committertoyoshim@chromium.org <toyoshim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-12-14 07:22:10 +0000
commit44a034e03771e91cb04767fa388a3a8c1839b40b (patch)
tree77c3425655448e4c940bd3c5c8516011598c5a42 /ppapi/tests
parent3a12f884e8fd8c75c8b65f64fb987006a3ccacfc (diff)
downloadchromium_src-44a034e03771e91cb04767fa388a3a8c1839b40b.zip
chromium_src-44a034e03771e91cb04767fa388a3a8c1839b40b.tar.gz
chromium_src-44a034e03771e91cb04767fa388a3a8c1839b40b.tar.bz2
WebSocket Pepper API: Add live object check to WebSocket PPAPI tests
- Add RUN_TEST_WITH_REFERENCE_CHECK macro which run a test then check leaked pepper objects. - Use that macro to run all WebSocket related PPAPI unit tests - Fix some object leak in tests found by the macro BUG=87310 TEST=ui_tests --gtest_filter='PPAPITest.WebSocket_*' Review URL: http://codereview.chromium.org/8934003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114389 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/tests')
-rw-r--r--ppapi/tests/test_case.h14
-rw-r--r--ppapi/tests/test_websocket.cc29
-rw-r--r--ppapi/tests/test_websocket.h2
3 files changed, 33 insertions, 12 deletions
diff --git a/ppapi/tests/test_case.h b/ppapi/tests/test_case.h
index e974c50..8ea3aef 100644
--- a/ppapi/tests/test_case.h
+++ b/ppapi/tests/test_case.h
@@ -153,6 +153,20 @@ class TestCaseFactory {
instance_->LogTest(#name, Test##name()); \
}
+#define RUN_TEST_WITH_REFERENCE_CHECK(name, test_filter) \
+ if (MatchesFilter(#name, test_filter)) { \
+ force_async_ = false; \
+ uint32_t objects = testing_interface_->GetLiveObjectsForInstance( \
+ instance_->pp_instance()); \
+ std::string error_message = Test##name(); \
+ if (error_message.empty() && \
+ testing_interface_->GetLiveObjectsForInstance( \
+ instance_->pp_instance()) != objects) \
+ error_message = MakeFailureMessage(__FILE__, __LINE__, \
+ "reference leak check"); \
+ instance_->LogTest(#name, error_message); \
+ }
+
// Like RUN_TEST above but forces functions taking callbacks to complete
// asynchronously on success or error.
#define RUN_TEST_FORCEASYNC(name, test_filter) \
diff --git a/ppapi/tests/test_websocket.cc b/ppapi/tests/test_websocket.cc
index e8e5558..c990113 100644
--- a/ppapi/tests/test_websocket.cc
+++ b/ppapi/tests/test_websocket.cc
@@ -6,6 +6,7 @@
#include <string.h>
+#include "ppapi/c/dev/ppb_testing_dev.h"
#include "ppapi/c/dev/ppb_websocket_dev.h"
#include "ppapi/c/pp_errors.h"
#include "ppapi/c/pp_var.h"
@@ -47,20 +48,20 @@ bool TestWebSocket::Init() {
if (!websocket_interface_ || !var_interface_ || !core_interface_)
return false;
- return true;
+ return InitTestingInterface();
}
void TestWebSocket::RunTests(const std::string& filter) {
- RUN_TEST(IsWebSocket, filter);
- RUN_TEST(UninitializedPropertiesAccess, filter);
- RUN_TEST(InvalidConnect, filter);
- RUN_TEST(Protocols, filter);
- RUN_TEST(GetURL, filter);
- RUN_TEST(ValidConnect, filter);
- RUN_TEST(InvalidClose, filter);
- RUN_TEST(ValidClose, filter);
- RUN_TEST(GetProtocol, filter);
- RUN_TEST(TextSendReceive, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(IsWebSocket, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(UninitializedPropertiesAccess, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(InvalidConnect, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(Protocols, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(GetURL, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(ValidConnect, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(InvalidClose, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(ValidClose, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(GetProtocol, filter);
+ RUN_TEST_WITH_REFERENCE_CHECK(TextSendReceive, filter);
}
PP_Var TestWebSocket::CreateVar(const char* string) {
@@ -138,15 +139,18 @@ std::string TestWebSocket::TestUninitializedPropertiesAccess() {
PP_Var close_reason = websocket_interface_->GetCloseReason(ws);
ASSERT_TRUE(AreEqual(close_reason, ""));
+ ReleaseVar(close_reason);
PP_Bool close_was_clean = websocket_interface_->GetCloseWasClean(ws);
ASSERT_EQ(PP_FALSE, close_was_clean);
PP_Var extensions = websocket_interface_->GetExtensions(ws);
ASSERT_TRUE(AreEqual(extensions, ""));
+ ReleaseVar(extensions);
PP_Var protocol = websocket_interface_->GetProtocol(ws);
ASSERT_TRUE(AreEqual(protocol, ""));
+ ReleaseVar(protocol);
PP_WebSocketReadyState_Dev ready_state =
websocket_interface_->GetReadyState(ws);
@@ -154,6 +158,9 @@ std::string TestWebSocket::TestUninitializedPropertiesAccess() {
PP_Var url = websocket_interface_->GetURL(ws);
ASSERT_TRUE(AreEqual(url, ""));
+ ReleaseVar(url);
+
+ core_interface_->ReleaseResource(ws);
PASS();
}
diff --git a/ppapi/tests/test_websocket.h b/ppapi/tests/test_websocket.h
index ff8851a..6cdf028 100644
--- a/ppapi/tests/test_websocket.h
+++ b/ppapi/tests/test_websocket.h
@@ -17,11 +17,11 @@ class TestWebSocket : public TestCase {
public:
explicit TestWebSocket(TestingInstance* instance) : TestCase(instance) {}
+ private:
// TestCase implementation.
virtual bool Init();
virtual void RunTests(const std::string& filter);
- private:
PP_Var CreateVar(const char* string);
void ReleaseVar(const PP_Var& var);
bool AreEqual(const PP_Var& var, const char* string);