// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include #include "gpu/np_utils/dynamic_np_object.h" #include "gpu/np_utils/np_browser_stub.h" #include "gpu/np_utils/np_utils.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" using testing::Return; using testing::StrictMock; namespace np_utils { class NPDynamicNPObjectTest : public testing::Test { protected: virtual void SetUp() { object_ = NPCreateObject(NULL); } StubNPBrowser stub_browser_; NPObjectPointer object_; }; TEST_F(NPDynamicNPObjectTest, HasPropertyReturnsFalseForMissingProperty) { EXPECT_FALSE(NPHasProperty(NULL, object_, "missing")); } TEST_F(NPDynamicNPObjectTest, GetPropertyReturnsFalseForMissingProperty) { int32 r; EXPECT_FALSE(NPGetProperty(NULL, object_, "missing", &r)); } TEST_F(NPDynamicNPObjectTest, CanSetProperty) { EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7)); int32 r; EXPECT_TRUE(NPHasProperty(NULL, object_, "foo")); EXPECT_TRUE(NPGetProperty(NULL, object_, "foo", &r)); EXPECT_EQ(7, r); } TEST_F(NPDynamicNPObjectTest, CanRemoveProperty) { EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7)); EXPECT_TRUE(NPHasProperty(NULL, object_, "foo")); EXPECT_FALSE(NPRemoveProperty(NULL, object_, "foo")); EXPECT_FALSE(NPHasProperty(NULL, object_, "foo")); int32 r; EXPECT_FALSE(NPGetProperty(NULL, object_, "foo", &r)); } TEST_F(NPDynamicNPObjectTest, CanEnumerateProperties) { EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", 7)); NPIdentifier* names; uint32 num_names; EXPECT_TRUE(object_->_class->enumerate(object_.Get(), &names, &num_names)); EXPECT_EQ(1, num_names); EXPECT_EQ(NPBrowser::get()->GetStringIdentifier("foo"), names[0]); NPBrowser::get()->MemFree(names); } // Properties should not be TEST_F(NPDynamicNPObjectTest, InvalidateNullsObjectProperties) { EXPECT_EQ(1, object_->referenceCount); { EXPECT_TRUE(NPSetProperty(NULL, object_, "foo", object_)); EXPECT_TRUE(NPHasProperty(NULL, object_, "foo")); object_->_class->invalidate(object_.Get()); EXPECT_TRUE(NPHasProperty(NULL, object_, "foo")); NPObjectPointer r; EXPECT_TRUE(NPGetProperty(NULL, object_, "foo", &r)); EXPECT_TRUE(NULL == r.Get()); } // Invalidate did not release object EXPECT_EQ(2, object_->referenceCount); NPBrowser::get()->ReleaseObject(object_.Get()); } } // namespace np_utils