1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "gin/test/v8_test.h"
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "gin/public/isolate_holder.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using v8::Context;
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using v8::Local;
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using v8::HandleScope;
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace gin {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)V8Test::V8Test() {
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)V8Test::~V8Test() {
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void V8Test::SetUp() {
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  instance_.reset(new gin::IsolateHolder);
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  instance_->isolate()->Enter();
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  HandleScope handle_scope(instance_->isolate());
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  context_.Reset(instance_->isolate(), Context::New(instance_->isolate()));
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  Local<Context>::New(instance_->isolate(), context_)->Enter();
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void V8Test::TearDown() {
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  {
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    HandleScope handle_scope(instance_->isolate());
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    Local<Context>::New(instance_->isolate(), context_)->Exit();
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    context_.Reset();
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  }
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  instance_->isolate()->Exit();
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  instance_.reset();
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace gin
40