blob: f4eab267416fb2b653b48bc1ba72b516996e06fb [file] [log] [blame]
Dan Sinclair451e4c82017-10-30 15:35:42 +00001// Copyright 2017 PDFium Authors. All rights reserved.
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07002// 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 Sinclaire0345a42017-10-30 20:20:42 +00007#ifndef FXJS_CJS_DOCUMENT_H_
8#define FXJS_CJS_DOCUMENT_H_
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -07009
Tom Sepez6ba32d92016-01-05 16:26:32 -080010#include <list>
11#include <memory>
Dan Sinclair3ebd1212016-03-09 09:59:23 -050012#include <vector>
Tom Sepez6ba32d92016-01-05 16:26:32 -080013
Tom Sepez2cbae732018-06-26 15:11:28 +000014#include "core/fxcrt/observable.h"
Lei Zhang31beedc2018-10-18 21:09:55 +000015#include "fxjs/cjs_object.h"
Tom Sepez221f0b32018-06-04 22:11:27 +000016#include "fxjs/js_define.h"
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070017
Lei Zhang073ecf42018-10-11 16:56:00 +000018class CPDFSDK_InteractiveForm;
19class CPDF_InteractiveForm;
Dan Sinclair451e4c82017-10-30 15:35:42 +000020class CPDF_TextObject;
Lei Zhang313c4252017-02-27 16:37:36 -080021struct CJS_DelayData;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -070022
Tom Sepez55865452018-08-27 20:18:04 +000023class CJS_Document final : public CJS_Object, public Observable<CJS_Document> {
Nico Weber9d8ec5a2015-08-04 13:00:21 -070024 public:
Dan Sinclairf7435522018-02-05 22:27:22 +000025 static int GetObjDefnID();
26 static void DefineJSObjects(CFXJS_Engine* pEngine);
27
Tom Sepez36aae4f2018-06-04 19:44:37 +000028 CJS_Document(v8::Local<v8::Object> pObject, CJS_Runtime* pRuntime);
Dan Sinclairf7435522018-02-05 22:27:22 +000029 ~CJS_Document() override;
30
Dan Sinclairf7435522018-02-05 22:27:22 +000031 void SetFormFillEnv(CPDFSDK_FormFillEnvironment* pFormFillEnv);
32 CPDFSDK_FormFillEnvironment* GetFormFillEnv() const {
33 return m_pFormFillEnv.Get();
34 }
35 void AddDelayData(std::unique_ptr<CJS_DelayData> pData);
36 void DoFieldDelay(const WideString& sFieldName, int nControlIndex);
37
Nico Weber563f62a2019-02-12 18:47:12 +000038 JS_STATIC_PROP(ADBE, ADBE, CJS_Document)
39 JS_STATIC_PROP(author, author, CJS_Document)
40 JS_STATIC_PROP(baseURL, base_URL, CJS_Document)
41 JS_STATIC_PROP(bookmarkRoot, bookmark_root, CJS_Document)
42 JS_STATIC_PROP(calculate, calculate, CJS_Document)
43 JS_STATIC_PROP(Collab, collab, CJS_Document)
44 JS_STATIC_PROP(creationDate, creation_date, CJS_Document)
45 JS_STATIC_PROP(creator, creator, CJS_Document)
46 JS_STATIC_PROP(delay, delay, CJS_Document)
47 JS_STATIC_PROP(dirty, dirty, CJS_Document)
48 JS_STATIC_PROP(documentFileName, document_file_name, CJS_Document)
49 JS_STATIC_PROP(external, external, CJS_Document)
50 JS_STATIC_PROP(filesize, filesize, CJS_Document)
51 JS_STATIC_PROP(icons, icons, CJS_Document)
52 JS_STATIC_PROP(info, info, CJS_Document)
53 JS_STATIC_PROP(keywords, keywords, CJS_Document)
54 JS_STATIC_PROP(layout, layout, CJS_Document)
55 JS_STATIC_PROP(media, media, CJS_Document)
56 JS_STATIC_PROP(modDate, mod_date, CJS_Document)
57 JS_STATIC_PROP(mouseX, mouse_x, CJS_Document)
58 JS_STATIC_PROP(mouseY, mouse_y, CJS_Document)
59 JS_STATIC_PROP(numFields, num_fields, CJS_Document)
60 JS_STATIC_PROP(numPages, num_pages, CJS_Document)
61 JS_STATIC_PROP(pageNum, page_num, CJS_Document)
62 JS_STATIC_PROP(pageWindowRect, page_window_rect, CJS_Document)
63 JS_STATIC_PROP(path, path, CJS_Document)
64 JS_STATIC_PROP(producer, producer, CJS_Document)
65 JS_STATIC_PROP(subject, subject, CJS_Document)
66 JS_STATIC_PROP(title, title, CJS_Document)
67 JS_STATIC_PROP(URL, URL, CJS_Document)
68 JS_STATIC_PROP(zoom, zoom, CJS_Document)
69 JS_STATIC_PROP(zoomType, zoom_type, CJS_Document)
Dan Sinclairf7435522018-02-05 22:27:22 +000070
Nico Weber563f62a2019-02-12 18:47:12 +000071 JS_STATIC_METHOD(addAnnot, CJS_Document)
72 JS_STATIC_METHOD(addField, CJS_Document)
73 JS_STATIC_METHOD(addLink, CJS_Document)
74 JS_STATIC_METHOD(addIcon, CJS_Document)
75 JS_STATIC_METHOD(calculateNow, CJS_Document)
76 JS_STATIC_METHOD(closeDoc, CJS_Document)
77 JS_STATIC_METHOD(createDataObject, CJS_Document)
78 JS_STATIC_METHOD(deletePages, CJS_Document)
79 JS_STATIC_METHOD(exportAsText, CJS_Document)
80 JS_STATIC_METHOD(exportAsFDF, CJS_Document)
81 JS_STATIC_METHOD(exportAsXFDF, CJS_Document)
82 JS_STATIC_METHOD(extractPages, CJS_Document)
83 JS_STATIC_METHOD(getAnnot, CJS_Document)
84 JS_STATIC_METHOD(getAnnots, CJS_Document)
85 JS_STATIC_METHOD(getAnnot3D, CJS_Document)
86 JS_STATIC_METHOD(getAnnots3D, CJS_Document)
87 JS_STATIC_METHOD(getField, CJS_Document)
88 JS_STATIC_METHOD(getIcon, CJS_Document)
89 JS_STATIC_METHOD(getLinks, CJS_Document)
90 JS_STATIC_METHOD(getNthFieldName, CJS_Document)
91 JS_STATIC_METHOD(getOCGs, CJS_Document)
92 JS_STATIC_METHOD(getPageBox, CJS_Document)
93 JS_STATIC_METHOD(getPageNthWord, CJS_Document)
94 JS_STATIC_METHOD(getPageNthWordQuads, CJS_Document)
95 JS_STATIC_METHOD(getPageNumWords, CJS_Document)
96 JS_STATIC_METHOD(getPrintParams, CJS_Document)
97 JS_STATIC_METHOD(getURL, CJS_Document)
98 JS_STATIC_METHOD(gotoNamedDest, CJS_Document)
99 JS_STATIC_METHOD(importAnFDF, CJS_Document)
100 JS_STATIC_METHOD(importAnXFDF, CJS_Document)
101 JS_STATIC_METHOD(importTextData, CJS_Document)
102 JS_STATIC_METHOD(insertPages, CJS_Document)
103 JS_STATIC_METHOD(mailDoc, CJS_Document)
104 JS_STATIC_METHOD(mailForm, CJS_Document)
105 JS_STATIC_METHOD(print, CJS_Document)
106 JS_STATIC_METHOD(removeField, CJS_Document)
107 JS_STATIC_METHOD(replacePages, CJS_Document)
108 JS_STATIC_METHOD(removeIcon, CJS_Document)
109 JS_STATIC_METHOD(resetForm, CJS_Document)
110 JS_STATIC_METHOD(saveAs, CJS_Document)
111 JS_STATIC_METHOD(submitForm, CJS_Document)
112 JS_STATIC_METHOD(syncAnnotScan, CJS_Document)
Dan Sinclairf7435522018-02-05 22:27:22 +0000113
114 private:
115 static int ObjDefnID;
116 static const char kName[];
117 static const JSPropertySpec PropertySpecs[];
118 static const JSMethodSpec MethodSpecs[];
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700119
Tom Sepez3a6d0582018-08-17 19:28:52 +0000120 CJS_Result get_ADBE(CJS_Runtime* pRuntime);
121 CJS_Result set_ADBE(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400122
Tom Sepez3a6d0582018-08-17 19:28:52 +0000123 CJS_Result get_author(CJS_Runtime* pRuntime);
124 CJS_Result set_author(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400125
Tom Sepez3a6d0582018-08-17 19:28:52 +0000126 CJS_Result get_base_URL(CJS_Runtime* pRuntime);
127 CJS_Result set_base_URL(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400128
Tom Sepez3a6d0582018-08-17 19:28:52 +0000129 CJS_Result get_bookmark_root(CJS_Runtime* pRuntime);
130 CJS_Result set_bookmark_root(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400131
Tom Sepez3a6d0582018-08-17 19:28:52 +0000132 CJS_Result get_calculate(CJS_Runtime* pRuntime);
133 CJS_Result set_calculate(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400134
Tom Sepez3a6d0582018-08-17 19:28:52 +0000135 CJS_Result get_collab(CJS_Runtime* pRuntime);
136 CJS_Result set_collab(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400137
Tom Sepez3a6d0582018-08-17 19:28:52 +0000138 CJS_Result get_creation_date(CJS_Runtime* pRuntime);
139 CJS_Result set_creation_date(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400140
Tom Sepez3a6d0582018-08-17 19:28:52 +0000141 CJS_Result get_creator(CJS_Runtime* pRuntime);
142 CJS_Result set_creator(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400143
Tom Sepez3a6d0582018-08-17 19:28:52 +0000144 CJS_Result get_delay(CJS_Runtime* pRuntime);
145 CJS_Result set_delay(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400146
Tom Sepez3a6d0582018-08-17 19:28:52 +0000147 CJS_Result get_dirty(CJS_Runtime* pRuntime);
148 CJS_Result set_dirty(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400149
Tom Sepez3a6d0582018-08-17 19:28:52 +0000150 CJS_Result get_document_file_name(CJS_Runtime* pRuntime);
151 CJS_Result set_document_file_name(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400152 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400153
Tom Sepez3a6d0582018-08-17 19:28:52 +0000154 CJS_Result get_external(CJS_Runtime* pRuntime);
155 CJS_Result set_external(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400156
Tom Sepez3a6d0582018-08-17 19:28:52 +0000157 CJS_Result get_filesize(CJS_Runtime* pRuntime);
158 CJS_Result set_filesize(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400159
Tom Sepez3a6d0582018-08-17 19:28:52 +0000160 CJS_Result get_icons(CJS_Runtime* pRuntime);
161 CJS_Result set_icons(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400162
Tom Sepez3a6d0582018-08-17 19:28:52 +0000163 CJS_Result get_info(CJS_Runtime* pRuntime);
164 CJS_Result set_info(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400165
Tom Sepez3a6d0582018-08-17 19:28:52 +0000166 CJS_Result get_keywords(CJS_Runtime* pRuntime);
167 CJS_Result set_keywords(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400168
Tom Sepez3a6d0582018-08-17 19:28:52 +0000169 CJS_Result get_layout(CJS_Runtime* pRuntime);
170 CJS_Result set_layout(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400171
Tom Sepez3a6d0582018-08-17 19:28:52 +0000172 CJS_Result get_media(CJS_Runtime* pRuntime);
173 CJS_Result set_media(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400174
Tom Sepez3a6d0582018-08-17 19:28:52 +0000175 CJS_Result get_mod_date(CJS_Runtime* pRuntime);
176 CJS_Result set_mod_date(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400177
Tom Sepez3a6d0582018-08-17 19:28:52 +0000178 CJS_Result get_mouse_x(CJS_Runtime* pRuntime);
179 CJS_Result set_mouse_x(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400180
Tom Sepez3a6d0582018-08-17 19:28:52 +0000181 CJS_Result get_mouse_y(CJS_Runtime* pRuntime);
182 CJS_Result set_mouse_y(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400183
Tom Sepez3a6d0582018-08-17 19:28:52 +0000184 CJS_Result get_num_fields(CJS_Runtime* pRuntime);
185 CJS_Result set_num_fields(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400186
Tom Sepez3a6d0582018-08-17 19:28:52 +0000187 CJS_Result get_num_pages(CJS_Runtime* pRuntime);
188 CJS_Result set_num_pages(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400189
Tom Sepez3a6d0582018-08-17 19:28:52 +0000190 CJS_Result get_page_num(CJS_Runtime* pRuntime);
191 CJS_Result set_page_num(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400192
Tom Sepez3a6d0582018-08-17 19:28:52 +0000193 CJS_Result get_page_window_rect(CJS_Runtime* pRuntime);
194 CJS_Result set_page_window_rect(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400195 v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400196
Tom Sepez3a6d0582018-08-17 19:28:52 +0000197 CJS_Result get_path(CJS_Runtime* pRuntime);
198 CJS_Result set_path(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400199
Tom Sepez3a6d0582018-08-17 19:28:52 +0000200 CJS_Result get_producer(CJS_Runtime* pRuntime);
201 CJS_Result set_producer(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400202
Tom Sepez3a6d0582018-08-17 19:28:52 +0000203 CJS_Result get_subject(CJS_Runtime* pRuntime);
204 CJS_Result set_subject(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400205
Tom Sepez3a6d0582018-08-17 19:28:52 +0000206 CJS_Result get_title(CJS_Runtime* pRuntime);
207 CJS_Result set_title(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400208
Tom Sepez3a6d0582018-08-17 19:28:52 +0000209 CJS_Result get_zoom(CJS_Runtime* pRuntime);
210 CJS_Result set_zoom(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400211
Tom Sepez3a6d0582018-08-17 19:28:52 +0000212 CJS_Result get_zoom_type(CJS_Runtime* pRuntime);
213 CJS_Result set_zoom_type(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
dan sinclaircbe23db2017-10-19 14:29:33 -0400214
Tom Sepez3a6d0582018-08-17 19:28:52 +0000215 CJS_Result get_URL(CJS_Runtime* pRuntime);
216 CJS_Result set_URL(CJS_Runtime* pRuntime, v8::Local<v8::Value> vp);
tsepez4cf55152016-11-02 14:37:54 -0700217
Tom Sepez3a6d0582018-08-17 19:28:52 +0000218 CJS_Result addAnnot(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400219 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000220 CJS_Result addField(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400221 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000222 CJS_Result addLink(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400223 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000224 CJS_Result addIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400225 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000226 CJS_Result calculateNow(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400227 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000228 CJS_Result closeDoc(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400229 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000230 CJS_Result createDataObject(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400231 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000232 CJS_Result deletePages(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400233 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000234 CJS_Result exportAsText(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400235 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000236 CJS_Result exportAsFDF(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400237 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000238 CJS_Result exportAsXFDF(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400239 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000240 CJS_Result extractPages(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400241 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000242 CJS_Result getAnnot(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400243 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000244 CJS_Result getAnnots(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400245 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000246 CJS_Result getAnnot3D(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400247 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000248 CJS_Result getAnnots3D(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400249 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000250 CJS_Result getField(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400251 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000252 CJS_Result getIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400253 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000254 CJS_Result getLinks(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400255 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000256 CJS_Result getNthFieldName(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400257 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000258 CJS_Result getOCGs(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400259 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000260 CJS_Result getPageBox(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400261 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000262 CJS_Result getPageNthWord(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400263 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000264 CJS_Result getPageNthWordQuads(
Dan Sinclair8f524d62017-10-25 13:30:31 -0400265 CJS_Runtime* pRuntime,
266 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000267 CJS_Result getPageNumWords(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400268 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000269 CJS_Result getPrintParams(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400270 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000271 CJS_Result getURL(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400272 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000273 CJS_Result gotoNamedDest(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400274 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000275 CJS_Result importAnFDF(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400276 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000277 CJS_Result importAnXFDF(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400278 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000279 CJS_Result importTextData(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400280 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000281 CJS_Result insertPages(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400282 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000283 CJS_Result mailForm(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400284 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000285 CJS_Result print(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400286 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000287 CJS_Result removeField(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400288 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000289 CJS_Result replacePages(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400290 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000291 CJS_Result resetForm(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400292 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000293 CJS_Result saveAs(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400294 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000295 CJS_Result submitForm(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400296 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000297 CJS_Result syncAnnotScan(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400298 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000299 CJS_Result mailDoc(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400300 const std::vector<v8::Local<v8::Value>>& params);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000301 CJS_Result removeIcon(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400302 const std::vector<v8::Local<v8::Value>>& params);
Lei Zhanga6d9f0e2015-06-13 00:48:38 -0700303
Tom Sepez3a6d0582018-08-17 19:28:52 +0000304 CJS_Result getPropertyInternal(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400305 const ByteString& propName);
Tom Sepez3a6d0582018-08-17 19:28:52 +0000306 CJS_Result setPropertyInternal(CJS_Runtime* pRuntime,
Dan Sinclair8f524d62017-10-25 13:30:31 -0400307 v8::Local<v8::Value> vp,
308 const ByteString& propName);
tonikitooea3ff9e2016-08-02 11:52:28 -0700309
Lei Zhang073ecf42018-10-11 16:56:00 +0000310 CPDF_InteractiveForm* GetCoreInteractiveForm();
311 CPDFSDK_InteractiveForm* GetSDKInteractiveForm();
Lei Zhangab226472018-10-09 20:44:55 +0000312
Ryan Harrison275e2602017-09-18 14:23:18 -0400313 WideString m_cwBaseURL;
Tom Sepez36aae4f2018-06-04 19:44:37 +0000314 CPDFSDK_FormFillEnvironment::ObservedPtr m_pFormFillEnv;
Tom Sepez56c10192016-03-15 12:34:17 -0700315 std::list<std::unique_ptr<CJS_DelayData>> m_DelayData;
Lei Zhang313c4252017-02-27 16:37:36 -0800316 // Needs to be a std::list for iterator stability.
Ryan Harrison275e2602017-09-18 14:23:18 -0400317 std::list<WideString> m_IconNames;
Tom Sepez36aae4f2018-06-04 19:44:37 +0000318 bool m_bDelay = false;
John Abd-El-Malek3f3b45c2014-05-23 17:28:10 -0700319};
320
Dan Sinclaire0345a42017-10-30 20:20:42 +0000321#endif // FXJS_CJS_DOCUMENT_H_