Pull in gmock for standalone pdfium builds.

For chromium checkouts, the top-level gmock is used instead.
Verify build with a simple test that ensures neither mock
method is fired.

R=thestig@chromium.org

Review URL: https://codereview.chromium.org/955513009
diff --git a/BUILD.gn b/BUILD.gn
index d6268a4..3c6c74a 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -820,14 +820,17 @@
   sources = [
     "fpdfsdk/src/fpdf_dataavail_embeddertest.cpp",
     "fpdfsdk/src/fpdfdoc_embeddertest.cpp",
+    "fpdfsdk/src/fpdfformfill_embeddertest.cpp",
     "fpdfsdk/src/fpdftext_embeddertest.cpp",
     "fpdfsdk/src/fpdfview_embeddertest.cpp",
     "testing/embedder_test.cpp",
     "testing/embedder_test.h",
+    "testing/embedder_test_mock_delegate.h",
     "testing/fx_string_testhelpers.cpp",
     "testing/fx_string_testhelpers.h",
   ]
   deps = [
+    "//testing/gmock",
     "//testing/gtest",
     ":pdfium"
   ]
diff --git a/DEPS b/DEPS
index 335f802..6bde04d 100644
--- a/DEPS
+++ b/DEPS
@@ -4,6 +4,9 @@
   "build/gyp":
     "https://chromium.googlesource.com/external/gyp",
 
+  "testing/gmock":
+     "https://chromium.googlesource.com/external/googlemock.git@29763965ab52f24565299976b936d1265cb6a271",
+
   "testing/gtest":
      "https://chromium.googlesource.com/external/googletest.git@8245545b6dc9c4703e6496d1efd19e975ad2b038",
 
diff --git a/fpdfsdk/src/fpdfformfill_embeddertest.cpp b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
new file mode 100644
index 0000000..3fe34d5
--- /dev/null
+++ b/fpdfsdk/src/fpdfformfill_embeddertest.cpp
@@ -0,0 +1,27 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+
+#include "../../fpdfsdk/include/fpdfformfill.h"
+#include "../../testing/embedder_test.h"
+#include "../../testing/embedder_test_mock_delegate.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using testing::_;
+using testing::Return;
+
+class FPDFFormFillEmbeddertest : public EmbedderTest {
+};
+
+TEST_F(FPDFFormFillEmbeddertest, FirstTest) {
+  EmbedderTestMockDelegate mock;
+  EXPECT_CALL(mock, Alert(_, _, _, _)).Times(0);
+  EXPECT_CALL(mock, UnsupportedHandler(_)).Times(0);
+  SetDelegate(&mock);
+
+  EXPECT_TRUE(OpenDocument("testing/resources/hello_world.pdf"));
+  FPDF_PAGE page = LoadPage(0);
+  EXPECT_NE(nullptr, page);
+}
diff --git a/pdfium.gyp b/pdfium.gyp
index c1cd724..7b959bd 100644
--- a/pdfium.gyp
+++ b/pdfium.gyp
@@ -847,6 +847,7 @@
       'target_name': 'pdfium_embeddertests',
       'type': 'executable',
       'dependencies': [
+        '<(DEPTH)/testing/gmock.gyp:gmock',
         '<(DEPTH)/testing/gtest.gyp:gtest',
         'pdfium',
       ],
@@ -856,10 +857,12 @@
       'sources': [
         'fpdfsdk/src/fpdf_dataavail_embeddertest.cpp',
         'fpdfsdk/src/fpdfdoc_embeddertest.cpp',
+        'fpdfsdk/src/fpdfformfill_embeddertest.cpp',
         'fpdfsdk/src/fpdftext_embeddertest.cpp',
         'fpdfsdk/src/fpdfview_embeddertest.cpp',
         'testing/embedder_test.cpp',
         'testing/embedder_test.h',
+        'testing/embedder_test_mock_delegate.h',
         'testing/fx_string_testhelpers.cpp',
         'testing/fx_string_testhelpers.h',
       ],
