| Index: Source/bindings/core/v8/V8ScriptRunnerTest.cpp
|
| diff --git a/Source/bindings/core/v8/V8ScriptRunnerTest.cpp b/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
|
| index 3fde4cf7aae259b025cc6ce0c93b684338bacb57..0f12f1cd3312f8d1bee4e9e77191bd3bbb7d1ebe 100644
|
| --- a/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
|
| +++ b/Source/bindings/core/v8/V8ScriptRunnerTest.cpp
|
| @@ -5,6 +5,7 @@
|
| #include "config.h"
|
| #include "bindings/core/v8/V8ScriptRunner.h"
|
|
|
| +#include "bindings/core/v8/V8Binding.h"
|
| #include "core/fetch/ScriptResource.h"
|
| #include "platform/heap/Handle.h"
|
| #include <gtest/gtest.h>
|
| @@ -16,15 +17,9 @@ namespace {
|
|
|
| class V8ScriptRunnerTest : public ::testing::Test {
|
| public:
|
| - V8ScriptRunnerTest() { }
|
| + V8ScriptRunnerTest() : m_scope(v8::Isolate::GetCurrent()) { }
|
| virtual ~V8ScriptRunnerTest() { }
|
|
|
| - static void SetUpTestCase()
|
| - {
|
| - cacheTagParser = StringHash::hash(v8::V8::GetVersion()) * 2;
|
| - cacheTagCode = cacheTagParser + 1;
|
| - }
|
| -
|
| virtual void SetUp() OVERRIDE
|
| {
|
| // To trick various layers of caching, increment a counter for each
|
| @@ -38,43 +33,39 @@ public:
|
| m_resource.clear();
|
| }
|
|
|
| - v8::Isolate* isolate()
|
| + v8::Isolate* isolate() const
|
| {
|
| - return v8::Isolate::GetCurrent();
|
| + return m_scope.isolate();
|
| }
|
| - v8::Local<v8::String> v8String(const char* value)
|
| - {
|
| - return v8::String::NewFromOneByte(
|
| - isolate(), reinterpret_cast<const uint8_t*>(value));
|
| - }
|
| - v8::Local<v8::String> v8String(const WTF::String& value)
|
| - {
|
| - return v8String(value.ascii().data());
|
| - }
|
| - WTF::String code()
|
| + WTF::String code() const
|
| {
|
| // Simple function for testing. Note:
|
| // - Add counter to trick V8 code cache.
|
| // - Pad counter to 1000 digits, to trick minimal cacheability threshold.
|
| return WTF::String::format("a = function() { 1 + 1; } // %01000d\n", counter);
|
| }
|
| - WTF::String filename()
|
| + WTF::String filename() const
|
| {
|
| return WTF::String::format("whatever%d.js", counter);
|
| }
|
| - WTF::String url()
|
| + WTF::String url() const
|
| {
|
| return WTF::String::format("http://bla.com/bla%d", counter);
|
| }
|
| + unsigned tagForParserCache() const
|
| + {
|
| + return StringHash::hash(v8::V8::GetVersion()) * 2;
|
| + }
|
| + unsigned tagForCodeCache() const
|
| + {
|
| + return tagForParserCache() + 1;
|
| + }
|
|
|
| bool compileScript(V8CacheOptions cacheOptions)
|
| {
|
| - v8::HandleScope handleScope(isolate());
|
| - v8::Local<v8::Context> context = v8::Context::New(isolate());
|
| - v8::Context::Scope contextScope(context);
|
| return !V8ScriptRunner::compileScript(
|
| - v8String(code()), filename(), WTF::TextPosition(), m_resource.get(),
|
| - isolate(), NotSharableCrossOrigin, cacheOptions)
|
| + v8String(isolate(), code()), filename(), WTF::TextPosition(),
|
| + m_resource.get(), isolate(), NotSharableCrossOrigin, cacheOptions)
|
| .IsEmpty();
|
| }
|
|
|
| @@ -93,14 +84,11 @@ public:
|
| protected:
|
| WTF::OwnPtr<ResourceRequest> m_resourceRequest;
|
| OwnPtrWillBePersistent<ScriptResource> m_resource;
|
| + V8TestingScope m_scope;
|
|
|
| - static unsigned cacheTagParser;
|
| - static unsigned cacheTagCode;
|
| static int counter;
|
| };
|
|
|
| -unsigned V8ScriptRunnerTest::cacheTagParser = 0;
|
| -unsigned V8ScriptRunnerTest::cacheTagCode = 0;
|
| int V8ScriptRunnerTest::counter = 0;
|
|
|
| TEST_F(V8ScriptRunnerTest, resourcelessShouldPass)
|
| @@ -114,43 +102,43 @@ TEST_F(V8ScriptRunnerTest, emptyResourceDoesNothing)
|
| {
|
| setEmptyResource();
|
| EXPECT_TRUE(compileScript(V8CacheOptionsOff));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagParser));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagCode));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForParserCache()));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForCodeCache()));
|
|
|
| EXPECT_TRUE(compileScript(V8CacheOptionsParse));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagParser));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagCode));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForParserCache()));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForCodeCache()));
|
|
|
| EXPECT_TRUE(compileScript(V8CacheOptionsCode));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagParser));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagCode));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForParserCache()));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForCodeCache()));
|
| }
|
|
|
| TEST_F(V8ScriptRunnerTest, defaultOptions)
|
| {
|
| setResource();
|
| EXPECT_TRUE(compileScript(V8CacheOptionsOff));
|
| - EXPECT_TRUE(m_resource->cachedMetadata(cacheTagParser));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagCode));
|
| + EXPECT_TRUE(m_resource->cachedMetadata(tagForParserCache()));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForCodeCache()));
|
| }
|
|
|
| TEST_F(V8ScriptRunnerTest, parseOptions)
|
| {
|
| setResource();
|
| EXPECT_TRUE(compileScript(V8CacheOptionsParse));
|
| - EXPECT_TRUE(m_resource->cachedMetadata(cacheTagParser));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagCode));
|
| + EXPECT_TRUE(m_resource->cachedMetadata(tagForParserCache()));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForCodeCache()));
|
| }
|
|
|
| TEST_F(V8ScriptRunnerTest, codeOptions)
|
| {
|
| setResource();
|
| EXPECT_TRUE(compileScript(V8CacheOptionsCode));
|
| - EXPECT_FALSE(m_resource->cachedMetadata(cacheTagParser));
|
| + EXPECT_FALSE(m_resource->cachedMetadata(tagForParserCache()));
|
|
|
| - // TODO(vogelheim): Code caching is presently still disabled.
|
| - // Enable EXPECT when code caching lands.
|
| - // EXPECT_TRUE(m_resource->cachedMetadata(cacheTagCode));
|
| + // FIXME: Code caching is presently still disabled.
|
| + // Enable EXPECT when code caching lands.
|
| + // EXPECT_TRUE(m_resource->cachedMetadata(tagForCodeCache()));
|
| }
|
|
|
| } // namespace
|
|
|