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