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/per_context_data.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/logging.h" 8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include "gin/public/context_holder.h" 9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "gin/public/wrapper_info.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace gin { 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)PerContextData::PerContextData(ContextHolder* context_holder, 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::Handle<v8::Context> context) 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : context_holder_(context_holder), 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) runner_(NULL) { 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) context->SetAlignedPointerInEmbedderData( 18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) kPerContextDataStartIndex + kEmbedderNativeGin, this); 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PerContextData::~PerContextData() { 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) v8::HandleScope handle_scope(context_holder_->isolate()); 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) context_holder_->context()->SetAlignedPointerInEmbedderData( 24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) kPerContextDataStartIndex + kEmbedderNativeGin, NULL); 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// static 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)PerContextData* PerContextData::From(v8::Handle<v8::Context> context) { 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return static_cast<PerContextData*>( 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) context->GetAlignedPointerFromEmbedderData(kEncodedValueIndex)); 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace gin 34