зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1401888 - Part 2. Implement PDFiumEngineShim::GetInstanceOrNull(const nsCString&) r=fatseng
With this change, we are able to load PDFium engine from different library. MozReview-Commit-ID: ErAZCPRzRR5 --HG-- extra : rebase_source : f0421af9c70d69564ed8f96d32870314871aabef
This commit is contained in:
Родитель
59db10f1d3
Коммит
80b1379b3e
|
@ -18,7 +18,7 @@ PDFiumEngineShim::GetInstanceOrNull()
|
|||
RefPtr<PDFiumEngineShim> inst = sPDFiumEngineShim;
|
||||
if (!inst) {
|
||||
inst = new PDFiumEngineShim();
|
||||
if (!inst->Init()) {
|
||||
if (!inst->Init(nsCString("pdfium.dll"))) {
|
||||
inst = nullptr;
|
||||
}
|
||||
sPDFiumEngineShim = inst.get();
|
||||
|
@ -27,6 +27,18 @@ PDFiumEngineShim::GetInstanceOrNull()
|
|||
return inst.forget();
|
||||
}
|
||||
|
||||
/* static */
|
||||
already_AddRefed<PDFiumEngineShim>
|
||||
PDFiumEngineShim::GetInstanceOrNull(const nsCString& aLibrary)
|
||||
{
|
||||
RefPtr<PDFiumEngineShim> shim = new PDFiumEngineShim();
|
||||
if (!shim->Init(aLibrary)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return shim.forget();
|
||||
}
|
||||
|
||||
PDFiumEngineShim::PDFiumEngineShim()
|
||||
: mFPDF_InitLibrary(nullptr)
|
||||
, mFPDF_DestroyLibrary(nullptr)
|
||||
|
@ -54,13 +66,13 @@ PDFiumEngineShim::~PDFiumEngineShim()
|
|||
}
|
||||
|
||||
bool
|
||||
PDFiumEngineShim::Init()
|
||||
PDFiumEngineShim::Init(const nsCString& aLibrary)
|
||||
{
|
||||
if (mInitialized) {
|
||||
return true;
|
||||
}
|
||||
|
||||
mPRLibrary = PR_LoadLibrary("pdfium.dll");
|
||||
mPRLibrary = PR_LoadLibrary(aLibrary.get());
|
||||
NS_ENSURE_TRUE(mPRLibrary, false);
|
||||
|
||||
mFPDF_InitLibrary = (FPDF_InitLibrary_Pfn)PR_FindFunctionSymbol(
|
||||
|
|
|
@ -48,6 +48,10 @@ public:
|
|||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(PDFiumEngineShim)
|
||||
|
||||
static already_AddRefed<PDFiumEngineShim> GetInstanceOrNull();
|
||||
// This function is used for testing purpose only, do not call it in regular
|
||||
// code.
|
||||
static already_AddRefed<PDFiumEngineShim>
|
||||
GetInstanceOrNull(const nsCString& aLibrary);
|
||||
|
||||
FPDF_DOCUMENT LoadDocument(FPDF_STRING file_path,
|
||||
FPDF_BYTESTRING aPassword);
|
||||
|
@ -66,7 +70,7 @@ public:
|
|||
private:
|
||||
PDFiumEngineShim();
|
||||
~PDFiumEngineShim();
|
||||
bool Init();
|
||||
bool Init(const nsCString& aLibrary);
|
||||
|
||||
bool mInitialized ;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче