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 17namespace blink { 18 19namespace { 20 21class PrivateScriptTestTest : public ::testing::Test { 22public: 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 39protected: 40 V8TestingScope m_scope; 41 OwnPtr<DummyPageHolder> m_dummyPageHolder; 42 Persistent<PrivateScriptTest> m_privateScriptTest; 43}; 44 45TEST_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 54TEST_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