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);