// Copyright (c) 2020 Slack Technologies, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #include "shell/renderer/api/context_bridge/object_cache.h" #include "v8/include/v8-local-handle.h" #include "v8/include/v8-object.h" namespace electron::api::context_bridge { ObjectCache::ObjectCache() = default; ObjectCache::~ObjectCache() = default; void ObjectCache::CacheProxiedObject(const v8::Local from, v8::Local proxy_value) { if (from->IsObject() && !from->IsNullOrUndefined()) proxy_map_.insert_or_assign(from.As(), proxy_value); } v8::MaybeLocal ObjectCache::GetCachedProxiedObject( const v8::Local from) const { if (!from->IsObject() || from->IsNullOrUndefined()) return {}; const auto iter = proxy_map_.find(from.As()); if (iter == proxy_map_.end() || iter->second.IsEmpty()) return {}; return iter->second; } } // namespace electron::api::context_bridge