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

Side by Side Diff: fpdfsdk/jsapi/fxjs_v8.cpp

Issue 1883273003: Pass WideStrings without narrowing to c_str in javascript/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Missed one caller. Created 4 years, 8 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 | « fpdfsdk/javascript/global.cpp ('k') | fpdfsdk/jsapi/include/fxjs_v8.h » ('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/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
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
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 }
OLDNEW
« no previous file with comments | « fpdfsdk/javascript/global.cpp ('k') | fpdfsdk/jsapi/include/fxjs_v8.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698