blob: d3528ee7b2280567d5f609f7a99215db21ccc770 [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/console.h"
Tom Sepez37458412015-10-06 11:33:46 -07008
Dan Sinclair3ebd1212016-03-09 09:59:23 -05009#include <vector>
10
Dan Sinclairf766ad22016-03-14 13:51:24 -040011#include "fpdfsdk/javascript/JS_Define.h"
Dan Sinclairf766ad22016-03-14 13:51:24 -040012#include "fpdfsdk/javascript/JS_Object.h"
13#include "fpdfsdk/javascript/JS_Value.h"
Tom Sepezd6ae2af2017-02-16 11:49:55 -080014#include "fpdfsdk/javascript/cjs_event_context.h"
dan sinclair8b6acdd2017-10-25 20:35:19 -040015#include "fpdfsdk/javascript/cjs_eventhandler.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070016
Tom Sepez04557b82017-02-16 09:43:10 -080017JSConstSpec CJS_Console::ConstSpecs[] = {{0, JSConstSpec::Number, 0, 0}};
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070018
Tom Sepez04557b82017-02-16 09:43:10 -080019JSPropertySpec CJS_Console::PropertySpecs[] = {{0, 0, 0}};
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070020
Tom Sepez9b99b632017-02-21 15:05:57 -080021JSMethodSpec CJS_Console::MethodSpecs[] = {{"clear", clear_static},
22 {"hide", hide_static},
23 {"println", println_static},
24 {"show", show_static},
Tom Sepez04557b82017-02-16 09:43:10 -080025 {0, 0}};
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070026
Dan Sinclair89d26c82017-10-26 12:21:28 -040027const char* CJS_Console::g_pClassName = "console";
28int CJS_Console::g_nObjDefnID = -1;
29
30void CJS_Console::DefineConsts(CFXJS_Engine* pEngine) {
31 for (size_t i = 0; i < FX_ArraySize(ConstSpecs) - 1; ++i) {
32 pEngine->DefineObjConst(
33 g_nObjDefnID, ConstSpecs[i].pName,
34 ConstSpecs[i].eType == JSConstSpec::Number
35 ? pEngine->NewNumber(ConstSpecs[i].number).As<v8::Value>()
36 : pEngine->NewString(ConstSpecs[i].pStr).As<v8::Value>());
37 }
38}
39
40void CJS_Console::JSConstructor(CFXJS_Engine* pEngine,
41 v8::Local<v8::Object> obj) {
42 CJS_Object* pObj = new CJS_Console(obj);
43 pObj->SetEmbedObject(new console(pObj));
44 pEngine->SetObjectPrivate(obj, pObj);
45 pObj->InitInstance(static_cast<CJS_Runtime*>(pEngine));
46}
47
48void CJS_Console::JSDestructor(CFXJS_Engine* pEngine,
49 v8::Local<v8::Object> obj) {
50 delete static_cast<CJS_Console*>(pEngine->GetObjectPrivate(obj));
51}
52
53void CJS_Console::DefineProps(CFXJS_Engine* pEngine) {
54 for (size_t i = 0; i < FX_ArraySize(PropertySpecs) - 1; ++i) {
55 pEngine->DefineObjProperty(g_nObjDefnID, PropertySpecs[i].pName,
56 PropertySpecs[i].pPropGet,
57 PropertySpecs[i].pPropPut);
58 }
59}
60
61void CJS_Console::DefineMethods(CFXJS_Engine* pEngine) {
62 for (size_t i = 0; i < FX_ArraySize(MethodSpecs) - 1; ++i) {
63 pEngine->DefineObjMethod(g_nObjDefnID, MethodSpecs[i].pName,
64 MethodSpecs[i].pMethodCall);
65 }
66}
67
68void CJS_Console::DefineJSObjects(CFXJS_Engine* pEngine, FXJSOBJTYPE eObjType) {
69 g_nObjDefnID = pEngine->DefineObj(CJS_Console::g_pClassName, eObjType,
70 JSConstructor, JSDestructor);
71 DefineConsts(pEngine);
72 DefineProps(pEngine);
73 DefineMethods(pEngine);
74}
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070075
Nico Weber9d8ec5a2015-08-04 13:00:21 -070076console::console(CJS_Object* pJSObject) : CJS_EmbedObj(pJSObject) {}
77
78console::~console() {}
79
Dan Sinclair8f524d62017-10-25 13:30:31 -040080CJS_Return console::clear(CJS_Runtime* pRuntime,
81 const std::vector<v8::Local<v8::Value>>& params) {
82 return CJS_Return(true);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070083}
84
Dan Sinclair8f524d62017-10-25 13:30:31 -040085CJS_Return console::hide(CJS_Runtime* pRuntime,
86 const std::vector<v8::Local<v8::Value>>& params) {
87 return CJS_Return(true);
tsepez4cf55152016-11-02 14:37:54 -070088}
89
Dan Sinclair8f524d62017-10-25 13:30:31 -040090CJS_Return console::println(CJS_Runtime* pRuntime,
91 const std::vector<v8::Local<v8::Value>>& params) {
92 return CJS_Return(params.size() > 0);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070093}
94
Dan Sinclair8f524d62017-10-25 13:30:31 -040095CJS_Return console::show(CJS_Runtime* pRuntime,
96 const std::vector<v8::Local<v8::Value>>& params) {
97 return CJS_Return(true);
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070098}