[go: nahoru, domu]

printing: Move printing::DuplexMode to //printing/mojom/print.mojom

This CL introduces printing/mojom/print.mojom and moves
printing::DuplexMode to this mojom file to share the enum types
with other directories.
It removes WebDuplexMode from //third_party/blink.

Bug: 1008939
Change-Id: Ic73da8abc7241d99f0be35ba18946addf63f3e4d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2162388
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Julie Kim <jkim@igalia.com>
Cr-Commit-Position: refs/heads/master@{#764139}
diff --git a/chrome/browser/chromeos/BUILD.gn b/chrome/browser/chromeos/BUILD.gn
index b63e20f..b17ce42 100644
--- a/chrome/browser/chromeos/BUILD.gn
+++ b/chrome/browser/chromeos/BUILD.gn
@@ -284,6 +284,7 @@
     # TODO: care about enable_basic_printing and enable_print_preview.
     "//ash/keyboard/ui",
     "//printing",
+    "//printing/mojom",
     "//remoting/host/it2me:chrome_os_host",
     "//services/audio/public/cpp",
     "//services/data_decoder/public/cpp",
diff --git a/chrome/browser/chromeos/arc/print/arc_print_service.cc b/chrome/browser/chromeos/arc/print/arc_print_service.cc
index d9cefe3..3f917e6 100644
--- a/chrome/browser/chromeos/arc/print/arc_print_service.cc
+++ b/chrome/browser/chromeos/arc/print/arc_print_service.cc
@@ -47,6 +47,7 @@
 #include "printing/backend/print_backend.h"
 #include "printing/backend/print_backend_consts.h"
 #include "printing/metafile_skia.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/printed_document.h"
 #include "printing/units.h"
@@ -358,14 +359,14 @@
 
 // Get requested duplex mode from Mojo type.
 // |mode| is a bitfield but must have exactly one mode set here.
-printing::DuplexMode FromArcDuplexMode(mojom::PrintDuplexMode mode) {
+printing::mojom::DuplexMode FromArcDuplexMode(mojom::PrintDuplexMode mode) {
   switch (mode) {
     case mojom::PrintDuplexMode::NONE:
-      return printing::SIMPLEX;
+      return printing::mojom::DuplexMode::kSimplex;
     case mojom::PrintDuplexMode::LONG_EDGE:
-      return printing::LONG_EDGE;
+      return printing::mojom::DuplexMode::kLongEdge;
     case mojom::PrintDuplexMode::SHORT_EDGE:
-      return printing::SHORT_EDGE;
+      return printing::mojom::DuplexMode::kShortEdge;
   }
   NOTREACHED();
 }
diff --git a/chrome/browser/chromeos/arc/print/print_mojom_traits.cc b/chrome/browser/chromeos/arc/print/print_mojom_traits.cc
index d5c93e2..920c91c 100644
--- a/chrome/browser/chromeos/arc/print/print_mojom_traits.cc
+++ b/chrome/browser/chromeos/arc/print/print_mojom_traits.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/chromeos/arc/print/print_mojom_traits.h"
 
 #include "base/strings/stringprintf.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/units.h"
 
 namespace mojo {
@@ -20,13 +21,13 @@
                                          size_mil.width(), size_mil.height());
 }
 
-arc::mojom::PrintDuplexMode ToArcDuplexMode(printing::DuplexMode mode) {
+arc::mojom::PrintDuplexMode ToArcDuplexMode(printing::mojom::DuplexMode mode) {
   switch (mode) {
-    case printing::LONG_EDGE:
+    case printing::mojom::DuplexMode::kLongEdge:
       return arc::mojom::PrintDuplexMode::LONG_EDGE;
-    case printing::SHORT_EDGE:
+    case printing::mojom::DuplexMode::kShortEdge:
       return arc::mojom::PrintDuplexMode::SHORT_EDGE;
-    case printing::SIMPLEX:
+    case printing::mojom::DuplexMode::kSimplex:
       return arc::mojom::PrintDuplexMode::NONE;
     default:
       NOTREACHED();
@@ -83,7 +84,7 @@
              printing::PrinterSemanticCapsAndDefaults>::
     duplex_modes(const printing::PrinterSemanticCapsAndDefaults& caps) {
   uint32_t duplex_modes = 0;
-  for (printing::DuplexMode mode : caps.duplex_modes) {
+  for (printing::mojom::DuplexMode mode : caps.duplex_modes) {
     duplex_modes |= static_cast<uint32_t>(ToArcDuplexMode(mode));
   }
   return static_cast<arc::mojom::PrintDuplexMode>(duplex_modes);
diff --git a/chrome/browser/chromeos/arc/print_spooler/print_session_impl.cc b/chrome/browser/chromeos/arc/print_spooler/print_session_impl.cc
index b2a3240..b3edcbc2 100644
--- a/chrome/browser/chromeos/arc/print_spooler/print_session_impl.cc
+++ b/chrome/browser/chromeos/arc/print_spooler/print_session_impl.cc
@@ -30,6 +30,7 @@
 #include "content/public/browser/web_contents.h"
 #include "mojo/public/c/system/types.h"
 #include "net/base/filename_util.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/page_range.h"
 #include "printing/print_job_constants.h"
 #include "printing/print_settings.h"
@@ -53,10 +54,12 @@
 
 // Converts a duplex mode to its Mojo type.
 mojom::PrintDuplexMode ToArcDuplexMode(int duplex_mode) {
-  switch (duplex_mode) {
-    case printing::LONG_EDGE:
+  printing::mojom::DuplexMode mode =
+      static_cast<printing::mojom::DuplexMode>(duplex_mode);
+  switch (mode) {
+    case printing::mojom::DuplexMode::kLongEdge:
       return mojom::PrintDuplexMode::LONG_EDGE;
-    case printing::SHORT_EDGE:
+    case printing::mojom::DuplexMode::kShortEdge:
       return mojom::PrintDuplexMode::SHORT_EDGE;
     default:
       return mojom::PrintDuplexMode::NONE;
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
index 38735fd..cd77466e 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_handler_unittest.cc
@@ -36,6 +36,7 @@
 #include "extensions/common/extension_builder.h"
 #include "printing/backend/print_backend.h"
 #include "printing/backend/test_print_backend.h"
+#include "printing/mojom/print.mojom.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -197,7 +198,7 @@
   auto capabilities =
       std::make_unique<printing::PrinterSemanticCapsAndDefaults>();
   capabilities->color_model = printing::COLOR;
-  capabilities->duplex_modes.push_back(printing::SIMPLEX);
+  capabilities->duplex_modes.push_back(printing::mojom::DuplexMode::kSimplex);
   capabilities->copies_max = 2;
   capabilities->dpis.push_back(gfx::Size(kHorizontalDpi, kVerticalDpi));
   printing::PrinterSemanticCapsAndDefaults::Paper paper;
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_utils.cc b/chrome/browser/chromeos/extensions/printing/printing_api_utils.cc
index e535e56..2925b7a 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_utils.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_utils.cc
@@ -15,6 +15,7 @@
 #include "components/cloud_devices/common/cloud_device_description.h"
 #include "components/cloud_devices/common/printer_description.h"
 #include "printing/backend/print_backend.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_settings.h"
 #include "third_party/re2/src/re2/re2.h"
 
@@ -158,13 +159,13 @@
     return nullptr;
   switch (duplex.value()) {
     case cloud_devices::printer::DuplexType::NO_DUPLEX:
-      settings->set_duplex_mode(printing::SIMPLEX);
+      settings->set_duplex_mode(printing::mojom::DuplexMode::kSimplex);
       break;
     case cloud_devices::printer::DuplexType::LONG_EDGE:
-      settings->set_duplex_mode(printing::LONG_EDGE);
+      settings->set_duplex_mode(printing::mojom::DuplexMode::kLongEdge);
       break;
     case cloud_devices::printer::DuplexType::SHORT_EDGE:
-      settings->set_duplex_mode(printing::SHORT_EDGE);
+      settings->set_duplex_mode(printing::mojom::DuplexMode::kShortEdge);
       break;
     default:
       NOTREACHED();
diff --git a/chrome/browser/chromeos/extensions/printing/printing_api_utils_unittest.cc b/chrome/browser/chromeos/extensions/printing/printing_api_utils_unittest.cc
index 19a111b4..15c756a 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_api_utils_unittest.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_api_utils_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/json/json_reader.h"
 #include "chromeos/printing/printer_configuration.h"
 #include "printing/backend/print_backend.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_settings.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
@@ -83,7 +84,7 @@
 std::unique_ptr<printing::PrintSettings> ConstructPrintSettings() {
   auto settings = std::make_unique<printing::PrintSettings>();
   settings->set_color(printing::COLOR);
-  settings->set_duplex_mode(printing::LONG_EDGE);
+  settings->set_duplex_mode(printing::mojom::DuplexMode::kLongEdge);
   settings->SetOrientation(/*landscape=*/true);
   settings->set_copies(kCopies);
   settings->set_dpi_xy(kHorizontalDpi, kVerticalDpi);
@@ -98,7 +99,7 @@
 printing::PrinterSemanticCapsAndDefaults ConstructPrinterCapabilities() {
   printing::PrinterSemanticCapsAndDefaults capabilities;
   capabilities.color_model = printing::COLOR;
-  capabilities.duplex_modes.push_back(printing::LONG_EDGE);
+  capabilities.duplex_modes.push_back(printing::mojom::DuplexMode::kLongEdge);
   capabilities.copies_max = 2;
   capabilities.dpis.push_back(gfx::Size(kHorizontalDpi, kVerticalDpi));
   printing::PrinterSemanticCapsAndDefaults::Paper paper;
@@ -163,7 +164,7 @@
 
   ASSERT_TRUE(settings);
   EXPECT_EQ(printing::GRAY, settings->color());
-  EXPECT_EQ(printing::SIMPLEX, settings->duplex_mode());
+  EXPECT_EQ(printing::mojom::DuplexMode::kSimplex, settings->duplex_mode());
   EXPECT_TRUE(settings->landscape());
   EXPECT_EQ(5, settings->copies());
   EXPECT_EQ(gfx::Size(kHorizontalDpi, kVerticalDpi), settings->dpi_size());
@@ -201,7 +202,7 @@
   std::unique_ptr<printing::PrintSettings> settings = ConstructPrintSettings();
   printing::PrinterSemanticCapsAndDefaults capabilities =
       ConstructPrinterCapabilities();
-  capabilities.duplex_modes = {printing::SIMPLEX};
+  capabilities.duplex_modes = {printing::mojom::DuplexMode::kSimplex};
   EXPECT_FALSE(
       CheckSettingsAndCapabilitiesCompatibility(*settings, capabilities));
 }
diff --git a/chrome/browser/chromeos/extensions/printing/printing_apitest.cc b/chrome/browser/chromeos/extensions/printing/printing_apitest.cc
index 346a005..04dcee1b 100644
--- a/chrome/browser/chromeos/extensions/printing/printing_apitest.cc
+++ b/chrome/browser/chromeos/extensions/printing/printing_apitest.cc
@@ -21,6 +21,7 @@
 #include "extensions/test/result_catcher.h"
 #include "printing/backend/print_backend.h"
 #include "printing/backend/test_print_backend.h"
+#include "printing/mojom/print.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace extensions {
@@ -51,7 +52,7 @@
   auto capabilities =
       std::make_unique<printing::PrinterSemanticCapsAndDefaults>();
   capabilities->color_model = printing::COLOR;
-  capabilities->duplex_modes.push_back(printing::SIMPLEX);
+  capabilities->duplex_modes.push_back(printing::mojom::DuplexMode::kSimplex);
   capabilities->copies_max = 2;
   capabilities->dpis.push_back(gfx::Size(kHorizontalDpi, kVerticalDpi));
   printing::PrinterSemanticCapsAndDefaults::Paper paper;
diff --git a/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.cc b/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.cc
index cd39c41..dac7d79 100644
--- a/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.cc
+++ b/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.h"
 
 #include "base/optional.h"
+#include "printing/mojom/print.mojom.h"
 
 namespace chromeos {
 
@@ -19,13 +20,13 @@
 }
 
 proto::PrintSettings_DuplexMode DuplexModeToProto(
-    ::printing::DuplexMode duplex) {
+    ::printing::mojom::DuplexMode duplex) {
   switch (duplex) {
-    case ::printing::DuplexMode::SIMPLEX:
+    case ::printing::mojom::DuplexMode::kSimplex:
       return proto::PrintSettings_DuplexMode_ONE_SIDED;
-    case ::printing::DuplexMode::LONG_EDGE:
+    case ::printing::mojom::DuplexMode::kLongEdge:
       return proto::PrintSettings_DuplexMode_TWO_SIDED_LONG_EDGE;
-    case ::printing::DuplexMode::SHORT_EDGE:
+    case ::printing::mojom::DuplexMode::kShortEdge:
       return proto::PrintSettings_DuplexMode_TWO_SIDED_SHORT_EDGE;
     default:
       NOTREACHED();
diff --git a/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions_unittest.cc b/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions_unittest.cc
index 5f789f86..c93212a 100644
--- a/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions_unittest.cc
+++ b/chrome/browser/chromeos/printing/history/print_job_info_proto_conversions_unittest.cc
@@ -5,6 +5,7 @@
 #include "chrome/browser/chromeos/printing/history/print_job_info_proto_conversions.h"
 
 #include "base/time/time_override.h"
+#include "printing/mojom/print.mojom.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace chromeos {
@@ -32,7 +33,7 @@
 TEST(PrintJobInfoProtoConversionsTest, PrintSettingsToProto) {
   ::printing::PrintSettings settings;
   settings.set_color(::printing::ColorModel::COLOR);
-  settings.set_duplex_mode(::printing::DuplexMode::LONG_EDGE);
+  settings.set_duplex_mode(::printing::mojom::DuplexMode::kLongEdge);
   ::printing::PrintSettings::RequestedMedia media;
   media.size_microns = gfx::Size(kWidth, kHeight);
   media.vendor_id = kVendorId;
diff --git a/chrome/browser/printing/cloud_print/privet_http_unittest.cc b/chrome/browser/printing/cloud_print/privet_http_unittest.cc
index b15d7c3..c56d0a2 100644
--- a/chrome/browser/printing/cloud_print/privet_http_unittest.cc
+++ b/chrome/browser/printing/cloud_print/privet_http_unittest.cc
@@ -33,6 +33,7 @@
 
 #if BUILDFLAG(ENABLE_PRINT_PREVIEW)
 #include "chrome/browser/printing/pwg_raster_converter.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/pwg_raster_settings.h"
 #endif
 
@@ -754,7 +755,7 @@
   EXPECT_TRUE(SuccessfulResponse(kSubmitDocURL, kSampleLocalPrintResponse));
   EXPECT_EQ("foobar", GetUploadData(kSubmitDocURL));
 
-  EXPECT_EQ(printing::DuplexMode::SIMPLEX,
+  EXPECT_EQ(printing::mojom::DuplexMode::kSimplex,
             pwg_converter_->bitmap_settings().duplex_mode);
   EXPECT_EQ(printing::TRANSFORM_NORMAL,
             pwg_converter_->bitmap_settings().odd_page_transform);
@@ -790,7 +791,7 @@
       SuccessfulResponse(kSubmitDocWithJobIDURL, kSampleLocalPrintResponse));
   EXPECT_EQ("foobar", GetUploadData(kSubmitDocWithJobIDURL));
 
-  EXPECT_EQ(printing::DuplexMode::SHORT_EDGE,
+  EXPECT_EQ(printing::mojom::DuplexMode::kShortEdge,
             pwg_converter_->bitmap_settings().duplex_mode);
   EXPECT_EQ(printing::TRANSFORM_ROTATE_180,
             pwg_converter_->bitmap_settings().odd_page_transform);
diff --git a/chrome/browser/printing/print_test_utils.cc b/chrome/browser/printing/print_test_utils.cc
index 3fd8cc1..7d1c13d4 100644
--- a/chrome/browser/printing/print_test_utils.cc
+++ b/chrome/browser/printing/print_test_utils.cc
@@ -10,6 +10,7 @@
 #include "base/json/json_writer.h"
 #include "base/values.h"
 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 
 namespace printing {
@@ -31,7 +32,8 @@
   ticket.SetIntKey(kSettingColor, 2);  // color printing
   ticket.SetBoolKey(kSettingHeaderFooterEnabled, false);
   ticket.SetIntKey(kSettingMarginsType, 0);  // default margins
-  ticket.SetIntKey(kSettingDuplexMode, LONG_EDGE);
+  ticket.SetIntKey(kSettingDuplexMode,
+                   static_cast<int>(mojom::DuplexMode::kLongEdge));
   ticket.SetIntKey(kSettingCopies, 1);
   ticket.SetBoolKey(kSettingCollate, true);
   ticket.SetBoolKey(kSettingShouldPrintBackgrounds, false);
diff --git a/chrome/browser/printing/pwg_raster_converter.cc b/chrome/browser/printing/pwg_raster_converter.cc
index 405a9f1..22ceb058 100644
--- a/chrome/browser/printing/pwg_raster_converter.cc
+++ b/chrome/browser/printing/pwg_raster_converter.cc
@@ -23,6 +23,7 @@
 #include "content/public/browser/child_process_data.h"
 #include "mojo/public/cpp/bindings/remote.h"
 #include "mojo/public/cpp/system/platform_handle.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/pdf_render_settings.h"
 #include "printing/pwg_raster_settings.h"
 #include "printing/units.h"
@@ -244,7 +245,7 @@
   PwgRasterSettings result;
   switch (duplex_value) {
     case cloud_devices::printer::DuplexType::NO_DUPLEX:
-      result.duplex_mode = DuplexMode::SIMPLEX;
+      result.duplex_mode = mojom::DuplexMode::kSimplex;
       result.odd_page_transform = TRANSFORM_NORMAL;
       break;
     case cloud_devices::printer::DuplexType::LONG_EDGE:
@@ -257,7 +258,7 @@
       }
       break;
     case cloud_devices::printer::DuplexType::SHORT_EDGE:
-      result.duplex_mode = DuplexMode::SHORT_EDGE;
+      result.duplex_mode = mojom::DuplexMode::kShortEdge;
       if (document_sheet_back ==
           cloud_devices::printer::DocumentSheetBack::MANUAL_TUMBLE) {
         result.odd_page_transform = TRANSFORM_ROTATE_180;
diff --git a/chrome/browser/printing/pwg_raster_converter_browsertest.cc b/chrome/browser/printing/pwg_raster_converter_browsertest.cc
index 3f20e6a..3452331 100644
--- a/chrome/browser/printing/pwg_raster_converter_browsertest.cc
+++ b/chrome/browser/printing/pwg_raster_converter_browsertest.cc
@@ -15,6 +15,7 @@
 #include "build/build_config.h"
 #include "chrome/browser/printing/pwg_raster_converter.h"
 #include "chrome/common/chrome_paths.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/pdf_render_settings.h"
 #include "printing/pwg_raster_settings.h"
 
@@ -127,7 +128,7 @@
                                  /*use_color=*/true,
                                  PdfRenderSettings::Mode::NORMAL);
   PwgRasterSettings pwg_settings;
-  pwg_settings.duplex_mode = DuplexMode::SIMPLEX;
+  pwg_settings.duplex_mode = mojom::DuplexMode::kSimplex;
   pwg_settings.odd_page_transform = PwgRasterTransformType::TRANSFORM_NORMAL;
   pwg_settings.rotate_all_pages = false;
   pwg_settings.reverse_page_order = false;
@@ -155,7 +156,7 @@
                                  /*use_color=*/false,
                                  PdfRenderSettings::Mode::NORMAL);
   PwgRasterSettings pwg_settings;
-  pwg_settings.duplex_mode = DuplexMode::SIMPLEX;
+  pwg_settings.duplex_mode = mojom::DuplexMode::kSimplex;
   pwg_settings.odd_page_transform = PwgRasterTransformType::TRANSFORM_NORMAL;
   pwg_settings.rotate_all_pages = false;
   pwg_settings.reverse_page_order = false;
@@ -183,7 +184,7 @@
                                  /*use_color=*/false,
                                  PdfRenderSettings::Mode::NORMAL);
   PwgRasterSettings pwg_settings;
-  pwg_settings.duplex_mode = DuplexMode::LONG_EDGE;
+  pwg_settings.duplex_mode = mojom::DuplexMode::kLongEdge;
   pwg_settings.odd_page_transform = PwgRasterTransformType::TRANSFORM_NORMAL;
   pwg_settings.rotate_all_pages = false;
   pwg_settings.reverse_page_order = false;
diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn
index 2754ceb..2470d8334 100644
--- a/chrome/browser/ui/BUILD.gn
+++ b/chrome/browser/ui/BUILD.gn
@@ -4254,6 +4254,7 @@
     ]
     deps += [
       "//components/printing/common:mojo_interfaces",
+      "//printing/mojom",
       "//services/device/public/cpp/usb",
       "//services/device/public/mojom:usb",
     ]
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
index 3f29c22..4abd07a 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
@@ -1371,13 +1371,13 @@
 
 void PrintPreviewHandler::SendPrintPresetOptions(bool disable_scaling,
                                                  int copies,
-                                                 int duplex,
+                                                 mojom::DuplexMode duplex,
                                                  int request_id) {
   if (!ShouldReceiveRendererMessage(request_id))
     return;
 
   FireWebUIListener("print-preset-options", base::Value(disable_scaling),
-                    base::Value(copies), base::Value(duplex));
+                    base::Value(copies), base::Value(static_cast<int>(duplex)));
 }
 
 void PrintPreviewHandler::SendPageCountReady(int page_count,
diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.h b/chrome/browser/ui/webui/print_preview/print_preview_handler.h
index a1ae9e0e..0250e8b 100644
--- a/chrome/browser/ui/webui/print_preview/print_preview_handler.h
+++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.h
@@ -24,6 +24,7 @@
 #include "mojo/public/cpp/bindings/associated_remote.h"
 #include "printing/backend/print_backend.h"
 #include "printing/buildflags/buildflags.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 
 namespace base {
@@ -79,7 +80,7 @@
   // Send the print preset options from the document.
   void SendPrintPresetOptions(bool disable_scaling,
                               int copies,
-                              int duplex,
+                              mojom::DuplexMode duplex,
                               int request_id);
 
   // Send the print preview page count and fit to page scaling
diff --git a/chrome/services/printing/BUILD.gn b/chrome/services/printing/BUILD.gn
index be5209ef..c02d4583 100644
--- a/chrome/services/printing/BUILD.gn
+++ b/chrome/services/printing/BUILD.gn
@@ -15,6 +15,7 @@
   deps = [
     "//components/crash/core/common:crash_key",
     "//components/pwg_encoder",
+    "//printing/mojom",
   ]
 
   public_deps = [
diff --git a/chrome/services/printing/pdf_to_pwg_raster_converter.cc b/chrome/services/printing/pdf_to_pwg_raster_converter.cc
index 471d47d..e8f07fa 100644
--- a/chrome/services/printing/pdf_to_pwg_raster_converter.cc
+++ b/chrome/services/printing/pdf_to_pwg_raster_converter.cc
@@ -14,6 +14,7 @@
 #include "components/pwg_encoder/pwg_encoder.h"
 #include "mojo/public/cpp/bindings/strong_binding.h"
 #include "pdf/pdf.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/pdf_render_settings.h"
 
 namespace printing {
@@ -69,16 +70,16 @@
                                   : pwg_encoder::PwgHeaderInfo::SGRAY;
 
     switch (bitmap_settings.duplex_mode) {
-      case DuplexMode::UNKNOWN_DUPLEX_MODE:
+      case mojom::DuplexMode::kUnknownDuplexMode:
         NOTREACHED();
         break;
-      case DuplexMode::SIMPLEX:
+      case mojom::DuplexMode::kSimplex:
         // Already defaults to false/false.
         break;
-      case DuplexMode::LONG_EDGE:
+      case mojom::DuplexMode::kLongEdge:
         header_info.duplex = true;
         break;
-      case DuplexMode::SHORT_EDGE:
+      case mojom::DuplexMode::kShortEdge:
         header_info.duplex = true;
         header_info.tumble = true;
         break;
diff --git a/chrome/services/printing/public/mojom/BUILD.gn b/chrome/services/printing/public/mojom/BUILD.gn
index 498906e..c7cfd36 100644
--- a/chrome/services/printing/public/mojom/BUILD.gn
+++ b/chrome/services/printing/public/mojom/BUILD.gn
@@ -12,7 +12,10 @@
     "printing_service.mojom",
   ]
 
-  deps = [ "//ui/gfx/geometry/mojom" ]
+  deps = [
+    "//printing/mojom",
+    "//ui/gfx/geometry/mojom",
+  ]
 
   public_deps = [
     "//mojo/public/mojom/base",
diff --git a/chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter_mojom_traits.h b/chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter_mojom_traits.h
index 5eb87a8..c409da3 100644
--- a/chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter_mojom_traits.h
+++ b/chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter_mojom_traits.h
@@ -7,6 +7,7 @@
 
 #include "build/build_config.h"
 #include "chrome/services/printing/public/mojom/pdf_to_pwg_raster_converter.mojom.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/pwg_raster_settings.h"
 
 namespace mojo {
@@ -61,17 +62,17 @@
 
 template <>
 struct EnumTraits<printing::mojom::PwgRasterSettings::DuplexMode,
-                  printing::DuplexMode> {
+                  printing::mojom::DuplexMode> {
   static printing::mojom::PwgRasterSettings::DuplexMode ToMojom(
-      printing::DuplexMode duplex_mode) {
+      printing::mojom::DuplexMode duplex_mode) {
     switch (duplex_mode) {
-      case printing::DuplexMode::UNKNOWN_DUPLEX_MODE:
+      case printing::mojom::DuplexMode::kUnknownDuplexMode:
         break;
-      case printing::DuplexMode::SIMPLEX:
+      case printing::mojom::DuplexMode::kSimplex:
         return printing::mojom::PwgRasterSettings::DuplexMode::SIMPLEX;
-      case printing::DuplexMode::LONG_EDGE:
+      case printing::mojom::DuplexMode::kLongEdge:
         return printing::mojom::PwgRasterSettings::DuplexMode::LONG_EDGE;
-      case printing::DuplexMode::SHORT_EDGE:
+      case printing::mojom::DuplexMode::kShortEdge:
         return printing::mojom::PwgRasterSettings::DuplexMode::SHORT_EDGE;
     }
     NOTREACHED() << "Unknown duplex mode " << static_cast<int>(duplex_mode);
@@ -79,16 +80,16 @@
   }
 
   static bool FromMojom(printing::mojom::PwgRasterSettings::DuplexMode input,
-                        printing::DuplexMode* output) {
+                        printing::mojom::DuplexMode* output) {
     switch (input) {
       case printing::mojom::PwgRasterSettings::DuplexMode::SIMPLEX:
-        *output = printing::DuplexMode::SIMPLEX;
+        *output = printing::mojom::DuplexMode::kSimplex;
         return true;
       case printing::mojom::PwgRasterSettings::DuplexMode::LONG_EDGE:
-        *output = printing::DuplexMode::LONG_EDGE;
+        *output = printing::mojom::DuplexMode::kLongEdge;
         return true;
       case printing::mojom::PwgRasterSettings::DuplexMode::SHORT_EDGE:
-        *output = printing::DuplexMode::SHORT_EDGE;
+        *output = printing::mojom::DuplexMode::kShortEdge;
         return true;
     }
     NOTREACHED() << "Unknown duplex mode " << static_cast<int>(input);
@@ -113,7 +114,7 @@
       const printing::PwgRasterSettings& settings) {
     return settings.odd_page_transform;
   }
-  static printing::DuplexMode duplex_mode(
+  static printing::mojom::DuplexMode duplex_mode(
       const printing::PwgRasterSettings& settings) {
     return settings.duplex_mode;
   }
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index 24c7b95..16e51ba 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -5084,6 +5084,7 @@
     deps += [
       "//printing",
       "//printing:test_support",
+      "//printing/mojom",
     ]
 
     if (enable_print_preview) {
diff --git a/components/arc/mojom/BUILD.gn b/components/arc/mojom/BUILD.gn
index c2545f1..d7cff60 100644
--- a/components/arc/mojom/BUILD.gn
+++ b/components/arc/mojom/BUILD.gn
@@ -73,6 +73,7 @@
       "//components/chromeos_camera/common:camera_app_helper",
       "//media/capture/video/chromeos/mojom:cros_camera",
       "//mojo/public/mojom/base",
+      "//printing/mojom",
       "//services/device/public/mojom:usb",
       "//services/media_session/public/mojom",
       "//services/resource_coordinator/public/mojom",
diff --git a/components/printing/common/BUILD.gn b/components/printing/common/BUILD.gn
index 952b299e..8b5fc72 100644
--- a/components/printing/common/BUILD.gn
+++ b/components/printing/common/BUILD.gn
@@ -20,6 +20,7 @@
     "//ipc",
     "//printing",
     "//printing/common:common",
+    "//printing/mojom",
     "//third_party/blink/public:blink_headers",
     "//ui/accessibility",
     "//ui/gfx/geometry",
diff --git a/components/printing/common/cloud_print_cdd_conversion.cc b/components/printing/common/cloud_print_cdd_conversion.cc
index 550efee..6129a11 100644
--- a/components/printing/common/cloud_print_cdd_conversion.cc
+++ b/components/printing/common/cloud_print_cdd_conversion.cc
@@ -15,6 +15,7 @@
 #include "base/strings/string_number_conversions.h"
 #include "components/cloud_devices/common/printer_description.h"
 #include "printing/backend/print_backend.h"
+#include "printing/mojom/print.mojom.h"
 
 #if defined(OS_CHROMEOS)
 #include "base/feature_list.h"
@@ -27,13 +28,13 @@
 
 namespace {
 
-printer::DuplexType ToCloudDuplexType(printing::DuplexMode mode) {
+printer::DuplexType ToCloudDuplexType(printing::mojom::DuplexMode mode) {
   switch (mode) {
-    case printing::SIMPLEX:
+    case printing::mojom::DuplexMode::kSimplex:
       return printer::DuplexType::NO_DUPLEX;
-    case printing::LONG_EDGE:
+    case printing::mojom::DuplexMode::kLongEdge:
       return printer::DuplexType::LONG_EDGE;
-    case printing::SHORT_EDGE:
+    case printing::mojom::DuplexMode::kShortEdge:
       return printer::DuplexType::SHORT_EDGE;
     default:
       NOTREACHED();
@@ -194,7 +195,7 @@
 
   if (semantic_info.duplex_modes.size() > 1) {
     printer::DuplexCapability duplex;
-    for (printing::DuplexMode mode : semantic_info.duplex_modes) {
+    for (printing::mojom::DuplexMode mode : semantic_info.duplex_modes) {
       duplex.AddDefaultOption(ToCloudDuplexType(mode),
                               semantic_info.duplex_default == mode);
     }
diff --git a/components/printing/common/print_messages.cc b/components/printing/common/print_messages.cc
index 2b03a80..876505d 100644
--- a/components/printing/common/print_messages.cc
+++ b/components/printing/common/print_messages.cc
@@ -152,8 +152,7 @@
     PrintHostMsg_SetOptionsFromDocument_Params()
     : is_scaling_disabled(false),
       copies(0),
-      duplex(printing::UNKNOWN_DUPLEX_MODE) {
-}
+      duplex(printing::mojom::DuplexMode::kUnknownDuplexMode) {}
 
 PrintHostMsg_SetOptionsFromDocument_Params::
     ~PrintHostMsg_SetOptionsFromDocument_Params() {
diff --git a/components/printing/common/print_messages.h b/components/printing/common/print_messages.h
index eaf36df..5b190dbd 100644
--- a/components/printing/common/print_messages.h
+++ b/components/printing/common/print_messages.h
@@ -18,6 +18,7 @@
 #include "ipc/ipc_message_macros.h"
 #include "printing/buildflags/buildflags.h"
 #include "printing/common/metafile_utils.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/page_range.h"
 #include "printing/page_size_margins.h"
 #include "printing/print_job_constants.h"
@@ -104,7 +105,7 @@
 
   bool is_scaling_disabled;
   int copies;
-  printing::DuplexMode duplex;
+  printing::mojom::DuplexMode duplex;
   printing::PageRanges page_ranges;
 };
 #endif  // BUILDFLAG(ENABLE_PRINT_PREVIEW)
diff --git a/components/printing/common/printing_param_traits_macros.h b/components/printing/common/printing_param_traits_macros.h
index 3ce6d9cb..90afb03 100644
--- a/components/printing/common/printing_param_traits_macros.h
+++ b/components/printing/common/printing_param_traits_macros.h
@@ -9,6 +9,7 @@
 #define COMPONENTS_PRINTING_COMMON_PRINTING_PARAM_TRAITS_MACROS_H_
 
 #include "ipc/ipc_message_macros.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 
 // TODO(dgn) move all those macros back to
@@ -16,8 +17,8 @@
 // single generator. (main tracking bug: crbug.com/450822)
 IPC_ENUM_TRAITS_MAX_VALUE(printing::MarginType,
                           printing::MARGIN_TYPE_LAST)
-IPC_ENUM_TRAITS_MIN_MAX_VALUE(printing::DuplexMode,
-                              printing::UNKNOWN_DUPLEX_MODE,
-                              printing::SHORT_EDGE)
+IPC_ENUM_TRAITS_MIN_MAX_VALUE(printing::mojom::DuplexMode,
+                              printing::mojom::DuplexMode::kUnknownDuplexMode,
+                              printing::mojom::DuplexMode::kShortEdge)
 
 #endif  // COMPONENTS_PRINTING_COMMON_PRINTING_PARAM_TRAITS_MACROS_H_
diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc
index 7a2cce2..38390c1 100644
--- a/components/printing/renderer/print_render_frame_helper.cc
+++ b/components/printing/renderer/print_render_frame_helper.cc
@@ -85,12 +85,6 @@
                 "mismatching enums: " #a)
 #endif
 
-// Check blink and printing enums are kept in sync.
-STATIC_ASSERT_ENUM(blink::kWebUnknownDuplexMode, UNKNOWN_DUPLEX_MODE);
-STATIC_ASSERT_ENUM(blink::kWebSimplex, SIMPLEX);
-STATIC_ASSERT_ENUM(blink::kWebLongEdge, LONG_EDGE);
-STATIC_ASSERT_ENUM(blink::kWebShortEdge, SHORT_EDGE);
-
 enum PrintPreviewHelperEvents {
   PREVIEW_EVENT_REQUESTED,        // Received a request for a preview document.
   PREVIEW_EVENT_CACHE_HIT,        // Unused.
@@ -2088,7 +2082,7 @@
   options->is_scaling_disabled = PDFShouldDisableScalingBasedOnPreset(
       preset_options, print_pages_params_->params, false);
   options->copies = preset_options.copies;
-  options->duplex = static_cast<DuplexMode>(preset_options.duplex_mode);
+  options->duplex = preset_options.duplex_mode;
   return true;
 }
 
diff --git a/components/printing/test/BUILD.gn b/components/printing/test/BUILD.gn
index 65e63db..0e30276 100644
--- a/components/printing/test/BUILD.gn
+++ b/components/printing/test/BUILD.gn
@@ -24,6 +24,7 @@
     "//ipc",
     "//printing",
     "//printing:test_support",
+    "//printing/mojom",
     "//skia",
     "//testing/gtest",
     "//ui/gfx/geometry",
diff --git a/components/printing/test/print_render_frame_helper_browsertest.cc b/components/printing/test/print_render_frame_helper_browsertest.cc
index 1c1abf7..9952933 100644
--- a/components/printing/test/print_render_frame_helper_browsertest.cc
+++ b/components/printing/test/print_render_frame_helper_browsertest.cc
@@ -26,6 +26,7 @@
 #include "content/public/test/render_view_test.h"
 #include "ipc/ipc_listener.h"
 #include "printing/buildflags/buildflags.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/units.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -119,7 +120,8 @@
   dict->SetBoolean(kSettingCollate, false);
   dict->SetInteger(kSettingColor, GRAY);
   dict->SetInteger(kSettingPrinterType, static_cast<int>(PrinterType::kPdf));
-  dict->SetInteger(kSettingDuplexMode, SIMPLEX);
+  dict->SetInteger(kSettingDuplexMode,
+                   static_cast<int>(mojom::DuplexMode::kSimplex));
   dict->SetInteger(kSettingCopies, 1);
   dict->SetString(kSettingDeviceName, "dummy");
   dict->SetInteger(kPreviewUIID, 4);
diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
index 2a6417d..122f348 100644
--- a/content/renderer/BUILD.gn
+++ b/content/renderer/BUILD.gn
@@ -640,6 +640,7 @@
       "//ppapi/host",
       "//ppapi/proxy",
       "//ppapi/shared_impl",
+      "//printing/mojom",
       "//third_party/libvpx",
       "//third_party/opus",
       "//ui/base/cursor",
diff --git a/content/renderer/pepper/pepper_plugin_instance_impl.cc b/content/renderer/pepper/pepper_plugin_instance_impl.cc
index 0d1c9f6c..c35ab64 100644
--- a/content/renderer/pepper/pepper_plugin_instance_impl.cc
+++ b/content/renderer/pepper/pepper_plugin_instance_impl.cc
@@ -91,6 +91,7 @@
 #include "ppapi/thunk/enter.h"
 #include "ppapi/thunk/ppb_buffer_api.h"
 #include "printing/buildflags/buildflags.h"
+#include "printing/mojom/print.mojom.h"
 #include "skia/ext/platform_canvas.h"
 #include "third_party/blink/public/common/input/web_input_event.h"
 #include "third_party/blink/public/common/input/web_keyboard_event.h"
@@ -2013,16 +2014,17 @@
   preset_options->is_scaling_disabled = PP_ToBool(options.is_scaling_disabled);
   switch (options.duplex) {
     case PP_PRIVATEDUPLEXMODE_SIMPLEX:
-      preset_options->duplex_mode = blink::kWebSimplex;
+      preset_options->duplex_mode = printing::mojom::DuplexMode::kSimplex;
       break;
     case PP_PRIVATEDUPLEXMODE_SHORT_EDGE:
-      preset_options->duplex_mode = blink::kWebShortEdge;
+      preset_options->duplex_mode = printing::mojom::DuplexMode::kShortEdge;
       break;
     case PP_PRIVATEDUPLEXMODE_LONG_EDGE:
-      preset_options->duplex_mode = blink::kWebLongEdge;
+      preset_options->duplex_mode = printing::mojom::DuplexMode::kLongEdge;
       break;
     default:
-      preset_options->duplex_mode = blink::kWebUnknownDuplexMode;
+      preset_options->duplex_mode =
+          printing::mojom::DuplexMode::kUnknownDuplexMode;
       break;
   }
   preset_options->copies = options.copies;
diff --git a/printing/BUILD.gn b/printing/BUILD.gn
index 7904e071..14a62f05 100644
--- a/printing/BUILD.gn
+++ b/printing/BUILD.gn
@@ -109,6 +109,7 @@
     "//base/third_party/dynamic_annotations",
     "//cc/paint",
     "//printing/common",
+    "//printing/mojom",
     "//skia",
     "//third_party/icu",
     "//ui/accessibility",
@@ -343,6 +344,7 @@
     "//base/test:run_all_unittests",
     "//base/test:test_support",
     "//printing/common",
+    "//printing/mojom",
     "//testing/gmock",
     "//testing/gtest",
     "//ui/base",
diff --git a/printing/backend/cups_helper.cc b/printing/backend/cups_helper.cc
index c28261d6..7c9cd9b 100644
--- a/printing/backend/cups_helper.cc
+++ b/printing/backend/cups_helper.cc
@@ -21,6 +21,7 @@
 #include "base/values.h"
 #include "printing/backend/print_backend.h"
 #include "printing/backend/print_backend_consts.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/printing_utils.h"
 #include "printing/units.h"
 #include "url/gurl.h"
@@ -173,8 +174,8 @@
 }
 
 void GetDuplexSettings(ppd_file_t* ppd,
-                       std::vector<DuplexMode>* duplex_modes,
-                       DuplexMode* duplex_default) {
+                       std::vector<mojom::DuplexMode>* duplex_modes,
+                       mojom::DuplexMode* duplex_default) {
   ppd_choice_t* duplex_choice = ppdFindMarkedChoice(ppd, kDuplex);
   ppd_option_t* option = ppdFindOption(ppd, kDuplex);
   if (!option)
@@ -187,24 +188,24 @@
     duplex_choice = ppdFindChoice(option, option->defchoice);
 
   if (ppdFindChoice(option, kDuplexNone))
-    duplex_modes->push_back(SIMPLEX);
+    duplex_modes->push_back(mojom::DuplexMode::kSimplex);
 
   if (ppdFindChoice(option, kDuplexNoTumble))
-    duplex_modes->push_back(LONG_EDGE);
+    duplex_modes->push_back(mojom::DuplexMode::kLongEdge);
 
   if (ppdFindChoice(option, kDuplexTumble))
-    duplex_modes->push_back(SHORT_EDGE);
+    duplex_modes->push_back(mojom::DuplexMode::kShortEdge);
 
   if (!duplex_choice)
     return;
 
   const char* choice = duplex_choice->choice;
   if (EqualsCaseInsensitiveASCII(choice, kDuplexNone)) {
-    *duplex_default = SIMPLEX;
+    *duplex_default = mojom::DuplexMode::kSimplex;
   } else if (EqualsCaseInsensitiveASCII(choice, kDuplexTumble)) {
-    *duplex_default = SHORT_EDGE;
+    *duplex_default = mojom::DuplexMode::kShortEdge;
   } else {
-    *duplex_default = LONG_EDGE;
+    *duplex_default = mojom::DuplexMode::kLongEdge;
   }
 }
 
diff --git a/printing/backend/cups_helper_unittest.cc b/printing/backend/cups_helper_unittest.cc
index 459f00c..53dc4602 100644
--- a/printing/backend/cups_helper_unittest.cc
+++ b/printing/backend/cups_helper_unittest.cc
@@ -5,6 +5,7 @@
 #include "printing/backend/cups_helper.h"
 
 #include "printing/backend/print_backend.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_settings.h"
 #include "printing/printing_utils.h"
 #include "testing/gmock/include/gmock/gmock.h"
@@ -60,8 +61,10 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_EQ(caps.copies_max, 9999);
   EXPECT_THAT(caps.duplex_modes,
-              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
-  EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                            mojom::DuplexMode::kLongEdge,
+                                            mojom::DuplexMode::kShortEdge));
+  EXPECT_EQ(mojom::DuplexMode::kShortEdge, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
@@ -88,8 +91,10 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_EQ(caps.copies_max, 9999);
   EXPECT_THAT(caps.duplex_modes,
-              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
-  EXPECT_EQ(SIMPLEX, caps.duplex_default);
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                            mojom::DuplexMode::kLongEdge,
+                                            mojom::DuplexMode::kShortEdge));
+  EXPECT_EQ(mojom::DuplexMode::kSimplex, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
@@ -113,7 +118,7 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_EQ(caps.copies_max, 9999);
   EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre());
-  EXPECT_EQ(UNKNOWN_DUPLEX_MODE, caps.duplex_default);
+  EXPECT_EQ(mojom::DuplexMode::kUnknownDuplexMode, caps.duplex_default);
   EXPECT_FALSE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
@@ -146,8 +151,10 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_EQ(caps.copies_max, 9999);
   EXPECT_THAT(caps.duplex_modes,
-              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
-  EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                            mojom::DuplexMode::kLongEdge,
+                                            mojom::DuplexMode::kShortEdge));
+  EXPECT_EQ(mojom::DuplexMode::kShortEdge, caps.duplex_default);
   EXPECT_TRUE(caps.color_changeable);
   EXPECT_TRUE(caps.color_default);
 }
@@ -186,8 +193,10 @@
   EXPECT_TRUE(caps.collate_default);
   EXPECT_EQ(caps.copies_max, 9999);
   EXPECT_THAT(caps.duplex_modes,
-              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
-  EXPECT_EQ(LONG_EDGE, caps.duplex_default);
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                            mojom::DuplexMode::kLongEdge,
+                                            mojom::DuplexMode::kShortEdge));
+  EXPECT_EQ(mojom::DuplexMode::kLongEdge, caps.duplex_default);
   EXPECT_TRUE(caps.color_changeable);
   EXPECT_FALSE(caps.color_default);
 }
@@ -325,8 +334,10 @@
     PrinterSemanticCapsAndDefaults caps;
     EXPECT_TRUE(ParsePpdCapabilities("test", "", kTestPpdData, &caps));
     EXPECT_THAT(caps.duplex_modes,
-                testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE, SHORT_EDGE));
-    EXPECT_EQ(SHORT_EDGE, caps.duplex_default);
+                testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                              mojom::DuplexMode::kLongEdge,
+                                              mojom::DuplexMode::kShortEdge));
+    EXPECT_EQ(mojom::DuplexMode::kShortEdge, caps.duplex_default);
   }
 }
 
diff --git a/printing/backend/cups_ipp_helper.cc b/printing/backend/cups_ipp_helper.cc
index 4645ad9..02ea155 100644
--- a/printing/backend/cups_ipp_helper.cc
+++ b/printing/backend/cups_ipp_helper.cc
@@ -19,6 +19,7 @@
 #include "printing/backend/cups_ipp_constants.h"
 #include "printing/backend/cups_printer.h"
 #include "printing/backend/print_backend_consts.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/printing_utils.h"
 #include "printing/units.h"
 
@@ -48,7 +49,7 @@
 
 struct DuplexMap {
   const char* name;
-  DuplexMode mode;
+  mojom::DuplexMode mode;
 };
 
 const ColorMap kColorList[]{
@@ -57,9 +58,9 @@
 };
 
 const DuplexMap kDuplexList[]{
-    {CUPS_SIDES_ONE_SIDED, SIMPLEX},
-    {CUPS_SIDES_TWO_SIDED_PORTRAIT, LONG_EDGE},
-    {CUPS_SIDES_TWO_SIDED_LANDSCAPE, SHORT_EDGE},
+    {CUPS_SIDES_ONE_SIDED, mojom::DuplexMode::kSimplex},
+    {CUPS_SIDES_TWO_SIDED_PORTRAIT, mojom::DuplexMode::kLongEdge},
+    {CUPS_SIDES_TWO_SIDED_LANDSCAPE, mojom::DuplexMode::kShortEdge},
 };
 
 ColorModel ColorModelFromIppColor(base::StringPiece ippColor) {
@@ -72,12 +73,12 @@
   return UNKNOWN_COLOR_MODEL;
 }
 
-DuplexMode DuplexModeFromIpp(base::StringPiece ipp_duplex) {
+mojom::DuplexMode DuplexModeFromIpp(base::StringPiece ipp_duplex) {
   for (const DuplexMap& entry : kDuplexList) {
     if (base::EqualsCaseInsensitiveASCII(ipp_duplex, entry.name))
       return entry.mode;
   }
-  return UNKNOWN_DUPLEX_MODE;
+  return mojom::DuplexMode::kUnknownDuplexMode;
 }
 
 ColorModel DefaultColorModel(const CupsOptionProvider& printer) {
@@ -140,14 +141,14 @@
   std::vector<base::StringPiece> duplex_modes =
       printer.GetSupportedOptionValueStrings(kIppDuplex);
   for (base::StringPiece duplex : duplex_modes) {
-    DuplexMode duplex_mode = DuplexModeFromIpp(duplex);
-    if (duplex_mode != UNKNOWN_DUPLEX_MODE)
+    mojom::DuplexMode duplex_mode = DuplexModeFromIpp(duplex);
+    if (duplex_mode != mojom::DuplexMode::kUnknownDuplexMode)
       printer_info->duplex_modes.push_back(duplex_mode);
   }
   ipp_attribute_t* attr = printer.GetDefaultOptionValue(kIppDuplex);
   printer_info->duplex_default =
       attr ? DuplexModeFromIpp(ippGetString(attr, 0, nullptr))
-           : UNKNOWN_DUPLEX_MODE;
+           : mojom::DuplexMode::kUnknownDuplexMode;
 }
 
 void CopiesRange(const CupsOptionProvider& printer,
diff --git a/printing/backend/cups_ipp_helper_unittest.cc b/printing/backend/cups_ipp_helper_unittest.cc
index 05ce5f6f..104f1f6 100644
--- a/printing/backend/cups_ipp_helper_unittest.cc
+++ b/printing/backend/cups_ipp_helper_unittest.cc
@@ -14,6 +14,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "build/build_config.h"
 #include "printing/backend/cups_printer.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/printing_features.h"
 #include "testing/gmock/include/gmock/gmock.h"
 #include "testing/gtest/include/gtest/gtest.h"
@@ -164,8 +165,9 @@
   CapsAndDefaultsFromPrinter(*printer_, &caps);
 
   EXPECT_THAT(caps.duplex_modes,
-              testing::UnorderedElementsAre(SIMPLEX, LONG_EDGE));
-  EXPECT_EQ(SIMPLEX, caps.duplex_default);
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex,
+                                            mojom::DuplexMode::kLongEdge));
+  EXPECT_EQ(mojom::DuplexMode::kSimplex, caps.duplex_default);
 }
 
 TEST_F(PrintBackendCupsIppHelperTest, DuplexNotSupported) {
@@ -176,8 +178,9 @@
   PrinterSemanticCapsAndDefaults caps;
   CapsAndDefaultsFromPrinter(*printer_, &caps);
 
-  EXPECT_THAT(caps.duplex_modes, testing::UnorderedElementsAre(SIMPLEX));
-  EXPECT_EQ(SIMPLEX, caps.duplex_default);
+  EXPECT_THAT(caps.duplex_modes,
+              testing::UnorderedElementsAre(mojom::DuplexMode::kSimplex));
+  EXPECT_EQ(mojom::DuplexMode::kSimplex, caps.duplex_default);
 }
 
 TEST_F(PrintBackendCupsIppHelperTest, A4PaperSupported) {
diff --git a/printing/backend/print_backend.h b/printing/backend/print_backend.h
index 2c3848a..dac33e0 100644
--- a/printing/backend/print_backend.h
+++ b/printing/backend/print_backend.h
@@ -11,6 +11,7 @@
 
 #include "base/memory/ref_counted.h"
 #include "build/build_config.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/printing_export.h"
 #include "ui/gfx/geometry/size.h"
@@ -98,8 +99,8 @@
   // |copies_max| should never be < 1.
   int32_t copies_max = 1;
 
-  std::vector<DuplexMode> duplex_modes;
-  DuplexMode duplex_default = UNKNOWN_DUPLEX_MODE;
+  std::vector<mojom::DuplexMode> duplex_modes;
+  mojom::DuplexMode duplex_default = mojom::DuplexMode::kUnknownDuplexMode;
 
   bool color_changeable = false;
   bool color_default = false;
diff --git a/printing/backend/print_backend_win.cc b/printing/backend/print_backend_win.cc
index 2d37fdd..728894f 100644
--- a/printing/backend/print_backend_win.cc
+++ b/printing/backend/print_backend_win.cc
@@ -22,6 +22,7 @@
 #include "printing/backend/print_backend_consts.h"
 #include "printing/backend/printing_info_win.h"
 #include "printing/backend/win_helper.h"
+#include "printing/mojom/print.mojom.h"
 
 namespace printing {
 
@@ -270,13 +271,13 @@
     if (user_settings->dmFields & DM_DUPLEX) {
       switch (user_settings->dmDuplex) {
         case DMDUP_SIMPLEX:
-          caps.duplex_default = SIMPLEX;
+          caps.duplex_default = mojom::DuplexMode::kSimplex;
           break;
         case DMDUP_VERTICAL:
-          caps.duplex_default = LONG_EDGE;
+          caps.duplex_default = mojom::DuplexMode::kLongEdge;
           break;
         case DMDUP_HORIZONTAL:
-          caps.duplex_default = SHORT_EDGE;
+          caps.duplex_default = mojom::DuplexMode::kShortEdge;
           break;
         default:
           NOTREACHED();
@@ -288,7 +289,7 @@
   } else {
     LOG(WARNING) << "Fallback to color/simplex mode.";
     caps.color_default = caps.color_changeable;
-    caps.duplex_default = SIMPLEX;
+    caps.duplex_default = mojom::DuplexMode::kSimplex;
   }
 
   // Get printer capabilities. For more info see here:
@@ -298,10 +299,10 @@
   caps.color_model = printing::COLOR;
   caps.bw_model = printing::GRAY;
 
-  caps.duplex_modes.push_back(SIMPLEX);
+  caps.duplex_modes.push_back(mojom::DuplexMode::kSimplex);
   if (DeviceCapabilities(name, port, DC_DUPLEX, nullptr, nullptr) == 1) {
-    caps.duplex_modes.push_back(LONG_EDGE);
-    caps.duplex_modes.push_back(SHORT_EDGE);
+    caps.duplex_modes.push_back(mojom::DuplexMode::kLongEdge);
+    caps.duplex_modes.push_back(mojom::DuplexMode::kShortEdge);
   }
 
   caps.collate_capable =
diff --git a/printing/mojom/BUILD.gn b/printing/mojom/BUILD.gn
new file mode 100644
index 0000000..09a14ce
--- /dev/null
+++ b/printing/mojom/BUILD.gn
@@ -0,0 +1,9 @@
+# Copyright 2020 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.
+
+import("//mojo/public/tools/bindings/mojom.gni")
+
+mojom("mojom") {
+  sources = [ "print.mojom" ]
+}
diff --git a/printing/mojom/OWNERS b/printing/mojom/OWNERS
new file mode 100644
index 0000000..08850f4
--- /dev/null
+++ b/printing/mojom/OWNERS
@@ -0,0 +1,2 @@
+per-file *.mojom=set noparent
+per-file *.mojom=file://ipc/SECURITY_OWNERS
diff --git a/printing/mojom/print.mojom b/printing/mojom/print.mojom
new file mode 100644
index 0000000..6b92411
--- /dev/null
+++ b/printing/mojom/print.mojom
@@ -0,0 +1,13 @@
+// Copyright 2020 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.
+
+module printing.mojom;
+
+// Print job duplex mode values.
+enum DuplexMode {
+  kUnknownDuplexMode = -1,
+  kSimplex,
+  kLongEdge,
+  kShortEdge,
+};
diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h
index d86e2df..4d36a42 100644
--- a/printing/print_job_constants.h
+++ b/printing/print_job_constants.h
@@ -105,14 +105,6 @@
 PRINTING_EXPORT extern const char kXeroxBW[];
 #endif
 
-// Print job duplex mode values.
-enum DuplexMode {
-  UNKNOWN_DUPLEX_MODE = -1,
-  SIMPLEX,
-  LONG_EDGE,
-  SHORT_EDGE,
-};
-
 // Specifies the horizontal alignment of the headers and footers.
 enum HorizontalHeaderFooterPosition { LEFT, CENTER, RIGHT };
 
diff --git a/printing/print_settings.cc b/printing/print_settings.cc
index d5c47abb..4f6df32e 100644
--- a/printing/print_settings.cc
+++ b/printing/print_settings.cc
@@ -253,7 +253,7 @@
   collate_ = false;
   color_ = UNKNOWN_COLOR_MODEL;
   copies_ = 0;
-  duplex_mode_ = UNKNOWN_DUPLEX_MODE;
+  duplex_mode_ = mojom::DuplexMode::kUnknownDuplexMode;
   device_name_.clear();
   requested_media_ = RequestedMedia();
   page_setup_device_units_.Clear();
diff --git a/printing/print_settings.h b/printing/print_settings.h
index 43b9b46..6eac8b32 100644
--- a/printing/print_settings.h
+++ b/printing/print_settings.h
@@ -11,6 +11,7 @@
 #include "base/macros.h"
 #include "base/optional.h"
 #include "base/strings/string16.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/page_range.h"
 #include "printing/page_setup.h"
 #include "printing/print_job_constants.h"
@@ -174,8 +175,10 @@
   void set_copies(int copies) { copies_ = copies; }
   int copies() const { return copies_; }
 
-  void set_duplex_mode(DuplexMode duplex_mode) { duplex_mode_ = duplex_mode; }
-  DuplexMode duplex_mode() const { return duplex_mode_; }
+  void set_duplex_mode(mojom::DuplexMode duplex_mode) {
+    duplex_mode_ = duplex_mode;
+  }
+  mojom::DuplexMode duplex_mode() const { return duplex_mode_; }
 
 #if defined(OS_WIN)
   void set_print_text_with_gdi(bool use_gdi) { print_text_with_gdi_ = use_gdi; }
@@ -256,7 +259,7 @@
   int copies_;
 
   // Duplex type user wants to use.
-  DuplexMode duplex_mode_;
+  mojom::DuplexMode duplex_mode_;
 
   // Printer device name as opened by the OS.
   base::string16 device_name_;
diff --git a/printing/print_settings_conversion.cc b/printing/print_settings_conversion.cc
index e01d1952..1f90d32 100644
--- a/printing/print_settings_conversion.cc
+++ b/printing/print_settings_conversion.cc
@@ -17,6 +17,7 @@
 #include "base/time/time.h"
 #include "base/values.h"
 #include "build/build_config.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/print_settings.h"
 #include "printing/units.h"
@@ -192,7 +193,8 @@
   settings->SetOrientation(landscape.value());
   settings->set_device_name(
       base::UTF8ToUTF16(*job_settings.FindStringKey(kSettingDeviceName)));
-  settings->set_duplex_mode(static_cast<DuplexMode>(duplex_mode.value()));
+  settings->set_duplex_mode(
+      static_cast<mojom::DuplexMode>(duplex_mode.value()));
   settings->set_color(static_cast<ColorModel>(color.value()));
   settings->set_scale_factor(static_cast<double>(scale_factor.value()) / 100.0);
   settings->set_rasterize_pdf(rasterize_pdf.value());
@@ -256,7 +258,8 @@
   job_settings->SetBoolean(kSettingCollate, settings.collate());
   job_settings->SetInteger(kSettingCopies, settings.copies());
   job_settings->SetInteger(kSettingColor, settings.color());
-  job_settings->SetInteger(kSettingDuplexMode, settings.duplex_mode());
+  job_settings->SetInteger(kSettingDuplexMode,
+                           static_cast<int>(settings.duplex_mode()));
   job_settings->SetBoolean(kSettingLandscape, settings.landscape());
   job_settings->SetString(kSettingDeviceName, settings.device_name());
   job_settings->SetInteger(kSettingPagesPerSheet, settings.pages_per_sheet());
diff --git a/printing/printing_context.cc b/printing/printing_context.cc
index a85f6812..69ac356 100644
--- a/printing/printing_context.cc
+++ b/printing/printing_context.cc
@@ -8,6 +8,7 @@
 
 #include "base/check.h"
 #include "base/notreached.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/page_setup.h"
 #include "printing/page_size_margins.h"
 #include "printing/print_job_constants.h"
@@ -79,7 +80,9 @@
   pdf_settings.SetIntKey(kSettingColor, printing::COLOR);
   pdf_settings.SetIntKey(kSettingDpiHorizontal, kPointsPerInch);
   pdf_settings.SetIntKey(kSettingDpiVertical, kPointsPerInch);
-  pdf_settings.SetIntKey(kSettingDuplexMode, printing::SIMPLEX);
+  pdf_settings.SetIntKey(
+      kSettingDuplexMode,
+      static_cast<int>(printing::mojom::DuplexMode::kSimplex));
   pdf_settings.SetBoolKey(kSettingLandscape, false);
   pdf_settings.SetStringKey(kSettingDeviceName, "");
   pdf_settings.SetIntKey(kSettingPrinterType,
diff --git a/printing/printing_context_chromeos.cc b/printing/printing_context_chromeos.cc
index a1241e9b5..3d52830 100644
--- a/printing/printing_context_chromeos.cc
+++ b/printing/printing_context_chromeos.cc
@@ -26,6 +26,7 @@
 #include "printing/backend/cups_ipp_helper.h"
 #include "printing/backend/cups_printer.h"
 #include "printing/metafile.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/print_settings.h"
 #include "printing/printing_features.h"
@@ -121,13 +122,13 @@
     const PrintSettings& settings) {
   const char* sides = nullptr;
   switch (settings.duplex_mode()) {
-    case SIMPLEX:
+    case mojom::DuplexMode::kSimplex:
       sides = CUPS_SIDES_ONE_SIDED;
       break;
-    case LONG_EDGE:
+    case mojom::DuplexMode::kLongEdge:
       sides = CUPS_SIDES_TWO_SIDED_PORTRAIT;
       break;
-    case SHORT_EDGE:
+    case mojom::DuplexMode::kShortEdge:
       sides = CUPS_SIDES_TWO_SIDED_LANDSCAPE;
       break;
     default:
diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h
index 4bd88bdd..06cdc0e 100644
--- a/printing/printing_context_mac.h
+++ b/printing/printing_context_mac.h
@@ -10,6 +10,7 @@
 
 #include "base/mac/scoped_nsobject.h"
 #include "base/macros.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 #include "printing/printing_context.h"
 
@@ -82,7 +83,7 @@
 
   // Sets duplex mode in PMPrintSettings.
   // Returns true if duplex mode is set.
-  bool SetDuplexModeInPrintSettings(DuplexMode mode);
+  bool SetDuplexModeInPrintSettings(mojom::DuplexMode mode);
 
   // Sets output color mode in PMPrintSettings.
   // Returns true if color mode is set.
diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm
index 45e0bbbdd..1fd80b1 100644
--- a/printing/printing_context_mac.mm
+++ b/printing/printing_context_mac.mm
@@ -363,19 +363,19 @@
   return true;
 }
 
-bool PrintingContextMac::SetDuplexModeInPrintSettings(DuplexMode mode) {
+bool PrintingContextMac::SetDuplexModeInPrintSettings(mojom::DuplexMode mode) {
   PMDuplexMode duplexSetting;
   switch (mode) {
-    case LONG_EDGE:
+    case mojom::DuplexMode::kLongEdge:
       duplexSetting = kPMDuplexNoTumble;
       break;
-    case SHORT_EDGE:
+    case mojom::DuplexMode::kShortEdge:
       duplexSetting = kPMDuplexTumble;
       break;
-    case SIMPLEX:
+    case mojom::DuplexMode::kSimplex:
       duplexSetting = kPMDuplexNone;
       break;
-    default:  // UNKNOWN_DUPLEX_MODE
+    default:  // kUnknownDuplexMode
       return true;
   }
 
diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc
index 9ab4d30..414cacf 100644
--- a/printing/printing_context_win.cc
+++ b/printing/printing_context_win.cc
@@ -21,6 +21,7 @@
 #include "printing/backend/win_helper.h"
 #include "printing/buildflags/buildflags.h"
 #include "printing/metafile_skia.h"
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_settings_initializer_win.h"
 #include "printing/printed_document.h"
 #include "printing/printing_context_system_dialog_win.h"
@@ -183,19 +184,19 @@
     }
 
     switch (settings_->duplex_mode()) {
-      case LONG_EDGE:
+      case mojom::DuplexMode::kLongEdge:
         dev_mode->dmFields |= DM_DUPLEX;
         dev_mode->dmDuplex = DMDUP_VERTICAL;
         break;
-      case SHORT_EDGE:
+      case mojom::DuplexMode::kShortEdge:
         dev_mode->dmFields |= DM_DUPLEX;
         dev_mode->dmDuplex = DMDUP_HORIZONTAL;
         break;
-      case SIMPLEX:
+      case mojom::DuplexMode::kSimplex:
         dev_mode->dmFields |= DM_DUPLEX;
         dev_mode->dmDuplex = DMDUP_SIMPLEX;
         break;
-      default:  // UNKNOWN_DUPLEX_MODE
+      default:  // kUnknownDuplexMode
         break;
     }
 
diff --git a/printing/pwg_raster_settings.h b/printing/pwg_raster_settings.h
index b1c3709..11c65b3 100644
--- a/printing/pwg_raster_settings.h
+++ b/printing/pwg_raster_settings.h
@@ -5,6 +5,7 @@
 #ifndef PRINTING_PWG_RASTER_SETTINGS_H_
 #define PRINTING_PWG_RASTER_SETTINGS_H_
 
+#include "printing/mojom/print.mojom.h"
 #include "printing/print_job_constants.h"
 
 namespace printing {
@@ -18,7 +19,7 @@
 };
 
 struct PwgRasterSettings {
-  DuplexMode duplex_mode;
+  mojom::DuplexMode duplex_mode;
   // How to transform odd-numbered pages.
   PwgRasterTransformType odd_page_transform;
   // Rotate all pages (on top of odd-numbered page transform).
diff --git a/third_party/blink/public/BUILD.gn b/third_party/blink/public/BUILD.gn
index 9e5eb38..5e148e6 100644
--- a/third_party/blink/public/BUILD.gn
+++ b/third_party/blink/public/BUILD.gn
@@ -444,6 +444,7 @@
     "//media/webrtc:webrtc",
     "//mojo/public/cpp/bindings:bindings",
     "//mojo/public/cpp/system:system",
+    "//printing/mojom",
     "//services/device/public/mojom:mojom_shared_cpp_sources",
     "//services/network/public/cpp:cpp",
     "//services/network/public/mojom",
diff --git a/third_party/blink/public/web/DEPS b/third_party/blink/public/web/DEPS
index d4943b4..f7bd2da 100644
--- a/third_party/blink/public/web/DEPS
+++ b/third_party/blink/public/web/DEPS
@@ -26,6 +26,7 @@
     "+components/viz/common/surfaces/frame_sink_id.h",
     "+mojo/public",
     "+net/cookies/site_for_cookies.h",
+    "+printing/mojom/print.mojom-shared.h",
     "+services/metrics/public/cpp/ukm_source_id.h",
     "+services/network/public/cpp/web_sandbox_flags.h",
     "+services/network/public/mojom/web_sandbox_flags.mojom-shared.h",
diff --git a/third_party/blink/public/web/web_print_preset_options.h b/third_party/blink/public/web/web_print_preset_options.h
index f81d7b06..90f4ef6 100644
--- a/third_party/blink/public/web/web_print_preset_options.h
+++ b/third_party/blink/public/web/web_print_preset_options.h
@@ -7,18 +7,13 @@
 
 #include <vector>
 
+#include "printing/mojom/print.mojom-shared.h"
+
 namespace blink {
 
 struct WebPageRange;
 typedef std::vector<WebPageRange> WebPageRanges;
 
-enum WebDuplexMode {
-  kWebUnknownDuplexMode = -1,
-  kWebSimplex,
-  kWebLongEdge,
-  kWebShortEdge
-};
-
 struct WebPageRange {
   int from;
   int to;
@@ -28,7 +23,7 @@
   WebPrintPresetOptions()
       : is_scaling_disabled(false),
         copies(0),
-        duplex_mode(kWebUnknownDuplexMode) {}
+        duplex_mode(printing::mojom::DuplexMode::kUnknownDuplexMode) {}
 
   // Specifies whether scaling is disabled.
   bool is_scaling_disabled;
@@ -37,7 +32,7 @@
   int copies;
 
   // Specifies duplex mode to be used for printing.
-  WebDuplexMode duplex_mode;
+  printing::mojom::DuplexMode duplex_mode;
 
   // Specifies page range to be used for printing.
   WebPageRanges page_ranges;
diff --git a/ui/gtk/BUILD.gn b/ui/gtk/BUILD.gn
index 8ae1710..e1377a5 100644
--- a/ui/gtk/BUILD.gn
+++ b/ui/gtk/BUILD.gn
@@ -92,6 +92,11 @@
     "//ui/strings",
     "//ui/views",
   ]
+
+  if (use_cups) {
+    deps += [ "//printing/mojom" ]
+  }
+
   public_deps = [ ":gtk_ui_delegate" ]
 
   if (use_x11 || ozone_platform_x11) {
diff --git a/ui/gtk/print_dialog_gtk.cc b/ui/gtk/print_dialog_gtk.cc
index 2450103d..7368b29 100644
--- a/ui/gtk/print_dialog_gtk.cc
+++ b/ui/gtk/print_dialog_gtk.cc
@@ -33,6 +33,10 @@
 #include "ui/gtk/gtk_util.h"
 #include "ui/gtk/printing_gtk_util.h"
 
+#if defined(USE_CUPS)
+#include "printing/mojom/print.mojom.h"
+#endif
+
 using printing::PageRanges;
 using printing::PrintSettings;
 
@@ -244,19 +248,20 @@
   gtk_print_settings_set(gtk_settings_, color_setting_name.c_str(),
                          color_value.c_str());
 
-  if (settings->duplex_mode() != printing::UNKNOWN_DUPLEX_MODE) {
+  if (settings->duplex_mode() !=
+      printing::mojom::DuplexMode::kUnknownDuplexMode) {
     const char* cups_duplex_mode = nullptr;
     switch (settings->duplex_mode()) {
-      case printing::LONG_EDGE:
+      case printing::mojom::DuplexMode::kLongEdge:
         cups_duplex_mode = kDuplexNoTumble;
         break;
-      case printing::SHORT_EDGE:
+      case printing::mojom::DuplexMode::kShortEdge:
         cups_duplex_mode = kDuplexTumble;
         break;
-      case printing::SIMPLEX:
+      case printing::mojom::DuplexMode::kSimplex:
         cups_duplex_mode = kDuplexNone;
         break;
-      default:  // UNKNOWN_DUPLEX_MODE
+      default:  // kUnknownDuplexMode
         NOTREACHED();
         break;
     }