Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: fpdfsdk/javascript/Document.cpp

Issue 2235883003: Make Document's 'info' property readonly (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | testing/resources/javascript/document_props_expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "fpdfsdk/javascript/Document.h" 7 #include "fpdfsdk/javascript/Document.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 742
743 FX_BOOL Document::author(IJS_Context* cc, 743 FX_BOOL Document::author(IJS_Context* cc,
744 CJS_PropValue& vp, 744 CJS_PropValue& vp,
745 CFX_WideString& sError) { 745 CFX_WideString& sError) {
746 return getPropertyInternal(cc, vp, "Author", sError); 746 return getPropertyInternal(cc, vp, "Author", sError);
747 } 747 }
748 748
749 FX_BOOL Document::info(IJS_Context* cc, 749 FX_BOOL Document::info(IJS_Context* cc,
750 CJS_PropValue& vp, 750 CJS_PropValue& vp,
751 CFX_WideString& sError) { 751 CFX_WideString& sError) {
752 if (vp.IsSetting()) {
753 CJS_Context* pContext = static_cast<CJS_Context*>(cc);
754 sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY);
755 return FALSE;
756 }
757
752 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo(); 758 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo();
753 if (!pDictionary) 759 if (!pDictionary)
754 return FALSE; 760 return FALSE;
755 761
756 CFX_WideString cwAuthor = pDictionary->GetUnicodeTextBy("Author"); 762 CFX_WideString cwAuthor = pDictionary->GetUnicodeTextBy("Author");
757 CFX_WideString cwTitle = pDictionary->GetUnicodeTextBy("Title"); 763 CFX_WideString cwTitle = pDictionary->GetUnicodeTextBy("Title");
758 CFX_WideString cwSubject = pDictionary->GetUnicodeTextBy("Subject"); 764 CFX_WideString cwSubject = pDictionary->GetUnicodeTextBy("Subject");
759 CFX_WideString cwKeywords = pDictionary->GetUnicodeTextBy("Keywords"); 765 CFX_WideString cwKeywords = pDictionary->GetUnicodeTextBy("Keywords");
760 CFX_WideString cwCreator = pDictionary->GetUnicodeTextBy("Creator"); 766 CFX_WideString cwCreator = pDictionary->GetUnicodeTextBy("Creator");
761 CFX_WideString cwProducer = pDictionary->GetUnicodeTextBy("Producer"); 767 CFX_WideString cwProducer = pDictionary->GetUnicodeTextBy("Producer");
762 CFX_WideString cwCreationDate = pDictionary->GetUnicodeTextBy("CreationDate"); 768 CFX_WideString cwCreationDate = pDictionary->GetUnicodeTextBy("CreationDate");
763 CFX_WideString cwModDate = pDictionary->GetUnicodeTextBy("ModDate"); 769 CFX_WideString cwModDate = pDictionary->GetUnicodeTextBy("ModDate");
764 CFX_WideString cwTrapped = pDictionary->GetUnicodeTextBy("Trapped"); 770 CFX_WideString cwTrapped = pDictionary->GetUnicodeTextBy("Trapped");
765 771
772 CJS_Context* pContext = (CJS_Context*)cc;
773 CJS_Runtime* pRuntime = pContext->GetJSRuntime();
774 v8::Local<v8::Object> pObj =
775 FXJS_NewFxDynamicObj(pRuntime->GetIsolate(), pRuntime, -1);
776
766 v8::Isolate* isolate = GetIsolate(cc); 777 v8::Isolate* isolate = GetIsolate(cc);
767 if (vp.IsGetting()) { 778 FXJS_PutObjectString(isolate, pObj, L"Author", cwAuthor);
768 CJS_Context* pContext = (CJS_Context*)cc; 779 FXJS_PutObjectString(isolate, pObj, L"Title", cwTitle);
769 CJS_Runtime* pRuntime = pContext->GetJSRuntime(); 780 FXJS_PutObjectString(isolate, pObj, L"Subject", cwSubject);
770 v8::Local<v8::Object> pObj = 781 FXJS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords);
771 FXJS_NewFxDynamicObj(pRuntime->GetIsolate(), pRuntime, -1); 782 FXJS_PutObjectString(isolate, pObj, L"Creator", cwCreator);
772 FXJS_PutObjectString(isolate, pObj, L"Author", cwAuthor); 783 FXJS_PutObjectString(isolate, pObj, L"Producer", cwProducer);
773 FXJS_PutObjectString(isolate, pObj, L"Title", cwTitle); 784 FXJS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate);
774 FXJS_PutObjectString(isolate, pObj, L"Subject", cwSubject); 785 FXJS_PutObjectString(isolate, pObj, L"ModDate", cwModDate);
775 FXJS_PutObjectString(isolate, pObj, L"Keywords", cwKeywords); 786 FXJS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped);
776 FXJS_PutObjectString(isolate, pObj, L"Creator", cwCreator);
777 FXJS_PutObjectString(isolate, pObj, L"Producer", cwProducer);
778 FXJS_PutObjectString(isolate, pObj, L"CreationDate", cwCreationDate);
779 FXJS_PutObjectString(isolate, pObj, L"ModDate", cwModDate);
780 FXJS_PutObjectString(isolate, pObj, L"Trapped", cwTrapped);
781 787
782 // It's to be compatible to non-standard info dictionary. 788 // It's to be compatible to non-standard info dictionary.
783 for (const auto& it : *pDictionary) { 789 for (const auto& it : *pDictionary) {
784 const CFX_ByteString& bsKey = it.first; 790 const CFX_ByteString& bsKey = it.first;
785 CPDF_Object* pValueObj = it.second; 791 CPDF_Object* pValueObj = it.second;
786 CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC()); 792 CFX_WideString wsKey = CFX_WideString::FromUTF8(bsKey.AsStringC());
787 if (pValueObj->IsString() || pValueObj->IsName()) { 793 if (pValueObj->IsString() || pValueObj->IsName()) {
788 FXJS_PutObjectString(isolate, pObj, wsKey, pValueObj->GetUnicodeText()); 794 FXJS_PutObjectString(isolate, pObj, wsKey, pValueObj->GetUnicodeText());
789 } else if (pValueObj->IsNumber()) { 795 } else if (pValueObj->IsNumber()) {
790 FXJS_PutObjectNumber(isolate, pObj, wsKey, 796 FXJS_PutObjectNumber(isolate, pObj, wsKey, (float)pValueObj->GetNumber());
791 (float)pValueObj->GetNumber()); 797 } else if (pValueObj->IsBoolean()) {
792 } else if (pValueObj->IsBoolean()) { 798 FXJS_PutObjectBoolean(isolate, pObj, wsKey, !!pValueObj->GetInteger());
793 FXJS_PutObjectBoolean(isolate, pObj, wsKey, !!pValueObj->GetInteger());
794 }
795 } 799 }
796 vp << pObj;
797 } 800 }
801 vp << pObj;
798 return TRUE; 802 return TRUE;
799 } 803 }
800 804
801 FX_BOOL Document::getPropertyInternal(IJS_Context* cc, 805 FX_BOOL Document::getPropertyInternal(IJS_Context* cc,
802 CJS_PropValue& vp, 806 CJS_PropValue& vp,
803 const CFX_ByteString& propName, 807 const CFX_ByteString& propName,
804 CFX_WideString& sError) { 808 CFX_WideString& sError) {
805 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo(); 809 CPDF_Dictionary* pDictionary = m_pDocument->GetPDFDocument()->GetInfo();
806 if (!pDictionary) 810 if (!pDictionary)
807 return FALSE; 811 return FALSE;
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
1574 } 1578 }
1575 } 1579 }
1576 1580
1577 for (const auto& pData : DelayDataForFieldAndControlIndex) 1581 for (const auto& pData : DelayDataForFieldAndControlIndex)
1578 Field::DoDelay(m_pDocument, pData.get()); 1582 Field::DoDelay(m_pDocument, pData.get());
1579 } 1583 }
1580 1584
1581 CJS_Document* Document::GetCJSDoc() const { 1585 CJS_Document* Document::GetCJSDoc() const {
1582 return static_cast<CJS_Document*>(m_pJSObject); 1586 return static_cast<CJS_Document*>(m_pJSObject);
1583 } 1587 }
OLDNEW
« no previous file with comments | « no previous file | testing/resources/javascript/document_props_expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698