diff --git a/fpdfsdk/fpdf_save_embeddertest.cpp b/fpdfsdk/fpdf_save_embeddertest.cpp
index 413bd91..18868a8 100644
--- a/fpdfsdk/fpdf_save_embeddertest.cpp
+++ b/fpdfsdk/fpdf_save_embeddertest.cpp
@@ -15,41 +15,45 @@
 #include "testing/gmock/include/gmock/gmock-matchers.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
+using testing::HasSubstr;
+using testing::Not;
+using testing::StartsWith;
+
 class FPDFSaveEmbedderTest : public EmbedderTest {};
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDoc) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
   EXPECT_EQ(805u, GetString().size());
 }
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocWithVersion) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, 0, 14));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.4\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.4\r\n"));
   EXPECT_EQ(805u, GetString().size());
 }
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocWithBadVersion) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, 0, -1));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
 
   ClearString();
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, 0, 0));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
 
   ClearString();
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, 0, 18));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
 }
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocIncremental) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, FPDF_INCREMENTAL, 14));
   // Version gets taken as-is from input document.
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\n%\xa0\xf2\xa4\xf4"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\n%\xa0\xf2\xa4\xf4"));
   // Additional output produced vs. non incremental.
   EXPECT_EQ(985u, GetString().size());
 }
@@ -57,21 +61,21 @@
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocNoIncremental) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, FPDF_NO_INCREMENTAL, 14));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.4\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.4\r\n"));
   EXPECT_EQ(805u, GetString().size());
 }
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocRemoveSecurity) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, FPDF_REMOVE_SECURITY, 14));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.4\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.4\r\n"));
   EXPECT_EQ(805u, GetString().size());
 }
 
 TEST_F(FPDFSaveEmbedderTest, SaveSimpleDocBadFlags) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveWithVersion(document(), this, 999999, 14));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.4\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.4\r\n"));
   EXPECT_EQ(805u, GetString().size());
 }
 
@@ -106,9 +110,9 @@
   }
 
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.6\r\n"));
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Root "));
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Info "));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.6\r\n"));
+  EXPECT_THAT(GetString(), HasSubstr("/Root "));
+  EXPECT_THAT(GetString(), HasSubstr("/Info "));
   EXPECT_EQ(8219u, GetString().size());
 
   // Make sure new document renders the same as the old one.
@@ -146,11 +150,11 @@
   CloseSavedPage(saved_page);
   CloseSavedDocument();
 
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Root "));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), HasSubstr("/Root "));
   // TODO(crbug.com/pdfium/1409): The PDF should not have any images, given it
   // is rendering blank. The file size should also be a lot smaller.
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Image"));
+  EXPECT_THAT(GetString(), HasSubstr("/Image"));
   EXPECT_LT(GetString().size(), 1300u);
 }
 
@@ -158,7 +162,7 @@
 TEST_F(FPDFSaveEmbedderTest, SaveXFADoc) {
   ASSERT_TRUE(OpenDocument("simple_xfa.pdf"));
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::StartsWith("%PDF-1.7\r\n"));
+  EXPECT_THAT(GetString(), StartsWith("%PDF-1.7\r\n"));
   ASSERT_TRUE(OpenSavedDocument());
   // TODO(tsepez): check for XFA forms in document
   CloseSavedDocument();
@@ -168,15 +172,14 @@
 TEST_F(FPDFSaveEmbedderTest, BUG_342) {
   ASSERT_TRUE(OpenDocument("hello_world.pdf"));
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::HasSubstr("0000000000 65535 f\r\n"));
-  EXPECT_THAT(GetString(),
-              testing::Not(testing::HasSubstr("0000000000 65536 f\r\n")));
+  EXPECT_THAT(GetString(), HasSubstr("0000000000 65535 f\r\n"));
+  EXPECT_THAT(GetString(), Not(HasSubstr("0000000000 65536 f\r\n")));
 }
 
 TEST_F(FPDFSaveEmbedderTest, BUG_905142) {
   ASSERT_TRUE(OpenDocument("bug_905142.pdf"));
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Length 0"));
+  EXPECT_THAT(GetString(), HasSubstr("/Length 0"));
 }
 
 // Should not trigger a DCHECK() failure in CFX_FileBufferArchive.
@@ -184,5 +187,5 @@
 TEST_F(FPDFSaveEmbedderTest, Bug1328389) {
   ASSERT_TRUE(OpenDocument("bug_1328389.pdf"));
   EXPECT_TRUE(FPDF_SaveAsCopy(document(), this, 0));
-  EXPECT_THAT(GetString(), testing::HasSubstr("/Foo/"));
+  EXPECT_THAT(GetString(), HasSubstr("/Foo/"));
 }
