1 // Copyright 2016 PDFium 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 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #include "fxjs/cfxjse_isolatetracker.h" 8 9 #include <algorithm> 10 #include <utility> 11 CFXJSE_IsolateTracker()12CFXJSE_IsolateTracker::CFXJSE_IsolateTracker() {} 13 ~CFXJSE_IsolateTracker()14CFXJSE_IsolateTracker::~CFXJSE_IsolateTracker() {} 15 Append(v8::Isolate * pIsolate,std::unique_ptr<v8::ArrayBuffer::Allocator> alloc)16void CFXJSE_IsolateTracker::Append( 17 v8::Isolate* pIsolate, 18 std::unique_ptr<v8::ArrayBuffer::Allocator> alloc) { 19 m_OwnedIsolates.push_back(pIsolate); 20 m_AllocatorMap[pIsolate] = std::move(alloc); 21 } 22 Remove(v8::Isolate * pIsolate,CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback)23void CFXJSE_IsolateTracker::Remove( 24 v8::Isolate* pIsolate, 25 CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback) { 26 auto it = std::find(m_OwnedIsolates.begin(), m_OwnedIsolates.end(), pIsolate); 27 bool bFound = it != m_OwnedIsolates.end(); 28 if (bFound) 29 m_OwnedIsolates.erase(it); 30 lpfnDisposeCallback(pIsolate, bFound); 31 32 m_AllocatorMap.erase(pIsolate); 33 } 34 RemoveAll(CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback)35void CFXJSE_IsolateTracker::RemoveAll( 36 CFXJSE_IsolateTracker::DisposeCallback lpfnDisposeCallback) { 37 for (v8::Isolate* pIsolate : m_OwnedIsolates) 38 lpfnDisposeCallback(pIsolate, true); 39 40 m_OwnedIsolates.clear(); 41 m_AllocatorMap.clear(); 42 } 43