| 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 |