blob: d97029765d0625a27874d98432e4b0646e36fbd8 [file] [log] [blame]
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07001// Copyright 2014 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.
Lei Zhanga6d9f0e2015-06-13 00:48:38 -07004
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07005// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
Dan Sinclairf766ad22016-03-14 13:51:24 -04007#include "fpdfsdk/javascript/JS_Object.h"
Tom Sepez37458412015-10-06 11:33:46 -07008
dsinclair64376be2016-03-31 20:03:24 -07009#include "fpdfsdk/include/fsdk_mgr.h"
Dan Sinclairf766ad22016-03-14 13:51:24 -040010#include "fpdfsdk/javascript/JS_Define.h"
dsinclair64376be2016-03-31 20:03:24 -070011#include "fpdfsdk/javascript/cjs_context.h"
Lei Zhangd607f5b2015-10-05 17:06:09 -070012
Nico Weber9d8ec5a2015-08-04 13:00:21 -070013CJS_EmbedObj::CJS_EmbedObj(CJS_Object* pJSObject) : m_pJSObject(pJSObject) {}
14
15CJS_EmbedObj::~CJS_EmbedObj() {
thestig1cd352e2016-06-07 17:53:06 -070016 m_pJSObject = nullptr;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070017}
18
Nico Weber9d8ec5a2015-08-04 13:00:21 -070019void FreeObject(const v8::WeakCallbackInfo<CJS_Object>& data) {
20 CJS_Object* pJSObj = data.GetParameter();
21 pJSObj->ExitInstance();
22 delete pJSObj;
Tom Sepez39bfe122015-09-17 15:25:23 -070023 FXJS_FreePrivate(data.GetInternalField(0));
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070024}
25
Nico Weber9d8ec5a2015-08-04 13:00:21 -070026void DisposeObject(const v8::WeakCallbackInfo<CJS_Object>& data) {
27 CJS_Object* pJSObj = data.GetParameter();
28 pJSObj->Dispose();
29 data.SetSecondPassCallback(FreeObject);
Jochen Eisingerdfa2c992015-05-19 00:38:00 +020030}
31
Tom Sepez116e4ad2015-09-21 09:22:05 -070032CJS_Object::CJS_Object(v8::Local<v8::Object> pObject) {
Tom Sepez371379d2015-11-06 08:29:39 -080033 m_pIsolate = pObject->GetIsolate();
Tom Sepez116e4ad2015-09-21 09:22:05 -070034 m_pV8Object.Reset(m_pIsolate, pObject);
35}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070036
Dan Sinclairf766ad22016-03-14 13:51:24 -040037CJS_Object::~CJS_Object() {}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070038
Nico Weber9d8ec5a2015-08-04 13:00:21 -070039void CJS_Object::MakeWeak() {
Tom Sepez116e4ad2015-09-21 09:22:05 -070040 m_pV8Object.SetWeak(this, DisposeObject,
41 v8::WeakCallbackType::kInternalFields);
Jochen Eisingerdfa2c992015-05-19 00:38:00 +020042}
43
Nico Weber9d8ec5a2015-08-04 13:00:21 -070044void CJS_Object::Dispose() {
Tom Sepez116e4ad2015-09-21 09:22:05 -070045 m_pV8Object.Reset();
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070046}
47
weili625ad662016-06-15 11:21:33 -070048void CJS_Object::InitInstance(IJS_Runtime* pIRuntime) {}
49
50void CJS_Object::ExitInstance() {}