1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "config.h" 6 #include "core/testing/PrivateScriptTest.h" 7 8 #include "bindings/core/v8/PrivateScriptRunner.h" 9 #include "bindings/core/v8/V8Binding.h" 10 #include "bindings/core/v8/V8PrivateScriptTest.h" 11 #include "core/testing/DummyPageHolder.h" 12 13 #include <gtest/gtest.h> 14 15 // PrivateScriptTest.js is available only in debug builds. 16 #ifndef NDEBUG 17 namespace blink { 18 19 namespace { 20 21 class PrivateScriptTestTest : public ::testing::Test { 22 public: 23 PrivateScriptTestTest() 24 : m_scope(v8::Isolate::GetCurrent()) 25 , m_dummyPageHolder(DummyPageHolder::create()) 26 , m_privateScriptTest(PrivateScriptTest::create(frame())) 27 { 28 } 29 30 ~PrivateScriptTestTest() 31 { 32 } 33 34 LocalFrame* frame() const { return &m_dummyPageHolder->frame(); } 35 Document* document() const { return &m_dummyPageHolder->document(); } 36 v8::Isolate* isolate() const { return m_scope.isolate(); } 37 PrivateScriptTest* privateScriptTest() const { return m_privateScriptTest.get(); } 38 39 protected: 40 V8TestingScope m_scope; 41 OwnPtr<DummyPageHolder> m_dummyPageHolder; 42 Persistent<PrivateScriptTest> m_privateScriptTest; 43 }; 44 45 TEST_F(PrivateScriptTestTest, invokePrivateScriptMethodFromCPP) 46 { 47 bool success; 48 int result; 49 success = V8PrivateScriptTest::PrivateScript::addIntegerForPrivateScriptOnlyMethod(frame(), privateScriptTest(), 100, 200, &result); 50 EXPECT_TRUE(success); 51 EXPECT_EQ(result, 300); 52 } 53 54 TEST_F(PrivateScriptTestTest, invokePrivateScriptAttributeFromCPP) 55 { 56 bool success; 57 String result; 58 success = V8PrivateScriptTest::PrivateScript::stringAttributeForPrivateScriptOnlyAttributeGetter(frame(), privateScriptTest(), &result); 59 EXPECT_TRUE(success); 60 EXPECT_EQ(result, "yyy"); 61 success = V8PrivateScriptTest::PrivateScript::stringAttributeForPrivateScriptOnlyAttributeSetter(frame(), privateScriptTest(), "foo"); 62 EXPECT_TRUE(success); 63 success = V8PrivateScriptTest::PrivateScript::stringAttributeForPrivateScriptOnlyAttributeGetter(frame(), privateScriptTest(), &result); 64 EXPECT_TRUE(success); 65 EXPECT_EQ(result, "foo"); 66 } 67 68 } // namespace 69 70 } // namespace blink 71 #endif 72