Index: testing/embedder_test.cpp |
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp |
index 29de4caad4acc62e9069b8130f78447494637e44..1003cb51870fb31a8a4bb5e95e11b5ee829f7d0c 100644 |
--- a/testing/embedder_test.cpp |
+++ b/testing/embedder_test.cpp |
@@ -18,8 +18,8 @@ |
#include "../public/fpdf_text.h" |
#include "../public/fpdfview.h" |
#include "testing/gmock/include/gmock/gmock.h" |
-#include "v8/include/v8.h" |
#include "v8/include/libplatform/libplatform.h" |
+#include "v8/include/v8.h" |
#ifdef _WIN32 |
#define snprintf _snprintf |
@@ -95,58 +95,6 @@ static bool GetExternalData(const std::string& exe_path, |
} // namespace |
-class EmbedderTestDefaultDelegate : public EmbedderTest::Delegate { |
- public: |
- int Alert(FPDF_WIDESTRING, FPDF_WIDESTRING, int, int) override { |
- printf("Form_Alert called.\n"); |
- return 0; |
- } |
- |
- void UnsupportedHandler(int type) { |
- std::string feature = "Unknown"; |
- switch (type) { |
- case FPDF_UNSP_DOC_XFAFORM: |
- feature = "XFA"; |
- break; |
- case FPDF_UNSP_DOC_PORTABLECOLLECTION: |
- feature = "Portfolios_Packages"; |
- break; |
- case FPDF_UNSP_DOC_ATTACHMENT: |
- case FPDF_UNSP_ANNOT_ATTACHMENT: |
- feature = "Attachment"; |
- break; |
- case FPDF_UNSP_DOC_SECURITY: |
- feature = "Rights_Management"; |
- break; |
- case FPDF_UNSP_DOC_SHAREDREVIEW: |
- feature = "Shared_Review"; |
- break; |
- case FPDF_UNSP_DOC_SHAREDFORM_ACROBAT: |
- case FPDF_UNSP_DOC_SHAREDFORM_FILESYSTEM: |
- case FPDF_UNSP_DOC_SHAREDFORM_EMAIL: |
- feature = "Shared_Form"; |
- break; |
- case FPDF_UNSP_ANNOT_3DANNOT: |
- feature = "3D"; |
- break; |
- case FPDF_UNSP_ANNOT_MOVIE: |
- feature = "Movie"; |
- break; |
- case FPDF_UNSP_ANNOT_SOUND: |
- feature = "Sound"; |
- break; |
- case FPDF_UNSP_ANNOT_SCREEN_MEDIA: |
- case FPDF_UNSP_ANNOT_SCREEN_RICHMEDIA: |
- feature = "Screen"; |
- break; |
- case FPDF_UNSP_ANNOT_SIG: |
- feature = "Digital_Signature"; |
- break; |
- } |
- printf("Unsupported feature: %s.\n", feature.c_str()); |
- } |
-}; |
- |
class TestLoader { |
public: |
TestLoader(const char* pBuf, size_t len); |
@@ -184,7 +132,7 @@ EmbedderTest::EmbedderTest() : |
memset(&hints_, 0, sizeof(hints_)); |
memset(&file_access_, 0, sizeof(file_access_)); |
memset(&file_avail_, 0, sizeof(file_avail_)); |
- default_delegate_ = new EmbedderTestDefaultDelegate(); |
+ default_delegate_ = new EmbedderTest::Delegate(); |
delegate_ = default_delegate_; |
} |
@@ -194,9 +142,15 @@ EmbedderTest::~EmbedderTest() { |
void EmbedderTest::SetUp() { |
v8::V8::InitializeICU(); |
- v8::Platform* platform = v8::platform::CreateDefaultPlatform(); |
- v8::V8::InitializePlatform(platform); |
- v8::V8::Initialize(); |
+ |
+ platform_ = v8::platform::CreateDefaultPlatform(); |
+ v8::V8::InitializePlatform(platform_); |
+ v8::V8::Initialize(); |
+ |
+ // By enabling predictable mode, V8 won't post any background tasks. |
+ const char predictable_flag[] = "--predictable"; |
+ v8::V8::SetFlagsFromString(predictable_flag, |
+ static_cast<int>(strlen(predictable_flag))); |
#ifdef V8_USE_EXTERNAL_STARTUP_DATA |
ASSERT_TRUE(GetExternalData(g_exe_path_, "natives_blob.bin", &natives_)); |
@@ -222,9 +176,10 @@ void EmbedderTest::TearDown() { |
} |
FPDFAvail_Destroy(avail_); |
FPDF_DestroyLibrary(); |
+ v8::V8::ShutdownPlatform(); |
+ delete platform_; |
delete loader_; |
free(file_contents_); |
- v8::V8::ShutdownPlatform(); |
} |
bool EmbedderTest::OpenDocument(const std::string& filename) { |
@@ -272,6 +227,8 @@ bool EmbedderTest::OpenDocument(const std::string& filename) { |
FPDF_FORMFILLINFO* formfillinfo = static_cast<FPDF_FORMFILLINFO*>(this); |
memset(formfillinfo, 0, sizeof(FPDF_FORMFILLINFO)); |
formfillinfo->version = 1; |
+ formfillinfo->FFI_SetTimer = SetTimerTrampoline; |
+ formfillinfo->FFI_KillTimer = KillTimerTrampoline; |
formfillinfo->m_pJsPlatform = platform; |
form_handle_ = FPDFDOC_InitFormFillEnvironment(document_, formfillinfo); |
@@ -343,6 +300,19 @@ int EmbedderTest::AlertTrampoline(IPDF_JSPLATFORM* platform, |
return test->delegate_->Alert(message, title, type, icon); |
} |
+// static |
+int EmbedderTest::SetTimerTrampoline(FPDF_FORMFILLINFO* info, |
+ int msecs, TimerCallback fn) { |
+ EmbedderTest* test = static_cast<EmbedderTest*>(info); |
+ return test->delegate_->SetTimer(msecs, fn); |
+} |
+ |
+// static |
+void EmbedderTest::KillTimerTrampoline(FPDF_FORMFILLINFO* info, int id) { |
+ EmbedderTest* test = static_cast<EmbedderTest*>(info); |
+ return test->delegate_->KillTimer(id); |
+} |
+ |
// Can't use gtest-provided main since we need to stash the path to the |
// executable in order to find the external V8 binary data files. |
int main(int argc, char** argv) { |