diff --git a/testing/embedder_test.cpp b/testing/embedder_test.cpp
index fc6b4db..e8d5a09 100644
--- a/testing/embedder_test.cpp
+++ b/testing/embedder_test.cpp
@@ -17,6 +17,7 @@
 #include "../fpdfsdk/include/fpdftext.h"
 #include "../fpdfsdk/include/fpdfview.h"
 #include "../core/include/fxcrt/fx_system.h"
+#include "testing/gmock/include/gmock/gmock.h"
 #include "v8/include/v8.h"
 
 #ifdef _WIN32
@@ -340,5 +341,6 @@
 int main(int argc, char** argv) {
   g_exe_path_ = argv[0];
   testing::InitGoogleTest(&argc, argv);
+  testing::InitGoogleMock(&argc, argv);
   return RUN_ALL_TESTS();
 }
diff --git a/testing/embedder_test_mock_delegate.h b/testing/embedder_test_mock_delegate.h
new file mode 100644
index 0000000..526e117
--- /dev/null
+++ b/testing/embedder_test_mock_delegate.h
@@ -0,0 +1,19 @@
+// Copyright 2015 PDFium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef TESTING_EMBEDDER_TEST_MOCK_DELEGATE_H_
+#define TESTING_EMBEDDER_TEST_MOCK_DELEGATE_H_
+
+#include "embedder_test.h"
+#include "testing/gmock/include/gmock/gmock.h"
+
+class EmbedderTestMockDelegate : public EmbedderTest::Delegate {
+ public:
+  MOCK_METHOD1(UnsupportedHandler, void(int type));
+  MOCK_METHOD4(Alert, int(FPDF_WIDESTRING message, FPDF_WIDESTRING title,
+                          int type, int icon));
+};
+
+#endif  // TESTING_EMBEDDER_TEST_MOCK_DELEGATE_H_
+
diff --git a/testing/gmock.gyp b/testing/gmock.gyp
new file mode 100644
index 0000000..55e1609
--- /dev/null
+++ b/testing/gmock.gyp
@@ -0,0 +1,58 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+{
+  'targets': [
+    {
+      'target_name': 'gmock',
+      'type': 'static_library',
+      'dependencies': [
+        'gtest.gyp:gtest',
+      ],
+      'sources': [
+        # Sources based on files in r173 of gmock.
+        'gmock/include/gmock/gmock-actions.h',
+        'gmock/include/gmock/gmock-cardinalities.h',
+        'gmock/include/gmock/gmock-generated-actions.h',
+        'gmock/include/gmock/gmock-generated-function-mockers.h',
+        'gmock/include/gmock/gmock-generated-matchers.h',
+        'gmock/include/gmock/gmock-generated-nice-strict.h',
+        'gmock/include/gmock/gmock-matchers.h',
+        'gmock/include/gmock/gmock-spec-builders.h',
+        'gmock/include/gmock/gmock.h',
+        'gmock/include/gmock/internal/gmock-generated-internal-utils.h',
+        'gmock/include/gmock/internal/gmock-internal-utils.h',
+        'gmock/include/gmock/internal/gmock-port.h',
+        'gmock/src/gmock-cardinalities.cc',
+        'gmock/src/gmock-internal-utils.cc',
+        'gmock/src/gmock-matchers.cc',
+        'gmock/src/gmock-spec-builders.cc',
+        'gmock/src/gmock.cc',
+        'gmock_mutant.h',  # gMock helpers
+      ],
+      'include_dirs': [
+        'gmock',
+        'gmock/include',
+      ],
+      'direct_dependent_settings': {
+        'include_dirs': [
+          'gmock/include',  # So that gmock headers can find themselves.
+        ],
+      },
+      'export_dependent_settings': [
+        'gtest.gyp:gtest',
+      ],
+    },
+    {
+      'target_name': 'gmock_main',
+      'type': 'static_library',
+      'dependencies': [
+        'gmock',
+      ],
+      'sources': [
+        'gmock/src/gmock_main.cc',
+      ],
+    },
+  ],
+}