OLD | NEW |
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/jsapi/include/fxjs_v8.h" | 7 #include "fpdfsdk/jsapi/include/fxjs_v8.h" |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
576 } | 576 } |
577 | 577 |
578 void FXJS_FreePrivate(v8::Local<v8::Object> pObj) { | 578 void FXJS_FreePrivate(v8::Local<v8::Object> pObj) { |
579 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) | 579 if (pObj.IsEmpty() || !pObj->InternalFieldCount()) |
580 return; | 580 return; |
581 FXJS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0)); | 581 FXJS_FreePrivate(pObj->GetAlignedPointerFromInternalField(0)); |
582 pObj->SetAlignedPointerInInternalField(0, NULL); | 582 pObj->SetAlignedPointerInInternalField(0, NULL); |
583 } | 583 } |
584 | 584 |
585 v8::Local<v8::String> FXJS_WSToJSString(v8::Isolate* pIsolate, | 585 v8::Local<v8::String> FXJS_WSToJSString(v8::Isolate* pIsolate, |
586 const wchar_t* PropertyName, | 586 const CFX_WideString& wsPropertyName) { |
587 int Len) { | 587 CFX_ByteString bs = wsPropertyName.UTF8Encode(); |
588 CFX_WideString ws = CFX_WideString(PropertyName, Len); | |
589 CFX_ByteString bs = ws.UTF8Encode(); | |
590 if (!pIsolate) | 588 if (!pIsolate) |
591 pIsolate = v8::Isolate::GetCurrent(); | 589 pIsolate = v8::Isolate::GetCurrent(); |
592 return v8::String::NewFromUtf8(pIsolate, bs.c_str(), | 590 return v8::String::NewFromUtf8(pIsolate, bs.c_str(), |
593 v8::NewStringType::kNormal) | 591 v8::NewStringType::kNormal, bs.GetLength()) |
594 .ToLocalChecked(); | 592 .ToLocalChecked(); |
595 } | 593 } |
596 | 594 |
597 v8::Local<v8::Value> FXJS_GetObjectElement(v8::Isolate* pIsolate, | 595 v8::Local<v8::Value> FXJS_GetObjectElement( |
598 v8::Local<v8::Object> pObj, | 596 v8::Isolate* pIsolate, |
599 const wchar_t* PropertyName) { | 597 v8::Local<v8::Object> pObj, |
| 598 const CFX_WideString& wsPropertyName) { |
600 if (pObj.IsEmpty()) | 599 if (pObj.IsEmpty()) |
601 return v8::Local<v8::Value>(); | 600 return v8::Local<v8::Value>(); |
602 v8::Local<v8::Value> val; | 601 v8::Local<v8::Value> val; |
603 if (!pObj->Get(pIsolate->GetCurrentContext(), | 602 if (!pObj->Get(pIsolate->GetCurrentContext(), |
604 FXJS_WSToJSString(pIsolate, PropertyName)) | 603 FXJS_WSToJSString(pIsolate, wsPropertyName)) |
605 .ToLocal(&val)) | 604 .ToLocal(&val)) |
606 return v8::Local<v8::Value>(); | 605 return v8::Local<v8::Value>(); |
607 return val; | 606 return val; |
608 } | 607 } |
609 | 608 |
610 v8::Local<v8::Array> FXJS_GetObjectElementNames(v8::Isolate* pIsolate, | 609 v8::Local<v8::Array> FXJS_GetObjectElementNames(v8::Isolate* pIsolate, |
611 v8::Local<v8::Object> pObj) { | 610 v8::Local<v8::Object> pObj) { |
612 if (pObj.IsEmpty()) | 611 if (pObj.IsEmpty()) |
613 return v8::Local<v8::Array>(); | 612 return v8::Local<v8::Array>(); |
614 v8::Local<v8::Array> val; | 613 v8::Local<v8::Array> val; |
615 if (!pObj->GetPropertyNames(pIsolate->GetCurrentContext()).ToLocal(&val)) | 614 if (!pObj->GetPropertyNames(pIsolate->GetCurrentContext()).ToLocal(&val)) |
616 return v8::Local<v8::Array>(); | 615 return v8::Local<v8::Array>(); |
617 return val; | 616 return val; |
618 } | 617 } |
619 | 618 |
620 void FXJS_PutObjectString(v8::Isolate* pIsolate, | 619 void FXJS_PutObjectString(v8::Isolate* pIsolate, |
621 v8::Local<v8::Object> pObj, | 620 v8::Local<v8::Object> pObj, |
622 const wchar_t* PropertyName, | 621 const CFX_WideString& wsPropertyName, |
623 const wchar_t* sValue) { | 622 const CFX_WideString& wsValue) { |
624 if (pObj.IsEmpty()) | 623 if (pObj.IsEmpty()) |
625 return; | 624 return; |
626 pObj->Set(pIsolate->GetCurrentContext(), | 625 pObj->Set(pIsolate->GetCurrentContext(), |
627 FXJS_WSToJSString(pIsolate, PropertyName), | 626 FXJS_WSToJSString(pIsolate, wsPropertyName), |
628 FXJS_WSToJSString(pIsolate, sValue)) | 627 FXJS_WSToJSString(pIsolate, wsValue)) |
629 .FromJust(); | 628 .FromJust(); |
630 } | 629 } |
631 | 630 |
632 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, | 631 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
633 v8::Local<v8::Object> pObj, | 632 v8::Local<v8::Object> pObj, |
634 const wchar_t* PropertyName, | 633 const CFX_WideString& wsPropertyName, |
635 int nValue) { | 634 int nValue) { |
636 if (pObj.IsEmpty()) | 635 if (pObj.IsEmpty()) |
637 return; | 636 return; |
638 pObj->Set(pIsolate->GetCurrentContext(), | 637 pObj->Set(pIsolate->GetCurrentContext(), |
639 FXJS_WSToJSString(pIsolate, PropertyName), | 638 FXJS_WSToJSString(pIsolate, wsPropertyName), |
640 v8::Int32::New(pIsolate, nValue)) | 639 v8::Int32::New(pIsolate, nValue)) |
641 .FromJust(); | 640 .FromJust(); |
642 } | 641 } |
643 | 642 |
644 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, | 643 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
645 v8::Local<v8::Object> pObj, | 644 v8::Local<v8::Object> pObj, |
646 const wchar_t* PropertyName, | 645 const CFX_WideString& wsPropertyName, |
647 float fValue) { | 646 float fValue) { |
648 if (pObj.IsEmpty()) | 647 if (pObj.IsEmpty()) |
649 return; | 648 return; |
650 pObj->Set(pIsolate->GetCurrentContext(), | 649 pObj->Set(pIsolate->GetCurrentContext(), |
651 FXJS_WSToJSString(pIsolate, PropertyName), | 650 FXJS_WSToJSString(pIsolate, wsPropertyName), |
652 v8::Number::New(pIsolate, (double)fValue)) | 651 v8::Number::New(pIsolate, (double)fValue)) |
653 .FromJust(); | 652 .FromJust(); |
654 } | 653 } |
655 | 654 |
656 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, | 655 void FXJS_PutObjectNumber(v8::Isolate* pIsolate, |
657 v8::Local<v8::Object> pObj, | 656 v8::Local<v8::Object> pObj, |
658 const wchar_t* PropertyName, | 657 const CFX_WideString& wsPropertyName, |
659 double dValue) { | 658 double dValue) { |
660 if (pObj.IsEmpty()) | 659 if (pObj.IsEmpty()) |
661 return; | 660 return; |
662 pObj->Set(pIsolate->GetCurrentContext(), | 661 pObj->Set(pIsolate->GetCurrentContext(), |
663 FXJS_WSToJSString(pIsolate, PropertyName), | 662 FXJS_WSToJSString(pIsolate, wsPropertyName), |
664 v8::Number::New(pIsolate, (double)dValue)) | 663 v8::Number::New(pIsolate, (double)dValue)) |
665 .FromJust(); | 664 .FromJust(); |
666 } | 665 } |
667 | 666 |
668 void FXJS_PutObjectBoolean(v8::Isolate* pIsolate, | 667 void FXJS_PutObjectBoolean(v8::Isolate* pIsolate, |
669 v8::Local<v8::Object> pObj, | 668 v8::Local<v8::Object> pObj, |
670 const wchar_t* PropertyName, | 669 const CFX_WideString& wsPropertyName, |
671 bool bValue) { | 670 bool bValue) { |
672 if (pObj.IsEmpty()) | 671 if (pObj.IsEmpty()) |
673 return; | 672 return; |
674 pObj->Set(pIsolate->GetCurrentContext(), | 673 pObj->Set(pIsolate->GetCurrentContext(), |
675 FXJS_WSToJSString(pIsolate, PropertyName), | 674 FXJS_WSToJSString(pIsolate, wsPropertyName), |
676 v8::Boolean::New(pIsolate, bValue)) | 675 v8::Boolean::New(pIsolate, bValue)) |
677 .FromJust(); | 676 .FromJust(); |
678 } | 677 } |
679 | 678 |
680 void FXJS_PutObjectObject(v8::Isolate* pIsolate, | 679 void FXJS_PutObjectObject(v8::Isolate* pIsolate, |
681 v8::Local<v8::Object> pObj, | 680 v8::Local<v8::Object> pObj, |
682 const wchar_t* PropertyName, | 681 const CFX_WideString& wsPropertyName, |
683 v8::Local<v8::Object> pPut) { | 682 v8::Local<v8::Object> pPut) { |
684 if (pObj.IsEmpty()) | 683 if (pObj.IsEmpty()) |
685 return; | 684 return; |
686 pObj->Set(pIsolate->GetCurrentContext(), | 685 pObj->Set(pIsolate->GetCurrentContext(), |
687 FXJS_WSToJSString(pIsolate, PropertyName), pPut) | 686 FXJS_WSToJSString(pIsolate, wsPropertyName), pPut) |
688 .FromJust(); | 687 .FromJust(); |
689 } | 688 } |
690 | 689 |
691 void FXJS_PutObjectNull(v8::Isolate* pIsolate, | 690 void FXJS_PutObjectNull(v8::Isolate* pIsolate, |
692 v8::Local<v8::Object> pObj, | 691 v8::Local<v8::Object> pObj, |
693 const wchar_t* PropertyName) { | 692 const CFX_WideString& wsPropertyName) { |
694 if (pObj.IsEmpty()) | 693 if (pObj.IsEmpty()) |
695 return; | 694 return; |
696 pObj->Set(pIsolate->GetCurrentContext(), | 695 pObj->Set(pIsolate->GetCurrentContext(), |
697 FXJS_WSToJSString(pIsolate, PropertyName), v8::Local<v8::Object>()) | 696 FXJS_WSToJSString(pIsolate, wsPropertyName), |
| 697 v8::Local<v8::Object>()) |
698 .FromJust(); | 698 .FromJust(); |
699 } | 699 } |
700 | 700 |
701 v8::Local<v8::Array> FXJS_NewArray(v8::Isolate* pIsolate) { | 701 v8::Local<v8::Array> FXJS_NewArray(v8::Isolate* pIsolate) { |
702 return v8::Array::New(pIsolate); | 702 return v8::Array::New(pIsolate); |
703 } | 703 } |
704 | 704 |
705 unsigned FXJS_PutArrayElement(v8::Isolate* pIsolate, | 705 unsigned FXJS_PutArrayElement(v8::Isolate* pIsolate, |
706 v8::Local<v8::Array> pArray, | 706 v8::Local<v8::Array> pArray, |
707 unsigned index, | 707 unsigned index, |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
814 v8::Local<v8::Value> pValue) { | 814 v8::Local<v8::Value> pValue) { |
815 if (pValue.IsEmpty()) | 815 if (pValue.IsEmpty()) |
816 return v8::Local<v8::Array>(); | 816 return v8::Local<v8::Array>(); |
817 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); | 817 v8::Local<v8::Context> context = pIsolate->GetCurrentContext(); |
818 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); | 818 return v8::Local<v8::Array>::Cast(pValue->ToObject(context).ToLocalChecked()); |
819 } | 819 } |
820 | 820 |
821 void FXJS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { | 821 void FXJS_ValueCopy(v8::Local<v8::Value>& pTo, v8::Local<v8::Value> pFrom) { |
822 pTo = pFrom; | 822 pTo = pFrom; |
823 } | 823 } |
OLD | NEW |