Introduce IJS_Runtime::ScopedEventContext helper class.
This proves that m_EventContextArray is, in fact, a stack.
Tidy one function by using AutoRestorer while at it.
Change-Id: I319538b4eadcd9ce83319aa73861635dd5eb8c36
Reviewed-on: https://pdfium-review.googlesource.com/33970
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxjs/cjs_runtime.cpp b/fxjs/cjs_runtime.cpp
index 22dc904..a8640ea 100644
--- a/fxjs/cjs_runtime.cpp
+++ b/fxjs/cjs_runtime.cpp
@@ -80,9 +80,8 @@
if (m_isolateManaged || FXJS_GlobalIsolateRefCount() == 0)
DefineJSObjects();
- IJS_EventContext* pContext = NewEventContext();
+ ScopedEventContext pContext(this);
InitializeEngine();
- ReleaseEventContext(pContext);
SetFormFillEnvToDocument();
}
@@ -153,11 +152,8 @@
}
void CJS_Runtime::ReleaseEventContext(IJS_EventContext* pContext) {
- auto it = std::find(m_EventContextArray.begin(), m_EventContextArray.end(),
- pdfium::FakeUniquePtr<CJS_EventContext>(
- static_cast<CJS_EventContext*>(pContext)));
- if (it != m_EventContextArray.end())
- m_EventContextArray.erase(it);
+ ASSERT(pContext == m_EventContextArray.back().get());
+ m_EventContextArray.pop_back();
}
CJS_EventContext* CJS_Runtime::GetCurrentEventContext() const {