Implement CPDF_SyntaxParser::PeekNextWord.

Change-Id: I92c0bd417d9c5be59c36401efae89406e482756a
Reviewed-on: https://pdfium-review.googlesource.com/12650
Commit-Queue: Art Snake <art-snake@yandex-team.ru>
Reviewed-by: dsinclair <dsinclair@chromium.org>
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
index f7c79bc..4a7810f 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp
@@ -352,6 +352,11 @@
              : CFX_ByteString((const char*)m_WordBuffer, m_WordSize);
 }
 
+CFX_ByteString CPDF_SyntaxParser::PeekNextWord(bool* bIsNumber) {
+  const CFX_AutoRestorer<FX_FILESIZE> save_pos(&m_Pos);
+  return GetNextWord(bIsNumber);
+}
+
 CFX_ByteString CPDF_SyntaxParser::GetKeyword() {
   return GetNextWord(nullptr);
 }
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.h b/core/fpdfapi/parser/cpdf_syntax_parser.h
index 88bbc5c..179058e 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser.h
+++ b/core/fpdfapi/parser/cpdf_syntax_parser.h
@@ -65,6 +65,7 @@
   bool ReadBlock(uint8_t* pBuf, uint32_t size);
   bool GetCharAt(FX_FILESIZE pos, uint8_t& ch);
   CFX_ByteString GetNextWord(bool* bIsNumber);
+  CFX_ByteString PeekNextWord(bool* bIsNumber);
 
   CFX_RetainPtr<IFX_SeekableReadStream> GetFileAccess() const;
 
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp b/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp
index ac7a875..6b54c70 100644
--- a/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp
+++ b/core/fpdfapi/parser/cpdf_syntax_parser_unittest.cpp
@@ -155,3 +155,12 @@
       parser.GetObject(nullptr, CPDF_Object::kInvalidObjNum, 0, false);
   EXPECT_FALSE(ref);
 }
+
+TEST(cpdf_syntax_parser, PeekNextWord) {
+  CPDF_SyntaxParser parser;
+  uint8_t data[] = "    WORD ";
+  parser.InitParser(
+      pdfium::MakeRetain<CFX_MemoryStream>(data, sizeof(data), false), 0);
+  EXPECT_EQ("WORD", parser.PeekNextWord(nullptr));
+  EXPECT_EQ("WORD", parser.GetNextWord(nullptr));
+}