Avoid unordered_set and maps for the time being. See discussion at https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/rdxOHKzQmRY Change-Id: I1803ae97c39b592001835814e2f6674b2c7cb3ea Reviewed-on: https://pdfium-review.googlesource.com/4531 Reviewed-by: dsinclair <dsinclair@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/page/cpdf_streamcontentparser.h b/core/fpdfapi/page/cpdf_streamcontentparser.h index 4440aab..50eb0eb 100644 --- a/core/fpdfapi/page/cpdf_streamcontentparser.h +++ b/core/fpdfapi/page/cpdf_streamcontentparser.h
@@ -7,8 +7,8 @@ #ifndef CORE_FPDFAPI_PAGE_CPDF_STREAMCONTENTPARSER_H_ #define CORE_FPDFAPI_PAGE_CPDF_STREAMCONTENTPARSER_H_ +#include <map> #include <memory> -#include <unordered_map> #include <vector> #include "core/fpdfapi/page/cpdf_contentmark.h" @@ -73,8 +73,7 @@ static const int kParamBufSize = 16; - using OpCodes = - std::unordered_map<uint32_t, void (CPDF_StreamContentParser::*)()>; + using OpCodes = std::map<uint32_t, void (CPDF_StreamContentParser::*)()>; static OpCodes InitializeOpCodes(); void AddNameParam(const CFX_ByteStringC& str);
diff --git a/core/fpdfdoc/cpdf_occontext.h b/core/fpdfdoc/cpdf_occontext.h index ecdcfae..753aa5c 100644 --- a/core/fpdfdoc/cpdf_occontext.h +++ b/core/fpdfdoc/cpdf_occontext.h
@@ -7,7 +7,7 @@ #ifndef CORE_FPDFDOC_CPDF_OCCONTEXT_H_ #define CORE_FPDFDOC_CPDF_OCCONTEXT_H_ -#include <unordered_map> +#include <map> #include "core/fxcrt/cfx_retain_ptr.h" #include "core/fxcrt/fx_string.h" @@ -40,7 +40,7 @@ CPDF_Document* const m_pDocument; const UsageType m_eUsageType; - std::unordered_map<const CPDF_Dictionary*, bool> m_OCGStates; + std::map<const CPDF_Dictionary*, bool> m_OCGStates; }; #endif // CORE_FPDFDOC_CPDF_OCCONTEXT_H_
diff --git a/fpdfsdk/javascript/app.h b/fpdfsdk/javascript/app.h index 9e11b82..0a2cfdb 100644 --- a/fpdfsdk/javascript/app.h +++ b/fpdfsdk/javascript/app.h
@@ -8,7 +8,7 @@ #define FPDFSDK_JAVASCRIPT_APP_H_ #include <memory> -#include <unordered_set> +#include <set> #include <vector> #include "fpdfsdk/javascript/JS_Define.h" @@ -172,7 +172,7 @@ bool m_bCalculate; bool m_bRuntimeHighLight; - std::unordered_set<std::unique_ptr<GlobalTimer>> m_Timers; + std::set<std::unique_ptr<GlobalTimer>> m_Timers; }; class CJS_App : public CJS_Object {
diff --git a/samples/image_diff.cc b/samples/image_diff.cc index 3aa626b..70c74c9 100644 --- a/samples/image_diff.cc +++ b/samples/image_diff.cc
@@ -166,9 +166,6 @@ return CalculateDifferencePercentage(actual, pixels_different); } -// FIXME: Replace with unordered_map when available. -typedef std::map<uint32_t, int32_t> RgbaToCountMap; - float HistogramPercentageDifferent(const Image& baseline, const Image& actual) { // TODO(johnme): Consider using a joint histogram instead, as described in // "Comparing Images Using Joint Histograms" by Pass & Zabih @@ -178,7 +175,7 @@ int h = std::min(baseline.h(), actual.h()); // Count occurences of each RGBA pixel value of baseline in the overlap. - RgbaToCountMap baseline_histogram; + std::map<uint32_t, int32_t> baseline_histogram; for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { // hash_map operator[] inserts a 0 (default constructor) if key not found. @@ -191,7 +188,7 @@ for (int y = 0; y < h; ++y) { for (int x = 0; x < w; ++x) { uint32_t actual_rgba = actual.pixel_at(x, y); - RgbaToCountMap::iterator it = baseline_histogram.find(actual_rgba); + auto it = baseline_histogram.find(actual_rgba); if (it != baseline_histogram.end() && it->second > 0) --it->second; else
diff --git a/xfa/fde/css/cfde_cssstylesheet.h b/xfa/fde/css/cfde_cssstylesheet.h index fa73460..24bebdd 100644 --- a/xfa/fde/css/cfde_cssstylesheet.h +++ b/xfa/fde/css/cfde_cssstylesheet.h
@@ -7,8 +7,8 @@ #ifndef XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_ #define XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_ +#include <map> #include <memory> -#include <unordered_map> #include <vector> #include "core/fxcrt/fx_string.h" @@ -34,7 +34,7 @@ void SkipRuleSet(CFDE_CSSSyntaxParser* pSyntax); std::vector<std::unique_ptr<CFDE_CSSStyleRule>> m_RuleArray; - std::unordered_map<uint32_t, wchar_t*> m_StringCache; + std::map<uint32_t, wchar_t*> m_StringCache; }; #endif // XFA_FDE_CSS_CFDE_CSSSTYLESHEET_H_
diff --git a/xfa/fwl/cfwl_notedriver.h b/xfa/fwl/cfwl_notedriver.h index 2ea3f97..b55e701 100644 --- a/xfa/fwl/cfwl_notedriver.h +++ b/xfa/fwl/cfwl_notedriver.h
@@ -8,8 +8,8 @@ #define XFA_FWL_CFWL_NOTEDRIVER_H_ #include <deque> +#include <map> #include <memory> -#include <unordered_map> #include <vector> #include "xfa/fwl/cfwl_event.h" @@ -69,8 +69,7 @@ std::vector<CFWL_Widget*> m_Forms; std::deque<std::unique_ptr<CFWL_Message>> m_NoteQueue; std::vector<CFWL_NoteLoop*> m_NoteLoopQueue; - std::unordered_map<uint32_t, std::unique_ptr<CFWL_EventTarget>> - m_eventTargets; + std::map<uint32_t, std::unique_ptr<CFWL_EventTarget>> m_eventTargets; CFWL_Widget* m_pHover; CFWL_Widget* m_pFocus; CFWL_Widget* m_pGrab;
diff --git a/xfa/fxfa/parser/cxfa_document.cpp b/xfa/fxfa/parser/cxfa_document.cpp index 4b0a398..a1180e7 100644 --- a/xfa/fxfa/parser/cxfa_document.cpp +++ b/xfa/fxfa/parser/cxfa_document.cpp
@@ -345,7 +345,7 @@ return; std::map<uint32_t, CXFA_Node*> mIDMap; - std::unordered_set<CXFA_Node*> sUseNodes; + std::set<CXFA_Node*> sUseNodes; CXFA_NodeIterator sIterator(pTemplateRoot); for (CXFA_Node* pNode = sIterator.GetCurrent(); pNode; pNode = sIterator.MoveToNext()) {
diff --git a/xfa/fxfa/parser/cxfa_document.h b/xfa/fxfa/parser/cxfa_document.h index 03586b6..8491feb 100644 --- a/xfa/fxfa/parser/cxfa_document.h +++ b/xfa/fxfa/parser/cxfa_document.h
@@ -9,7 +9,7 @@ #include <map> #include <memory> -#include <unordered_set> +#include <set> #include <vector> #include "xfa/fxfa/fxfa.h" @@ -120,7 +120,7 @@ std::unique_ptr<CScript_LogPseudoModel> m_pScriptLog; std::unique_ptr<CScript_LayoutPseudoModel> m_pScriptLayout; std::unique_ptr<CScript_SignaturePseudoModel> m_pScriptSignature; - std::unordered_set<CXFA_Node*> m_PurgeNodes; + std::set<CXFA_Node*> m_PurgeNodes; XFA_VERSION m_eCurVersionMode; uint32_t m_dwDocFlags; };
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp index 73fc88d..9fae4a4 100644 --- a/xfa/fxfa/parser/cxfa_node.cpp +++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -8,7 +8,7 @@ #include <map> #include <memory> -#include <unordered_set> +#include <set> #include <utility> #include <vector> @@ -90,7 +90,7 @@ } std::vector<CXFA_Node*> NodesSortedByDocumentIdx( - const std::unordered_set<CXFA_Node*>& rgNodeSet) { + const std::set<CXFA_Node*>& rgNodeSet) { if (rgNodeSet.empty()) return std::vector<CXFA_Node*>(); @@ -105,8 +105,7 @@ return rgNodeArray; } -using CXFA_NodeSetPair = - std::pair<std::unordered_set<CXFA_Node*>, std::unordered_set<CXFA_Node*>>; +using CXFA_NodeSetPair = std::pair<std::set<CXFA_Node*>, std::set<CXFA_Node*>>; using CXFA_NodeSetPairMap = std::map<uint32_t, std::unique_ptr<CXFA_NodeSetPair>>; using CXFA_NodeSetPairMapMap = @@ -129,8 +128,8 @@ return (*pNodeSetPairMap)[dwNameHash].get(); } -void ReorderDataNodes(const std::unordered_set<CXFA_Node*>& sSet1, - const std::unordered_set<CXFA_Node*>& sSet2, +void ReorderDataNodes(const std::set<CXFA_Node*>& sSet1, + const std::set<CXFA_Node*>& sSet2, bool bInsertBefore) { CXFA_NodeSetPairMapMap rgMap; for (CXFA_Node* pNode : sSet1) { @@ -231,8 +230,8 @@ pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent) ->InsertChild(pNewInstance, pNextSibling); if (bMoveDataBindingNodes) { - std::unordered_set<CXFA_Node*> sNew; - std::unordered_set<CXFA_Node*> sAfter; + std::set<CXFA_Node*> sNew; + std::set<CXFA_Node*> sAfter; CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFAContainerNode> sIteratorNew(pNewInstance); @@ -262,8 +261,8 @@ pInstMgrNode->GetNodeItem(XFA_NODEITEM_Parent) ->InsertChild(pNewInstance, pBeforeInstance); if (bMoveDataBindingNodes) { - std::unordered_set<CXFA_Node*> sNew; - std::unordered_set<CXFA_Node*> sBefore; + std::set<CXFA_Node*> sNew; + std::set<CXFA_Node*> sBefore; CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFAContainerNode> sIteratorNew(pNewInstance);