Make content::ResourceType an enum class.

This allows us to be more explicit when content::ResourceType needs to
be smuggled in an untyped int. It has the effect of introducing more
static_cast<int>, but this makes the conversion sites explicit.

This also allows several other incidental fixes:
- the Mojo version of the enum no longer defines a sentinel value (which
  violates best practices in the security guidelines)
- the C++ version of the enum can now define a compiler-enforced
  kMaxValue enumerator.
- Since kMaxValue is no longer a distinct value, dummy handling for this
  value can be removed. This revealed a quirk in
  chrome/browser/predictors/loading_data_collector.cc

Tbr: [email protected]
Tbr: [email protected]
Tbr: [email protected]
Tbr: [email protected]
Change-Id: I7203a029b1fcb06426c957d208e9278a25d4a45b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1569345
Commit-Queue: Daniel Cheng <[email protected]>
Reviewed-by: Bo <[email protected]>
Reviewed-by: Tom Sepez <[email protected]>
Reviewed-by: Matt Menke <[email protected]>
Cr-Commit-Position: refs/heads/master@{#652395}
diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc
index c2f922e1..3d82da6 100644
--- a/android_webview/browser/aw_content_browser_client.cc
+++ b/android_webview/browser/aw_content_browser_client.cc
@@ -827,7 +827,8 @@
     }
   }
 
-  if (request.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (request.resource_type ==
+      static_cast<int>(content::ResourceType::kMainFrame)) {
     const bool is_load_url =
         request.transition_type & ui::PAGE_TRANSITION_FROM_API;
     const bool is_go_back_forward =
diff --git a/android_webview/browser/net/aw_web_resource_request.cc b/android_webview/browser/net/aw_web_resource_request.cc
index dffcd598..ec66a86a 100644
--- a/android_webview/browser/net/aw_web_resource_request.cc
+++ b/android_webview/browser/net/aw_web_resource_request.cc
@@ -38,7 +38,7 @@
   content::ResourceRequestInfo* info =
       content::ResourceRequestInfo::ForRequest(&request);
   is_main_frame =
-      info && info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME;
+      info && info->GetResourceType() == content::ResourceType::kMainFrame;
   has_user_gesture = info && info->HasUserGesture();
   is_renderer_initiated =
       info && ui::PageTransitionIsWebTriggerable(info->GetPageTransition());
@@ -54,7 +54,8 @@
     const network::ResourceRequest& request)
     : url(request.url.spec()),
       method(request.method),
-      is_main_frame(request.resource_type == content::RESOURCE_TYPE_MAIN_FRAME),
+      is_main_frame(request.resource_type ==
+                    static_cast<int>(content::ResourceType::kMainFrame)),
       has_user_gesture(request.has_user_gesture),
       is_renderer_initiated(ui::PageTransitionIsWebTriggerable(
           static_cast<ui::PageTransition>(request.transition_type))) {
diff --git a/android_webview/browser/network_service/android_stream_reader_url_loader_unittest.cc b/android_webview/browser/network_service/android_stream_reader_url_loader_unittest.cc
index c030ca4..a55511e 100644
--- a/android_webview/browser/network_service/android_stream_reader_url_loader_unittest.cc
+++ b/android_webview/browser/network_service/android_stream_reader_url_loader_unittest.cc
@@ -159,7 +159,8 @@
     network::ResourceRequest request;
     request.url = url;
     request.method = "GET";
-    request.resource_type = content::RESOURCE_TYPE_SUB_RESOURCE;
+    request.resource_type =
+        static_cast<int>(content::ResourceType::kSubResource);
     return request;
   }
 
diff --git a/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc b/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc
index 42c86c4a..e211a29 100644
--- a/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc
+++ b/android_webview/browser/network_service/aw_proxying_url_loader_factory.cc
@@ -498,7 +498,8 @@
                        std::move(error_info)));
   }
 
-  if (request_.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (request_.resource_type ==
+      static_cast<int>(content::ResourceType::kMainFrame)) {
     // Check for x-auto-login-header
     HeaderData header_data;
     std::string header_string;
diff --git a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
index 7eafcf1..846a6ea 100644
--- a/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
+++ b/android_webview/browser/renderer_host/aw_resource_dispatcher_host_delegate.cc
@@ -280,7 +280,7 @@
   // webcontents is created.
   throttles->push_back(std::move(ioThreadThrottle));
 
-  bool is_main_frame = resource_type == content::RESOURCE_TYPE_MAIN_FRAME;
+  bool is_main_frame = resource_type == content::ResourceType::kMainFrame;
   throttles->push_back(
       std::make_unique<web_restrictions::WebRestrictionsResourceThrottle>(
           AwBrowserContext::GetDefault()->GetWebRestrictionProvider(),
@@ -359,7 +359,7 @@
     return;
   }
 
-  if (request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (request_info->GetResourceType() == content::ResourceType::kMainFrame) {
     // Check for x-auto-login header.
     HeaderData header_data;
     if (ParserHeaderInResponse(request, ALLOW_ANY_REALM, &header_data)) {
diff --git a/chrome/browser/android/customtabs/detached_resource_request.cc b/chrome/browser/android/customtabs/detached_resource_request.cc
index bb94cb3..2b94bc8 100644
--- a/chrome/browser/android/customtabs/detached_resource_request.cc
+++ b/chrome/browser/android/customtabs/detached_resource_request.cc
@@ -83,7 +83,8 @@
   resource_request->referrer_policy = referrer_policy;
   resource_request->site_for_cookies = site_for_cookies_;
   resource_request->request_initiator = url::Origin::Create(site_for_cookies_);
-  resource_request->resource_type = content::RESOURCE_TYPE_SUB_RESOURCE;
+  resource_request->resource_type =
+      static_cast<int>(content::ResourceType::kSubResource);
   resource_request->do_not_prompt_for_login = true;
   resource_request->render_frame_id = -1;
   resource_request->enable_load_timing = false;
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index b077105..cf4250c 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -2725,7 +2725,7 @@
     const base::Callback<void(content::CertificateRequestResultType)>&
         callback) {
   DCHECK(web_contents);
-  if (resource_type != content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (resource_type != content::ResourceType::kMainFrame) {
     // A sub-resource has a certificate error. The user doesn't really
     // have a context for making the right decision, so block the
     // request hard, without an info bar to allow showing the insecure
diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
index 1a77634..f03e697 100644
--- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
+++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber.cc
@@ -128,7 +128,7 @@
     return entry;
   }
 
-  if (request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (request_info->GetResourceType() == content::ResourceType::kMainFrame) {
     auto new_entry =
         CreateNewDataUseRecorder(request, DataUse::TrafficType::USER_TRAFFIC);
     new_entry->set_main_frame_request_id(request_info->GetGlobalRequestID());
@@ -246,7 +246,7 @@
     content::ResourceRequestInfo* request_info =
         content::ResourceRequestInfo::ForRequest(request);
     if (request_info &&
-        request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME &&
+        request_info->GetResourceType() == content::ResourceType::kMainFrame &&
         !request->status().is_success()) {
       // If mainframe request was not successful, then NavigationHandle in
       // DidFinishMainFrameNavigation will not have GlobalRequestID. So we erase
@@ -275,7 +275,7 @@
   // If the frame is not tracked, but this is a main frame request, it might be
   // the case that the navigation has not commit yet.
   if (!frame_is_tracked && request_info &&
-      request_info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME) {
+      request_info->GetResourceType() == content::ResourceType::kMainFrame) {
     page_load_is_tracked =
         pending_navigation_data_use_map_.find(entry->main_frame_request_id()) !=
         pending_navigation_data_use_map_.end();
diff --git a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc
index 68a46c1..9e6fcefa 100644
--- a/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc
+++ b/chrome/browser/data_use_measurement/chrome_data_use_ascriber_unittest.cc
@@ -82,8 +82,8 @@
     // TODO(kundaji): Allow request_id to be specified in AllocateForTesting.
     content::ResourceRequestInfo::AllocateForTesting(
         request.get(),
-        is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
-                      : content::RESOURCE_TYPE_SCRIPT,
+        is_main_frame ? content::ResourceType::kMainFrame
+                      : content::ResourceType::kScript,
         /*resource_context*/ nullptr, render_process_id,
         /*render_view_id=*/-1, render_frame_id, is_main_frame,
         content::ResourceInterceptPolicy::kAllowNone,
diff --git a/chrome/browser/extensions/api/chrome_extensions_api_client.cc b/chrome/browser/extensions/api/chrome_extensions_api_client.cc
index 219fbdc..4e43c5bf 100644
--- a/chrome/browser/extensions/api/chrome_extensions_api_client.cc
+++ b/chrome/browser/extensions/api/chrome_extensions_api_client.cc
@@ -131,7 +131,7 @@
   // requests.
   // Exclude main frame navigation requests.
   bool is_browser_request = request.render_process_id == -1 &&
-                            request.type != content::RESOURCE_TYPE_MAIN_FRAME;
+                            request.type != content::ResourceType::kMainFrame;
 
   // Hide requests made by the Devtools frontend.
   bool is_sensitive_request =
diff --git a/chrome/browser/extensions/api/chrome_extensions_api_client_unittest.cc b/chrome/browser/extensions/api/chrome_extensions_api_client_unittest.cc
index 45762a5..2146dfc 100644
--- a/chrome/browser/extensions/api/chrome_extensions_api_client_unittest.cc
+++ b/chrome/browser/extensions/api/chrome_extensions_api_client_unittest.cc
@@ -44,15 +44,15 @@
   request.url = GURL("https://example.com/script.js");
   request.initiator = url::Origin::Create(GURL(chrome::kChromeUINewTabURL));
   request.render_process_id = -1;
-  request.type = content::ResourceType::RESOURCE_TYPE_SCRIPT;
+  request.type = content::ResourceType::kScript;
   EXPECT_TRUE(client.ShouldHideBrowserNetworkRequest(request));
 
   // Main frame requests should always be visible to extensions.
-  request.type = content::ResourceType::RESOURCE_TYPE_MAIN_FRAME;
+  request.type = content::ResourceType::kMainFrame;
   EXPECT_FALSE(client.ShouldHideBrowserNetworkRequest(request));
 
   // Similar requests made by the renderer should be visible to extensions.
-  request.type = content::ResourceType::RESOURCE_TYPE_SCRIPT;
+  request.type = content::ResourceType::kScript;
   request.render_process_id = 2;
   EXPECT_FALSE(client.ShouldHideBrowserNetworkRequest(request));
 }
diff --git a/chrome/browser/extensions/api/declarative_net_request/ruleset_manager_unittest.cc b/chrome/browser/extensions/api/declarative_net_request/ruleset_manager_unittest.cc
index da36b83..77fc55a 100644
--- a/chrome/browser/extensions/api/declarative_net_request/ruleset_manager_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_net_request/ruleset_manager_unittest.cc
@@ -447,13 +447,13 @@
     bool expect_blocked_with_allowed_pages;
   } test_cases[] = {
       // Main frame requests. Allowed based on request url.
-      {kAllowedPageURL, content::RESOURCE_TYPE_MAIN_FRAME, base::nullopt,
+      {kAllowedPageURL, content::ResourceType::kMainFrame, base::nullopt,
        MSG_ROUTING_NONE,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
                         "http://google.com/xyz", base::nullopt}),
        false},
-      {"http://google.com/xyz", content::RESOURCE_TYPE_MAIN_FRAME,
+      {"http://google.com/xyz", content::ResourceType::kMainFrame,
        base::nullopt, MSG_ROUTING_NONE,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
@@ -462,17 +462,17 @@
 
       // Non-navigation browser or service worker request. Not allowed,
       // since the request doesn't correspond to a frame.
-      {"http://google.com/xyz", content::RESOURCE_TYPE_SCRIPT, base::nullopt,
+      {"http://google.com/xyz", content::ResourceType::kScript, base::nullopt,
        MSG_ROUTING_NONE, base::nullopt, true},
 
       // Renderer requests - with no |pending_main_frame_url|. Allowed based
       // on the |last_committed_main_frame_url|.
-      {kAllowedPageURL, content::RESOURCE_TYPE_SCRIPT, "http://google.com",
+      {kAllowedPageURL, content::ResourceType::kScript, "http://google.com",
        kDummyFrameRoutingId,
        FrameDataParams({kDummyFrameId, kDummyParentFrameId,
                         "http://google.com/xyz", base::nullopt}),
        true},
-      {"http://google.com/xyz", content::RESOURCE_TYPE_SCRIPT,
+      {"http://google.com/xyz", content::ResourceType::kScript,
        "http://google.com", kDummyFrameRoutingId,
        FrameDataParams({kDummyFrameId, kDummyParentFrameId, kAllowedPageURL,
                         base::nullopt}),
@@ -483,7 +483,7 @@
 
       // Here we'll determine "http://example.com/xyz" to be the main frame url
       // due to the origin.
-      {"http://example.com/script.js", content::RESOURCE_TYPE_SCRIPT,
+      {"http://example.com/script.js", content::ResourceType::kScript,
        "http://example.com", kDummyFrameRoutingId,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
@@ -492,7 +492,7 @@
 
       // Here we'll determine |kAllowedPageURL| to be the main
       // frame url due to the origin.
-      {"http://example.com/script.js", content::RESOURCE_TYPE_SCRIPT,
+      {"http://example.com/script.js", content::ResourceType::kScript,
        "http://google.com", kDummyFrameRoutingId,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
@@ -502,19 +502,19 @@
       // In these cases both |pending_main_frame_url| and
       // |last_committed_main_frame_url| will be tested since we won't be able
       // to determine the correct top level frame url using origin.
-      {"http://example.com/script.js", content::RESOURCE_TYPE_SCRIPT,
+      {"http://example.com/script.js", content::ResourceType::kScript,
        "http://google.com", kDummyFrameRoutingId,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
                         "http://google.com/abc", kAllowedPageURL}),
        false},
-      {"http://example.com/script.js", content::RESOURCE_TYPE_SCRIPT,
+      {"http://example.com/script.js", content::ResourceType::kScript,
        base::nullopt, kDummyFrameRoutingId,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
                         kAllowedPageURL, "http://google.com/abc"}),
        false},
-      {"http://example.com/script.js", content::RESOURCE_TYPE_SCRIPT,
+      {"http://example.com/script.js", content::ResourceType::kScript,
        base::nullopt, kDummyFrameRoutingId,
        FrameDataParams({ExtensionApiFrameIdMap::kTopFrameId,
                         ExtensionApiFrameIdMap::kInvalidFrameId,
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
index 4bb494b..7cf3c6b 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc
@@ -54,7 +54,7 @@
   WebRequestInfo info;
   info.url = url;
   info.is_browser_side_navigation = true;
-  info.type = content::RESOURCE_TYPE_MAIN_FRAME;
+  info.type = content::ResourceType::kMainFrame;
   info.web_request_type = WebRequestResourceType::MAIN_FRAME;
   return info;
 }
diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
index aec443c..bb40cff8 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc
@@ -171,7 +171,7 @@
   std::unique_ptr<net::URLRequest> request = context->CreateRequest(
       url, net::DEFAULT_PRIORITY, delegate, TRAFFIC_ANNOTATION_FOR_TESTS);
   content::ResourceRequestInfo::AllocateForTesting(
-      request.get(), content::RESOURCE_TYPE_MAIN_FRAME, /*context*/ nullptr,
+      request.get(), content::ResourceType::kMainFrame, /*context*/ nullptr,
       -1 /* render_process_id */, -1 /* render_view_id */,
       -1 /* render_frame_id */, true /* is_main_frame */,
       content::ResourceInterceptPolicy::kAllowNone, false /* is_async */,
diff --git a/chrome/browser/extensions/api/web_request/web_request_apitest.cc b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
index ccbae261..4373dff 100644
--- a/chrome/browser/extensions/api/web_request/web_request_apitest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_apitest.cc
@@ -1322,7 +1322,8 @@
   auto make_browser_request = [this](const GURL& url) {
     auto request = std::make_unique<network::ResourceRequest>();
     request->url = url;
-    request->resource_type = content::RESOURCE_TYPE_SUB_RESOURCE;
+    request->resource_type =
+        static_cast<int>(content::ResourceType::kSubResource);
 
     auto* url_loader_factory =
         content::BrowserContext::GetDefaultStoragePartition(profile())
diff --git a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
index 5e25be0..cf759c37 100644
--- a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc
@@ -135,14 +135,14 @@
   info.render_process_id = -1;
 
   // Sub-resource browser initiated requests are hidden from extensions.
-  info.type = content::RESOURCE_TYPE_SUB_RESOURCE;
+  info.type = content::ResourceType::kSubResource;
   info.web_request_type = extensions::WebRequestResourceType::OTHER;
   info.is_browser_side_navigation = false;
   EXPECT_TRUE(
       WebRequestPermissions::HideRequest(extension_info_map_.get(), info));
 
   // Sub-frame navigations initiated from the local ntp should be hidden.
-  info.type = content::RESOURCE_TYPE_SUB_FRAME;
+  info.type = content::ResourceType::kSubFrame;
   info.web_request_type = extensions::WebRequestResourceType::SUB_FRAME;
   info.is_browser_side_navigation = true;
   EXPECT_TRUE(
@@ -163,7 +163,7 @@
                             NULL, TRAFFIC_ANNOTATION_FOR_TESTS));
 
   const content::ResourceType kResourceType =
-      content::RESOURCE_TYPE_SUB_RESOURCE;
+      content::ResourceType::kSubResource;
 
   EXPECT_EQ(PermissionsData::PageAccess::kAllowed,
             WebRequestPermissions::CanExtensionAccessURL(
@@ -254,7 +254,7 @@
           false,  // crosses_incognito
           WebRequestPermissions::REQUIRE_HOST_PERMISSION_FOR_URL_AND_INITIATOR,
           request_with_initiator->initiator(),
-          content::RESOURCE_TYPE_SUB_FRAME));
+          content::ResourceType::kSubFrame));
 
   EXPECT_EQ(PermissionsData::PageAccess::kDenied,
             WebRequestPermissions::CanExtensionAccessURL(
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
index 1deac51..78a7c56 100644
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc
@@ -871,7 +871,7 @@
   // Log that CORB would have blocked in a meaningful way a request that was
   // initiated by a content script.
   UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Allowed.ContentScript",
-                            resource_type, content::RESOURCE_TYPE_LAST_TYPE);
+                            resource_type);
   rappor::SampleString(rappor::GetDefaultService(),
                        "Extensions.CrossOriginFetchFromContentScript2",
                        rappor::UMA_RAPPOR_TYPE, extension_id);
diff --git a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
index 84a7aea..afd1650 100644
--- a/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
+++ b/chrome/browser/extensions/cross_origin_read_blocking_browsertest.cc
@@ -210,7 +210,8 @@
       const base::HistogramTester& histograms,
       content::ResourceType resource_type) {
     VerifyContentScriptHistogram(
-        histograms, testing::ElementsAre(base::Bucket(resource_type, 1)));
+        histograms,
+        testing::ElementsAre(base::Bucket(static_cast<int>(resource_type), 1)));
   }
 
   void VerifyContentScriptHistogramIsMissing(
@@ -498,7 +499,7 @@
       // LogInitiatorSchemeBypassingDocumentBlocking method in
       // ChromeContentBrowserClientExtensionsPart).
       VerifyContentScriptHistogramIsPresent(histograms,
-                                            content::RESOURCE_TYPE_XHR);
+                                            content::ResourceType::kXhr);
     }
   }
 
diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc
index 8063690..7a259c1 100644
--- a/chrome/browser/extensions/extension_protocols_unittest.cc
+++ b/chrome/browser/extensions/extension_protocols_unittest.cc
@@ -142,8 +142,8 @@
   request.request_initiator =
       url::Origin::Create(url);  // ensure initiator set.
   request.referrer_policy = content::Referrer::GetDefaultReferrerPolicy();
-  request.resource_type = resource_type;
-  request.is_main_frame = resource_type == content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(resource_type);
+  request.is_main_frame = resource_type == content::ResourceType::kMainFrame;
   request.allow_download = true;
   return request;
 }
@@ -276,7 +276,7 @@
                    /*notifications_disabled=*/false);
     }
     return RequestOrLoad(extension->GetResourceURL(relative_path),
-                         content::RESOURCE_TYPE_MAIN_FRAME);
+                         content::ResourceType::kMainFrame);
   }
 
   ExtensionRegistry* extension_registry() {
@@ -336,7 +336,7 @@
         /*render_process_id=*/-1,
         /*render_view_id=*/-1,
         /*render_frame_id=*/-1,
-        /*is_main_frame=*/resource_type == content::RESOURCE_TYPE_MAIN_FRAME,
+        /*is_main_frame=*/resource_type == content::ResourceType::kMainFrame,
         content::ResourceInterceptPolicy::kAllowAll,
         /*is_async=*/false, content::PREVIEWS_OFF,
         /*navigation_ui_data*/ nullptr);
@@ -434,7 +434,7 @@
       // is blocked, we should see BLOCKED_BY_CLIENT. Otherwise, the request
       // should just fail because the file doesn't exist.
       auto get_result = RequestOrLoad(extension->GetResourceURL("404.html"),
-                                      content::RESOURCE_TYPE_MAIN_FRAME);
+                                      content::ResourceType::kMainFrame);
 
       if (cases[i].should_allow_main_frame_load) {
         EXPECT_EQ(net::ERR_FILE_NOT_FOUND, get_result.result())
@@ -490,7 +490,7 @@
 
   auto get_result =
       RequestOrLoad(extension->GetResourceURL("ink/glcore_base.js.mem"),
-                    content::RESOURCE_TYPE_XHR);
+                    content::ResourceType::kXhr);
   EXPECT_EQ(net::OK, get_result.result());
   CheckForContentLengthHeader(get_result);
   EXPECT_EQ("", get_result.GetResponseHeaderByName(
@@ -511,7 +511,7 @@
   {
     auto get_result =
         RequestOrLoad(extension->GetResourceURL("webstore_icon_16.png"),
-                      content::RESOURCE_TYPE_MEDIA);
+                      content::ResourceType::kMedia);
     EXPECT_EQ(net::OK, get_result.result());
     CheckForContentLengthHeader(get_result);
     EXPECT_EQ("image/png", get_result.GetResponseHeaderByName(
@@ -523,7 +523,7 @@
   {
     auto get_result =
         RequestOrLoad(extension->GetResourceURL("webstore_icon_16.png"),
-                      content::RESOURCE_TYPE_MEDIA);
+                      content::ResourceType::kMedia);
     EXPECT_EQ(net::OK, get_result.result());
     CheckForContentLengthHeader(get_result);
     EXPECT_EQ("image/png", get_result.GetResponseHeaderByName(
@@ -543,7 +543,7 @@
 
   {
     auto get_result = RequestOrLoad(extension->GetResourceURL("test.dat"),
-                                    content::RESOURCE_TYPE_MEDIA);
+                                    content::ResourceType::kMedia);
     EXPECT_EQ(net::OK, get_result.result());
 
     // Check that cache-related headers are set.
@@ -576,7 +576,7 @@
   // should not succeed.
   {
     auto get_result = RequestOrLoad(extension->GetResourceURL("test.dat"),
-                                    content::RESOURCE_TYPE_MAIN_FRAME);
+                                    content::ResourceType::kMainFrame);
     EXPECT_EQ(net::OK, get_result.result());
   }
 
@@ -587,7 +587,7 @@
   // And subresource types, such as media, should fail.
   {
     auto get_result = RequestOrLoad(extension->GetResourceURL("test.dat"),
-                                    content::RESOURCE_TYPE_MEDIA);
+                                    content::ResourceType::kMedia);
     EXPECT_EQ(net::ERR_BLOCKED_BY_CLIENT, get_result.result());
   }
 }
@@ -835,7 +835,7 @@
   for (const auto& test_case : test_cases) {
     SCOPED_TRACE(test_case.file_name);
     auto result = RequestOrLoad(extension->GetResourceURL(test_case.file_name),
-                                content::RESOURCE_TYPE_SUB_RESOURCE);
+                                content::ResourceType::kSubResource);
     EXPECT_EQ(
         test_case.expected_mime_type,
         result.GetResponseHeaderByName(net::HttpRequestHeaders::kContentType));
diff --git a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
index d659078..b33a329 100644
--- a/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
+++ b/chrome/browser/loader/chrome_resource_dispatcher_host_delegate.cc
@@ -164,7 +164,7 @@
   if (!cus)
     return;
   // Check for PNaCl pexe request.
-  if (resource_type == content::RESOURCE_TYPE_OBJECT) {
+  if (resource_type == content::ResourceType::kObject) {
     const net::HttpRequestHeaders& headers = request->extra_request_headers();
     std::string accept_headers;
     if (headers.GetHeader("Accept", &accept_headers)) {
@@ -188,11 +188,11 @@
 offline_pages::ResourceLoadingObserver::ResourceDataType
 ConvertResourceTypeToResourceDataType(content::ResourceType type) {
   switch (type) {
-    case content::RESOURCE_TYPE_STYLESHEET:
+    case content::ResourceType::kStylesheet:
       return offline_pages::ResourceLoadingObserver::ResourceDataType::TEXT_CSS;
-    case content::RESOURCE_TYPE_IMAGE:
+    case content::ResourceType::kImage:
       return offline_pages::ResourceLoadingObserver::ResourceDataType::IMAGE;
-    case content::RESOURCE_TYPE_XHR:
+    case content::ResourceType::kXhr:
       return offline_pages::ResourceLoadingObserver::ResourceDataType::XHR;
     default:
       return offline_pages::ResourceLoadingObserver::ResourceDataType::OTHER;
@@ -376,9 +376,8 @@
   // If this isn't a new request, the standard resource throttles have already
   // been added, so no need to add them again.
   if (is_new_request) {
-    AppendStandardResourceThrottles(request,
-                                    resource_context,
-                                    content::RESOURCE_TYPE_MAIN_FRAME,
+    AppendStandardResourceThrottles(request, resource_context,
+                                    content::ResourceType::kMainFrame,
                                     throttles);
 #if defined(OS_ANDROID)
     // On Android, forward text/html downloads to OfflinePages backend.
@@ -455,7 +454,7 @@
   ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request);
   auto ix = stream_target_info_.find(request);
   CHECK(ix != stream_target_info_.end());
-  bool embedded = info->GetResourceType() != content::RESOURCE_TYPE_MAIN_FRAME;
+  bool embedded = info->GetResourceType() != content::ResourceType::kMainFrame;
   base::PostTaskWithTraits(
       FROM_HERE, {content::BrowserThread::UI},
       base::BindOnce(
diff --git a/chrome/browser/net/network_request_metrics_browsertest.cc b/chrome/browser/net/network_request_metrics_browsertest.cc
index 3bac907a..d2ff138 100644
--- a/chrome/browser/net/network_request_metrics_browsertest.cc
+++ b/chrome/browser/net/network_request_metrics_browsertest.cc
@@ -84,7 +84,7 @@
       RenderFrameHost* render_frame_host,
       const content::GlobalRequestID& request_id,
       const content::mojom::ResourceLoadInfo& resource_load_info) override {
-    EXPECT_EQ(RESOURCE_TYPE_MAIN_FRAME, resource_load_info.resource_type);
+    EXPECT_EQ(ResourceType::kMainFrame, resource_load_info.resource_type);
     EXPECT_EQ(net::OK, resource_load_info.net_error);
     run_loop_.Quit();
   }
diff --git a/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc b/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
index 76c1de9..8dbeeb47 100644
--- a/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
+++ b/chrome/browser/offline_pages/offline_page_request_handler_unittest.cc
@@ -1140,8 +1140,8 @@
 
   content::ResourceRequestInfo::AllocateForTesting(
       request.get(),
-      is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
-                    : content::RESOURCE_TYPE_SUB_FRAME,
+      is_main_frame ? content::ResourceType::kMainFrame
+                    : content::ResourceType::kSubFrame,
       nullptr,
       /*render_process_id=*/1,
       /*render_view_id=*/-1,
diff --git a/chrome/browser/offline_pages/offline_page_request_job.cc b/chrome/browser/offline_pages/offline_page_request_job.cc
index d354ee7..4c3f168 100644
--- a/chrome/browser/offline_pages/offline_page_request_job.cc
+++ b/chrome/browser/offline_pages/offline_page_request_job.cc
@@ -61,7 +61,7 @@
 
   // Ignore the requests not for the main resource.
   if (resource_request_info->GetResourceType() !=
-      content::RESOURCE_TYPE_MAIN_FRAME) {
+      content::ResourceType::kMainFrame) {
     return nullptr;
   }
 
diff --git a/chrome/browser/offline_pages/offline_page_url_loader.cc b/chrome/browser/offline_pages/offline_page_url_loader.cc
index 8fe95fcd..4d2a9e7 100644
--- a/chrome/browser/offline_pages/offline_page_url_loader.cc
+++ b/chrome/browser/offline_pages/offline_page_url_loader.cc
@@ -46,7 +46,8 @@
 
 bool ShouldCreateLoader(const network::ResourceRequest& resource_request) {
   // Ignore the requests not for the main frame.
-  if (resource_request.resource_type != content::RESOURCE_TYPE_MAIN_FRAME)
+  if (resource_request.resource_type !=
+      static_cast<int>(content::ResourceType::kMainFrame))
     return false;
 
   // Ignore non-http/https requests.
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
index 099bc7c1..e183e030 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer.cc
@@ -243,7 +243,7 @@
     content::RenderFrameHost* render_frame_host_or_null,
     content::ResourceType resource_type,
     base::TimeTicks creation_time) {
-  if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (resource_type == content::ResourceType::kMainFrame) {
     DCHECK(request_id != content::GlobalRequestID());
     // The main frame request can complete either before or after commit, so we
     // look at both provisional loads and the committed load to find a
@@ -272,7 +272,7 @@
     // TODO(bmcquade): consider tracking GlobalRequestIDs for sub-frame
     // navigations in each PageLoadTracker, and performing a lookup for
     // sub-frames similar to the main-frame lookup above.
-    if (resource_type == content::RESOURCE_TYPE_SUB_FRAME)
+    if (resource_type == content::ResourceType::kSubFrame)
       return committed_load_.get();
 
     // This was originally a DCHECK but it fails when the document load happened
diff --git a/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc b/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc
index 1b0071195..34002abb 100644
--- a/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/metrics_web_contents_observer_unittest.cc
@@ -1538,9 +1538,8 @@
 
   observer()->OnRequestComplete(
       main_resource_url, net::IPEndPoint(), frame_tree_node_id, request_id,
-      web_contents()->GetMainFrame(),
-      content::ResourceType::RESOURCE_TYPE_MAIN_FRAME, false, nullptr, 0, 0,
-      base::TimeTicks::Now(), net::OK, nullptr);
+      web_contents()->GetMainFrame(), content::ResourceType::kMainFrame, false,
+      nullptr, 0, 0, base::TimeTicks::Now(), net::OK, nullptr);
   EXPECT_EQ(1u, loaded_resources().size());
   EXPECT_EQ(main_resource_url, loaded_resources().back().url);
 
@@ -1550,9 +1549,8 @@
   // specified |request_id| is no longer associated with any tracked page loads.
   observer()->OnRequestComplete(
       main_resource_url, net::IPEndPoint(), frame_tree_node_id, request_id,
-      web_contents()->GetMainFrame(),
-      content::ResourceType::RESOURCE_TYPE_MAIN_FRAME, false, nullptr, 0, 0,
-      base::TimeTicks::Now(), net::OK, nullptr);
+      web_contents()->GetMainFrame(), content::ResourceType::kMainFrame, false,
+      nullptr, 0, 0, base::TimeTicks::Now(), net::OK, nullptr);
   EXPECT_EQ(1u, loaded_resources().size());
   EXPECT_EQ(main_resource_url, loaded_resources().back().url);
 }
@@ -1566,7 +1564,7 @@
       loaded_resource_url, net::IPEndPoint(),
       web_contents()->GetMainFrame()->GetFrameTreeNodeId(),
       content::GlobalRequestID(), web_contents()->GetMainFrame(),
-      content::RESOURCE_TYPE_SCRIPT, false, nullptr, 0, 0,
+      content::ResourceType::kScript, false, nullptr, 0, 0,
       base::TimeTicks::Now(), net::OK, nullptr);
 
   EXPECT_EQ(1u, loaded_resources().size());
@@ -1592,7 +1590,7 @@
       GURL("http://www.other.com/"), net::IPEndPoint(),
       other_web_contents->GetMainFrame()->GetFrameTreeNodeId(),
       content::GlobalRequestID(), other_web_contents->GetMainFrame(),
-      content::RESOURCE_TYPE_SCRIPT, false, nullptr, 0, 0,
+      content::ResourceType::kScript, false, nullptr, 0, 0,
       base::TimeTicks::Now(), net::OK, nullptr);
 
   EXPECT_TRUE(loaded_resources().empty());
@@ -1608,7 +1606,7 @@
       loaded_resource_url, net::IPEndPoint(),
       web_contents()->GetMainFrame()->GetFrameTreeNodeId(),
       content::GlobalRequestID(), web_contents()->GetMainFrame(),
-      content::RESOURCE_TYPE_SCRIPT, false, nullptr, 0, 0,
+      content::ResourceType::kScript, false, nullptr, 0, 0,
       base::TimeTicks::Now(), net::OK, nullptr);
 
   EXPECT_TRUE(loaded_resources().empty());
diff --git a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc
index 0a9488a3..fdaaf71b 100644
--- a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer.cc
@@ -78,7 +78,7 @@
         extra_request_complete_info) {
   DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
   if (extra_request_complete_info.resource_type ==
-      content::RESOURCE_TYPE_MAIN_FRAME) {
+      content::ResourceType::kMainFrame) {
     DCHECK(!did_dispatch_on_main_resource_);
     if (did_dispatch_on_main_resource_) {
       // We are defensive for the case of something strange happening and return
diff --git a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer_unittest.cc
index fd5b899..9b13fa98 100644
--- a/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/android_page_load_metrics_observer_unittest.cc
@@ -199,7 +199,7 @@
       10 * 1024 /* size */, 0 /* original_network_content_length */,
       nullptr
       /* data_reduction_proxy_data */,
-      content::RESOURCE_TYPE_MAIN_FRAME, 0, std::move(load_timing_info));
+      content::ResourceType::kMainFrame, 0, std::move(load_timing_info));
   SimulateLoadedResource(info, navigation_simulator->GetGlobalRequestID());
   EXPECT_EQ(kNow.since_origin().InMilliseconds(),
             observer()->reported_dns_start_ms());
diff --git a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base.cc b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base.cc
index 9c98a23..307086b 100644
--- a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base.cc
+++ b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base.cc
@@ -347,7 +347,7 @@
   }
 
   if (extra_request_complete_info.resource_type ==
-      content::RESOURCE_TYPE_MAIN_FRAME) {
+      content::ResourceType::kMainFrame) {
     main_frame_fetch_start_ =
         extra_request_complete_info.load_timing_info->request_start;
   }
diff --git a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base_unittest.cc b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base_unittest.cc
index 6911881c..8c5a827 100644
--- a/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/data_reduction_proxy_metrics_observer_base_unittest.cc
@@ -186,7 +186,7 @@
       1024 * 40 /* raw_body_bytes */,
       0 /* original_network_content_length */,
       std::move(data),
-      content::ResourceType::RESOURCE_TYPE_SCRIPT,
+      content::ResourceType::kScript,
       0,
       {} /* load_timing()info */};
 
diff --git a/chrome/browser/page_load_metrics/observers/local_network_requests_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/local_network_requests_page_load_metrics_observer_unittest.cc
index 0dfc3116..bdc001f 100644
--- a/chrome/browser/page_load_metrics/observers/local_network_requests_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/local_network_requests_page_load_metrics_observer_unittest.cc
@@ -118,7 +118,7 @@
         (net_error ? 1024 * 20 : 0) /* raw_body_bytes */,
         0 /* original_network_content_length */,
         nullptr /* data_reduction_proxy_data */,
-        content::ResourceType::RESOURCE_TYPE_MAIN_FRAME, net_error,
+        content::ResourceType::kMainFrame, net_error,
         {} /* load_timing_info */);
 
     PageLoadMetricsObserverTestHarness::SimulateLoadedResource(
@@ -782,8 +782,7 @@
        -1 /* frame_tree_node_id */, true /* was_cached */,
        1024 * 20 /* raw_body_bytes */, 0 /* original_network_content_length */,
        nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_MAIN_FRAME, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kMainFrame, 0, nullptr /* load_timing_info */},
       GetGlobalRequestID());
   DeleteContents();
 
@@ -810,8 +809,7 @@
        -1 /* frame_tree_node_id */, false /* was_cached */,
        0 /* raw_body_bytes */, 0 /* original_network_content_length */,
        nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_MAIN_FRAME, -20,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kMainFrame, -20, nullptr /* load_timing_info */},
       GetGlobalRequestID());
   DeleteContents();
 
diff --git a/chrome/browser/page_load_metrics/observers/lofi_page_load_metrics_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/lofi_page_load_metrics_observer_unittest.cc
index ebb2a7e0..776fb962 100644
--- a/chrome/browser/page_load_metrics/observers/lofi_page_load_metrics_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/lofi_page_load_metrics_observer_unittest.cc
@@ -139,28 +139,24 @@
       // Cached request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, true /*was_cached*/,
        1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_SCRIPT, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kScript,
+       0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
       // Uncached proxied request with .1 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, data->DeepCopy(),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   int network_resources = 0;
@@ -203,28 +199,24 @@
       // Cached request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, true /*was_cached*/,
        1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_SCRIPT, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kScript,
+       0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
       // Uncached proxied request with .1 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, data->DeepCopy(),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   int network_resources = 0;
@@ -268,28 +260,24 @@
       // Cached request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, true /*was_cached*/,
        1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_SCRIPT, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kScript,
+       0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
       // Uncached proxied request with .1 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, data->DeepCopy(),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   int network_resources = 0;
@@ -338,28 +326,24 @@
       // Cached request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, true /*was_cached*/,
        1024 * 40 /* raw_body_bytes */, 0 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_SCRIPT, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kScript,
+       0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
       // Uncached proxied request with .1 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, std::move(data1),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kResourceUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data2),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   int network_resources = 0;
diff --git a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc
index 3253d718..39c467d 100644
--- a/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc
+++ b/chrome/browser/page_load_metrics/observers/page_load_metrics_observer_tester.cc
@@ -187,7 +187,7 @@
 void PageLoadMetricsObserverTester::SimulateLoadedResource(
     const ExtraRequestCompleteInfo& info,
     const content::GlobalRequestID& request_id) {
-  if (info.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (info.resource_type == content::ResourceType::kMainFrame) {
     ASSERT_NE(content::GlobalRequestID(), request_id)
         << "Main frame resources must have a GlobalRequestID.";
   }
@@ -195,8 +195,8 @@
   // For consistency with browser-side navigation, we provide a null RFH for
   // main frame and sub frame resources.
   content::RenderFrameHost* render_frame_host_or_null =
-      (info.resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
-       info.resource_type == content::RESOURCE_TYPE_SUB_FRAME)
+      (info.resource_type == content::ResourceType::kMainFrame ||
+       info.resource_type == content::ResourceType::kSubFrame)
           ? nullptr
           : web_contents()->GetMainFrame();
 
diff --git a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
index 79ee946..c61e076b 100644
--- a/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
+++ b/chrome/browser/page_load_metrics/observers/previews_ukm_observer_unittest.cc
@@ -635,15 +635,13 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -685,15 +683,13 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -734,15 +730,13 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached non-proxied request.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -779,14 +773,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -829,14 +821,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -879,14 +869,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 /* original_network_content_length */,
-       nullptr /* data_reduction_proxy_data */,
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       nullptr /* data_reduction_proxy_data */, content::ResourceType::kImage,
+       0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -930,14 +918,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, std::move(data1),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data2),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -985,14 +971,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, std::move(data1),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data2),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
@@ -1039,14 +1023,12 @@
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 10 /* original_network_content_length */, std::move(data1),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
       // Uncached proxied request with .5 compression ratio.
       {GURL(kDefaultTestUrl), net::IPEndPoint(), -1, false /*was_cached*/,
        1024 * 40 /* raw_body_bytes */,
        1024 * 40 * 5 /* original_network_content_length */, std::move(data2),
-       content::ResourceType::RESOURCE_TYPE_IMAGE, 0,
-       nullptr /* load_timing_info */},
+       content::ResourceType::kImage, 0, nullptr /* load_timing_info */},
   };
 
   for (const auto& request : resources)
diff --git a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc
index aecf395..e9e49dd 100644
--- a/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc
+++ b/chrome/browser/page_load_metrics/observers/ukm_page_load_metrics_observer.cc
@@ -260,7 +260,7 @@
   if (was_hidden_)
     return;
   if (extra_request_complete_info.resource_type ==
-      content::RESOURCE_TYPE_MAIN_FRAME) {
+      content::ResourceType::kMainFrame) {
     DCHECK(!main_frame_timing_.has_value());
     main_frame_timing_ = *extra_request_complete_info.load_timing_info;
   }
diff --git a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc
index 3dd97ef..5a5cac4 100644
--- a/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc
+++ b/chrome/browser/page_load_metrics/page_load_metrics_test_waiter.cc
@@ -108,7 +108,7 @@
     return;
 
   if (extra_request_complete_info.resource_type !=
-      content::RESOURCE_TYPE_MAIN_FRAME) {
+      content::ResourceType::kMainFrame) {
     // The waiter confirms loading timing for the main frame only.
     return;
   }
diff --git a/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc b/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
index 0ff42053..aa9c0ab 100644
--- a/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
+++ b/chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc
@@ -108,7 +108,8 @@
   transferrable_loader->head = std::move(deep_copied_response->head);
   transferrable_loader->head.intercepted_by_plugin = true;
 
-  bool embedded = resource_type_ != content::RESOURCE_TYPE_MAIN_FRAME;
+  bool embedded =
+      resource_type_ != static_cast<int>(content::ResourceType::kMainFrame);
   base::PostTaskWithTraits(
       FROM_HERE, {content::BrowserThread::UI},
       base::BindOnce(
diff --git a/chrome/browser/predictors/loading_data_collector.cc b/chrome/browser/predictors/loading_data_collector.cc
index 3e08a3ad..8573069 100644
--- a/chrome/browser/predictors/loading_data_collector.cc
+++ b/chrome/browser/predictors/loading_data_collector.cc
@@ -50,11 +50,11 @@
   if (mime_type.empty()) {
     return fallback;
   } else if (blink::IsSupportedImageMimeType(mime_type)) {
-    return content::RESOURCE_TYPE_IMAGE;
+    return content::ResourceType::kImage;
   } else if (blink::IsSupportedJavascriptMimeType(mime_type)) {
-    return content::RESOURCE_TYPE_SCRIPT;
+    return content::ResourceType::kScript;
   } else if (net::MatchesMimeType("text/css", mime_type)) {
-    return content::RESOURCE_TYPE_STYLESHEET;
+    return content::ResourceType::kStylesheet;
   } else {
     bool found =
         std::any_of(std::begin(kFontMimeTypes), std::end(kFontMimeTypes),
@@ -62,7 +62,7 @@
                       return net::MatchesMimeType(mime, mime_type);
                     });
     if (found)
-      return content::RESOURCE_TYPE_FONT_RESOURCE;
+      return content::ResourceType::kFontResource;
   }
   return fallback;
 }
@@ -74,11 +74,11 @@
   // Restricts content::RESOURCE_TYPE_{PREFETCH,SUB_RESOURCE,XHR} to a small set
   // of mime types, because these resource types don't communicate how the
   // resources will be used.
-  if (resource_type == content::RESOURCE_TYPE_PREFETCH ||
-      resource_type == content::RESOURCE_TYPE_SUB_RESOURCE ||
-      resource_type == content::RESOURCE_TYPE_XHR) {
+  if (resource_type == content::ResourceType::kPrefetch ||
+      resource_type == content::ResourceType::kSubResource ||
+      resource_type == content::ResourceType::kXhr) {
     return GetResourceTypeFromMimeType(mime_type,
-                                       content::RESOURCE_TYPE_LAST_TYPE);
+                                       content::ResourceType::kSubResource);
   }
   return resource_type;
 }
@@ -249,11 +249,11 @@
     const std::string& mime_type) {
   content::ResourceType actual_resource_type =
       GetResourceType(resource_type, mime_type);
-  return actual_resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
-         actual_resource_type == content::RESOURCE_TYPE_STYLESHEET ||
-         actual_resource_type == content::RESOURCE_TYPE_SCRIPT ||
-         actual_resource_type == content::RESOURCE_TYPE_IMAGE ||
-         actual_resource_type == content::RESOURCE_TYPE_FONT_RESOURCE;
+  return actual_resource_type == content::ResourceType::kMainFrame ||
+         actual_resource_type == content::ResourceType::kStylesheet ||
+         actual_resource_type == content::ResourceType::kScript ||
+         actual_resource_type == content::ResourceType::kImage ||
+         actual_resource_type == content::ResourceType::kFontResource;
 }
 
 void LoadingDataCollector::CleanupAbandonedNavigations(
diff --git a/chrome/browser/predictors/loading_data_collector_unittest.cc b/chrome/browser/predictors/loading_data_collector_unittest.cc
index adfefa4..10c19644 100644
--- a/chrome/browser/predictors/loading_data_collector_unittest.cc
+++ b/chrome/browser/predictors/loading_data_collector_unittest.cc
@@ -51,29 +51,29 @@
 
 TEST_F(LoadingDataCollectorTest, HandledResourceTypes) {
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_STYLESHEET, "bogus/mime-type"));
+      content::ResourceType::kStylesheet, "bogus/mime-type"));
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_STYLESHEET, ""));
+      content::ResourceType::kStylesheet, ""));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_WORKER, "text/css"));
+      content::ResourceType::kWorker, "text/css"));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_WORKER, ""));
+      content::ResourceType::kWorker, ""));
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_PREFETCH, "text/css"));
+      content::ResourceType::kPrefetch, "text/css"));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_PREFETCH, "bogus/mime-type"));
+      content::ResourceType::kPrefetch, "bogus/mime-type"));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_PREFETCH, ""));
+      content::ResourceType::kPrefetch, ""));
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_PREFETCH, "application/font-woff"));
+      content::ResourceType::kPrefetch, "application/font-woff"));
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_PREFETCH, "font/woff2"));
+      content::ResourceType::kPrefetch, "font/woff2"));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_XHR, ""));
+      content::ResourceType::kXhr, ""));
   EXPECT_FALSE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_XHR, "bogus/mime-type"));
+      content::ResourceType::kXhr, "bogus/mime-type"));
   EXPECT_TRUE(LoadingDataCollector::IsHandledResourceType(
-      content::RESOURCE_TYPE_XHR, "application/javascript"));
+      content::ResourceType::kXhr, "application/javascript"));
 }
 
 TEST_F(LoadingDataCollectorTest, ShouldRecordMainFrameLoad) {
@@ -95,59 +95,59 @@
 TEST_F(LoadingDataCollectorTest, ShouldRecordSubresourceLoad) {
   // Protocol.
   auto http_image_request = CreateResourceLoadInfo(
-      "http://www.google.com/cat.png", content::RESOURCE_TYPE_IMAGE);
+      "http://www.google.com/cat.png", content::ResourceType::kImage);
   EXPECT_TRUE(
       LoadingDataCollector::ShouldRecordResourceLoad(*http_image_request));
 
   auto https_image_request = CreateResourceLoadInfo(
-      "https://www.google.com/cat.png", content::RESOURCE_TYPE_IMAGE);
+      "https://www.google.com/cat.png", content::ResourceType::kImage);
   EXPECT_TRUE(
       LoadingDataCollector::ShouldRecordResourceLoad(*https_image_request));
 
   auto https_image_request_with_port = CreateResourceLoadInfo(
-      "https://www.google.com:666/cat.png", content::RESOURCE_TYPE_IMAGE);
+      "https://www.google.com:666/cat.png", content::ResourceType::kImage);
   EXPECT_FALSE(LoadingDataCollector::ShouldRecordResourceLoad(
       *https_image_request_with_port));
 
   auto file_image_request = CreateResourceLoadInfo(
-      "file://www.google.com/cat.png", content::RESOURCE_TYPE_IMAGE);
+      "file://www.google.com/cat.png", content::ResourceType::kImage);
   EXPECT_FALSE(
       LoadingDataCollector::ShouldRecordResourceLoad(*file_image_request));
 
   // ResourceType.
   auto sub_frame_request = CreateResourceLoadInfo(
-      "http://www.google.com/frame.html", content::RESOURCE_TYPE_SUB_FRAME);
+      "http://www.google.com/frame.html", content::ResourceType::kSubFrame);
   EXPECT_FALSE(
       LoadingDataCollector::ShouldRecordResourceLoad(*sub_frame_request));
 
   auto font_request =
       CreateResourceLoadInfo("http://www.google.com/comic-sans-ms.woff",
-                             content::RESOURCE_TYPE_FONT_RESOURCE);
+                             content::ResourceType::kFontResource);
   EXPECT_TRUE(LoadingDataCollector::ShouldRecordResourceLoad(*font_request));
 
   // From MIME Type.
   auto prefetch_image_request = CreateResourceLoadInfo(
-      "http://www.google.com/cat.png", content::RESOURCE_TYPE_PREFETCH);
+      "http://www.google.com/cat.png", content::ResourceType::kPrefetch);
   prefetch_image_request->mime_type = "image/png";
   EXPECT_TRUE(
       LoadingDataCollector::ShouldRecordResourceLoad(*prefetch_image_request));
 
   auto prefetch_unknown_image_request = CreateResourceLoadInfo(
-      "http://www.google.com/cat.png", content::RESOURCE_TYPE_PREFETCH);
+      "http://www.google.com/cat.png", content::ResourceType::kPrefetch);
   prefetch_unknown_image_request->mime_type = "image/my-wonderful-format";
   EXPECT_FALSE(LoadingDataCollector::ShouldRecordResourceLoad(
       *prefetch_unknown_image_request));
 
   auto prefetch_font_request =
       CreateResourceLoadInfo("http://www.google.com/comic-sans-ms.woff",
-                             content::RESOURCE_TYPE_PREFETCH);
+                             content::ResourceType::kPrefetch);
   prefetch_font_request->mime_type = "font/woff";
   EXPECT_TRUE(
       LoadingDataCollector::ShouldRecordResourceLoad(*prefetch_font_request));
 
   auto prefetch_unknown_font_request =
       CreateResourceLoadInfo("http://www.google.com/comic-sans-ms.woff",
-                             content::RESOURCE_TYPE_PREFETCH);
+                             content::ResourceType::kPrefetch);
   prefetch_unknown_font_request->mime_type = "font/woff-woff";
   EXPECT_FALSE(LoadingDataCollector::ShouldRecordResourceLoad(
       *prefetch_unknown_font_request));
@@ -167,35 +167,35 @@
   resources.push_back(CreateResourceLoadInfo("http://www.google.com"));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style1.css", content::ResourceType::kStylesheet));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo("http://google.com/script2.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo("http://google.com/image1.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo("http://google.com/image2.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style2.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style2.css", content::ResourceType::kStylesheet));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(
       CreateResourceLoadInfo("http://static.google.com/style2-no-store.css",
-                             content::RESOURCE_TYPE_STYLESHEET,
+                             content::ResourceType::kStylesheet,
                              /* always_access_network */ true));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
   resources.push_back(CreateResourceLoadInfoWithRedirects(
       {"http://reader.google.com/style.css",
        "http://dev.null.google.com/style.css"},
-      content::RESOURCE_TYPE_STYLESHEET));
+      content::ResourceType::kStylesheet));
   collector_->RecordResourceLoadComplete(navigation_id, *resources.back());
 
   auto summary = CreatePageRequestSummary("http://www.google.com",
@@ -308,7 +308,7 @@
   // If there is no inflight navigation, nothing happens.
   auto navigation_id = CreateNavigationID(kTabId, "http://www.google.com");
   auto resource1 = CreateResourceLoadInfo("http://google.com/style1.css",
-                                          content::RESOURCE_TYPE_STYLESHEET);
+                                          content::ResourceType::kStylesheet);
   collector_->RecordResourceLoadComplete(navigation_id, *resource1);
   EXPECT_TRUE(collector_->inflight_navigations_.empty());
 
@@ -318,9 +318,9 @@
 
   // Now add a few subresources.
   auto resource2 = CreateResourceLoadInfo("http://google.com/script1.js",
-                                          content::RESOURCE_TYPE_SCRIPT);
+                                          content::ResourceType::kScript);
   auto resource3 = CreateResourceLoadInfo("http://google.com/script2.js",
-                                          content::RESOURCE_TYPE_SCRIPT);
+                                          content::ResourceType::kScript);
   collector_->RecordResourceLoadComplete(navigation_id, *resource1);
   collector_->RecordResourceLoadComplete(navigation_id, *resource2);
   collector_->RecordResourceLoadComplete(navigation_id, *resource3);
diff --git a/chrome/browser/predictors/loading_predictor_tab_helper_unittest.cc b/chrome/browser/predictors/loading_predictor_tab_helper_unittest.cc
index 451a8183..41b017f 100644
--- a/chrome/browser/predictors/loading_predictor_tab_helper_unittest.cc
+++ b/chrome/browser/predictors/loading_predictor_tab_helper_unittest.cc
@@ -188,7 +188,7 @@
 
   auto navigation_id = CreateNavigationID(GetTabID(), "http://test.org");
   auto resource_load_info = CreateResourceLoadInfo(
-      "http://test.org/script.js", content::RESOURCE_TYPE_SCRIPT);
+      "http://test.org/script.js", content::ResourceType::kScript);
   EXPECT_CALL(*mock_collector_,
               RecordResourceLoadComplete(navigation_id,
                                          Eq(ByRef(*resource_load_info))));
@@ -207,7 +207,7 @@
 
   // Resource loaded in subframe shouldn't be recorded.
   auto resource_load_info = CreateResourceLoadInfo(
-      "http://sub.test.org/script.js", content::RESOURCE_TYPE_SCRIPT);
+      "http://sub.test.org/script.js", content::ResourceType::kScript);
   tab_helper_->ResourceLoadComplete(subframe, content::GlobalRequestID(),
                                     *resource_load_info);
 }
@@ -219,15 +219,15 @@
 
   auto navigation_id = CreateNavigationID(GetTabID(), "http://test.org");
   auto resource_load_info = CreateResourceLoadInfo(
-      "http://test.org/script.js", content::RESOURCE_TYPE_SCRIPT, false);
+      "http://test.org/script.js", content::ResourceType::kScript, false);
   resource_load_info->mime_type = "application/javascript";
   resource_load_info->network_info->network_accessed = false;
   EXPECT_CALL(*mock_collector_,
               RecordResourceLoadComplete(navigation_id,
                                          Eq(ByRef(*resource_load_info))));
-  tab_helper_->DidLoadResourceFromMemoryCache(
-      GURL("http://test.org/script.js"), "application/javascript",
-      content::ResourceType::RESOURCE_TYPE_SCRIPT);
+  tab_helper_->DidLoadResourceFromMemoryCache(GURL("http://test.org/script.js"),
+                                              "application/javascript",
+                                              content::ResourceType::kScript);
 }
 
 }  // namespace predictors
diff --git a/chrome/browser/predictors/loading_stats_collector_unittest.cc b/chrome/browser/predictors/loading_stats_collector_unittest.cc
index 8720f5b..b2094bb 100644
--- a/chrome/browser/predictors/loading_stats_collector_unittest.cc
+++ b/chrome/browser/predictors/loading_stats_collector_unittest.cc
@@ -86,7 +86,7 @@
   resources.push_back(
       CreateResourceLoadInfoWithRedirects({initial_url, navigation_url}));
   resources.push_back(
-      CreateResourceLoadInfo(script_url, content::RESOURCE_TYPE_SCRIPT));
+      CreateResourceLoadInfo(script_url, content::ResourceType::kScript));
   PageRequestSummary summary =
       CreatePageRequestSummary(navigation_url, initial_url, resources);
 
@@ -120,9 +120,9 @@
   std::vector<content::mojom::ResourceLoadInfoPtr> resources;
   resources.push_back(CreateResourceLoadInfo(main_frame_url));
   resources.push_back(
-      CreateResourceLoadInfo(gen(1), content::RESOURCE_TYPE_SCRIPT));
+      CreateResourceLoadInfo(gen(1), content::ResourceType::kScript));
   resources.push_back(
-      CreateResourceLoadInfo(gen(100), content::RESOURCE_TYPE_SCRIPT));
+      CreateResourceLoadInfo(gen(100), content::ResourceType::kScript));
   PageRequestSummary summary =
       CreatePageRequestSummary(main_frame_url, main_frame_url, resources);
 
@@ -192,11 +192,11 @@
     std::vector<content::mojom::ResourceLoadInfoPtr> resources;
     resources.push_back(CreateResourceLoadInfo(main_frame_url));
     resources.push_back(
-        CreateResourceLoadInfo(gen(1), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(1), content::ResourceType::kScript));
     resources.push_back(
-        CreateResourceLoadInfo(gen(2), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(2), content::ResourceType::kScript));
     resources.push_back(
-        CreateResourceLoadInfo(gen(100), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(100), content::ResourceType::kScript));
     PageRequestSummary summary =
         CreatePageRequestSummary(main_frame_url, main_frame_url, resources);
 
@@ -227,7 +227,7 @@
   std::vector<content::mojom::ResourceLoadInfoPtr> resources;
   resources.push_back(CreateResourceLoadInfo(main_frame_url));
   resources.push_back(CreateResourceLoadInfo("http://cdn.google.com/script.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   PageRequestSummary summary =
       CreatePageRequestSummary(main_frame_url, main_frame_url, resources);
   stats_collector_->RecordPageRequestSummary(summary);
@@ -275,11 +275,11 @@
     std::vector<content::mojom::ResourceLoadInfoPtr> resources;
     resources.push_back(CreateResourceLoadInfo(main_frame_url));
     resources.push_back(
-        CreateResourceLoadInfo(gen(1), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(1), content::ResourceType::kScript));
     resources.push_back(
-        CreateResourceLoadInfo(gen(2), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(2), content::ResourceType::kScript));
     resources.push_back(
-        CreateResourceLoadInfo(gen(100), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(100), content::ResourceType::kScript));
     PageRequestSummary summary =
         CreatePageRequestSummary(main_frame_url, main_frame_url, resources);
 
diff --git a/chrome/browser/predictors/loading_test_util.cc b/chrome/browser/predictors/loading_test_util.cc
index ea61f37..19eb92a 100644
--- a/chrome/browser/predictors/loading_test_util.cc
+++ b/chrome/browser/predictors/loading_test_util.cc
@@ -291,9 +291,9 @@
 }
 
 std::ostream& operator<<(std::ostream& os, const ResourceLoadInfo& info) {
-  return os << "[" << info.url.spec() << "," << info.resource_type << ","
-            << info.mime_type << "," << info.method << "," << *info.network_info
-            << "]";
+  return os << "[" << info.url.spec() << ","
+            << static_cast<int>(info.resource_type) << "," << info.mime_type
+            << "," << info.method << "," << *info.network_info << "]";
 }
 
 bool operator==(const CommonNetworkInfo& lhs, const CommonNetworkInfo& rhs) {
diff --git a/chrome/browser/predictors/loading_test_util.h b/chrome/browser/predictors/loading_test_util.h
index 102bd5c..d7453e1 100644
--- a/chrome/browser/predictors/loading_test_util.h
+++ b/chrome/browser/predictors/loading_test_util.h
@@ -66,12 +66,12 @@
 
 content::mojom::ResourceLoadInfoPtr CreateResourceLoadInfo(
     const std::string& url,
-    content::ResourceType resource_type = content::RESOURCE_TYPE_MAIN_FRAME,
+    content::ResourceType resource_type = content::ResourceType::kMainFrame,
     bool always_access_network = false);
 
 content::mojom::ResourceLoadInfoPtr CreateResourceLoadInfoWithRedirects(
     const std::vector<std::string>& redirect_chain,
-    content::ResourceType resource_type = content::RESOURCE_TYPE_MAIN_FRAME);
+    content::ResourceType resource_type = content::ResourceType::kMainFrame);
 
 PreconnectPrediction CreatePreconnectPrediction(
     std::string host,
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
index 52c4081..25e083e 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_unittest.cc
@@ -245,27 +245,27 @@
   std::vector<content::mojom::ResourceLoadInfoPtr> resources;
   resources.push_back(CreateResourceLoadInfo("http://www.google.com"));
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style1.css", content::ResourceType::kStylesheet));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script2.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/image1.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   resources.push_back(CreateResourceLoadInfo("http://google.com/image2.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style2.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style2.css", content::ResourceType::kStylesheet));
   resources.push_back(
       CreateResourceLoadInfo("http://static.google.com/style2-no-store.css",
-                             content::RESOURCE_TYPE_STYLESHEET,
+                             content::ResourceType::kStylesheet,
                              /* always_access_network */ true));
   resources.push_back(CreateResourceLoadInfoWithRedirects(
       {"http://reader.google.com/style.css",
        "http://dev.null.google.com/style.css"},
-      content::RESOURCE_TYPE_STYLESHEET));
+      content::ResourceType::kStylesheet));
   resources.back()->network_info->always_access_network = true;
 
   auto page_summary = CreatePageRequestSummary(
@@ -309,22 +309,22 @@
   std::vector<content::mojom::ResourceLoadInfoPtr> resources;
   resources.push_back(CreateResourceLoadInfo("http://www.google.com"));
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style1.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style1.css", content::ResourceType::kStylesheet));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script2.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/script1.js",
-                                             content::RESOURCE_TYPE_SCRIPT));
+                                             content::ResourceType::kScript));
   resources.push_back(CreateResourceLoadInfo("http://google.com/image1.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   resources.push_back(CreateResourceLoadInfo("http://google.com/image2.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
   resources.push_back(CreateResourceLoadInfo(
-      "http://google.com/style2.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://google.com/style2.css", content::ResourceType::kStylesheet));
   resources.push_back(CreateResourceLoadInfo(
       "http://static.google.com/style2-no-store.css",
-      content::RESOURCE_TYPE_STYLESHEET, /* always_access_network */ true));
+      content::ResourceType::kStylesheet, /* always_access_network */ true));
 
   auto page_summary = CreatePageRequestSummary(
       "http://www.google.com", "http://www.google.com", resources);
@@ -364,9 +364,9 @@
   std::vector<content::mojom::ResourceLoadInfoPtr> resources;
   resources.push_back(CreateResourceLoadInfo("http://www.nike.com"));
   resources.push_back(CreateResourceLoadInfo(
-      "http://nike.com/style1.css", content::RESOURCE_TYPE_STYLESHEET));
+      "http://nike.com/style1.css", content::ResourceType::kStylesheet));
   resources.push_back(CreateResourceLoadInfo("http://nike.com/image2.png",
-                                             content::RESOURCE_TYPE_IMAGE));
+                                             content::ResourceType::kImage));
 
   auto page_summary = CreatePageRequestSummary(
       "http://www.nike.com", "http://www.nike.com", resources);
@@ -407,7 +407,7 @@
   const int num_resources = predictor_->config_.max_origins_per_entry + 10;
   for (int i = 1; i <= num_resources; ++i) {
     resources.push_back(
-        CreateResourceLoadInfo(gen(i), content::RESOURCE_TYPE_SCRIPT));
+        CreateResourceLoadInfo(gen(i), content::ResourceType::kScript));
   }
 
   auto page_summary = CreatePageRequestSummary(
diff --git a/chrome/browser/previews/previews_lite_page_url_loader_interceptor.cc b/chrome/browser/previews/previews_lite_page_url_loader_interceptor.cc
index 47b25cf8..f94b142 100644
--- a/chrome/browser/previews/previews_lite_page_url_loader_interceptor.cc
+++ b/chrome/browser/previews/previews_lite_page_url_loader_interceptor.cc
@@ -36,7 +36,8 @@
   if (!(resource_request.previews_state & content::LITE_PAGE_REDIRECT_ON))
     return false;
 
-  DCHECK_EQ(resource_request.resource_type, content::RESOURCE_TYPE_MAIN_FRAME);
+  DCHECK_EQ(resource_request.resource_type,
+            static_cast<int>(content::ResourceType::kMainFrame));
   DCHECK(resource_request.url.SchemeIsHTTPOrHTTPS());
   DCHECK_EQ(resource_request.method, "GET");
 
diff --git a/chrome/browser/previews/previews_lite_page_url_loader_interceptor_unittest.cc b/chrome/browser/previews/previews_lite_page_url_loader_interceptor_unittest.cc
index 9cfac795..b52c434c 100644
--- a/chrome/browser/previews/previews_lite_page_url_loader_interceptor_unittest.cc
+++ b/chrome/browser/previews/previews_lite_page_url_loader_interceptor_unittest.cc
@@ -85,7 +85,7 @@
 
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
 
   SetFakeResponse(
@@ -133,7 +133,7 @@
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
   SetFakeResponse(
@@ -158,7 +158,7 @@
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
   SetFakeResponse(
@@ -184,7 +184,7 @@
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
   SetFakeResponse(
@@ -208,7 +208,7 @@
   base::HistogramTester histogram_tester;
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.method = "GET";
   request.previews_state = content::LITE_PAGE_REDIRECT_ON;
   SetFakeResponse(
diff --git a/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc b/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
index 5ffb5f8..223d52d 100644
--- a/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
+++ b/chrome/browser/safe_browsing/browser_feature_extractor_unittest.cc
@@ -569,14 +569,14 @@
 
   std::vector<IPUrlInfo> bad_urls;
   bad_urls.push_back(
-      IPUrlInfo("http://bad.com", "GET", "", content::RESOURCE_TYPE_SCRIPT));
+      IPUrlInfo("http://bad.com", "GET", "", content::ResourceType::kScript));
   bad_urls.push_back(
-      IPUrlInfo("http://evil.com", "GET", "", content::RESOURCE_TYPE_SCRIPT));
+      IPUrlInfo("http://evil.com", "GET", "", content::ResourceType::kScript));
   browse_info_->ips.insert(std::make_pair("193.5.163.8", bad_urls));
   browse_info_->ips.insert(std::make_pair("92.92.92.92", bad_urls));
   std::vector<IPUrlInfo> good_urls;
   good_urls.push_back(
-      IPUrlInfo("http://ok.com", "GET", "", content::RESOURCE_TYPE_SCRIPT));
+      IPUrlInfo("http://ok.com", "GET", "", content::ResourceType::kScript));
   browse_info_->ips.insert(std::make_pair("23.94.78.1", good_urls));
   EXPECT_CALL(*db_manager_, MatchMalwareIP("193.5.163.8"))
       .WillOnce(Return(true));
@@ -609,7 +609,7 @@
 
   std::vector<IPUrlInfo> bad_urls;
   bad_urls.push_back(
-      IPUrlInfo("http://bad.com", "GET", "", content::RESOURCE_TYPE_SCRIPT));
+      IPUrlInfo("http://bad.com", "GET", "", content::ResourceType::kScript));
   std::vector<std::string> ips;
   for (int i = 0; i < 7; ++i) {  // Add 7 ips
     std::string ip = base::StringPrintf("%d.%d.%d.%d", i, i, i, i);
diff --git a/chrome/browser/safe_browsing/client_side_detection_host.cc b/chrome/browser/safe_browsing/client_side_detection_host.cc
index 57ea3ca..3f2a3b7 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_host.cc
@@ -380,8 +380,8 @@
       navigation_handle->HasCommitted() && !navigation_handle->IsDownload() &&
       !navigation_handle->IsSameDocument()) {
     content::ResourceType resource_type =
-        navigation_handle->IsInMainFrame() ? content::RESOURCE_TYPE_MAIN_FRAME
-                                           : content::RESOURCE_TYPE_SUB_FRAME;
+        navigation_handle->IsInMainFrame() ? content::ResourceType::kMainFrame
+                                           : content::ResourceType::kSubFrame;
     UpdateIPUrlMap(
         navigation_handle->GetSocketAddress().ToStringWithoutPort() /* ip */,
         navigation_handle->GetURL().spec() /* url */,
diff --git a/chrome/browser/safe_browsing/client_side_detection_host_browsertest.cc b/chrome/browser/safe_browsing/client_side_detection_host_browsertest.cc
index 5ee5f16..eab51326 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host_browsertest.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_host_browsertest.cc
@@ -66,12 +66,12 @@
       browse_info->ips[embedded_test_server()->base_url().host()];
   IPUrlInfo expected_result_1(
       embedded_test_server()->GetURL("/safe_browsing/malware_image.png").spec(),
-      "GET", page_url.spec(), content::RESOURCE_TYPE_IMAGE);
+      "GET", page_url.spec(), content::ResourceType::kImage);
   IPUrlInfo expected_result_2(embedded_test_server()
                                   ->GetURL("/safe_browsing/malware_iframe.html")
                                   .spec(),
                               "GET", page_url.spec(),
-                              content::RESOURCE_TYPE_SUB_FRAME);
+                              content::ResourceType::kSubFrame);
   EXPECT_TRUE(FindExpectedIPUrlInfo(expected_result_1, ip_urls));
   EXPECT_TRUE(FindExpectedIPUrlInfo(expected_result_2, ip_urls));
 }
diff --git a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
index 7465b2f..73920ad 100644
--- a/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
+++ b/chrome/browser/safe_browsing/client_side_detection_host_unittest.cc
@@ -314,7 +314,7 @@
   void DidStopLoading() { csd_host_->DidStopLoading(); }
 
   void UpdateIPUrlMap(const std::string& ip, const std::string& host) {
-    csd_host_->UpdateIPUrlMap(ip, host, "", "", content::RESOURCE_TYPE_OBJECT);
+    csd_host_->UpdateIPUrlMap(ip, host, "", "", content::ResourceType::kObject);
   }
 
   BrowseInfo* GetBrowseInfo() {
@@ -937,7 +937,7 @@
   for (int i = 0; i < 20; i++) {
     std::string url = base::StringPrintf("http://%d.com/", i);
     expected_urls.push_back(
-        IPUrlInfo(url, "", "", content::RESOURCE_TYPE_OBJECT));
+        IPUrlInfo(url, "", "", content::ResourceType::kObject));
     UpdateIPUrlMap("250.10.10.10", url);
   }
   ASSERT_EQ(1U, browse_info->ips.size());
@@ -957,7 +957,7 @@
     std::string ip = base::StringPrintf("%d.%d.%d.256", i, i, i);
     expected_urls.clear();
     expected_urls.push_back(
-        IPUrlInfo("test.com/", "", "", content::RESOURCE_TYPE_OBJECT));
+        IPUrlInfo("test.com/", "", "", content::ResourceType::kObject));
     UpdateIPUrlMap(ip, "test.com/");
     ASSERT_EQ(1U, browse_info->ips[ip].size());
     CheckIPUrlEqual(expected_urls,
@@ -976,9 +976,9 @@
   ASSERT_EQ(2U, browse_info->ips["100.100.100.256"].size());
   expected_urls.clear();
   expected_urls.push_back(
-      IPUrlInfo("test.com/", "", "", content::RESOURCE_TYPE_OBJECT));
+      IPUrlInfo("test.com/", "", "", content::ResourceType::kObject));
   expected_urls.push_back(
-      IPUrlInfo("more.com/", "", "", content::RESOURCE_TYPE_OBJECT));
+      IPUrlInfo("more.com/", "", "", content::ResourceType::kObject));
   CheckIPUrlEqual(expected_urls,
                   browse_info->ips["100.100.100.256"]);
 }
@@ -1277,7 +1277,7 @@
   resource_load_info->url = GURL("http://host1.com");
   resource_load_info->referrer = GURL("http://host2.com");
   resource_load_info->method = "GET";
-  resource_load_info->resource_type = content::RESOURCE_TYPE_SUB_FRAME;
+  resource_load_info->resource_type = content::ResourceType::kSubFrame;
   csd_host_->ResourceLoadComplete(/*render_frame_host=*/nullptr,
                                   content::GlobalRequestID(),
                                   *resource_load_info);
diff --git a/chrome/browser/safe_browsing/incident_reporting/resource_request_detector.cc b/chrome/browser/safe_browsing/incident_reporting/resource_request_detector.cc
index 56d14918..132240e4 100644
--- a/chrome/browser/safe_browsing/incident_reporting/resource_request_detector.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/resource_request_detector.cc
@@ -158,9 +158,9 @@
   if (!request->url.SchemeIsHTTPOrHTTPS())
     return;
 
-  if (request->resource_type == content::RESOURCE_TYPE_SUB_FRAME ||
-      request->resource_type == content::RESOURCE_TYPE_SCRIPT ||
-      request->resource_type == content::RESOURCE_TYPE_OBJECT) {
+  if (request->resource_type == content::ResourceType::kSubFrame ||
+      request->resource_type == content::ResourceType::kScript ||
+      request->resource_type == content::ResourceType::kObject) {
     ResourceRequestDetectorClient::Start(
         request->url, database_manager_,
         base::BindOnce(&ResourceRequestDetector::ReportIncidentOnUIThread,
diff --git a/chrome/browser/safe_browsing/incident_reporting/resource_request_detector_unittest.cc b/chrome/browser/safe_browsing/incident_reporting/resource_request_detector_unittest.cc
index 5a337a04..3469c01 100644
--- a/chrome/browser/safe_browsing/incident_reporting/resource_request_detector_unittest.cc
+++ b/chrome/browser/safe_browsing/incident_reporting/resource_request_detector_unittest.cc
@@ -186,28 +186,28 @@
 
 TEST_F(ResourceRequestDetectorTest, NoDbCheckForIgnoredResourceTypes) {
   ExpectNoDatabaseCheck();
-  ExpectNoIncident(
-      "http://www.example.com/index.html", content::RESOURCE_TYPE_MAIN_FRAME);
+  ExpectNoIncident("http://www.example.com/index.html",
+                   content::ResourceType::kMainFrame);
 }
 
 TEST_F(ResourceRequestDetectorTest, NoDbCheckForUnsupportedSchemes) {
   ExpectNoDatabaseCheck();
-  ExpectNoIncident(
-      "file:///usr/local/script.js", content::RESOURCE_TYPE_SCRIPT);
-  ExpectNoIncident(
-      "chrome-extension://abcdefghi/script.js", content::RESOURCE_TYPE_SCRIPT);
+  ExpectNoIncident("file:///usr/local/script.js",
+                   content::ResourceType::kScript);
+  ExpectNoIncident("chrome-extension://abcdefghi/script.js",
+                   content::ResourceType::kScript);
 }
 
 TEST_F(ResourceRequestDetectorTest, NoEventForNegativeSynchronousDbCheck) {
   const std::string url = "http://www.example.com/script.js";
   ExpectNegativeSyncDatabaseCheck(url);
-  ExpectNoIncident(url, content::RESOURCE_TYPE_SCRIPT);
+  ExpectNoIncident(url, content::ResourceType::kScript);
 }
 
 TEST_F(ResourceRequestDetectorTest, NoEventForNegativeAsynchronousDbCheck) {
   const std::string url = "http://www.example.com/script.js";
   ExpectAsyncDatabaseCheck(url, false, "");
-  ExpectNoIncident(url, content::RESOURCE_TYPE_SCRIPT);
+  ExpectNoIncident(url, content::ResourceType::kScript);
 }
 
 TEST_F(ResourceRequestDetectorTest, EventAddedForSupportedSchemes) {
@@ -218,17 +218,16 @@
   for (const auto& scheme : schemes) {
     const std::string url = scheme + "://" + domain_path;
     ExpectAsyncDatabaseCheck(url, true, digest);
-    ExpectIncidentAdded(
-        url, content::RESOURCE_TYPE_SCRIPT,
-        ResourceRequestIncidentMessage::TYPE_PATTERN, digest);
+    ExpectIncidentAdded(url, content::ResourceType::kScript,
+                        ResourceRequestIncidentMessage::TYPE_PATTERN, digest);
   }
 }
 
 TEST_F(ResourceRequestDetectorTest, EventAddedForSupportedResourceTypes) {
   content::ResourceType supported_types[] = {
-    content::RESOURCE_TYPE_SCRIPT,
-    content::RESOURCE_TYPE_SUB_FRAME,
-    content::RESOURCE_TYPE_OBJECT,
+      content::ResourceType::kScript,
+      content::ResourceType::kSubFrame,
+      content::ResourceType::kObject,
   };
   const std::string url = "http://www.example.com/";
   const std::string digest = "dummydigest";
diff --git a/chrome/browser/signin/chrome_signin_helper.cc b/chrome/browser/signin/chrome_signin_helper.cc
index 1e91394..8d0f849 100644
--- a/chrome/browser/signin/chrome_signin_helper.cc
+++ b/chrome/browser/signin/chrome_signin_helper.cc
@@ -142,10 +142,10 @@
 bool ShouldBlockReconcilorForRequest(ChromeRequestAdapter* request) {
   content::ResourceType resource_type = request->GetResourceType();
 
-  if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME)
+  if (resource_type == content::ResourceType::kMainFrame)
     return true;
 
-  return (resource_type == content::RESOURCE_TYPE_XHR) &&
+  return (resource_type == content::ResourceType::kXhr) &&
          gaia::IsGaiaSignonRealm(request->GetReferrerOrigin());
 }
 
@@ -472,7 +472,7 @@
 
 bool ResponseAdapter::IsMainFrame() const {
   auto* info = content::ResourceRequestInfo::ForRequest(request_);
-  return info && (info->GetResourceType() == content::RESOURCE_TYPE_MAIN_FRAME);
+  return info && (info->GetResourceType() == content::ResourceType::kMainFrame);
 }
 
 GURL ResponseAdapter::GetOrigin() const {
diff --git a/chrome/browser/signin/chrome_signin_helper_unittest.cc b/chrome/browser/signin/chrome_signin_helper_unittest.cc
index 432b18b..6b5e6a77 100644
--- a/chrome/browser/signin/chrome_signin_helper_unittest.cc
+++ b/chrome/browser/signin/chrome_signin_helper_unittest.cc
@@ -75,8 +75,8 @@
         TRAFFIC_ANNOTATION_FOR_TESTS);
     content::ResourceRequestInfo::AllocateForTesting(
         request_.get(),
-        is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
-                      : content::RESOURCE_TYPE_SUB_FRAME,
+        is_main_frame ? content::ResourceType::kMainFrame
+                      : content::ResourceType::kSubFrame,
         nullptr, -1, -1, -1, true, content::ResourceInterceptPolicy::kAllowNone,
         true, content::PREVIEWS_OFF, nullptr);
     net::URLRequestFilter::GetInstance()->AddUrlInterceptor(
diff --git a/chrome/browser/signin/chrome_signin_proxying_url_loader_factory_unittest.cc b/chrome/browser/signin/chrome_signin_proxying_url_loader_factory_unittest.cc
index b71dc61..1c0e714 100644
--- a/chrome/browser/signin/chrome_signin_proxying_url_loader_factory_unittest.cc
+++ b/chrome/browser/signin/chrome_signin_proxying_url_loader_factory_unittest.cc
@@ -140,7 +140,7 @@
   auto request = std::make_unique<network::ResourceRequest>();
   request->url = kTestURL;
   request->referrer = kTestReferrer;
-  request->resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request->resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request->is_main_frame = true;
   request->headers.SetHeader("X-Request-1", "Foo");
 
@@ -160,7 +160,7 @@
           Invoke([&](ChromeRequestAdapter* adapter, const GURL& redirect_url) {
             EXPECT_EQ(kTestURL, adapter->GetUrl());
             EXPECT_TRUE(adapter->IsMainRequestContext(nullptr /* io_data */));
-            EXPECT_EQ(content::RESOURCE_TYPE_MAIN_FRAME,
+            EXPECT_EQ(content::ResourceType::kMainFrame,
                       adapter->GetResourceType());
             EXPECT_EQ(GURL("https://chrome.com"), adapter->GetReferrerOrigin());
 
@@ -178,7 +178,7 @@
       .WillOnce(
           Invoke([&](ChromeRequestAdapter* adapter, const GURL& redirect_url) {
             EXPECT_TRUE(adapter->IsMainRequestContext(nullptr));
-            EXPECT_EQ(content::RESOURCE_TYPE_MAIN_FRAME,
+            EXPECT_EQ(content::ResourceType::kMainFrame,
                       adapter->GetResourceType());
 
             // Changes to the URL and referrer take effect after the redirect
diff --git a/chrome/browser/signin/chrome_signin_url_loader_throttle.cc b/chrome/browser/signin/chrome_signin_url_loader_throttle.cc
index 9adf2a2..2c54f0d 100644
--- a/chrome/browser/signin/chrome_signin_url_loader_throttle.cc
+++ b/chrome/browser/signin/chrome_signin_url_loader_throttle.cc
@@ -98,7 +98,7 @@
 
   bool IsMainFrame() const override {
     return throttle_->request_resource_type_ ==
-           content::RESOURCE_TYPE_MAIN_FRAME;
+           content::ResourceType::kMainFrame;
   }
 
   GURL GetOrigin() const override {
diff --git a/chrome/browser/signin/chrome_signin_url_loader_throttle_unittest.cc b/chrome/browser/signin/chrome_signin_url_loader_throttle_unittest.cc
index 1691cc1..66b106f 100644
--- a/chrome/browser/signin/chrome_signin_url_loader_throttle_unittest.cc
+++ b/chrome/browser/signin/chrome_signin_url_loader_throttle_unittest.cc
@@ -71,7 +71,7 @@
           Invoke([&](ChromeRequestAdapter* adapter, const GURL& redirect_url) {
             EXPECT_EQ(kTestURL, adapter->GetUrl());
             EXPECT_TRUE(adapter->IsMainRequestContext(nullptr /* io_data */));
-            EXPECT_EQ(content::RESOURCE_TYPE_MAIN_FRAME,
+            EXPECT_EQ(content::ResourceType::kMainFrame,
                       adapter->GetResourceType());
             EXPECT_EQ(GURL("https://chrome.com"), adapter->GetReferrerOrigin());
 
@@ -90,7 +90,7 @@
   network::ResourceRequest request;
   request.url = kTestURL;
   request.referrer = kTestReferrer;
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_MAIN_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.headers.SetHeader("X-Request-1", "Foo");
   bool defer = false;
   throttle->WillStartRequest(&request, &defer);
@@ -136,7 +136,7 @@
       .WillOnce(
           Invoke([&](ChromeRequestAdapter* adapter, const GURL& redirect_url) {
             EXPECT_TRUE(adapter->IsMainRequestContext(nullptr));
-            EXPECT_EQ(content::RESOURCE_TYPE_MAIN_FRAME,
+            EXPECT_EQ(content::ResourceType::kMainFrame,
                       adapter->GetResourceType());
 
             // Changes to the URL and referrer take effect after the redirect
@@ -238,12 +238,12 @@
       .Times(2)
       .WillRepeatedly([](ChromeRequestAdapter* adapter,
                          const GURL& redirect_url) {
-        EXPECT_EQ(content::RESOURCE_TYPE_SUB_FRAME, adapter->GetResourceType());
+        EXPECT_EQ(content::ResourceType::kSubFrame, adapter->GetResourceType());
       });
 
   network::ResourceRequest request;
   request.url = GURL("https://google.com");
-  request.resource_type = static_cast<int>(content::RESOURCE_TYPE_SUB_FRAME);
+  request.resource_type = static_cast<int>(content::ResourceType::kSubFrame);
 
   bool defer = false;
   throttle->WillStartRequest(&request, &defer);
diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
index 45b0d00..34e13af 100644
--- a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
+++ b/chrome/browser/ui/search_engines/search_engine_tab_helper.cc
@@ -145,7 +145,8 @@
   TemplateURLFetcherFactory::GetForProfile(profile)->ScheduleDownload(
       keyword, osdd_url, entry->GetFavicon().url,
       url::Origin::Create(web_contents()->GetURL()), url_loader_factory.get(),
-      frame->GetRoutingID(), content::RESOURCE_TYPE_SUB_RESOURCE);
+      frame->GetRoutingID(),
+      static_cast<int>(content::ResourceType::kSubResource));
 }
 
 void SearchEngineTabHelper::OnFaviconUpdated(
diff --git a/chrome/common/prerender_url_loader_throttle.cc b/chrome/common/prerender_url_loader_throttle.cc
index 7b0e5c8..bf6e173 100644
--- a/chrome/common/prerender_url_loader_throttle.cc
+++ b/chrome/common/prerender_url_loader_throttle.cc
@@ -99,7 +99,8 @@
     }
   }
 
-  if (request->resource_type != content::RESOURCE_TYPE_MAIN_FRAME &&
+  if (request->resource_type !=
+          static_cast<int>(content::ResourceType::kMainFrame) &&
       !DoesSubresourceURLHaveValidScheme(request->url)) {
     // Destroying the prerender for unsupported scheme only for non-main
     // resource to allow chrome://crash to actually crash in the
@@ -115,7 +116,8 @@
   }
 
 #if defined(OS_ANDROID)
-  if (request->resource_type == content::RESOURCE_TYPE_FAVICON) {
+  if (request->resource_type ==
+      static_cast<int>(content::ResourceType::kFavicon)) {
     // Delay icon fetching until the contents are getting swapped in
     // to conserve network usage in mobile devices.
     *defer = true;
@@ -171,7 +173,7 @@
         base::BindOnce(CancelPrerenderForUnsupportedScheme,
                        std::move(canceler_getter_), redirect_info->new_url));
   } else if (follow_only_when_prerender_shown_header == "1" &&
-             resource_type_ != content::RESOURCE_TYPE_MAIN_FRAME) {
+             resource_type_ != content::ResourceType::kMainFrame) {
     // Only defer redirects with the Follow-Only-When-Prerender-Shown
     // header. Do not defer redirects on main frame loads.
     if (sync_xhr_) {
diff --git a/chrome/renderer/chromeos_merge_session_loader_throttle.cc b/chrome/renderer/chromeos_merge_session_loader_throttle.cc
index 38a582d..c7133f9 100644
--- a/chrome/renderer/chromeos_merge_session_loader_throttle.cc
+++ b/chrome/renderer/chromeos_merge_session_loader_throttle.cc
@@ -42,7 +42,8 @@
 void MergeSessionLoaderThrottle::WillStartRequest(
     network::ResourceRequest* request,
     bool* defer) {
-  is_xhr_ = request->resource_type == content::RESOURCE_TYPE_XHR;
+  is_xhr_ =
+      request->resource_type == static_cast<int>(content::ResourceType::kXhr);
   if (is_xhr_ && request->url.SchemeIsHTTPOrHTTPS() &&
       MaybeDeferForMergeSession(
           request->url,
diff --git a/chrome/renderer/page_load_metrics/page_resource_data_use.cc b/chrome/renderer/page_load_metrics/page_resource_data_use.cc
index 3c23a320..6db086a 100644
--- a/chrome/renderer/page_load_metrics/page_resource_data_use.cc
+++ b/chrome/renderer/page_load_metrics/page_resource_data_use.cc
@@ -17,7 +17,7 @@
 // Returns true when the image is a placeholder for lazy load or client LoFi.
 bool IsPartialImageRequest(content::ResourceType resource_type,
                            content::PreviewsState previews_state) {
-  if (resource_type != content::RESOURCE_TYPE_IMAGE)
+  if (resource_type != content::ResourceType::kImage)
     return false;
   return (previews_state & content::PreviewsTypes::CLIENT_LOFI_ON) ||
          (previews_state & content::PreviewsTypes::LAZY_IMAGE_LOAD_DEFERRED);
@@ -26,7 +26,7 @@
 // Returns true if this resource was previously fetched as a placeholder.
 bool IsImageAutoReload(content::ResourceType resource_type,
                        content::PreviewsState previews_state) {
-  if (resource_type != content::RESOURCE_TYPE_IMAGE)
+  if (resource_type != content::ResourceType::kImage)
     return false;
   return (previews_state & content::PreviewsTypes::CLIENT_LOFI_AUTO_RELOAD) ||
          (previews_state & content::PreviewsTypes::LAZY_IMAGE_AUTO_RELOAD);
@@ -110,8 +110,8 @@
   was_fetched_via_cache_ = response_head.was_fetched_via_cache;
   is_secure_scheme_ = response_url.SchemeIsCryptographic();
   is_primary_frame_resource_ =
-      resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
-      resource_type == content::RESOURCE_TYPE_SUB_FRAME;
+      resource_type == content::ResourceType::kMainFrame ||
+      resource_type == content::ResourceType::kSubFrame;
   origin_ = url::Origin::Create(response_url);
 }
 
diff --git a/chrome/renderer/url_loader_throttle_provider_impl.cc b/chrome/renderer/url_loader_throttle_provider_impl.cc
index f1248470..dc02ae1 100644
--- a/chrome/renderer/url_loader_throttle_provider_impl.cc
+++ b/chrome/renderer/url_loader_throttle_provider_impl.cc
@@ -229,7 +229,7 @@
 #if BUILDFLAG(ENABLE_EXTENSIONS)
   if (network_service_enabled &&
       type_ == content::URLLoaderThrottleProviderType::kFrame &&
-      resource_type == content::RESOURCE_TYPE_OBJECT) {
+      resource_type == content::ResourceType::kObject) {
     content::RenderFrame* render_frame =
         content::RenderFrame::FromRoutingID(render_frame_id);
     auto mime_handlers =
diff --git a/chrome/test/nacl/pnacl_header_test.cc b/chrome/test/nacl/pnacl_header_test.cc
index 2f4ecbef..d05c9d0 100644
--- a/chrome/test/nacl/pnacl_header_test.cc
+++ b/chrome/test/nacl/pnacl_header_test.cc
@@ -33,7 +33,7 @@
     std::vector<std::unique_ptr<content::ResourceThrottle>>* throttles) {
   // This checks the same condition as the one for PNaCl in
   // AppendComponentUpdaterThrottles.
-  if (resource_type == content::RESOURCE_TYPE_OBJECT) {
+  if (resource_type == content::ResourceType::kObject) {
     const net::HttpRequestHeaders& headers = request->extra_request_headers();
     std::string accept_headers;
     if (headers.GetHeader("Accept", &accept_headers)) {
diff --git a/components/data_reduction_proxy/content/browser/content_lofi_decider.cc b/components/data_reduction_proxy/content/browser/content_lofi_decider.cc
index 04cc93971..8c06599d 100644
--- a/components/data_reduction_proxy/content/browser/content_lofi_decider.cc
+++ b/components/data_reduction_proxy/content/browser/content_lofi_decider.cc
@@ -79,7 +79,7 @@
   content::ResourceRequestInfo* request_info =
       content::ResourceRequestInfo::ForRequest(&request);
   return request_info &&
-         request_info->GetResourceType() == content::RESOURCE_TYPE_IMAGE &&
+         request_info->GetResourceType() == content::ResourceType::kImage &&
          (request_info->GetPreviewsState() & content::CLIENT_LOFI_ON);
 }
 
diff --git a/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc b/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
index 5696fd8a..8ae5cd2 100644
--- a/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
+++ b/components/data_reduction_proxy/content/browser/content_lofi_decider_unittest.cc
@@ -104,7 +104,7 @@
                                      content::PreviewsState previews_state) {
     content::ResourceRequestInfo::AllocateForTesting(
         request, resource_type, nullptr, -1, -1, -1,
-        resource_type == content::RESOURCE_TYPE_MAIN_FRAME,
+        resource_type == content::ResourceType::kMainFrame,
         content::ResourceInterceptPolicy::kAllowNone,
         false,  // is_async
         previews_state,
@@ -119,8 +119,8 @@
                                &delegate_, TRAFFIC_ANNOTATION_FOR_TESTS);
     AllocateRequestInfoForTesting(
         request.get(),
-        (is_main_frame ? content::RESOURCE_TYPE_MAIN_FRAME
-                       : content::RESOURCE_TYPE_SUB_FRAME),
+        (is_main_frame ? content::ResourceType::kMainFrame
+                       : content::ResourceType::kSubFrame),
         previews_state);
     return request;
   }
@@ -256,12 +256,12 @@
 
   // Verify no accept header for HTTPS.
   std::unique_ptr<net::URLRequest> request =
-      CreateRequestByType(content::RESOURCE_TYPE_MAIN_FRAME, true /* https */,
+      CreateRequestByType(content::ResourceType::kMainFrame, true /* https */,
                           both_previews_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               false /* empty-image */);
 
-  request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, true /* https */,
+  request = CreateRequestByType(content::ResourceType::kImage, true /* https */,
                                 both_previews_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               false /* empty-image */);
@@ -296,26 +296,26 @@
 
   // Verify accepting empty-image per resource type.
   std::unique_ptr<net::URLRequest> request = CreateRequestByType(
-      content::RESOURCE_TYPE_MAIN_FRAME, false /* https */, lofi_enabled);
+      content::ResourceType::kMainFrame, false /* https */, lofi_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               false /* empty-image */);
 
-  request = CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false /* https */,
-                                lofi_enabled);
-  VerifyAcceptTransformHeader(*request, false /* lite-page */,
-                              true /* empty-image */);
-
-  request = CreateRequestByType(content::RESOURCE_TYPE_FAVICON,
+  request = CreateRequestByType(content::ResourceType::kImage,
                                 false /* https */, lofi_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               true /* empty-image */);
 
-  request = CreateRequestByType(content::RESOURCE_TYPE_SCRIPT,
+  request = CreateRequestByType(content::ResourceType::kFavicon,
+                                false /* https */, lofi_enabled);
+  VerifyAcceptTransformHeader(*request, false /* lite-page */,
+                              true /* empty-image */);
+
+  request = CreateRequestByType(content::ResourceType::kScript,
                                 false /* https */, lofi_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               false /* empty-image */);
 
-  request = CreateRequestByType(content::RESOURCE_TYPE_STYLESHEET,
+  request = CreateRequestByType(content::ResourceType::kStylesheet,
                                 false /* https */, lofi_enabled);
   VerifyAcceptTransformHeader(*request, false /* lite-page */,
                               false /* empty-image */);
@@ -328,24 +328,24 @@
 
   const struct {
     content::ResourceType resource_type;
-  } tests[] = {{content::RESOURCE_TYPE_MAIN_FRAME},
-               {content::RESOURCE_TYPE_SUB_FRAME},
-               {content::RESOURCE_TYPE_STYLESHEET},
-               {content::RESOURCE_TYPE_SCRIPT},
-               {content::RESOURCE_TYPE_IMAGE},
-               {content::RESOURCE_TYPE_FONT_RESOURCE},
-               {content::RESOURCE_TYPE_SUB_RESOURCE},
-               {content::RESOURCE_TYPE_OBJECT},
-               {content::RESOURCE_TYPE_MEDIA},
-               {content::RESOURCE_TYPE_WORKER},
-               {content::RESOURCE_TYPE_SHARED_WORKER},
-               {content::RESOURCE_TYPE_PREFETCH},
-               {content::RESOURCE_TYPE_FAVICON},
-               {content::RESOURCE_TYPE_XHR},
-               {content::RESOURCE_TYPE_PING},
-               {content::RESOURCE_TYPE_SERVICE_WORKER},
-               {content::RESOURCE_TYPE_CSP_REPORT},
-               {content::RESOURCE_TYPE_PLUGIN_RESOURCE}};
+  } tests[] = {{content::ResourceType::kMainFrame},
+               {content::ResourceType::kSubFrame},
+               {content::ResourceType::kStylesheet},
+               {content::ResourceType::kScript},
+               {content::ResourceType::kImage},
+               {content::ResourceType::kFontResource},
+               {content::ResourceType::kSubResource},
+               {content::ResourceType::kObject},
+               {content::ResourceType::kMedia},
+               {content::ResourceType::kWorker},
+               {content::ResourceType::kSharedWorker},
+               {content::ResourceType::kPrefetch},
+               {content::ResourceType::kFavicon},
+               {content::ResourceType::kXhr},
+               {content::ResourceType::kPing},
+               {content::ResourceType::kServiceWorker},
+               {content::ResourceType::kCspReport},
+               {content::ResourceType::kPluginResource}};
 
   for (size_t i = 0; i < base::size(tests); ++i) {
     std::unique_ptr<net::URLRequest> request = CreateRequestByType(
@@ -355,14 +355,14 @@
     NotifyBeforeSendHeaders(&headers, request.get(), true);
 
     bool is_main_frame =
-        tests[i].resource_type == content::RESOURCE_TYPE_MAIN_FRAME;
+        tests[i].resource_type == content::ResourceType::kMainFrame;
     bool is_lofi_resource_type =
-        !(tests[i].resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
-          tests[i].resource_type == content::RESOURCE_TYPE_STYLESHEET ||
-          tests[i].resource_type == content::RESOURCE_TYPE_SCRIPT ||
-          tests[i].resource_type == content::RESOURCE_TYPE_FONT_RESOURCE ||
-          tests[i].resource_type == content::RESOURCE_TYPE_MEDIA ||
-          tests[i].resource_type == content::RESOURCE_TYPE_CSP_REPORT);
+        !(tests[i].resource_type == content::ResourceType::kMainFrame ||
+          tests[i].resource_type == content::ResourceType::kStylesheet ||
+          tests[i].resource_type == content::ResourceType::kScript ||
+          tests[i].resource_type == content::ResourceType::kFontResource ||
+          tests[i].resource_type == content::ResourceType::kMedia ||
+          tests[i].resource_type == content::ResourceType::kCspReport);
 
     VerifyLitePageHeader(is_main_frame, headers);
     VerifyLoFiHeader(is_lofi_resource_type, headers);
@@ -390,7 +390,7 @@
 TEST_F(ContentLoFiDeciderTest, VideoDirectiveNotOverridden) {
   // Verify the directive gets added even when LoFi is triggered.
   std::unique_ptr<net::URLRequest> request =
-      CreateRequestByType(content::RESOURCE_TYPE_MEDIA, false, true);
+      CreateRequestByType(content::ResourceType::kMedia, false, true);
   net::HttpRequestHeaders headers;
   NotifyBeforeSendHeaders(&headers, request.get(), true);
   VerifyVideoHeader(true, headers);
@@ -398,7 +398,7 @@
 
 TEST_F(ContentLoFiDeciderTest, VideoDirectiveNotAdded) {
   std::unique_ptr<net::URLRequest> request =
-      CreateRequestByType(content::RESOURCE_TYPE_MEDIA, false, true);
+      CreateRequestByType(content::ResourceType::kMedia, false, true);
   net::HttpRequestHeaders headers;
   // Verify the header isn't there when the data reduction proxy is disabled.
   NotifyBeforeSendHeaders(&headers, request.get(), false);
@@ -408,7 +408,7 @@
 TEST_F(ContentLoFiDeciderTest, VideoDirectiveDoesNotOverride) {
   // Verify the directive gets added even when LoFi is triggered.
   std::unique_ptr<net::URLRequest> request =
-      CreateRequestByType(content::RESOURCE_TYPE_MEDIA, false, true);
+      CreateRequestByType(content::ResourceType::kMedia, false, true);
   net::HttpRequestHeaders headers;
   headers.SetHeader(chrome_proxy_accept_transform_header(), "empty-image");
   NotifyBeforeSendHeaders(&headers, request.get(), true);
@@ -437,7 +437,7 @@
 
 TEST_F(ContentLoFiDeciderTest, RequestIsClientSideLoFiMainFrameTest) {
   std::unique_ptr<net::URLRequest> request = CreateRequestByType(
-      content::RESOURCE_TYPE_MAIN_FRAME, true, content::CLIENT_LOFI_ON);
+      content::ResourceType::kMainFrame, true, content::CLIENT_LOFI_ON);
   std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
       new data_reduction_proxy::ContentLoFiDecider());
   EXPECT_FALSE(lofi_decider->IsClientLoFiImageRequest(*request));
@@ -445,7 +445,7 @@
 
 TEST_F(ContentLoFiDeciderTest, RequestIsNotClientSideLoFiImageTest) {
   std::unique_ptr<net::URLRequest> request = CreateRequestByType(
-      content::RESOURCE_TYPE_IMAGE, true, content::PREVIEWS_NO_TRANSFORM);
+      content::ResourceType::kImage, true, content::PREVIEWS_NO_TRANSFORM);
   std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
       new data_reduction_proxy::ContentLoFiDecider());
   EXPECT_FALSE(lofi_decider->IsClientLoFiImageRequest(*request));
@@ -453,7 +453,7 @@
 
 TEST_F(ContentLoFiDeciderTest, RequestIsClientSideLoFiImageTest) {
   std::unique_ptr<net::URLRequest> request = CreateRequestByType(
-      content::RESOURCE_TYPE_IMAGE, true, content::CLIENT_LOFI_ON);
+      content::ResourceType::kImage, true, content::CLIENT_LOFI_ON);
   std::unique_ptr<data_reduction_proxy::ContentLoFiDecider> lofi_decider(
       new data_reduction_proxy::ContentLoFiDecider());
   EXPECT_TRUE(lofi_decider->IsClientLoFiImageRequest(*request));
@@ -464,26 +464,26 @@
   // CLIENT_LOFI_AUTO_RELOAD bit set.
 
   EXPECT_TRUE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest(
-      *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false,
+      *CreateRequestByType(content::ResourceType::kImage, false,
                            content::CLIENT_LOFI_AUTO_RELOAD)));
 
   EXPECT_TRUE(
       ContentLoFiDecider().IsClientLoFiAutoReloadRequest(*CreateRequestByType(
-          content::RESOURCE_TYPE_IMAGE, true,
+          content::ResourceType::kImage, true,
           content::CLIENT_LOFI_AUTO_RELOAD | content::PREVIEWS_NO_TRANSFORM)));
 
   EXPECT_TRUE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest(
-      *CreateRequestByType(content::RESOURCE_TYPE_MAIN_FRAME, true,
+      *CreateRequestByType(content::ResourceType::kMainFrame, true,
                            content::CLIENT_LOFI_AUTO_RELOAD)));
 
   EXPECT_TRUE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest(
-      *CreateRequestByType(content::RESOURCE_TYPE_SCRIPT, true,
+      *CreateRequestByType(content::ResourceType::kScript, true,
                            content::CLIENT_LOFI_AUTO_RELOAD)));
 
   // IsClientLoFiAutoReloadRequest() should return false for any request without
   // the CLIENT_LOFI_AUTO_RELOAD bit set.
   EXPECT_FALSE(ContentLoFiDecider().IsClientLoFiAutoReloadRequest(
-      *CreateRequestByType(content::RESOURCE_TYPE_IMAGE, false,
+      *CreateRequestByType(content::ResourceType::kImage, false,
                            content::PREVIEWS_NO_TRANSFORM)));
 }
 
diff --git a/components/data_reduction_proxy/content/browser/content_lofi_ui_service_unittest.cc b/components/data_reduction_proxy/content/browser/content_lofi_ui_service_unittest.cc
index b205ded9..7854b9c 100644
--- a/components/data_reduction_proxy/content/browser/content_lofi_ui_service_unittest.cc
+++ b/components/data_reduction_proxy/content/browser/content_lofi_ui_service_unittest.cc
@@ -72,7 +72,7 @@
                               delegate, TRAFFIC_ANNOTATION_FOR_TESTS);
 
     content::ResourceRequestInfo::AllocateForTesting(
-        request.get(), content::RESOURCE_TYPE_SUB_FRAME, nullptr,
+        request.get(), content::ResourceType::kSubFrame, nullptr,
         web_contents()->GetMainFrame()->GetProcess()->GetID(), -1,
         web_contents()->GetMainFrame()->GetRoutingID(),
         /*is_main_frame=*/false, content::ResourceInterceptPolicy::kAllowNone,
diff --git a/components/data_reduction_proxy/content/browser/content_resource_type_provider.cc b/components/data_reduction_proxy/content/browser/content_resource_type_provider.cc
index aa5bc913..063de26 100644
--- a/components/data_reduction_proxy/content/browser/content_resource_type_provider.cc
+++ b/components/data_reduction_proxy/content/browser/content_resource_type_provider.cc
@@ -27,9 +27,9 @@
     return ContentResourceTypeProvider::CONTENT_TYPE_UNKNOWN;
 
   content::ResourceType resource_type = request_info->GetResourceType();
-  if (resource_type == content::RESOURCE_TYPE_MEDIA)
+  if (resource_type == content::ResourceType::kMedia)
     return ContentResourceTypeProvider::CONTENT_TYPE_MEDIA;
-  if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME)
+  if (resource_type == content::ResourceType::kMainFrame)
     return ContentResourceTypeProvider::CONTENT_TYPE_MAIN_FRAME;
   return ContentResourceTypeProvider::CONTENT_TYPE_UNKNOWN;
 }
diff --git a/components/data_reduction_proxy/content/browser/content_resource_type_provider_unittest.cc b/components/data_reduction_proxy/content/browser/content_resource_type_provider_unittest.cc
index e235831..f709e31 100644
--- a/components/data_reduction_proxy/content/browser/content_resource_type_provider_unittest.cc
+++ b/components/data_reduction_proxy/content/browser/content_resource_type_provider_unittest.cc
@@ -103,7 +103,7 @@
                                      content::ResourceType resource_type) {
     content::ResourceRequestInfo::AllocateForTesting(
         request, resource_type, nullptr, -1, -1, -1,
-        resource_type == content::RESOURCE_TYPE_MAIN_FRAME,
+        resource_type == content::ResourceType::kMainFrame,
         content::ResourceInterceptPolicy::kAllowNone,
         false,  // is_async
         content::PREVIEWS_OFF,
@@ -159,31 +159,31 @@
     ResourceTypeProvider::ContentType expected_content_type;
   } tests[] = {
       {GURL("http://www.google.com/main-frame"),
-       content::RESOURCE_TYPE_MAIN_FRAME,
+       content::ResourceType::kMainFrame,
        ResourceTypeProvider::CONTENT_TYPE_MAIN_FRAME},
       {GURL("http://www.google.com/sub-frame"),
-       content::RESOURCE_TYPE_SUB_FRAME,
+       content::ResourceType::kSubFrame,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/stylesheet"),
-       content::RESOURCE_TYPE_STYLESHEET,
+       content::ResourceType::kStylesheet,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/script"), content::RESOURCE_TYPE_SCRIPT,
+      {GURL("http://www.google.com/script"), content::ResourceType::kScript,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/image"), content::RESOURCE_TYPE_IMAGE,
+      {GURL("http://www.google.com/image"), content::ResourceType::kImage,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/font"), content::RESOURCE_TYPE_FONT_RESOURCE,
+      {GURL("http://www.google.com/font"), content::ResourceType::kFontResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/sub-resource"),
-       content::RESOURCE_TYPE_SUB_RESOURCE,
+       content::ResourceType::kSubResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/object"), content::RESOURCE_TYPE_OBJECT,
+      {GURL("http://www.google.com/object"), content::ResourceType::kObject,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/media"), content::RESOURCE_TYPE_MEDIA,
+      {GURL("http://www.google.com/media"), content::ResourceType::kMedia,
        ResourceTypeProvider::CONTENT_TYPE_MEDIA},
-      {GURL("http://www.google.com/worker"), content::RESOURCE_TYPE_WORKER,
+      {GURL("http://www.google.com/worker"), content::ResourceType::kWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/shared-worker"),
-       content::RESOURCE_TYPE_SHARED_WORKER,
+       content::ResourceType::kSharedWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN}};
 
   for (const auto test : tests) {
@@ -234,31 +234,31 @@
     ResourceTypeProvider::ContentType expected_content_type;
   } tests[] = {
       {GURL("http://www.google.com/main-frame"),
-       content::RESOURCE_TYPE_MAIN_FRAME,
+       content::ResourceType::kMainFrame,
        ResourceTypeProvider::CONTENT_TYPE_MAIN_FRAME},
       {GURL("http://www.google.com/sub-frame"),
-       content::RESOURCE_TYPE_SUB_FRAME,
+       content::ResourceType::kSubFrame,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/stylesheet"),
-       content::RESOURCE_TYPE_STYLESHEET,
+       content::ResourceType::kStylesheet,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/script"), content::RESOURCE_TYPE_SCRIPT,
+      {GURL("http://www.google.com/script"), content::ResourceType::kScript,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/image"), content::RESOURCE_TYPE_IMAGE,
+      {GURL("http://www.google.com/image"), content::ResourceType::kImage,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/font"), content::RESOURCE_TYPE_FONT_RESOURCE,
+      {GURL("http://www.google.com/font"), content::ResourceType::kFontResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/sub-resource"),
-       content::RESOURCE_TYPE_SUB_RESOURCE,
+       content::ResourceType::kSubResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/object"), content::RESOURCE_TYPE_OBJECT,
+      {GURL("http://www.google.com/object"), content::ResourceType::kObject,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/media"), content::RESOURCE_TYPE_MEDIA,
+      {GURL("http://www.google.com/media"), content::ResourceType::kMedia,
        ResourceTypeProvider::CONTENT_TYPE_MEDIA},
-      {GURL("http://www.google.com/worker"), content::RESOURCE_TYPE_WORKER,
+      {GURL("http://www.google.com/worker"), content::ResourceType::kWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/shared-worker"),
-       content::RESOURCE_TYPE_SHARED_WORKER,
+       content::ResourceType::kSharedWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN}};
 
   for (const auto test : tests) {
@@ -309,31 +309,31 @@
     ResourceTypeProvider::ContentType expected_content_type;
   } tests[] = {
       {GURL("http://www.google.com/main-frame"),
-       content::RESOURCE_TYPE_MAIN_FRAME,
+       content::ResourceType::kMainFrame,
        ResourceTypeProvider::CONTENT_TYPE_MAIN_FRAME},
       {GURL("http://www.google.com/sub-frame"),
-       content::RESOURCE_TYPE_SUB_FRAME,
+       content::ResourceType::kSubFrame,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/stylesheet"),
-       content::RESOURCE_TYPE_STYLESHEET,
+       content::ResourceType::kStylesheet,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/script"), content::RESOURCE_TYPE_SCRIPT,
+      {GURL("http://www.google.com/script"), content::ResourceType::kScript,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/image"), content::RESOURCE_TYPE_IMAGE,
+      {GURL("http://www.google.com/image"), content::ResourceType::kImage,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/font"), content::RESOURCE_TYPE_FONT_RESOURCE,
+      {GURL("http://www.google.com/font"), content::ResourceType::kFontResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/sub-resource"),
-       content::RESOURCE_TYPE_SUB_RESOURCE,
+       content::ResourceType::kSubResource,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/object"), content::RESOURCE_TYPE_OBJECT,
+      {GURL("http://www.google.com/object"), content::ResourceType::kObject,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
-      {GURL("http://www.google.com/media"), content::RESOURCE_TYPE_MEDIA,
+      {GURL("http://www.google.com/media"), content::ResourceType::kMedia,
        ResourceTypeProvider::CONTENT_TYPE_MEDIA},
-      {GURL("http://www.google.com/worker"), content::RESOURCE_TYPE_WORKER,
+      {GURL("http://www.google.com/worker"), content::ResourceType::kWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN},
       {GURL("http://www.google.com/shared-worker"),
-       content::RESOURCE_TYPE_SHARED_WORKER,
+       content::ResourceType::kSharedWorker,
        ResourceTypeProvider::CONTENT_TYPE_UNKNOWN}};
 
   for (const auto test : tests) {
diff --git a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle.cc b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle.cc
index 5006226..02b4bc7 100644
--- a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle.cc
+++ b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle.cc
@@ -49,7 +49,8 @@
   url_chain_.clear();
   url_chain_.push_back(request->url);
   request_method_ = request->method;
-  is_main_frame_ = request->resource_type == content::RESOURCE_TYPE_MAIN_FRAME;
+  is_main_frame_ = request->resource_type ==
+                   static_cast<int>(content::ResourceType::kMainFrame);
   final_load_flags_ = request->load_flags;
 
   MaybeSetAcceptTransformHeader(
@@ -57,7 +58,7 @@
       request->previews_state, &request->custom_proxy_pre_cache_headers);
   request->custom_proxy_post_cache_headers = post_cache_headers_;
 
-  if (request->resource_type == content::RESOURCE_TYPE_MEDIA)
+  if (request->resource_type == static_cast<int>(content::ResourceType::kMedia))
     request->custom_proxy_use_alternate_proxy_list = true;
 }
 
diff --git a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
index 01a9e38..0d2cc10 100644
--- a/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
+++ b/components/data_reduction_proxy/content/common/data_reduction_proxy_url_loader_throttle_unittest.cc
@@ -122,7 +122,7 @@
                                                manager.get());
   network::ResourceRequest request;
   request.url = GURL("http://example.com");
-  request.resource_type = content::RESOURCE_TYPE_MEDIA;
+  request.resource_type = static_cast<int>(content::ResourceType::kMedia);
   bool defer = false;
 
   throttle.WillStartRequest(&request, &defer);
@@ -141,7 +141,7 @@
                                                manager.get());
   network::ResourceRequest request;
   request.url = GURL("http://example.com");
-  request.resource_type = content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.previews_state = content::SERVER_LITE_PAGE_ON;
   bool defer = false;
 
@@ -178,7 +178,7 @@
   DataReductionProxyURLLoaderThrottle throttle((net::HttpRequestHeaders()),
                                                manager.get());
   network::ResourceRequest request;
-  request.resource_type = content::RESOURCE_TYPE_MEDIA;
+  request.resource_type = static_cast<int>(content::ResourceType::kMedia);
   request.url = GURL("http://example.com");
   bool defer = false;
 
@@ -192,7 +192,7 @@
   DataReductionProxyURLLoaderThrottle throttle((net::HttpRequestHeaders()),
                                                manager.get());
   network::ResourceRequest request;
-  request.resource_type = content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.url = GURL("http://example.com");
   bool defer = false;
 
@@ -212,7 +212,7 @@
   throttle.set_delegate(&delegate);
 
   network::ResourceRequest request;
-  request.resource_type = content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.url = GURL("http://example.com/");
   bool defer = false;
 
@@ -272,7 +272,7 @@
   throttle.set_delegate(&delegate);
 
   network::ResourceRequest request;
-  request.resource_type = content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.url = GURL("http://example.com/");
   bool defer = false;
 
@@ -305,7 +305,7 @@
   throttle.set_delegate(&delegate);
 
   network::ResourceRequest request;
-  request.resource_type = content::RESOURCE_TYPE_MAIN_FRAME;
+  request.resource_type = static_cast<int>(content::ResourceType::kMainFrame);
   request.url = GURL("http://www.example.com/");
   bool defer = false;
 
diff --git a/components/data_reduction_proxy/content/common/header_util.cc b/components/data_reduction_proxy/content/common/header_util.cc
index b26bdd5..5cfecb71a 100644
--- a/components/data_reduction_proxy/content/common/header_util.cc
+++ b/components/data_reduction_proxy/content/common/header_util.cc
@@ -22,7 +22,7 @@
   if (headers->HasHeader(chrome_proxy_accept_transform_header()))
     return;
 
-  if (resource_type == content::RESOURCE_TYPE_MEDIA) {
+  if (resource_type == content::ResourceType::kMedia) {
     headers->SetHeader(chrome_proxy_accept_transform_header(),
                        compressed_video_directive());
     return;
@@ -37,7 +37,7 @@
 
   std::string accept_transform_value;
   if ((previews_state & content::SERVER_LITE_PAGE_ON) &&
-      resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+      resource_type == content::ResourceType::kMainFrame) {
     accept_transform_value = lite_page_directive();
   } else if ((previews_state & content::SERVER_LOFI_ON)) {
     // Note that for subresource requests, the Lo-Fi bit should only be set
@@ -46,12 +46,12 @@
     // Also, it should only be set for subresource requests that might be
     // image requests.
     bool resource_type_supports_empty_image =
-        !(resource_type == content::RESOURCE_TYPE_MAIN_FRAME ||
-          resource_type == content::RESOURCE_TYPE_STYLESHEET ||
-          resource_type == content::RESOURCE_TYPE_SCRIPT ||
-          resource_type == content::RESOURCE_TYPE_FONT_RESOURCE ||
-          resource_type == content::RESOURCE_TYPE_MEDIA ||
-          resource_type == content::RESOURCE_TYPE_CSP_REPORT);
+        !(resource_type == content::ResourceType::kMainFrame ||
+          resource_type == content::ResourceType::kStylesheet ||
+          resource_type == content::ResourceType::kScript ||
+          resource_type == content::ResourceType::kFontResource ||
+          resource_type == content::ResourceType::kMedia ||
+          resource_type == content::ResourceType::kCspReport);
     if (resource_type_supports_empty_image) {
       accept_transform_value = empty_image_directive();
     }
diff --git a/components/data_reduction_proxy/content/common/header_util_unittest.cc b/components/data_reduction_proxy/content/common/header_util_unittest.cc
index 8aee9f53..23596b0 100644
--- a/components/data_reduction_proxy/content/common/header_util_unittest.cc
+++ b/components/data_reduction_proxy/content/common/header_util_unittest.cc
@@ -24,15 +24,15 @@
     content::PreviewsState previews_state;
     std::string expected_header;
   } tests[] = {
-      {GURL(kUrl), content::RESOURCE_TYPE_MEDIA, 0,
+      {GURL(kUrl), content::ResourceType::kMedia, 0,
        compressed_video_directive()},
-      {GURL(kHttpsUrl), content::RESOURCE_TYPE_MEDIA, 0, ""},
-      {GURL(kUrl), content::RESOURCE_TYPE_MAIN_FRAME,
+      {GURL(kHttpsUrl), content::ResourceType::kMedia, 0, ""},
+      {GURL(kUrl), content::ResourceType::kMainFrame,
        content::SERVER_LITE_PAGE_ON, lite_page_directive()},
-      {GURL(kUrl), content::RESOURCE_TYPE_SUB_FRAME, content::SERVER_LOFI_ON,
+      {GURL(kUrl), content::ResourceType::kSubFrame, content::SERVER_LOFI_ON,
        empty_image_directive()},
-      {GURL(kUrl), content::RESOURCE_TYPE_SUB_FRAME, 0, ""},
-      {GURL(kUrl), content::RESOURCE_TYPE_SCRIPT, content::SERVER_LOFI_ON, ""},
+      {GURL(kUrl), content::ResourceType::kSubFrame, 0, ""},
+      {GURL(kUrl), content::ResourceType::kScript, content::SERVER_LOFI_ON, ""},
   };
 
   for (const auto& test : tests) {
diff --git a/components/data_use_measurement/content/content_url_request_classifier.cc b/components/data_use_measurement/content/content_url_request_classifier.cc
index 720198b..2eb5744 100644
--- a/components/data_use_measurement/content/content_url_request_classifier.cc
+++ b/components/data_use_measurement/content/content_url_request_classifier.cc
@@ -50,8 +50,7 @@
   std::string mime_type;
   if (response_headers.GetMimeType(&mime_type)) {
     if (mime_type == "text/html" && request_info &&
-        request_info->GetResourceType() ==
-            content::ResourceType::RESOURCE_TYPE_MAIN_FRAME) {
+        request_info->GetResourceType() == content::ResourceType::kMainFrame) {
       return DataUseUserData::MAIN_FRAME_HTML;
     }
     if (mime_type == "text/html")
@@ -139,8 +138,8 @@
     const net::URLRequest& request) const {
   content::ResourceRequestInfo* request_info =
       content::ResourceRequestInfo::ForRequest(&request);
-  return request_info && request_info->GetResourceType() ==
-                             content::ResourceType::RESOURCE_TYPE_FAVICON;
+  return request_info &&
+         request_info->GetResourceType() == content::ResourceType::kFavicon;
 }
 
 }  // namespace data_use_measurement
diff --git a/components/safe_browsing/android/remote_database_manager.cc b/components/safe_browsing/android/remote_database_manager.cc
index ca7fb5da..44c2ba5c 100644
--- a/components/safe_browsing/android/remote_database_manager.cc
+++ b/components/safe_browsing/android/remote_database_manager.cc
@@ -106,10 +106,11 @@
   // Avoid memory allocations growing the underlying vector. Although this
   // usually wastes a bit of memory, it will still be less than the default
   // vector allocation strategy.
-  resource_types_to_check_.reserve(content::RESOURCE_TYPE_LAST_TYPE + 1);
+  resource_types_to_check_.reserve(
+      static_cast<int>(content::ResourceType::kMaxValue) + 1);
   // Decide which resource types to check. These two are the minimum.
-  resource_types_to_check_.insert(content::RESOURCE_TYPE_MAIN_FRAME);
-  resource_types_to_check_.insert(content::RESOURCE_TYPE_SUB_FRAME);
+  resource_types_to_check_.insert(content::ResourceType::kMainFrame);
+  resource_types_to_check_.insert(content::ResourceType::kSubFrame);
 
   // The param is expected to be a comma-separated list of ints
   // corresponding to the enum types.  We're keeping this finch
@@ -118,16 +119,17 @@
       kAndroidFieldExperiment, kAndroidTypesToCheckParam);
   if (ints_str.empty()) {
     // By default, we check all types except a few.
-    static_assert(content::RESOURCE_TYPE_LAST_TYPE ==
-                      content::RESOURCE_TYPE_NAVIGATION_PRELOAD + 1,
+    static_assert(content::ResourceType::kMaxValue ==
+                      content::ResourceType::kNavigationPreload,
                   "Decide if new resource type should be skipped on mobile.");
-    for (int t_int = 0; t_int < content::RESOURCE_TYPE_LAST_TYPE; t_int++) {
+    for (int t_int = 0;
+         t_int <= static_cast<int>(content::ResourceType::kMaxValue); t_int++) {
       content::ResourceType t = static_cast<content::ResourceType>(t_int);
       switch (t) {
-        case content::RESOURCE_TYPE_STYLESHEET:
-        case content::RESOURCE_TYPE_IMAGE:
-        case content::RESOURCE_TYPE_FONT_RESOURCE:
-        case content::RESOURCE_TYPE_FAVICON:
+        case content::ResourceType::kStylesheet:
+        case content::ResourceType::kImage:
+        case content::ResourceType::kFontResource:
+        case content::ResourceType::kFavicon:
           break;
         default:
           resource_types_to_check_.insert(t);
@@ -139,7 +141,7 @@
              ints_str, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
       int i;
       if (base::StringToInt(val_str, &i) && i >= 0 &&
-          i < content::RESOURCE_TYPE_LAST_TYPE) {
+          i <= static_cast<int>(content::ResourceType::kMaxValue)) {
         resource_types_to_check_.insert(static_cast<content::ResourceType>(i));
       }
     }
diff --git a/components/safe_browsing/android/remote_database_manager_unittest.cc b/components/safe_browsing/android/remote_database_manager_unittest.cc
index b127a5d..505457e 100644
--- a/components/safe_browsing/android/remote_database_manager_unittest.cc
+++ b/components/safe_browsing/android/remote_database_manager_unittest.cc
@@ -83,13 +83,14 @@
 
 TEST_F(RemoteDatabaseManagerTest, TypesToCheckDefault) {
   // Most are true, a few are false.
-  for (int t_int = 0; t_int < content::RESOURCE_TYPE_LAST_TYPE; t_int++) {
+  for (int t_int = 0;
+       t_int <= static_cast<int>(content::ResourceType::kMaxValue); t_int++) {
     content::ResourceType t = static_cast<content::ResourceType>(t_int);
     switch (t) {
-      case content::RESOURCE_TYPE_STYLESHEET:
-      case content::RESOURCE_TYPE_IMAGE:
-      case content::RESOURCE_TYPE_FONT_RESOURCE:
-      case content::RESOURCE_TYPE_FAVICON:
+      case content::ResourceType::kStylesheet:
+      case content::ResourceType::kImage:
+      case content::ResourceType::kFontResource:
+      case content::ResourceType::kFavicon:
         EXPECT_FALSE(db_->CanCheckResourceType(t));
         break;
       default:
@@ -103,14 +104,14 @@
   SetFieldTrialParams("1,2,blah, 9");
   db_ = new RemoteSafeBrowsingDatabaseManager();
   EXPECT_TRUE(db_->CanCheckResourceType(
-      content::RESOURCE_TYPE_MAIN_FRAME));  // defaulted
-  EXPECT_TRUE(db_->CanCheckResourceType(content::RESOURCE_TYPE_SUB_FRAME));
-  EXPECT_TRUE(db_->CanCheckResourceType(content::RESOURCE_TYPE_STYLESHEET));
-  EXPECT_FALSE(db_->CanCheckResourceType(content::RESOURCE_TYPE_SCRIPT));
-  EXPECT_FALSE(db_->CanCheckResourceType(content::RESOURCE_TYPE_IMAGE));
+      content::ResourceType::kMainFrame));  // defaulted
+  EXPECT_TRUE(db_->CanCheckResourceType(content::ResourceType::kSubFrame));
+  EXPECT_TRUE(db_->CanCheckResourceType(content::ResourceType::kStylesheet));
+  EXPECT_FALSE(db_->CanCheckResourceType(content::ResourceType::kScript));
+  EXPECT_FALSE(db_->CanCheckResourceType(content::ResourceType::kImage));
   // ...
-  EXPECT_FALSE(db_->CanCheckResourceType(content::RESOURCE_TYPE_MEDIA));
-  EXPECT_TRUE(db_->CanCheckResourceType(content::RESOURCE_TYPE_WORKER));
+  EXPECT_FALSE(db_->CanCheckResourceType(content::ResourceType::kMedia));
+  EXPECT_TRUE(db_->CanCheckResourceType(content::ResourceType::kWorker));
 }
 
 }  // namespace safe_browsing
diff --git a/components/safe_browsing/browser/base_parallel_resource_throttle.cc b/components/safe_browsing/browser/base_parallel_resource_throttle.cc
index 2f06d0c..2aca54a 100644
--- a/components/safe_browsing/browser/base_parallel_resource_throttle.cc
+++ b/components/safe_browsing/browser/base_parallel_resource_throttle.cc
@@ -116,7 +116,7 @@
                                  : request_->extra_request_headers();
 
   resource_request.load_flags = request_->load_flags();
-  resource_request.resource_type = resource_type_;
+  resource_request.resource_type = static_cast<int>(resource_type_);
 
   content::ResourceRequestInfo* info =
       content::ResourceRequestInfo::ForRequest(request_);
diff --git a/components/safe_browsing/browser/base_parallel_resource_throttle_unittest.cc b/components/safe_browsing/browser/base_parallel_resource_throttle_unittest.cc
index 1cbb84f6..9f245e4 100644
--- a/components/safe_browsing/browser/base_parallel_resource_throttle_unittest.cc
+++ b/components/safe_browsing/browser/base_parallel_resource_throttle_unittest.cc
@@ -177,14 +177,14 @@
                                               net::MEDIUM, &request_delegate_,
                                               TRAFFIC_ANNOTATION_FOR_TESTS);
     content::ResourceRequestInfo::AllocateForTesting(
-        request_.get(), content::RESOURCE_TYPE_MAIN_FRAME, nullptr, -1, -1, -1,
+        request_.get(), content::ResourceType::kMainFrame, nullptr, -1, -1, -1,
         true, content::ResourceInterceptPolicy::kAllowAll, true,
         content::PREVIEWS_OFF, nullptr);
 
     database_manager_ = new TestDatabaseManager();
     url_checker_delegate_ = new TestUrlCheckerDelegate(database_manager_);
     throttle_ = std::make_unique<TestParallelResourceThrottle>(
-        request_.get(), content::RESOURCE_TYPE_MAIN_FRAME,
+        request_.get(), content::ResourceType::kMainFrame,
         url_checker_delegate_);
     throttle_->set_delegate_for_testing(&resource_throttle_delegate_);
   }
diff --git a/components/safe_browsing/browser/safe_browsing_url_checker_impl.cc b/components/safe_browsing/browser/safe_browsing_url_checker_impl.cc
index 19c025b..97987435 100644
--- a/components/safe_browsing/browser/safe_browsing_url_checker_impl.cc
+++ b/components/safe_browsing/browser/safe_browsing_url_checker_impl.cc
@@ -154,18 +154,17 @@
 
   if (load_flags_ & net::LOAD_PREFETCH) {
     // Destroy the prefetch with FINAL_STATUS_SAFEBROSWING.
-    if (resource_type_ == content::RESOURCE_TYPE_MAIN_FRAME) {
+    if (resource_type_ == content::ResourceType::kMainFrame) {
       url_checker_delegate_->MaybeDestroyPrerenderContents(
           web_contents_getter_);
     }
     UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.UnsafePrefetchCanceled",
-                              resource_type_, content::RESOURCE_TYPE_LAST_TYPE);
+                              resource_type_);
     BlockAndProcessUrls(false);
     return;
   }
 
-  UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Unsafe", resource_type_,
-                            content::RESOURCE_TYPE_LAST_TYPE);
+  UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Unsafe", resource_type_);
 
   security_interstitials::UnsafeResource resource;
   resource.url = url;
@@ -175,8 +174,8 @@
     for (size_t i = 1; i < urls_.size(); ++i)
       resource.redirect_urls.push_back(urls_[i].url);
   }
-  resource.is_subresource = resource_type_ != content::RESOURCE_TYPE_MAIN_FRAME;
-  resource.is_subframe = resource_type_ == content::RESOURCE_TYPE_SUB_FRAME;
+  resource.is_subresource = resource_type_ != content::ResourceType::kMainFrame;
+  resource.is_subframe = resource_type_ == content::ResourceType::kSubFrame;
   resource.threat_type = threat_type;
   resource.threat_metadata = metadata;
   resource.callback =
@@ -190,7 +189,7 @@
   state_ = STATE_DISPLAYING_BLOCKING_PAGE;
   url_checker_delegate_->StartDisplayingBlockingPageHelper(
       resource, urls_[next_index_].method, headers_,
-      resource_type_ == content::RESOURCE_TYPE_MAIN_FRAME, has_user_gesture_);
+      resource_type_ == content::ResourceType::kMainFrame, has_user_gesture_);
 }
 
 void SafeBrowsingUrlCheckerImpl::OnCheckUrlTimeout() {
@@ -238,8 +237,7 @@
       // TODO(vakh): Consider changing this metric to
       // SafeBrowsing.V4ResourceType to be consistent with the other PVer4
       // metrics.
-      UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Skipped", resource_type_,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+      UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Skipped", resource_type_);
 
       if (!RunNextCallback(true, false))
         return;
@@ -249,8 +247,7 @@
 
     // TODO(vakh): Consider changing this metric to SafeBrowsing.V4ResourceType
     // to be consistent with the other PVer4 metrics.
-    UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Checked", resource_type_,
-                              content::RESOURCE_TYPE_LAST_TYPE);
+    UMA_HISTOGRAM_ENUMERATION("SB2.ResourceTypes2.Checked", resource_type_);
 
     SBThreatType threat_type = CheckWebUIUrls(url);
     if (threat_type != safe_browsing::SB_THREAT_TYPE_SAFE) {
diff --git a/components/safe_browsing/renderer/websocket_sb_handshake_throttle.cc b/components/safe_browsing/renderer/websocket_sb_handshake_throttle.cc
index 8ea2c43..4d26747a 100644
--- a/components/safe_browsing/renderer/websocket_sb_handshake_throttle.cc
+++ b/components/safe_browsing/renderer/websocket_sb_handshake_throttle.cc
@@ -56,7 +56,7 @@
   safe_browsing_->CreateCheckerAndCheck(
       render_frame_id_, mojo::MakeRequest(&url_checker_), url, "GET",
       net::HttpRequestHeaders(), load_flags,
-      content::RESOURCE_TYPE_SUB_RESOURCE, false /* has_user_gesture */,
+      content::ResourceType::kSubResource, false /* has_user_gesture */,
       false /* originated_from_service_worker */,
       base::BindOnce(&WebSocketSBHandshakeThrottle::OnCheckResult,
                      weak_factory_.GetWeakPtr()));
diff --git a/components/safe_browsing/renderer/websocket_sb_handshake_throttle_unittest.cc b/components/safe_browsing/renderer/websocket_sb_handshake_throttle_unittest.cc
index 542fbb0..00d5952 100644
--- a/components/safe_browsing/renderer/websocket_sb_handshake_throttle_unittest.cc
+++ b/components/safe_browsing/renderer/websocket_sb_handshake_throttle_unittest.cc
@@ -129,7 +129,7 @@
   EXPECT_EQ("GET", safe_browsing_.method_);
   EXPECT_TRUE(safe_browsing_.headers_.GetHeaderVector().empty());
   EXPECT_EQ(0, safe_browsing_.load_flags_);
-  EXPECT_EQ(content::RESOURCE_TYPE_SUB_RESOURCE, safe_browsing_.resource_type_);
+  EXPECT_EQ(content::ResourceType::kSubResource, safe_browsing_.resource_type_);
   EXPECT_FALSE(safe_browsing_.has_user_gesture_);
   EXPECT_FALSE(safe_browsing_.originated_from_service_worker_);
   EXPECT_TRUE(safe_browsing_.callback_);
diff --git a/content/browser/android/content_url_loader_factory.cc b/content/browser/android/content_url_loader_factory.cc
index 60417bf..7e76f4c 100644
--- a/content/browser/android/content_url_loader_factory.cc
+++ b/content/browser/android/content_url_loader_factory.cc
@@ -73,7 +73,8 @@
   out_mime_type->clear();
 
   std::string intent_type_header;
-  if ((request.resource_type == content::RESOURCE_TYPE_MAIN_FRAME) &&
+  if ((request.resource_type ==
+       static_cast<int>(content::ResourceType::kMainFrame)) &&
       request.headers.GetHeader("X-Chrome-intent-type", &intent_type_header)) {
     *out_mime_type = intent_type_header;
   }
diff --git a/content/browser/android/url_request_content_job.cc b/content/browser/android/url_request_content_job.cc
index 184e410f..6d7c556 100644
--- a/content/browser/android/url_request_content_job.cc
+++ b/content/browser/android/url_request_content_job.cc
@@ -106,7 +106,7 @@
   content::ResourceRequestInfo* resource_request_info =
       content::ResourceRequestInfo::ForRequest(request());
   if (resource_request_info && resource_request_info->GetResourceType() ==
-                                   content::RESOURCE_TYPE_MAIN_FRAME) {
+                                   content::ResourceType::kMainFrame) {
     std::string intent_type_header;
     if (headers.GetHeader("X-Chrome-intent-type", &intent_type_header))
       mime_type_from_intent_ = intent_type_header;
diff --git a/content/browser/android/url_request_content_job_unittest.cc b/content/browser/android/url_request_content_job_unittest.cc
index 3e6eb17..b73bf53 100644
--- a/content/browser/android/url_request_content_job_unittest.cc
+++ b/content/browser/android/url_request_content_job_unittest.cc
@@ -152,7 +152,7 @@
       GURL(path.value()), net::DEFAULT_PRIORITY, &delegate_));
 
   ResourceRequestInfo::AllocateForTesting(request.get(),
-                                          RESOURCE_TYPE_MAIN_FRAME,
+                                          ResourceType::kMainFrame,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
diff --git a/content/browser/appcache/appcache_request_handler.cc b/content/browser/appcache/appcache_request_handler.cc
index a5f05bcb..da91341 100644
--- a/content/browser/appcache/appcache_request_handler.cc
+++ b/content/browser/appcache/appcache_request_handler.cc
@@ -244,9 +244,9 @@
 bool AppCacheRequestHandler::IsMainResourceType(ResourceType type) {
   // When PlzDedicatedWorker is enabled, a dedicated worker script is considered
   // to be a main resource.
-  if (type == RESOURCE_TYPE_WORKER)
+  if (type == ResourceType::kWorker)
     return blink::features::IsPlzDedicatedWorkerEnabled();
-  return IsResourceTypeFrame(type) || type == RESOURCE_TYPE_SHARED_WORKER;
+  return IsResourceTypeFrame(type) || type == ResourceType::kSharedWorker;
 }
 
 void AppCacheRequestHandler::OnDestructionImminent(AppCacheHost* host) {
@@ -355,8 +355,9 @@
   host_->enable_cache_selection(true);
 
   const AppCacheHost* spawning_host =
-      (resource_type_ == RESOURCE_TYPE_SHARED_WORKER) ?
-      host_ : host_->GetSpawningHost();
+      (resource_type_ == ResourceType::kSharedWorker)
+          ? host_
+          : host_->GetSpawningHost();
   GURL preferred_manifest_url = spawning_host ?
       spawning_host->preferred_manifest_url() : GURL();
 
@@ -395,7 +396,7 @@
     if (IsResourceTypeFrame(resource_type_)) {
       host_->NotifyMainResourceBlocked(manifest_url);
     } else {
-      DCHECK_EQ(resource_type_, RESOURCE_TYPE_SHARED_WORKER);
+      DCHECK_EQ(resource_type_, ResourceType::kSharedWorker);
       host_->OnContentBlocked(manifest_url);
     }
     DeliverNetworkResponse();
diff --git a/content/browser/appcache/appcache_request_handler_unittest.cc b/content/browser/appcache/appcache_request_handler_unittest.cc
index 422b3bd..2e284bc 100644
--- a/content/browser/appcache/appcache_request_handler_unittest.cc
+++ b/content/browser/appcache/appcache_request_handler_unittest.cc
@@ -310,7 +310,7 @@
                        base::Unretained(this)));
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah"), host_,
-                                        RESOURCE_TYPE_MAIN_FRAME));
+                                        ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
@@ -351,7 +351,7 @@
                        base::Unretained(this)));
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah"), host_,
-                                        RESOURCE_TYPE_MAIN_FRAME));
+                                        ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     mock_storage()->SimulateFindMainResource(
@@ -393,7 +393,7 @@
         base::Unretained(this)));
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah"), host_,
-                                        RESOURCE_TYPE_MAIN_FRAME));
+                                        ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     mock_storage()->SimulateFindMainResource(
@@ -487,7 +487,7 @@
         base::Unretained(this)));
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/fallback-override"),
-                                        host_, RESOURCE_TYPE_MAIN_FRAME));
+                                        host_, ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     mock_storage()->SimulateFindMainResource(
@@ -547,7 +547,7 @@
 
   void SubResource_Miss_WithNoCacheSelected() {
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     // We avoid creating handler when possible, sub-resource requests are not
     // subject to retrieval from an appcache when there's no associated cache.
     EXPECT_FALSE(handler_.get());
@@ -563,7 +563,7 @@
     host_->AssociateCompleteCache(MakeNewCache());
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
 
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
@@ -588,7 +588,7 @@
     host_->set_preferred_manifest_url(cache->owning_group()->manifest_url());
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_TRUE(job());
@@ -616,7 +616,7 @@
         AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_TRUE(job());
@@ -642,7 +642,7 @@
         AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_FALSE(job());
@@ -669,7 +669,7 @@
         AppCacheEntry(), AppCacheEntry(AppCacheEntry::EXPLICIT, 1), false);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_FALSE(job());
@@ -697,7 +697,7 @@
                                             true);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_FALSE(job());
@@ -720,7 +720,7 @@
         AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
 
     backend_impl_->UnregisterHost(1);
@@ -741,7 +741,7 @@
     host_->pending_selected_cache_id_ = 1;
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
 
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
@@ -771,7 +771,7 @@
         AppCacheEntry(AppCacheEntry::EXPLICIT, 1), AppCacheEntry(), false);
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
     EXPECT_TRUE(job());
@@ -799,7 +799,7 @@
     host_->pending_selected_cache_id_ = 1;
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("ftp://blah/"), host_,
-                                        RESOURCE_TYPE_SUB_RESOURCE));
+                                        ResourceType::kSubResource));
     EXPECT_TRUE(handler_.get());  // we could redirect to http (conceivably)
 
     EXPECT_FALSE(handler_->MaybeLoadResource(nullptr));
@@ -814,7 +814,7 @@
 
   void CanceledRequest() {
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_MAIN_FRAME));
+                                        ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     SetAppCacheJob(handler_->MaybeLoadResource(nullptr));
@@ -850,7 +850,7 @@
                        base::Unretained(this)));
 
     EXPECT_TRUE(CreateRequestAndHandler(GURL("http://blah/"), host_,
-                                        RESOURCE_TYPE_MAIN_FRAME));
+                                        ResourceType::kMainFrame));
     EXPECT_TRUE(handler_.get());
 
     mock_policy_->can_load_return_value_ = false;
diff --git a/content/browser/appcache/appcache_storage_impl_unittest.cc b/content/browser/appcache/appcache_storage_impl_unittest.cc
index 0776fc0..de8bbfc 100644
--- a/content/browser/appcache/appcache_storage_impl_unittest.cc
+++ b/content/browser/appcache/appcache_storage_impl_unittest.cc
@@ -1701,7 +1701,7 @@
       request.url = GetMockUrl("manifest");
       handler_ =
           host2->CreateRequestHandler(AppCacheURLLoaderRequest::Create(request),
-                                      RESOURCE_TYPE_MAIN_FRAME, false);
+                                      ResourceType::kMainFrame, false);
       handler_->MaybeCreateLoader(request, nullptr, base::DoNothing(),
                                   base::DoNothing());
     }
diff --git a/content/browser/browsing_data/clear_site_data_throttle_unittest.cc b/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
index c7295d6..7be8627 100644
--- a/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
+++ b/content/browser/browsing_data/clear_site_data_throttle_unittest.cc
@@ -165,7 +165,7 @@
 
   // We can create the throttle for a valid ResourceRequestInfo.
   ResourceRequestInfo::AllocateForTesting(
-      request.get(), RESOURCE_TYPE_IMAGE, nullptr, 0, 0, 0, false,
+      request.get(), ResourceType::kImage, nullptr, 0, 0, 0, false,
       ResourceInterceptPolicy::kAllowAll, true, false, nullptr);
   EXPECT_TRUE(
       ClearSiteDataThrottle::MaybeCreateThrottleForRequest(request.get()));
@@ -610,7 +610,7 @@
                               nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
     ResourceRequestInfo::AllocateForTesting(
         request.get(),
-        navigation ? RESOURCE_TYPE_SUB_FRAME : RESOURCE_TYPE_IMAGE, nullptr, 0,
+        navigation ? ResourceType::kSubFrame : ResourceType::kImage, nullptr, 0,
         0, 0, false, ResourceInterceptPolicy::kAllowAll, true, false, nullptr);
 
     std::string output_buffer;
diff --git a/content/browser/devtools/devtools_url_loader_interceptor.cc b/content/browser/devtools/devtools_url_loader_interceptor.cc
index 716d0de..9a8614da 100644
--- a/content/browser/devtools/devtools_url_loader_interceptor.cc
+++ b/content/browser/devtools/devtools_url_loader_interceptor.cc
@@ -1176,8 +1176,8 @@
   ResourceType resource_type =
       static_cast<ResourceType>(create_loader_params_->request.resource_type);
   result->resource_type = resource_type;
-  result->is_navigation = resource_type == RESOURCE_TYPE_MAIN_FRAME ||
-                          resource_type == RESOURCE_TYPE_SUB_FRAME;
+  result->is_navigation = resource_type == ResourceType::kMainFrame ||
+                          resource_type == ResourceType::kSubFrame;
 
   if (head && head->headers)
     result->response_headers = head->headers;
diff --git a/content/browser/devtools/devtools_url_request_interceptor.cc b/content/browser/devtools/devtools_url_request_interceptor.cc
index 4679e4e..2118d74a 100644
--- a/content/browser/devtools/devtools_url_request_interceptor.cc
+++ b/content/browser/devtools/devtools_url_request_interceptor.cc
@@ -39,8 +39,8 @@
 // static
 bool DevToolsURLRequestInterceptor::IsNavigationRequest(
     ResourceType resource_type) {
-  return resource_type == RESOURCE_TYPE_MAIN_FRAME ||
-         resource_type == RESOURCE_TYPE_SUB_FRAME;
+  return resource_type == ResourceType::kMainFrame ||
+         resource_type == ResourceType::kSubFrame;
 }
 
 DevToolsURLRequestInterceptor::DevToolsURLRequestInterceptor(
diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc
index 36eed3b..d7545bf 100644
--- a/content/browser/devtools/protocol/network_handler.cc
+++ b/content/browser/devtools/protocol/network_handler.cc
@@ -997,55 +997,55 @@
     const std::string& resource_type,
     base::flat_set<ResourceType>* intercepted_resource_types) {
   if (resource_type == protocol::Network::ResourceTypeEnum::Document) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_MAIN_FRAME);
-    intercepted_resource_types->insert(RESOURCE_TYPE_SUB_FRAME);
+    intercepted_resource_types->insert(ResourceType::kMainFrame);
+    intercepted_resource_types->insert(ResourceType::kSubFrame);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Stylesheet) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_STYLESHEET);
+    intercepted_resource_types->insert(ResourceType::kStylesheet);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Image) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_IMAGE);
+    intercepted_resource_types->insert(ResourceType::kImage);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Media) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_MEDIA);
+    intercepted_resource_types->insert(ResourceType::kMedia);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Font) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_FONT_RESOURCE);
+    intercepted_resource_types->insert(ResourceType::kFontResource);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Script) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_SCRIPT);
+    intercepted_resource_types->insert(ResourceType::kScript);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::XHR) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_XHR);
+    intercepted_resource_types->insert(ResourceType::kXhr);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Fetch) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_PREFETCH);
+    intercepted_resource_types->insert(ResourceType::kPrefetch);
     return true;
   }
   if (resource_type ==
       protocol::Network::ResourceTypeEnum::CSPViolationReport) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_CSP_REPORT);
+    intercepted_resource_types->insert(ResourceType::kCspReport);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Ping) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_PING);
+    intercepted_resource_types->insert(ResourceType::kPing);
     return true;
   }
   if (resource_type == protocol::Network::ResourceTypeEnum::Other) {
-    intercepted_resource_types->insert(RESOURCE_TYPE_SUB_RESOURCE);
-    intercepted_resource_types->insert(RESOURCE_TYPE_OBJECT);
-    intercepted_resource_types->insert(RESOURCE_TYPE_WORKER);
-    intercepted_resource_types->insert(RESOURCE_TYPE_SHARED_WORKER);
-    intercepted_resource_types->insert(RESOURCE_TYPE_FAVICON);
-    intercepted_resource_types->insert(RESOURCE_TYPE_SERVICE_WORKER);
-    intercepted_resource_types->insert(RESOURCE_TYPE_PLUGIN_RESOURCE);
+    intercepted_resource_types->insert(ResourceType::kSubResource);
+    intercepted_resource_types->insert(ResourceType::kObject);
+    intercepted_resource_types->insert(ResourceType::kWorker);
+    intercepted_resource_types->insert(ResourceType::kSharedWorker);
+    intercepted_resource_types->insert(ResourceType::kFavicon);
+    intercepted_resource_types->insert(ResourceType::kServiceWorker);
+    intercepted_resource_types->insert(ResourceType::kPluginResource);
     return true;
   }
   return false;
@@ -1054,41 +1054,41 @@
 // static
 const char* NetworkHandler::ResourceTypeToString(ResourceType resource_type) {
   switch (resource_type) {
-    case RESOURCE_TYPE_MAIN_FRAME:
+    case ResourceType::kMainFrame:
       return protocol::Network::ResourceTypeEnum::Document;
-    case RESOURCE_TYPE_SUB_FRAME:
+    case ResourceType::kSubFrame:
       return protocol::Network::ResourceTypeEnum::Document;
-    case RESOURCE_TYPE_STYLESHEET:
+    case ResourceType::kStylesheet:
       return protocol::Network::ResourceTypeEnum::Stylesheet;
-    case RESOURCE_TYPE_SCRIPT:
+    case ResourceType::kScript:
       return protocol::Network::ResourceTypeEnum::Script;
-    case RESOURCE_TYPE_IMAGE:
+    case ResourceType::kImage:
       return protocol::Network::ResourceTypeEnum::Image;
-    case RESOURCE_TYPE_FONT_RESOURCE:
+    case ResourceType::kFontResource:
       return protocol::Network::ResourceTypeEnum::Font;
-    case RESOURCE_TYPE_SUB_RESOURCE:
+    case ResourceType::kSubResource:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_OBJECT:
+    case ResourceType::kObject:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_MEDIA:
+    case ResourceType::kMedia:
       return protocol::Network::ResourceTypeEnum::Media;
-    case RESOURCE_TYPE_WORKER:
+    case ResourceType::kWorker:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_SHARED_WORKER:
+    case ResourceType::kSharedWorker:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_PREFETCH:
+    case ResourceType::kPrefetch:
       return protocol::Network::ResourceTypeEnum::Fetch;
-    case RESOURCE_TYPE_FAVICON:
+    case ResourceType::kFavicon:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_XHR:
+    case ResourceType::kXhr:
       return protocol::Network::ResourceTypeEnum::XHR;
-    case RESOURCE_TYPE_PING:
+    case ResourceType::kPing:
       return protocol::Network::ResourceTypeEnum::Ping;
-    case RESOURCE_TYPE_SERVICE_WORKER:
+    case ResourceType::kServiceWorker:
       return protocol::Network::ResourceTypeEnum::Other;
-    case RESOURCE_TYPE_CSP_REPORT:
+    case ResourceType::kCspReport:
       return protocol::Network::ResourceTypeEnum::CSPViolationReport;
-    case RESOURCE_TYPE_PLUGIN_RESOURCE:
+    case ResourceType::kPluginResource:
       return protocol::Network::ResourceTypeEnum::Other;
     default:
       return protocol::Network::ResourceTypeEnum::Other;
diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
index e0feb2d..a3651be 100644
--- a/content/browser/frame_host/render_frame_host_impl.cc
+++ b/content/browser/frame_host/render_frame_host_impl.cc
@@ -3947,7 +3947,7 @@
   if (main_frame_request_ids_.first == resource_load_info->request_id) {
     global_request_id = main_frame_request_ids_.second;
   } else if (resource_load_info->resource_type ==
-             content::RESOURCE_TYPE_MAIN_FRAME) {
+             content::ResourceType::kMainFrame) {
     // The load complete message for the main resource arrived before
     // |DidCommitProvisionalLoad()|. We save the load info so
     // |ResourceLoadComplete()| can be called later in
diff --git a/content/browser/loader/cross_site_document_blocking_browsertest.cc b/content/browser/loader/cross_site_document_blocking_browsertest.cc
index a2ddd7a..81e43342 100644
--- a/content/browser/loader/cross_site_document_blocking_browsertest.cc
+++ b/content/browser/loader/cross_site_document_blocking_browsertest.cc
@@ -198,11 +198,13 @@
 
   // Determine if the bucket for the resource type (XHR) was incremented.
   if (0 != (expectations & kShouldBeBlocked) && !is_restricted_uma_expected) {
-    EXPECT_THAT(histograms.GetAllSamples(base + ".Blocked"),
-                testing::ElementsAre(base::Bucket(resource_type, 1)))
+    EXPECT_THAT(
+        histograms.GetAllSamples(base + ".Blocked"),
+        testing::ElementsAre(base::Bucket(static_cast<int>(resource_type), 1)))
         << "The wrong Blocked bucket was incremented.";
-    EXPECT_THAT(histograms.GetAllSamples(base + ".Blocked." + bucket),
-                testing::ElementsAre(base::Bucket(resource_type, 1)))
+    EXPECT_THAT(
+        histograms.GetAllSamples(base + ".Blocked." + bucket),
+        testing::ElementsAre(base::Bucket(static_cast<int>(resource_type), 1)))
         << "The wrong Blocked bucket was incremented.";
   }
 
@@ -519,7 +521,7 @@
     interceptor.WaitForRequestCompletion();
 
     // Verify...
-    InspectHistograms(histograms, expectations, resource, RESOURCE_TYPE_IMAGE);
+    InspectHistograms(histograms, expectations, resource, ResourceType::kImage);
     interceptor.Verify(expectations);
   }
 
@@ -680,7 +682,7 @@
     // Verify results of the fetch.
     EXPECT_FALSE(was_blocked);
     InspectHistograms(histograms, kShouldBeAllowedWithoutSniffing, resource,
-                      RESOURCE_TYPE_XHR);
+                      ResourceType::kXhr);
   }
 }
 
@@ -874,7 +876,7 @@
   // Verify that the response completed successfully, was blocked and was logged
   // as having initially a non-empty body.
   InspectHistograms(histograms, kShouldBeBlockedWithoutSniffing, "nosniff.json",
-                    RESOURCE_TYPE_XHR);
+                    ResourceType::kXhr);
 }
 #endif  // !defined(OS_ANDROID)
 
@@ -942,7 +944,7 @@
     // Verify...
     bool special_request_initiator_origin_lock_check_for_appcache = true;
     InspectHistograms(histograms, kShouldBeBlockedWithoutSniffing,
-                      "nosniff.json", RESOURCE_TYPE_IMAGE,
+                      "nosniff.json", ResourceType::kImage,
                       special_request_initiator_origin_lock_check_for_appcache);
     interceptor.Verify(kShouldBeBlockedWithoutSniffing);
   }
@@ -1112,7 +1114,7 @@
                                          &answer));
   EXPECT_EQ(123, answer);
   InspectHistograms(histograms, kShouldBeBlockedWithoutSniffing, "x.html",
-                    RESOURCE_TYPE_PREFETCH);
+                    ResourceType::kPrefetch);
 
   // Finish the HTTP response - this should store the response in the cache.
   response.Done();
@@ -1536,7 +1538,7 @@
   // Verify that CORB blocked the response from the network (from
   // |cross_origin_https_server_|) to the service worker.
   InspectHistograms(histograms, kShouldBeBlockedWithoutSniffing, "network.txt",
-                    RESOURCE_TYPE_XHR);
+                    ResourceType::kXhr);
 
   // Verify that the service worker replied with an expected error.
   // Replying with an error means that CORB is only active once (for the
diff --git a/content/browser/loader/cross_site_document_resource_handler.cc b/content/browser/loader/cross_site_document_resource_handler.cc
index f86a916..9e65e50 100644
--- a/content/browser/loader/cross_site_document_resource_handler.cc
+++ b/content/browser/loader/cross_site_document_resource_handler.cc
@@ -86,7 +86,7 @@
   ukm::builders::SiteIsolation_XSD_Browser_Blocked(source_id)
       .SetCanonicalMimeType(static_cast<int64_t>(canonical_mime_type))
       .SetContentLengthWasZero(content_length == 0)
-      .SetContentResourceType(resource_type)
+      .SetContentResourceType(static_cast<int>(resource_type))
       .SetHttpResponseCode(http_response_code)
       .SetNeededSniffing(needed_sniffing)
       .Record(ukm::UkmRecorder::Get());
@@ -103,41 +103,34 @@
   analyzer_->LogBlockedResponse();
 
   ResourceType resource_type = resource_request_info->GetResourceType();
-  UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked", resource_type,
-                            content::RESOURCE_TYPE_LAST_TYPE);
+  UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked", resource_type);
   switch (analyzer_->canonical_mime_type()) {
     case MimeType::kHtml:
       UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked.HTML",
-                                resource_type,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+                                resource_type);
       break;
     case MimeType::kXml:
       UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked.XML",
-                                resource_type,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+                                resource_type);
       break;
     case MimeType::kJson:
       UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked.JSON",
-                                resource_type,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+                                resource_type);
       break;
     case MimeType::kPlain:
       UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked.Plain",
-                                resource_type,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+                                resource_type);
       break;
     case MimeType::kOthers:
       UMA_HISTOGRAM_ENUMERATION("SiteIsolation.XSD.Browser.Blocked.Others",
-                                resource_type,
-                                content::RESOURCE_TYPE_LAST_TYPE);
+                                resource_type);
       break;
     default:
       NOTREACHED();
   }
   if (analyzer_->found_parser_breaker()) {
     UMA_HISTOGRAM_ENUMERATION(
-        "SiteIsolation.XSD.Browser.BlockedForParserBreaker", resource_type,
-        content::RESOURCE_TYPE_LAST_TYPE);
+        "SiteIsolation.XSD.Browser.BlockedForParserBreaker", resource_type);
   }
 
   // The last committed URL is only available on the UI thread - we need to hop
@@ -666,7 +659,7 @@
   //   initiators and therefore doesn't need another exception here;
   //   additionally PDF doesn't _really_ make *cross*-origin requests - it just
   //   seems that way because of the usage of the Chrome extension).
-  if (info->GetResourceType() == RESOURCE_TYPE_PLUGIN_RESOURCE &&
+  if (info->GetResourceType() == ResourceType::kPluginResource &&
       fetch_request_mode_ == network::mojom::FetchRequestMode::kNoCors &&
       network::CrossOriginReadBlocking::ShouldAllowForPlugin(
           info->GetChildID())) {
diff --git a/content/browser/loader/cross_site_document_resource_handler_unittest.cc b/content/browser/loader/cross_site_document_resource_handler_unittest.cc
index 4a9b759..6bc209f 100644
--- a/content/browser/loader/cross_site_document_resource_handler_unittest.cc
+++ b/content/browser/loader/cross_site_document_resource_handler_unittest.cc
@@ -155,7 +155,8 @@
 
   return os << "\n  description           = " << scenario.description
             << "\n  target_url            = " << scenario.target_url
-            << "\n  resource_type         = " << scenario.resource_type
+            << "\n  resource_type         = "
+            << static_cast<int>(scenario.resource_type)
             << "\n  initiator_origin      = " << scenario.initiator_origin
             << "\n  cors_request          = "
             << (scenario.cors_request == OriginHeader::kOmit
@@ -204,7 +205,7 @@
         "Allowed: Same-site XHR to HTML",
         __LINE__,
         "http://www.a.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -220,7 +221,7 @@
         "Allowed: Same-origin JSON with parser breaker and HTML mime type",
         __LINE__,
         "http://www.a.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -236,7 +237,7 @@
         "Allowed: Same-origin JSON with parser breaker and JSON mime type",
         __LINE__,
         "http://www.a.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/json",                            // response_content_type
@@ -252,7 +253,7 @@
         "Allowed: Cross-site script without parser breaker",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/javascript",               // response_content_type
@@ -268,7 +269,7 @@
         "Allowed: Cross-site XHR to HTML with CORS for origin",
         __LINE__,
         "http://www.b.com/resource.html",  // target_url
-        RESOURCE_TYPE_XHR,                 // resource_type
+        ResourceType::kXhr,                // resource_type
         "http://www.a.com/",               // initiator_origin
         OriginHeader::kInclude,            // cors_request
         "text/html",                       // response_content_type
@@ -284,7 +285,7 @@
         "Allowed: Cross-site XHR to XML with CORS for any",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kInclude,                     // cors_request
         "application/rss+xml",                      // response_content_type
@@ -300,7 +301,7 @@
         "Allowed: Cross-site XHR to JSON with CORS for null",
         __LINE__,
         "http://www.b.com/resource.html",            // target_url
-        RESOURCE_TYPE_XHR,                           // resource_type
+        ResourceType::kXhr,                          // resource_type
         "http://www.a.com/",                         // initiator_origin
         OriginHeader::kInclude,                      // cors_request
         "text/json",                                 // response_content_type
@@ -316,7 +317,7 @@
         "Allowed: Cross-site XHR to HTML over FTP",
         __LINE__,
         "ftp://www.b.com/resource.html",            // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -332,7 +333,7 @@
         "Allowed: Cross-site XHR to HTML from file://",
         __LINE__,
         "file:///foo/resource.html",                // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -354,7 +355,7 @@
         "Blocked: Cross-site fetch HTML from Flash without CORS",
         __LINE__,
         "http://www.b.com/plugin.html",             // target_url
-        RESOURCE_TYPE_PLUGIN_RESOURCE,              // resource_type
+        ResourceType::kPluginResource,              // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -370,7 +371,7 @@
         "Allowed: Cross-site fetch HTML from NaCl with CORS response",
         __LINE__,
         "http://www.b.com/plugin.html",  // target_url
-        RESOURCE_TYPE_PLUGIN_RESOURCE,   // resource_type
+        ResourceType::kPluginResource,   // resource_type
         "http://www.a.com/",             // initiator_origin
         OriginHeader::kInclude,          // cors_request
         "text/html",                     // response_content_type
@@ -386,7 +387,7 @@
         "Allowed: JSON object + CORS with parser-breaker labeled as JavaScript",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_SCRIPT,                       // resource_type
+        ResourceType::kScript,                      // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kInclude,                     // cors_request
         "application/javascript",                   // response_content_type
@@ -402,7 +403,7 @@
         "Blocked: JSON object labeled as JavaScript with a no-sniff header",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/javascript",               // response_content_type
@@ -418,7 +419,7 @@
         "Allowed: Empty response with PNG mime type",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "image/png",                            // response_content_type
@@ -434,7 +435,7 @@
         "Allowed: Empty response with PNG mime type and nosniff header",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "image/png",                            // response_content_type
@@ -452,7 +453,7 @@
         "Allowed: Cross-site script to JSONP labeled as HTML",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -468,7 +469,7 @@
         "Allowed: Cross-site script to JavaScript labeled as text",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -484,7 +485,7 @@
         "Allowed: JSON-like JavaScript labeled as text",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -501,7 +502,7 @@
         "Allowed: JSONP labeled as JSON",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/json",                            // response_content_type
@@ -517,7 +518,7 @@
         "Allowed (for now): JSON array literal labeled as text/plain",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -533,7 +534,7 @@
         "Allowed: JSON array literal on which a function is called.",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -550,7 +551,7 @@
         "Allowed: Cross-site XHR to nonsense labeled as XML",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/xml",                      // response_content_type
@@ -566,7 +567,7 @@
         "Allowed: Cross-site XHR to nonsense labeled as JSON",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/json",                            // response_content_type
@@ -582,7 +583,7 @@
         "Allowed: Cross-site XHR to partial match for <HTML> tag",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -598,7 +599,7 @@
         "Allowed: HTML tag appears only after net::kMaxBytesToSniff",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -614,7 +615,7 @@
         "Allowed: Empty response with html mime type",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -630,7 +631,7 @@
         "Allowed: Same-site XHR to a filesystem URI",
         __LINE__,
         "filesystem:http://www.a.com/file.html",    // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -646,7 +647,7 @@
         "Allowed: Same-site XHR to a blob URI",
         __LINE__,
         "blob:http://www.a.com/guid-goes-here",     // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -664,7 +665,7 @@
         "Blocked: Cross-site XHR to nosniff HTML without CORS",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -680,7 +681,7 @@
         "Blocked: nosniff + Content-Type: text/html; charset=utf-8",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html; charset=utf-8",                 // response_content_type
@@ -696,7 +697,7 @@
         "Blocked: Cross-site XHR to nosniff response without CORS",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -712,7 +713,7 @@
         "Blocked: Cross-origin, same-site XHR to nosniff HTML without CORS",
         __LINE__,
         "https://foo.site.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "https://bar.site.com/",                    // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -730,7 +731,7 @@
         // to the CORS response.
         __LINE__,
         "http://www.b.com/resource.html",  // target_url
-        RESOURCE_TYPE_XHR,                 // resource_type
+        ResourceType::kXhr,                // resource_type
         "http://foo.example.com/",         // initiator_origin
         OriginHeader::kInclude,            // cors_request
         "text/html",                       // response_content_type
@@ -750,7 +751,7 @@
         "Blocked(-ish?): Nosniff header + empty response",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kInclude,                 // cors_request
         "text/html",                            // response_content_type
@@ -768,7 +769,7 @@
         "Blocked: Cross-site XHR to HTML without CORS",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -784,7 +785,7 @@
         "Blocked: Cross-site XHR to XML without CORS",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/xml",                      // response_content_type
@@ -800,7 +801,7 @@
         "Blocked: Cross-site XHR to JSON without CORS",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/json",                     // response_content_type
@@ -816,7 +817,7 @@
         "Blocked: slow-arriving JSON labeled as text/plain",
         __LINE__,
         "http://www.b.com/resource.html",             // target_url
-        RESOURCE_TYPE_XHR,                            // resource_type
+        ResourceType::kXhr,                           // resource_type
         "http://www.a.com/",                          // initiator_origin
         OriginHeader::kOmit,                          // cors_request
         "text/plain",                                 // response_content_type
@@ -832,7 +833,7 @@
         "Blocked: slow-arriving xml labeled as text/plain",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -848,7 +849,7 @@
         "Blocked: slow-arriving html labeled as text/plain",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -865,7 +866,7 @@
         "Blocked: slow-arriving html with commented-out xml tag",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -881,7 +882,7 @@
         "Blocked: Cross-site XHR to HTML labeled as text without CORS",
         __LINE__,
         "http://www.b.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/plain",                               // response_content_type
@@ -897,7 +898,7 @@
         "Blocked: Cross-site <script> inclusion of HTML w/ DTD without CORS",
         __LINE__,
         "http://www.b.com/resource.html",       // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -915,7 +916,7 @@
         "Blocked: Cross-site XHR to HTML with wrong CORS",
         __LINE__,
         "http://www.b.com/resource.html",  // target_url
-        RESOURCE_TYPE_XHR,                 // resource_type
+        ResourceType::kXhr,                // resource_type
         "http://www.a.com/",               // initiator_origin
         OriginHeader::kInclude,            // cors_request
         "text/html",                       // response_content_type
@@ -931,7 +932,7 @@
         "Blocked: Cross-site fetch HTML from NaCl without CORS response",
         __LINE__,
         "http://www.b.com/plugin.html",             // target_url
-        RESOURCE_TYPE_PLUGIN_RESOURCE,              // resource_type
+        ResourceType::kPluginResource,              // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kInclude,                     // cors_request
         "text/html",                                // response_content_type
@@ -947,7 +948,7 @@
         "Blocked: Cross-site JSON with parser breaker and JSON mime type",
         __LINE__,
         "http://a.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://c.com/",                        // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/json",                            // response_content_type
@@ -963,7 +964,7 @@
         "Blocked: Cross-site JSON with parser breaker/nosniff/other mime type",
         __LINE__,
         "http://a.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://c.com/",                        // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "audio/x-wav",                          // response_content_type
@@ -979,7 +980,7 @@
         "Blocked: Cross-site JSON with parser breaker and other mime type",
         __LINE__,
         "http://a.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://c.com/",                        // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/javascript",               // response_content_type
@@ -995,7 +996,7 @@
         "Blocked: Cross-site JSON with parser breaker/html/nosniff",
         __LINE__,
         "http://a.com/resource.html",           // target_url
-        RESOURCE_TYPE_XHR,                      // resource_type
+        ResourceType::kXhr,                     // resource_type
         "http://c.com/",                        // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/html",                            // response_content_type
@@ -1012,7 +1013,7 @@
         "as JavaScript",
         __LINE__,
         "http://www.b.com/resource.html",  // target_url
-        RESOURCE_TYPE_SCRIPT,              // resource_type
+        ResourceType::kScript,             // resource_type
         "http://www.a.com/",               // initiator_origin
         OriginHeader::kInclude,            // cors_request
         "application/javascript",          // response_content_type
@@ -1028,7 +1029,7 @@
         "Blocked: Cross-site XHR to a filesystem URI",
         __LINE__,
         "filesystem:http://www.b.com/file.html",    // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -1044,7 +1045,7 @@
         "Blocked: Cross-site XHR to a blob URI",
         __LINE__,
         "blob:http://www.b.com/guid-goes-here",     // target_url
-        RESOURCE_TYPE_XHR,                          // resource_type
+        ResourceType::kXhr,                         // resource_type
         "http://www.a.com/",                        // initiator_origin
         OriginHeader::kOmit,                        // cors_request
         "text/html",                                // response_content_type
@@ -1060,7 +1061,7 @@
         "Allowed: Javascript 206",
         __LINE__,
         "http://www.b.com/script.js",           // target_url
-        RESOURCE_TYPE_SCRIPT,                   // resource_type
+        ResourceType::kScript,                  // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "application/javascript",               // response_content_type
@@ -1076,7 +1077,7 @@
         "Allowed: text/html 206 media with CORS",
         __LINE__,
         "http://www.b.com/movie.html",  // target_url
-        RESOURCE_TYPE_MEDIA,            // resource_type
+        ResourceType::kMedia,           // resource_type
         "http://www.a.com/",            // initiator_origin
         OriginHeader::kInclude,         // cors_request
         "text/html",                    // response_content_type
@@ -1092,7 +1093,7 @@
         "Allowed: text/plain 206 media",
         __LINE__,
         "http://www.b.com/movie.txt",           // target_url
-        RESOURCE_TYPE_MEDIA,                    // resource_type
+        ResourceType::kMedia,                   // resource_type
         "http://www.a.com/",                    // initiator_origin
         OriginHeader::kOmit,                    // cors_request
         "text/plain",                           // response_content_type
@@ -1108,7 +1109,7 @@
         "Blocked: text/html 206 media",
         __LINE__,
         "http://www.b.com/movie.html",           // target_url
-        RESOURCE_TYPE_MEDIA,                     // resource_type
+        ResourceType::kMedia,                    // resource_type
         "http://www.a.com/",                     // initiator_origin
         OriginHeader::kOmit,                     // cors_request
         "text/html",                             // response_content_type
@@ -1622,10 +1623,12 @@
     expected_counts[histogram_base + ".Blocked.ContentLength.WasAvailable"] = 1;
     expected_counts[histogram_base + ".Blocked." + bucket] = 1;
     EXPECT_THAT(histograms.GetAllSamples(histogram_base + ".Blocked"),
-                testing::ElementsAre(base::Bucket(scenario.resource_type, 1)))
+                testing::ElementsAre(
+                    base::Bucket(static_cast<int>(scenario.resource_type), 1)))
         << "Should have incremented aggregate blocking.";
     EXPECT_THAT(histograms.GetAllSamples(histogram_base + ".Blocked." + bucket),
-                testing::ElementsAre(base::Bucket(scenario.resource_type, 1)))
+                testing::ElementsAre(
+                    base::Bucket(static_cast<int>(scenario.resource_type), 1)))
         << "Should have incremented blocking for resource type.";
   }
   // Make sure that the expected metrics, and only those metrics, were
diff --git a/content/browser/loader/detachable_resource_handler_unittest.cc b/content/browser/loader/detachable_resource_handler_unittest.cc
index 3e77d918..a8daabd 100644
--- a/content/browser/loader/detachable_resource_handler_unittest.cc
+++ b/content/browser/loader/detachable_resource_handler_unittest.cc
@@ -61,7 +61,7 @@
                                         nullptr,
                                         TRAFFIC_ANNOTATION_FOR_TESTS)) {
     ResourceRequestInfo::AllocateForTesting(request_.get(),
-                                            RESOURCE_TYPE_MAIN_FRAME,
+                                            ResourceType::kMainFrame,
                                             nullptr,  // context
                                             0,        // render_process_id
                                             0,        // render_view_id
diff --git a/content/browser/loader/intercepting_resource_handler_unittest.cc b/content/browser/loader/intercepting_resource_handler_unittest.cc
index 26493cc..8f913d6 100644
--- a/content/browser/loader/intercepting_resource_handler_unittest.cc
+++ b/content/browser/loader/intercepting_resource_handler_unittest.cc
@@ -46,7 +46,7 @@
         old_handler_status_(
             net::URLRequestStatus::FromError(net::ERR_IO_PENDING)) {
     ResourceRequestInfo::AllocateForTesting(request_.get(),
-                                            RESOURCE_TYPE_MAIN_FRAME,
+                                            ResourceType::kMainFrame,
                                             nullptr,  // context
                                             0,        // render_process_id
                                             0,        // render_view_id
diff --git a/content/browser/loader/mime_sniffing_resource_handler.cc b/content/browser/loader/mime_sniffing_resource_handler.cc
index 14485ff..7b73b2a 100644
--- a/content/browser/loader/mime_sniffing_resource_handler.cc
+++ b/content/browser/loader/mime_sniffing_resource_handler.cc
@@ -445,7 +445,7 @@
   const std::string& mime_type = response_->head.mime_type;
 
   // Allow requests for object/embed tags to be intercepted as streams.
-  if (info->GetResourceType() == content::RESOURCE_TYPE_OBJECT) {
+  if (info->GetResourceType() == content::ResourceType::kObject) {
     DCHECK(info->resource_intercept_policy() !=
            ResourceInterceptPolicy::kAllowAll);
 
@@ -460,10 +460,10 @@
     return true;
 
   // A policy unequal to ResourceInterceptPolicy::kAllowNone implies
-  // info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME or
-  // info->GetResourceType() == RESOURCE_TYPE_SUB_FRAME.
-  DCHECK(info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME ||
-         info->GetResourceType() == RESOURCE_TYPE_SUB_FRAME);
+  // info->GetResourceType() == ResourceType::kMainFrame or
+  // info->GetResourceType() == ResourceType::kSubFrame.
+  DCHECK(info->GetResourceType() == ResourceType::kMainFrame ||
+         info->GetResourceType() == ResourceType::kSubFrame);
 
   bool must_download = MustDownload();
   if (!must_download) {
diff --git a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
index 0fb000f..638890c 100644
--- a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
+++ b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
@@ -228,7 +228,7 @@
 MimeSniffingResourceHandlerTest::TestAcceptHeaderSettingWithURLRequest(
     ResourceType request_resource_type,
     net::URLRequest* request) {
-  bool is_main_frame = request_resource_type == RESOURCE_TYPE_MAIN_FRAME;
+  bool is_main_frame = request_resource_type == ResourceType::kMainFrame;
   ResourceRequestInfo::AllocateForTesting(request, request_resource_type,
                                           nullptr,        // context
                                           0,              // render_process_id
@@ -265,7 +265,7 @@
   std::unique_ptr<net::URLRequest> request(context.CreateRequest(
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
-  bool is_main_frame = request_resource_type == RESOURCE_TYPE_MAIN_FRAME;
+  bool is_main_frame = request_resource_type == ResourceType::kMainFrame;
   ResourceRequestInfo::AllocateForTesting(request.get(), request_resource_type,
                                           nullptr,        // context
                                           0,              // render_process_id
@@ -329,7 +329,7 @@
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   ResourceRequestInfo::AllocateForTesting(request.get(),
-                                          RESOURCE_TYPE_MAIN_FRAME,
+                                          ResourceType::kMainFrame,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
@@ -493,7 +493,7 @@
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   ResourceRequestInfo::AllocateForTesting(request.get(),
-                                          RESOURCE_TYPE_MAIN_FRAME,
+                                          ResourceType::kMainFrame,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
@@ -645,7 +645,7 @@
   // intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_MAIN_FRAME;
+  resource_type = ResourceType::kMainFrame;
   EXPECT_FALSE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                        resource_type));
 
@@ -653,21 +653,21 @@
   // checked. Stream should be intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowPluginOnly;
   must_download = false;
-  resource_type = RESOURCE_TYPE_MAIN_FRAME;
+  resource_type = ResourceType::kMainFrame;
   EXPECT_TRUE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                       resource_type));
 
   // Main frame request with download allowed. Stream should be intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowAll;
   must_download = false;
-  resource_type = RESOURCE_TYPE_MAIN_FRAME;
+  resource_type = ResourceType::kMainFrame;
   EXPECT_TRUE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                       resource_type));
 
   // Main frame request with download forced. Stream shouldn't be intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowAll;
   must_download = true;
-  resource_type = RESOURCE_TYPE_MAIN_FRAME;
+  resource_type = ResourceType::kMainFrame;
   EXPECT_FALSE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                        resource_type));
 
@@ -675,7 +675,7 @@
   // intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_SUB_RESOURCE;
+  resource_type = ResourceType::kSubResource;
   EXPECT_FALSE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                        resource_type));
 
@@ -683,14 +683,14 @@
   // intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_PLUGIN_RESOURCE;
+  resource_type = ResourceType::kPluginResource;
   EXPECT_FALSE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                        resource_type));
 
   // Object request with download not allowed. Stream should be intercepted.
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_OBJECT;
+  resource_type = ResourceType::kObject;
   EXPECT_TRUE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                       resource_type));
 
@@ -699,7 +699,7 @@
   set_stream_has_handler(false);
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_OBJECT;
+  resource_type = ResourceType::kObject;
   EXPECT_FALSE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                        resource_type));
 
@@ -710,7 +710,7 @@
   set_plugin_available(false);
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_OBJECT;
+  resource_type = ResourceType::kObject;
   EXPECT_TRUE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                       resource_type));
 
@@ -720,7 +720,7 @@
   set_plugin_stale(true);
   resource_intercept_policy = ResourceInterceptPolicy::kAllowNone;
   must_download = false;
-  resource_type = RESOURCE_TYPE_OBJECT;
+  resource_type = ResourceType::kObject;
   EXPECT_TRUE(TestStreamIsIntercepted(resource_intercept_policy, must_download,
                                       resource_type));
 }
@@ -843,7 +843,7 @@
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   ResourceRequestInfo::AllocateForTesting(request.get(),
-                                          RESOURCE_TYPE_MAIN_FRAME,
+                                          ResourceType::kMainFrame,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
@@ -894,7 +894,7 @@
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   ResourceRequestInfo::AllocateForTesting(request.get(),
-                                          RESOURCE_TYPE_MAIN_FRAME,
+                                          ResourceType::kMainFrame,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
@@ -954,7 +954,7 @@
   std::unique_ptr<net::URLRequest> request(context.CreateRequest(
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
-  ResourceRequestInfo::AllocateForTesting(request.get(), RESOURCE_TYPE_SCRIPT,
+  ResourceRequestInfo::AllocateForTesting(request.get(), ResourceType::kScript,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
@@ -1032,7 +1032,7 @@
   std::unique_ptr<net::URLRequest> request(context.CreateRequest(
       GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
-  ResourceRequestInfo::AllocateForTesting(request.get(), RESOURCE_TYPE_SCRIPT,
+  ResourceRequestInfo::AllocateForTesting(request.get(), ResourceType::kScript,
                                           nullptr,  // context
                                           0,        // render_process_id
                                           0,        // render_view_id
diff --git a/content/browser/loader/mojo_async_resource_handler.cc b/content/browser/loader/mojo_async_resource_handler.cc
index 0ecef929..cedc99a 100644
--- a/content/browser/loader/mojo_async_resource_handler.cc
+++ b/content/browser/loader/mojo_async_resource_handler.cc
@@ -119,10 +119,10 @@
       report_transfer_size_async_timer_(std::make_unique<base::OneShotTimer>()),
       weak_factory_(this) {
   DCHECK(IsResourceTypeFrame(resource_type) ||
-         resource_type == RESOURCE_TYPE_SERVICE_WORKER ||
+         resource_type == ResourceType::kServiceWorker ||
          !(url_loader_options_ &
            network::mojom::kURLLoadOptionSendSSLInfoWithResponse));
-  DCHECK(resource_type == RESOURCE_TYPE_MAIN_FRAME ||
+  DCHECK(resource_type == ResourceType::kMainFrame ||
          !(url_loader_options_ &
            network::mojom::kURLLoadOptionSendSSLInfoForCertificateError));
   DCHECK(url_loader_client_);
diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc
index 05ecb533..c1e20b65 100644
--- a/content/browser/loader/mojo_async_resource_handler_unittest.cc
+++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
@@ -178,7 +178,7 @@
                                  rdh,
                                  std::move(mojo_request),
                                  std::move(url_loader_client),
-                                 RESOURCE_TYPE_MAIN_FRAME,
+                                 ResourceType::kMainFrame,
                                  options),
         task_runner_(new base::TestSimpleTaskRunner) {}
   ~MojoAsyncResourceHandlerWithStubOperations() override {}
@@ -308,7 +308,7 @@
     request_->set_upload(std::move(upload_stream));
     ResourceRequestInfo::AllocateForTesting(
         request_.get(),                          // request
-        RESOURCE_TYPE_XHR,                       // resource_type
+        ResourceType::kXhr,                      // resource_type
         browser_context_->GetResourceContext(),  // context
         kChildId,                                // render_process_id
         kRouteId,                                // render_view_id
diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc
index 269f4dc..0010982 100644
--- a/content/browser/loader/navigation_url_loader_impl.cc
+++ b/content/browser/loader/navigation_url_loader_impl.cc
@@ -217,9 +217,9 @@
   new_request->headers.AddHeadersFromString(
       request_info->begin_params->headers);
 
-  new_request->resource_type = request_info->is_main_frame
-                                   ? RESOURCE_TYPE_MAIN_FRAME
-                                   : RESOURCE_TYPE_SUB_FRAME;
+  new_request->resource_type =
+      static_cast<int>(request_info->is_main_frame ? ResourceType::kMainFrame
+                                                   : ResourceType::kSubFrame);
   if (request_info->is_main_frame)
     new_request->update_first_party_url_on_redirect = true;
 
@@ -357,8 +357,9 @@
     // request. The net::OK check may not be necessary - the case where OK is
     // received without receiving any headers looks broken, anyways.
     if (!received_response_ && (!status_ || status_->error_code != net::OK)) {
-      RecordLoadHistograms(url_, resource_request_->resource_type,
-                           status_ ? status_->error_code : net::ERR_ABORTED);
+      RecordLoadHistograms(
+          url_, static_cast<ResourceType>(resource_request_->resource_type),
+          status_ ? status_->error_code : net::ERR_ABORTED);
     }
   }
 
@@ -889,7 +890,8 @@
         bool handled = GetContentClient()->browser()->HandleExternalProtocol(
             resource_request_->url, web_contents_getter_,
             ChildProcessHost::kInvalidUniqueID, navigation_ui_data_.get(),
-            resource_request_->resource_type == RESOURCE_TYPE_MAIN_FRAME,
+            resource_request_->resource_type ==
+                static_cast<int>(ResourceType::kMainFrame),
             static_cast<ui::PageTransition>(resource_request_->transition_type),
             resource_request_->has_user_gesture, resource_request_->method,
             resource_request_->headers, &proxied_factory_request_,
@@ -947,8 +949,9 @@
       }
     }
     url_chain_.push_back(resource_request_->url);
-    *out_options = GetURLLoaderOptions(resource_request_->resource_type ==
-                                       RESOURCE_TYPE_MAIN_FRAME);
+    *out_options =
+        GetURLLoaderOptions(resource_request_->resource_type ==
+                            static_cast<int>(ResourceType::kMainFrame));
     return factory;
   }
 
diff --git a/content/browser/loader/prefetch_url_loader_service.cc b/content/browser/loader/prefetch_url_loader_service.cc
index 1324a781..e590369d 100644
--- a/content/browser/loader/prefetch_url_loader_service.cc
+++ b/content/browser/loader/prefetch_url_loader_service.cc
@@ -89,7 +89,8 @@
     scoped_refptr<network::SharedURLLoaderFactory> network_loader_factory,
     base::RepeatingCallback<int(void)> frame_tree_node_id_getter) {
   DCHECK_CURRENTLY_ON(BrowserThread::IO);
-  DCHECK_EQ(RESOURCE_TYPE_PREFETCH, resource_request.resource_type);
+  DCHECK_EQ(static_cast<int>(ResourceType::kPrefetch),
+            resource_request.resource_type);
   DCHECK(resource_context_);
 
   if (prefetch_load_callback_for_testing_)
diff --git a/content/browser/loader/resource_dispatcher_host_impl.cc b/content/browser/loader/resource_dispatcher_host_impl.cc
index 8e957bb8..289e7d0 100644
--- a/content/browser/loader/resource_dispatcher_host_impl.cc
+++ b/content/browser/loader/resource_dispatcher_host_impl.cc
@@ -490,7 +490,7 @@
          loader->GetRequestInfo()->detachable_handler()->is_detached()) ||
         loader->GetRequestInfo()->requester_info()->IsBrowserSideNavigation() ||
         loader->GetRequestInfo()->GetResourceType() ==
-            RESOURCE_TYPE_SERVICE_WORKER);
+            ResourceType::kServiceWorker);
   }
 #endif
 
@@ -595,7 +595,7 @@
       ResourceRequestInfoImpl::ForRequest(request);
   DCHECK(resource_request_info);
   bool is_request_for_main_frame =
-      resource_request_info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME;
+      resource_request_info->GetResourceType() == ResourceType::kMainFrame;
   GlobalRequestID request_id = resource_request_info->GetGlobalRequestID();
 
   GURL url = request->url();
@@ -918,7 +918,7 @@
       &request_context);
 
   // All PREFETCH requests should be GETs, but be defensive about it.
-  if (request_data.resource_type == RESOURCE_TYPE_PREFETCH &&
+  if (request_data.resource_type == static_cast<int>(ResourceType::kPrefetch) &&
       request_data.method != "GET") {
     AbortRequestBeforeItStarts(requester_info->filter(), request_id,
                                std::move(url_loader_client));
@@ -1121,7 +1121,7 @@
           url_loader_options);
 
   // Prefetches outlive their child process.
-  if (request_data.resource_type == RESOURCE_TYPE_PREFETCH) {
+  if (request_data.resource_type == static_cast<int>(ResourceType::kPrefetch)) {
     auto detachable_handler = std::make_unique<DetachableResourceHandler>(
         request,
         base::TimeDelta::FromMilliseconds(kDefaultDetachableCancelDelayMs),
@@ -1239,7 +1239,7 @@
       MakeRequestID(), render_frame_route_id,
       false,  // is_main_frame
       {},     // fetch_window_id
-      RESOURCE_TYPE_SUB_RESOURCE, ui::PAGE_TRANSITION_LINK,
+      ResourceType::kSubResource, ui::PAGE_TRANSITION_LINK,
       download,  // is_download
       false,     // is_stream
       download ? ResourceInterceptPolicy::kAllowAll
@@ -1496,8 +1496,8 @@
   DCHECK(url_loader_client.is_bound());
   DCHECK(url_loader_request.is_pending());
 
-  ResourceType resource_type = info.is_main_frame ?
-      RESOURCE_TYPE_MAIN_FRAME : RESOURCE_TYPE_SUB_FRAME;
+  ResourceType resource_type =
+      info.is_main_frame ? ResourceType::kMainFrame : ResourceType::kSubFrame;
 
   // Do not allow browser plugin guests to navigate to non-web URLs, since they
   // cannot swap processes or grant bindings. Do not check external protocols
@@ -1880,7 +1880,7 @@
     ResourceType resource_type,
     const GURL& url,
     const GURL& site_for_cookies) {
-  if (resource_type == RESOURCE_TYPE_IMAGE &&
+  if (resource_type == ResourceType::kImage &&
       HTTP_AUTH_RELATION_BLOCKED_CROSS ==
           HttpAuthRelationTypeOf(url, site_for_cookies)) {
     return true;
diff --git a/content/browser/loader/resource_dispatcher_host_unittest.cc b/content/browser/loader/resource_dispatcher_host_unittest.cc
index 1d243b6..db25e249 100644
--- a/content/browser/loader/resource_dispatcher_host_unittest.cc
+++ b/content/browser/loader/resource_dispatcher_host_unittest.cc
@@ -107,14 +107,14 @@
   request.referrer_policy = Referrer::GetDefaultReferrerPolicy();
   request.load_flags = 0;
   request.plugin_child_id = -1;
-  request.resource_type = type;
+  request.resource_type = static_cast<int>(type);
   request.appcache_host_id = blink::mojom::kAppCacheNoHostId;
   request.should_reset_appcache = false;
   request.render_frame_id = 0;
   request.is_main_frame = true;
   request.transition_type = ui::PAGE_TRANSITION_LINK;
   request.allow_download = true;
-  request.keepalive = (type == RESOURCE_TYPE_PING);
+  request.keepalive = (type == ResourceType::kPing);
   return request;
 }
 
@@ -914,7 +914,7 @@
     network::mojom::URLLoaderRequest loader_request,
     network::mojom::URLLoaderClientPtr client) {
   MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
-                                  url, RESOURCE_TYPE_SUB_RESOURCE,
+                                  url, ResourceType::kSubResource,
                                   std::move(loader_request), std::move(client));
 }
 
@@ -974,7 +974,7 @@
     network::mojom::URLLoaderRequest loader_request,
     network::mojom::URLLoaderClientPtr client) {
   network::ResourceRequest request = CreateResourceRequest(
-      "GET", RESOURCE_TYPE_SUB_RESOURCE, GURL("http://example.com/priority"));
+      "GET", ResourceType::kSubResource, GURL("http://example.com/priority"));
   request.render_frame_id = render_frame_id;
   request.priority = priority;
   filter_->CreateLoaderAndStart(
@@ -1031,7 +1031,7 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 4, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader4), client4.CreateInterfacePtr());
 
   CancelRequest(2);
@@ -1074,7 +1074,7 @@
   network::TestURLLoaderClient client;
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 1, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader), client.CreateInterfacePtr());
   content::RunAllTasksUntilIdle();
 
@@ -1120,7 +1120,7 @@
   base::test::ScopedFeatureList feature_list;
   // test_url_1's data is available synchronously, so use 2 and 3.
   network::ResourceRequest request_prefetch = CreateResourceRequest(
-      "GET", RESOURCE_TYPE_PREFETCH, net::URLRequestTestJob::test_url_2());
+      "GET", ResourceType::kPrefetch, net::URLRequestTestJob::test_url_2());
 
   filter_->CreateLoaderAndStart(
       mojo::MakeRequest(&loader1), 0, 1, network::mojom::kURLLoadOptionNone,
@@ -1159,7 +1159,7 @@
   network::mojom::URLLoaderPtr loader;
   network::TestURLLoaderClient client;
   network::ResourceRequest request = CreateResourceRequest(
-      "GET", RESOURCE_TYPE_PREFETCH,
+      "GET", ResourceType::kPrefetch,
       net::URLRequestTestJob::test_url_redirect_to_url_2());
 
   filter_->CreateLoaderAndStart(
@@ -1244,7 +1244,7 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 1, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader), client.CreateInterfacePtr());
   // Cancel request must come from the renderer for a detachable resource to
   // detach.
@@ -1380,23 +1380,23 @@
   network::TestURLLoaderClient client1, client2, client3, client4;
   base::test::ScopedFeatureList feature_list;
   job_factory_->SetDelayedStartJobGeneration(true);
-  MakeTestRequestWithRenderFrame(0, 11, 1, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_XHR, mojo::MakeRequest(&loader1),
-                                 client1.CreateInterfacePtr());
+  MakeTestRequestWithRenderFrame(
+      0, 11, 1, net::URLRequestTestJob::test_url_1(), ResourceType::kXhr,
+      mojo::MakeRequest(&loader1), client1.CreateInterfacePtr());
   EXPECT_EQ(1, host_.pending_requests());
 
-  MakeTestRequestWithRenderFrame(0, 12, 2, net::URLRequestTestJob::test_url_2(),
-                                 RESOURCE_TYPE_XHR, mojo::MakeRequest(&loader2),
-                                 client2.CreateInterfacePtr());
+  MakeTestRequestWithRenderFrame(
+      0, 12, 2, net::URLRequestTestJob::test_url_2(), ResourceType::kXhr,
+      mojo::MakeRequest(&loader2), client2.CreateInterfacePtr());
   EXPECT_EQ(2, host_.pending_requests());
 
   MakeTestRequestWithRenderFrame(
-      0, 11, 3, net::URLRequestTestJob::test_url_3(), RESOURCE_TYPE_PREFETCH,
+      0, 11, 3, net::URLRequestTestJob::test_url_3(), ResourceType::kPrefetch,
       mojo::MakeRequest(&loader3), client3.CreateInterfacePtr());
   EXPECT_EQ(3, host_.pending_requests());
 
   MakeTestRequestWithRenderFrame(
-      0, 12, 4, net::URLRequestTestJob::test_url_4(), RESOURCE_TYPE_PREFETCH,
+      0, 12, 4, net::URLRequestTestJob::test_url_4(), ResourceType::kPrefetch,
       mojo::MakeRequest(&loader4), client4.CreateInterfacePtr());
   EXPECT_EQ(4, host_.pending_requests());
 
@@ -1437,7 +1437,7 @@
   // request 1 goes to the test delegate
   MakeTestRequestWithResourceType(
       test_filter.get(), 0, 1, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader1),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader1),
       client1.CreateInterfacePtr());
 
   // request 2 goes to us
@@ -1447,13 +1447,13 @@
   // request 3 goes to the test delegate
   MakeTestRequestWithResourceType(
       test_filter.get(), 0, 3, net::URLRequestTestJob::test_url_3(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader3),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader3),
       client3.CreateInterfacePtr());
 
   // request 4 goes to us
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 4, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader4), client4.CreateInterfacePtr());
 
   // Make sure all requests have finished stage one. test_url_1 will have
@@ -1566,7 +1566,7 @@
   network::TestURLLoaderClient client;
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 1, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader), client.CreateInterfacePtr());
   content::RunAllTasksUntilIdle();
   GlobalRequestID global_request_id(filter_->child_id(), 1);
@@ -1618,27 +1618,27 @@
   host_.BlockRequestsForRoute(GlobalFrameRoutingId(filter_->child_id(), 13));
 
   MakeTestRequestWithRenderFrame(0, 10, 1, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader1),
                                  client1.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(1, 11, 2, net::URLRequestTestJob::test_url_2(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader2),
                                  client2.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(0, 10, 3, net::URLRequestTestJob::test_url_3(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader3),
                                  client3.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(1, 11, 4, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader4),
                                  client4.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(2, 12, 5, net::URLRequestTestJob::test_url_2(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader5),
                                  client5.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(3, 13, 6, net::URLRequestTestJob::test_url_3(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader6),
                                  client6.CreateInterfacePtr());
 
@@ -1666,7 +1666,7 @@
 
   // Test that new requests are not blocked for RFH 11.
   MakeTestRequestWithRenderFrame(1, 11, 7, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader7),
                                  client7.CreateInterfacePtr());
   while (net::URLRequestTestJob::ProcessOnePendingMessage()) {}
@@ -1694,25 +1694,25 @@
   host_.BlockRequestsForRoute(GlobalFrameRoutingId(filter_->child_id(), 11));
 
   MakeTestRequestWithRenderFrame(0, 10, 1, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader1),
                                  client1.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(1, 11, 2, net::URLRequestTestJob::test_url_2(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader2),
                                  client2.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(0, 10, 3, net::URLRequestTestJob::test_url_3(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader3),
                                  client3.CreateInterfacePtr());
   MakeTestRequestWithRenderFrame(1, 11, 4, net::URLRequestTestJob::test_url_1(),
-                                 RESOURCE_TYPE_SUB_RESOURCE,
+                                 ResourceType::kSubResource,
                                  mojo::MakeRequest(&loader4),
                                  client4.CreateInterfacePtr());
   // Blocked detachable resources should not delay cancellation.
   //
   MakeTestRequestWithRenderFrame(1, 11, 5, net::URLRequestTestJob::test_url_4(),
-                                 RESOURCE_TYPE_PREFETCH,  // detachable type
+                                 ResourceType::kPrefetch,  // detachable type
                                  mojo::MakeRequest(&loader5),
                                  client5.CreateInterfacePtr());
   // Flush all the pending requests.
@@ -1748,23 +1748,23 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 1, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader1),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader1),
       client1.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, 2, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader2),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader2),
       client2.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 3, net::URLRequestTestJob::test_url_3(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader3),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader3),
       client3.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, 4, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader4),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader4),
       client4.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, 5, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader5), client5.CreateInterfacePtr());
 
   // Simulate process death.
@@ -1803,35 +1803,35 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 1, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader1),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader1),
       client1.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 1, 2, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader2),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader2),
       client2.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 3, net::URLRequestTestJob::test_url_3(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader3),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader3),
       client3.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 1, 4, net::URLRequestTestJob::test_url_1(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader4),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader4),
       client4.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 2, 5, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader5),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader5),
       client5.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 2, 6, net::URLRequestTestJob::test_url_3(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loader6),
+      ResourceType::kSubResource, mojo::MakeRequest(&loader6),
       client6.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 0, 7, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader7), client7.CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 1, 8, net::URLRequestTestJob::test_url_4(),
-      RESOURCE_TYPE_PREFETCH,  // detachable type
+      ResourceType::kPrefetch,  // detachable type
       mojo::MakeRequest(&loader8), client8.CreateInterfacePtr());
 
   host_.CancelRequestsForProcess(filter_->child_id());
@@ -1904,29 +1904,29 @@
   for (size_t i = 0; i < kMaxRequests; ++i) {
     MakeTestRequestWithResourceType(
         filter_.get(), 0, i + 1, net::URLRequestTestJob::test_url_2(),
-        RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loaders[i]),
+        ResourceType::kSubResource, mojo::MakeRequest(&loaders[i]),
         clients[i].CreateInterfacePtr());
   }
 
   // Issue two more requests for our process -- these should fail immediately.
   MakeTestRequestWithResourceType(
       filter_.get(), 0, kMaxRequests + 1, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loaders[kMaxRequests]),
+      ResourceType::kSubResource, mojo::MakeRequest(&loaders[kMaxRequests]),
       clients[kMaxRequests].CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       filter_.get(), 0, kMaxRequests + 2, net::URLRequestTestJob::test_url_2(),
-      RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loaders[kMaxRequests + 1]),
+      ResourceType::kSubResource, mojo::MakeRequest(&loaders[kMaxRequests + 1]),
       clients[kMaxRequests + 1].CreateInterfacePtr());
   // Issue two requests for the second process -- these should succeed since
   // it is just process 0 that is saturated.
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, kMaxRequests + 3,
-      net::URLRequestTestJob::test_url_2(), RESOURCE_TYPE_SUB_RESOURCE,
+      net::URLRequestTestJob::test_url_2(), ResourceType::kSubResource,
       mojo::MakeRequest(&loaders[kMaxRequests + 2]),
       clients[kMaxRequests + 2].CreateInterfacePtr());
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, kMaxRequests + 4,
-      net::URLRequestTestJob::test_url_2(), RESOURCE_TYPE_SUB_RESOURCE,
+      net::URLRequestTestJob::test_url_2(), ResourceType::kSubResource,
       mojo::MakeRequest(&loaders[kMaxRequests + 3]),
       clients[kMaxRequests + 3].CreateInterfacePtr());
   // Flush all the pending requests.
@@ -1977,14 +1977,14 @@
   for (size_t i = 0; i < kMaxRequestsPerProcess; ++i) {
     MakeTestRequestWithResourceType(
         filter_.get(), 0, i + 1, net::URLRequestTestJob::test_url_2(),
-        RESOURCE_TYPE_SUB_RESOURCE, mojo::MakeRequest(&loaders[i]),
+        ResourceType::kSubResource, mojo::MakeRequest(&loaders[i]),
         clients[i].CreateInterfacePtr());
   }
 
   // Issue another request for our process -- this should fail immediately.
   MakeTestRequestWithResourceType(
       filter_.get(), 0, kMaxRequestsPerProcess + 1,
-      net::URLRequestTestJob::test_url_2(), RESOURCE_TYPE_SUB_RESOURCE,
+      net::URLRequestTestJob::test_url_2(), ResourceType::kSubResource,
       mojo::MakeRequest(&loaders[kMaxRequestsPerProcess]),
       clients[kMaxRequestsPerProcess].CreateInterfacePtr());
 
@@ -1992,7 +1992,7 @@
   // is just process 0 that is saturated.
   MakeTestRequestWithResourceType(
       second_filter.get(), 0, kMaxRequestsPerProcess + 2,
-      net::URLRequestTestJob::test_url_2(), RESOURCE_TYPE_SUB_RESOURCE,
+      net::URLRequestTestJob::test_url_2(), ResourceType::kSubResource,
       mojo::MakeRequest(&loaders[kMaxRequestsPerProcess + 1]),
       clients[kMaxRequestsPerProcess + 1].CreateInterfacePtr());
 
@@ -2000,7 +2000,7 @@
   // global limit has been reached.
   MakeTestRequestWithResourceType(
       third_filter.get(), 0, kMaxRequestsPerProcess + 3,
-      net::URLRequestTestJob::test_url_2(), RESOURCE_TYPE_SUB_RESOURCE,
+      net::URLRequestTestJob::test_url_2(), ResourceType::kSubResource,
       mojo::MakeRequest(&loaders[kMaxRequestsPerProcess + 2]),
       clients[kMaxRequestsPerProcess + 2].CreateInterfacePtr());
 
@@ -2147,7 +2147,7 @@
 
   MakeTestRequestWithResourceType(filter_.get(), render_view_id, request_id,
                                   net::URLRequestTestJob::test_url_4(),
-                                  RESOURCE_TYPE_PREFETCH,  // detachable type
+                                  ResourceType::kPrefetch,  // detachable type
                                   mojo::MakeRequest(&loader),
                                   client.CreateInterfacePtr());
 
@@ -2241,7 +2241,7 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), render_view_id, request_id,
-      GURL("http://example.com/blah"), RESOURCE_TYPE_PREFETCH,
+      GURL("http://example.com/blah"), ResourceType::kPrefetch,
       mojo::MakeRequest(&loader), client.CreateInterfacePtr());
   content::RunAllTasksUntilIdle();
 
@@ -2454,7 +2454,7 @@
 
   MakeTestRequestWithResourceType(
       filter_.get(), filter_->child_id(), 1, GURL("http://example.com/blah"),
-      RESOURCE_TYPE_STYLESHEET, mojo::MakeRequest(&loader),
+      ResourceType::kStylesheet, mojo::MakeRequest(&loader),
       client.CreateInterfacePtr());
 
   while (net::URLRequestTestJob::ProcessOnePendingMessage()) {
diff --git a/content/browser/loader/resource_loader.cc b/content/browser/loader/resource_loader.cc
index ac3e5c84..1f07073 100644
--- a/content/browser/loader/resource_loader.cc
+++ b/content/browser/loader/resource_loader.cc
@@ -99,7 +99,7 @@
   response->head.effective_connection_type =
       net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
 
-  if (info->GetResourceType() == RESOURCE_TYPE_MAIN_FRAME) {
+  if (info->GetResourceType() == ResourceType::kMainFrame) {
     DCHECK(info->IsMainFrame());
     net::NetworkQualityEstimator* estimator =
         request->context()->network_quality_estimator();
diff --git a/content/browser/loader/resource_loader_unittest.cc b/content/browser/loader/resource_loader_unittest.cc
index 074dd87..539689e 100644
--- a/content/browser/loader/resource_loader_unittest.cc
+++ b/content/browser/loader/resource_loader_unittest.cc
@@ -435,7 +435,7 @@
 
     // A request marked as a main frame request must also belong to a main
     // frame.
-    ASSERT_TRUE((resource_type != RESOURCE_TYPE_MAIN_FRAME) ||
+    ASSERT_TRUE((resource_type != ResourceType::kMainFrame) ||
                 belongs_to_main_frame);
 
     RenderFrameHost* rfh = web_contents_->GetMainFrame();
@@ -459,7 +459,7 @@
         test_url_request_context_.CreateRequest(
             test_url, net::DEFAULT_PRIORITY, nullptr /* delegate */,
             TRAFFIC_ANNOTATION_FOR_TESTS));
-    SetUpResourceLoader(std::move(request), RESOURCE_TYPE_MAIN_FRAME, true);
+    SetUpResourceLoader(std::move(request), ResourceType::kMainFrame, true);
   }
 
   void SetUp() override {
@@ -767,13 +767,13 @@
   SetBrowserClientForTesting(old_client);
 }
 
-// Tests that a RESOURCE_TYPE_PREFETCH request sets the LOAD_PREFETCH flag.
+// Tests that a ResourceType::kPrefetch request sets the LOAD_PREFETCH flag.
 TEST_F(ResourceLoaderTest, PrefetchFlag) {
   std::unique_ptr<net::URLRequest> request(
       test_url_request_context_.CreateRequest(
           test_async_url(), net::DEFAULT_PRIORITY, nullptr /* delegate */,
           TRAFFIC_ANNOTATION_FOR_TESTS));
-  SetUpResourceLoader(std::move(request), RESOURCE_TYPE_PREFETCH, true);
+  SetUpResourceLoader(std::move(request), ResourceType::kPrefetch, true);
 
   loader_->StartRequest();
   raw_ptr_resource_handler_->WaitUntilResponseComplete();
@@ -1593,14 +1593,14 @@
 
 // Tests that the effective connection type is set on main frame requests.
 TEST_F(EffectiveConnectionTypeResourceLoaderTest, Slow2G) {
-  VerifyEffectiveConnectionType(RESOURCE_TYPE_MAIN_FRAME, true,
+  VerifyEffectiveConnectionType(ResourceType::kMainFrame, true,
                                 net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G,
                                 net::EFFECTIVE_CONNECTION_TYPE_SLOW_2G);
 }
 
 // Tests that the effective connection type is set on main frame requests.
 TEST_F(EffectiveConnectionTypeResourceLoaderTest, 3G) {
-  VerifyEffectiveConnectionType(RESOURCE_TYPE_MAIN_FRAME, true,
+  VerifyEffectiveConnectionType(ResourceType::kMainFrame, true,
                                 net::EFFECTIVE_CONNECTION_TYPE_3G,
                                 net::EFFECTIVE_CONNECTION_TYPE_3G);
 }
@@ -1608,7 +1608,7 @@
 // Tests that the effective connection type is not set on requests that belong
 // to main frame.
 TEST_F(EffectiveConnectionTypeResourceLoaderTest, BelongsToMainFrame) {
-  VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, true,
+  VerifyEffectiveConnectionType(ResourceType::kObject, true,
                                 net::EFFECTIVE_CONNECTION_TYPE_3G,
                                 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN);
 }
@@ -1616,7 +1616,7 @@
 // Tests that the effective connection type is not set on non-main frame
 // requests.
 TEST_F(EffectiveConnectionTypeResourceLoaderTest, DoesNotBelongToMainFrame) {
-  VerifyEffectiveConnectionType(RESOURCE_TYPE_OBJECT, false,
+  VerifyEffectiveConnectionType(ResourceType::kObject, false,
                                 net::EFFECTIVE_CONNECTION_TYPE_3G,
                                 net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN);
 }
diff --git a/content/browser/loader/resource_message_filter.cc b/content/browser/loader/resource_message_filter.cc
index df51eed2..7779fd3 100644
--- a/content/browser/loader/resource_message_filter.cc
+++ b/content/browser/loader/resource_message_filter.cc
@@ -123,7 +123,7 @@
     return;
   }
 
-  if (url_request.resource_type == RESOURCE_TYPE_PREFETCH &&
+  if (url_request.resource_type == static_cast<int>(ResourceType::kPrefetch) &&
       prefetch_url_loader_service_) {
     prefetch_url_loader_service_->CreateLoaderAndStart(
         std::move(request), routing_id, request_id, options, url_request,
diff --git a/content/browser/loader/resource_request_info_impl.cc b/content/browser/loader/resource_request_info_impl.cc
index 5e2e16e0..2a166f3 100644
--- a/content/browser/loader/resource_request_info_impl.cc
+++ b/content/browser/loader/resource_request_info_impl.cc
@@ -57,9 +57,9 @@
     bool is_async,
     PreviewsState previews_state,
     std::unique_ptr<NavigationUIData> navigation_ui_data) {
-  // Make sure RESOURCE_TYPE_MAIN_FRAME is declared as being fetched as part of
+  // Make sure ResourceType::kMainFrame is declared as being fetched as part of
   // the main frame.
-  DCHECK(resource_type != RESOURCE_TYPE_MAIN_FRAME || is_main_frame);
+  DCHECK(resource_type != ResourceType::kMainFrame || is_main_frame);
 
   ResourceRequestInfoImpl* info = new ResourceRequestInfoImpl(
       ResourceRequesterInfo::CreateForRendererTesting(
diff --git a/content/browser/loader/url_loader_factory_impl_unittest.cc b/content/browser/loader/url_loader_factory_impl_unittest.cc
index 9e590646..21e09fc 100644
--- a/content/browser/loader/url_loader_factory_impl_unittest.cc
+++ b/content/browser/loader/url_loader_factory_impl_unittest.cc
@@ -149,7 +149,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   factory_->CreateLoaderAndStart(
@@ -226,7 +226,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   factory_->CreateLoaderAndStart(
@@ -256,7 +256,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   factory_->CreateLoaderAndStart(
@@ -284,7 +284,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   ASSERT_FALSE(request.url.is_valid());
@@ -315,7 +315,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   factory_->CreateLoaderAndStart(
@@ -347,7 +347,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   request.report_raw_headers = true;
@@ -409,7 +409,7 @@
   // |resource_type| can't be a frame type. It is because when PlzNavigate is
   // enabled, the url scheme of frame type requests from the renderer process
   // must be blob scheme.
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   // Need to set same-site |request_initiator| for non main frame type request.
   request.request_initiator = url::Origin::Create(request.url);
   factory_->CreateLoaderAndStart(
diff --git a/content/browser/net/accept_header_browsertest.cc b/content/browser/net/accept_header_browsertest.cc
index b324b95..f89d6e7 100644
--- a/content/browser/net/accept_header_browsertest.cc
+++ b/content/browser/net/accept_header_browsertest.cc
@@ -93,57 +93,57 @@
 IN_PROC_BROWSER_TEST_F(AcceptHeaderTest, Check) {
   NavigateToURL(shell(), embedded_test_server()->GetURL("/accept-header.html"));
 
-  // RESOURCE_TYPE_MAIN_FRAME
+  // ResourceType::kMainFrame
   EXPECT_EQ(
       "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
       "image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
       GetFor("/accept-header.html"));
 
-  // RESOURCE_TYPE_SUB_FRAME
+  // ResourceType::kSubFrame
   EXPECT_EQ(
       "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,"
       "image/apng,*/*;q=0.8,application/signed-exchange;v=b3",
       GetFor("/iframe.html"));
 
-  // RESOURCE_TYPE_STYLESHEET
+  // ResourceType::kStylesheet
   EXPECT_EQ("text/css,*/*;q=0.1", GetFor("/test.css"));
 
-  // RESOURCE_TYPE_SCRIPT
+  // ResourceType::kScript
   EXPECT_EQ("*/*", GetFor("/test.js"));
 
-  // RESOURCE_TYPE_IMAGE
+  // ResourceType::kImage
   EXPECT_EQ("image/webp,image/apng,image/*,*/*;q=0.8", GetFor("/image.gif"));
 
-  // RESOURCE_TYPE_FONT_RESOURCE
+  // ResourceType::kFontResource
   EXPECT_EQ("*/*", GetFor("/test.js"));
 
-  // RESOURCE_TYPE_MEDIA
+  // ResourceType::kMedia
   EXPECT_EQ("*/*", GetFor("/media.mp4"));
 
-  // RESOURCE_TYPE_WORKER
+  // ResourceType::kWorker
   EXPECT_EQ("*/*", GetFor("/worker.js"));
 
 // Shared workers aren't implemented on Android.
 // https://bugs.chromium.org/p/chromium/issues/detail?id=154571
 #if !defined(OS_ANDROID)
-  // RESOURCE_TYPE_SHARED_WORKER
+  // ResourceType::kSharedWorker
   EXPECT_EQ("*/*", GetFor("/shared_worker.js"));
 #endif
 
-  // RESOURCE_TYPE_PREFETCH
+  // ResourceType::kPrefetch
   EXPECT_EQ("application/signed-exchange;v=b3;q=0.9,*/*;q=0.8",
             GetFor("/prefetch"));
 
-  // RESOURCE_TYPE_XHR
+  // ResourceType::kXhr
   EXPECT_EQ("*/*", GetFor("/xhr"));
 
-  // RESOURCE_TYPE_PING
+  // ResourceType::kPing
   EXPECT_EQ("*/*", GetFor("/ping"));
 
-  // RESOURCE_TYPE_SERVICE_WORKER
+  // ResourceType::kServiceWorker
   EXPECT_EQ("*/*", GetFor("/service_worker.js"));
 
-  // RESOURCE_TYPE_CSP_REPORT
+  // ResourceType::kCspReport
   EXPECT_EQ("*/*", GetFor("/csp"));
 
   // Ensure that if an Accept header is already set, it is not overwritten.
@@ -152,16 +152,16 @@
   shell()->web_contents()->GetManifest(
       base::BindOnce([](const GURL&, const blink::Manifest&) {}));
 
-  // RESOURCE_TYPE_SUB_RESOURCE
+  // ResourceType::kSubResource
   EXPECT_EQ("*/*", GetFor("/manifest"));
 
-  // RESOURCE_TYPE_OBJECT and RESOURCE_TYPE_FAVICON are tested in src/chrome's
+  // ResourceType::kObject and ResourceType::kFavicon are tested in src/chrome's
   // ChromeAcceptHeaderTest.ObjectAndFavicon.
 }
 
 #if BUILDFLAG(ENABLE_PLUGINS)
 
-// Checks Accept header for RESOURCE_TYPE_PLUGIN_RESOURCE.
+// Checks Accept header for ResourceType::kPluginResource.
 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, PluginAcceptHeader) {
   net::EmbeddedTestServer server(net::EmbeddedTestServer::TYPE_HTTP);
   server.ServeFilesFromSourceDirectory("ppapi/tests");
diff --git a/content/browser/network_service_client.cc b/content/browser/network_service_client.cc
index e728d987..8978b46 100644
--- a/content/browser/network_service_client.cc
+++ b/content/browser/network_service_client.cc
@@ -451,7 +451,7 @@
   }
 
   bool is_request_for_main_frame =
-      static_cast<ResourceType>(resource_type) == RESOURCE_TYPE_MAIN_FRAME;
+      static_cast<ResourceType>(resource_type) == ResourceType::kMainFrame;
   new LoginHandlerDelegate(std::move(auth_challenge_responder),
                            std::move(web_contents_getter), auth_info,
                            is_request_for_main_frame, process_id, routing_id,
diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc
index 5b23637..f3a90e6 100644
--- a/content/browser/renderer_host/render_process_host_impl.cc
+++ b/content/browser/renderer_host/render_process_host_impl.cc
@@ -316,10 +316,10 @@
     scoped_refptr<net::URLRequestContextGetter> request_context,
     scoped_refptr<net::URLRequestContextGetter> media_request_context,
     ResourceType resource_type) {
-  // If the request has resource type of RESOURCE_TYPE_MEDIA, we use a request
+  // If the request has resource type of ResourceType::kMedia, we use a request
   // context specific to media for handling it because these resources have
   // specific needs for caching.
-  if (resource_type == RESOURCE_TYPE_MEDIA)
+  if (resource_type == ResourceType::kMedia)
     return media_request_context->GetURLRequestContext();
   return request_context->GetURLRequestContext();
 }
diff --git a/content/browser/security_exploit_browsertest.cc b/content/browser/security_exploit_browsertest.cc
index 822cab1..d543da02 100644
--- a/content/browser/security_exploit_browsertest.cc
+++ b/content/browser/security_exploit_browsertest.cc
@@ -145,7 +145,7 @@
   request.request_initiator = url::Origin();
   request.load_flags = 0;
   request.plugin_child_id = -1;
-  request.resource_type = RESOURCE_TYPE_XHR;
+  request.resource_type = static_cast<int>(ResourceType::kXhr);
   request.appcache_host_id = blink::mojom::kAppCacheNoHostId;
   request.should_reset_appcache = false;
   request.is_main_frame = true;
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index e2b2fe2..5a0c455 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -947,7 +947,7 @@
     ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::IO));
     version_->SetStatus(ServiceWorkerVersion::ACTIVATED);
     GURL url = embedded_test_server()->GetURL(path);
-    ResourceType resource_type = RESOURCE_TYPE_MAIN_FRAME;
+    ResourceType resource_type = ResourceType::kMainFrame;
     base::OnceClosure prepare_callback = CreatePrepareReceiver(prepare_result);
     ServiceWorkerFetchDispatcher::FetchCallback fetch_callback =
         CreateResponseReceiver(std::move(done), blob_context_.get(), result);
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index d0de1d7..7ca2858c 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -442,7 +442,7 @@
             ServiceWorkerVersion::FetchHandlerExistence::UNKNOWN);
   ServiceWorkerMetrics::CountControlledPageLoad(
       active_version->site_for_uma(), stripped_url_,
-      resource_type_ == RESOURCE_TYPE_MAIN_FRAME);
+      resource_type_ == ResourceType::kMainFrame);
 
   if (IsResourceTypeFrame(resource_type_))
     provider_host_->AddServiceWorkerToUpdate(active_version);
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
index 9bb4772..f14302d 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler_unittest.cc
@@ -69,7 +69,7 @@
     ServiceWorkerNavigationLoader* MaybeCreateLoader() {
       network::ResourceRequest resource_request;
       resource_request.url = request_->url();
-      resource_request.resource_type = resource_type_;
+      resource_request.resource_type = static_cast<int>(resource_type_);
       resource_request.headers = request()->extra_request_headers();
       handler_->MaybeCreateLoader(resource_request, nullptr,
                                   base::DoNothing(), base::DoNothing());
@@ -180,7 +180,7 @@
 
   // Conduct a main resource load.
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   ServiceWorkerNavigationLoader* loader = test_resources.MaybeCreateLoader();
   ASSERT_TRUE(loader);
 
@@ -211,7 +211,7 @@
 
   // Conduct a main resource load.
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   ServiceWorkerNavigationLoader* loader = test_resources.MaybeCreateLoader();
   ASSERT_TRUE(loader);
 
@@ -238,7 +238,7 @@
 
   // Conduct a main resource load.
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   ServiceWorkerNavigationLoader* loader = test_resources.MaybeCreateLoader();
   ASSERT_TRUE(loader);
 
@@ -267,7 +267,7 @@
 
   // Conduct a main resource load.
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   ServiceWorkerNavigationLoader* job = test_resources.MaybeCreateLoader();
 
   base::RunLoop().RunUntilIdle();
@@ -298,7 +298,7 @@
 
   // Conduct a main resource load.
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   ServiceWorkerNavigationLoader* loader = test_resources.MaybeCreateLoader();
   ASSERT_TRUE(loader);
 
@@ -327,7 +327,7 @@
   registration_ = NULL;
 
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   // Sets an offline header to indicate force loading offline page.
   test_resources.request()->SetExtraRequestHeaderByName(
       "X-Chrome-offline", "reason=download", true);
@@ -348,7 +348,7 @@
   registration_ = NULL;
 
   ServiceWorkerRequestTestResources test_resources(
-      this, GURL("https://host/scope/doc"), RESOURCE_TYPE_MAIN_FRAME);
+      this, GURL("https://host/scope/doc"), ResourceType::kMainFrame);
   // Empty offline header value should not cause fallback.
   test_resources.request()->SetExtraRequestHeaderByName("X-Chrome-offline", "",
                                                         true);
diff --git a/content/browser/service_worker/service_worker_fetch_dispatcher.cc b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
index 51b693d9..5f8b5f3 100644
--- a/content/browser/service_worker/service_worker_fetch_dispatcher.cc
+++ b/content/browser/service_worker/service_worker_fetch_dispatcher.cc
@@ -221,15 +221,13 @@
 using EventType = ServiceWorkerMetrics::EventType;
 EventType ResourceTypeToEventType(ResourceType resource_type) {
   switch (resource_type) {
-    case RESOURCE_TYPE_MAIN_FRAME:
+    case ResourceType::kMainFrame:
       return EventType::FETCH_MAIN_FRAME;
-    case RESOURCE_TYPE_SUB_FRAME:
+    case ResourceType::kSubFrame:
       return EventType::FETCH_SUB_FRAME;
-    case RESOURCE_TYPE_SHARED_WORKER:
+    case ResourceType::kSharedWorker:
       return EventType::FETCH_SHARED_WORKER;
-    case RESOURCE_TYPE_SERVICE_WORKER:
-    case RESOURCE_TYPE_LAST_TYPE:
-      NOTREACHED() << resource_type;
+    case ResourceType::kServiceWorker:
       return EventType::FETCH_SUB_RESOURCE;
     default:
       return EventType::FETCH_SUB_RESOURCE;
@@ -654,8 +652,8 @@
     scoped_refptr<ServiceWorkerContextWrapper> context_wrapper,
     const WebContentsGetter& web_contents_getter,
     base::OnceClosure on_response) {
-  if (resource_type_ != RESOURCE_TYPE_MAIN_FRAME &&
-      resource_type_ != RESOURCE_TYPE_SUB_FRAME) {
+  if (resource_type_ != ResourceType::kMainFrame &&
+      resource_type_ != ResourceType::kSubFrame) {
     return false;
   }
   if (!version_->navigation_preload_state().enabled)
@@ -665,7 +663,8 @@
     return false;
 
   network::ResourceRequest resource_request(original_request);
-  resource_request.resource_type = RESOURCE_TYPE_NAVIGATION_PRELOAD;
+  resource_request.resource_type =
+      static_cast<int>(ResourceType::kNavigationPreload);
   resource_request.skip_service_worker = true;
   resource_request.do_not_prompt_for_login = true;
 
diff --git a/content/browser/service_worker/service_worker_metrics.cc b/content/browser/service_worker/service_worker_metrics.cc
index ddbfb93..d091c7f 100644
--- a/content/browser/service_worker/service_worker_metrics.cc
+++ b/content/browser/service_worker/service_worker_metrics.cc
@@ -732,9 +732,9 @@
     ResourceType resource_type) {
   DCHECK_GE(worker_start.ToInternalValue(), 0);
   DCHECK_GE(response_start.ToInternalValue(), 0);
-  DCHECK(resource_type == RESOURCE_TYPE_MAIN_FRAME ||
-         resource_type == RESOURCE_TYPE_SUB_FRAME);
-  const bool is_main_frame = (resource_type == RESOURCE_TYPE_MAIN_FRAME);
+  DCHECK(resource_type == ResourceType::kMainFrame ||
+         resource_type == ResourceType::kSubFrame);
+  const bool is_main_frame = (resource_type == ResourceType::kMainFrame);
   // TODO(falken): Log sub-frame navigations also.
   if (!is_main_frame) {
     return;
diff --git a/content/browser/service_worker/service_worker_metrics.h b/content/browser/service_worker/service_worker_metrics.h
index f76a462..98328875 100644
--- a/content/browser/service_worker/service_worker_metrics.h
+++ b/content/browser/service_worker/service_worker_metrics.h
@@ -409,8 +409,8 @@
   // |start_situation| describe the preparation needed.
   // |response_start| is the time it took until the navigation preload response
   // started.
-  // |resource_type| must be RESOURCE_TYPE_MAIN_FRAME or
-  // RESOURCE_TYPE_SUB_FRAME.
+  // |resource_type| must be ResourceType::kMainFrame or
+  // ResourceType::kSubFrame.
   CONTENT_EXPORT static void RecordNavigationPreloadResponse(
       base::TimeDelta worker_start,
       base::TimeDelta response_start,
diff --git a/content/browser/service_worker/service_worker_metrics_unittest.cc b/content/browser/service_worker/service_worker_metrics_unittest.cc
index 11651ff..39530b9 100644
--- a/content/browser/service_worker/service_worker_metrics_unittest.cc
+++ b/content/browser/service_worker/service_worker_metrics_unittest.cc
@@ -182,7 +182,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_MAIN_FRAME);
+      ResourceType::kMainFrame);
 
   histogram_tester.ExpectUniqueSample(
       "ServiceWorker.NavPreload.WorkerPreparationType_MainFrame",
@@ -209,7 +209,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_SUB_FRAME);
+      ResourceType::kSubFrame);
 
   ExpectNoNavPreloadMainFrameUMA(histogram_tester);
 }
@@ -224,7 +224,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_MAIN_FRAME);
+      ResourceType::kMainFrame);
 
   histogram_tester.ExpectUniqueSample(
       "ServiceWorker.NavPreload.WorkerPreparationType_MainFrame",
@@ -261,7 +261,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_SUB_FRAME);
+      ResourceType::kSubFrame);
 
   ExpectNoNavPreloadMainFrameUMA(histogram_tester);
 }
@@ -277,7 +277,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_MAIN_FRAME);
+      ResourceType::kMainFrame);
 
   histogram_tester.ExpectUniqueSample(
       "ServiceWorker.NavPreload.WorkerPreparationType_MainFrame",
@@ -320,7 +320,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_MAIN_FRAME);
+      ResourceType::kMainFrame);
   histogram_tester.ExpectUniqueSample(
       "ServiceWorker.NavPreload.WorkerPreparationType_MainFrame",
       static_cast<int>(WorkerPreparationType::STOPPING), 1);
@@ -357,7 +357,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_SUB_FRAME);
+      ResourceType::kSubFrame);
 
   ExpectNoNavPreloadMainFrameUMA(histogram_tester);
 }
@@ -371,7 +371,7 @@
   base::HistogramTester histogram_tester;
   ServiceWorkerMetrics::RecordNavigationPreloadResponse(
       worker_start, response_start, initial_worker_status, start_situation,
-      RESOURCE_TYPE_MAIN_FRAME);
+      ResourceType::kMainFrame);
   histogram_tester.ExpectUniqueSample(
       "ServiceWorker.NavPreload.WorkerPreparationType_MainFrame",
       static_cast<int>(WorkerPreparationType::START_DURING_STARTUP), 1);
diff --git a/content/browser/service_worker/service_worker_navigation_loader.cc b/content/browser/service_worker/service_worker_navigation_loader.cc
index e5f5d22..b7584fad 100644
--- a/content/browser/service_worker/service_worker_navigation_loader.cc
+++ b/content/browser/service_worker/service_worker_navigation_loader.cc
@@ -536,7 +536,8 @@
   DCHECK(!completion_time_.is_null());
 
   // We only record these metrics for top-level navigation.
-  if (resource_request_.resource_type != RESOURCE_TYPE_MAIN_FRAME)
+  if (resource_request_.resource_type !=
+      static_cast<int>(ResourceType::kMainFrame))
     return;
 
   // |fetch_event_timing_| is recorded in renderer so we can get reasonable
diff --git a/content/browser/service_worker/service_worker_new_script_loader.cc b/content/browser/service_worker/service_worker_new_script_loader.cc
index c9185bc..87b928f 100644
--- a/content/browser/service_worker/service_worker_new_script_loader.cc
+++ b/content/browser/service_worker/service_worker_new_script_loader.cc
@@ -99,7 +99,7 @@
   // ServiceWorkerVersion keeps the registration alive while the service
   // worker is starting up, and it must be starting up here.
   DCHECK(registration);
-  const bool is_main_script = resource_type_ == RESOURCE_TYPE_SERVICE_WORKER;
+  const bool is_main_script = resource_type_ == ResourceType::kServiceWorker;
   if (is_main_script) {
     ServiceWorkerVersion* stored_version = registration->waiting_version()
                                                ? registration->waiting_version()
@@ -310,7 +310,7 @@
     return;
   }
 
-  if (resource_type_ == RESOURCE_TYPE_SERVICE_WORKER) {
+  if (resource_type_ == ResourceType::kServiceWorker) {
     if (!blink::IsSupportedJavascriptMimeType(response_head.mime_type)) {
       std::string error_message =
           response_head.mime_type.empty()
@@ -485,7 +485,7 @@
   const net::HttpResponseInfo* info = response_info->http_info.get();
   DCHECK(info);
 
-  if (resource_type_ == RESOURCE_TYPE_SERVICE_WORKER) {
+  if (resource_type_ == ResourceType::kServiceWorker) {
     version_->SetMainScriptHttpResponseInfo(*info);
   }
 
@@ -608,9 +608,9 @@
   // defines importScripts() works only on the initial script evaluation and the
   // install event. Update this check once importScripts() is fixed.
   // (https://crbug.com/719052)
-  DCHECK((resource_type_ == RESOURCE_TYPE_SERVICE_WORKER &&
+  DCHECK((resource_type_ == ResourceType::kServiceWorker &&
           version_->status() == ServiceWorkerVersion::NEW) ||
-         (resource_type_ == RESOURCE_TYPE_SCRIPT &&
+         (resource_type_ == ResourceType::kScript &&
           version_->status() != ServiceWorkerVersion::REDUNDANT));
 }
 #endif  // DCHECK_IS_ON()
diff --git a/content/browser/service_worker/service_worker_new_script_loader.h b/content/browser/service_worker/service_worker_new_script_loader.h
index 06faad8c..424cd8e 100644
--- a/content/browser/service_worker/service_worker_new_script_loader.h
+++ b/content/browser/service_worker/service_worker_new_script_loader.h
@@ -229,8 +229,8 @@
 
   const GURL request_url_;
 
-  // This is RESOURCE_TYPE_SERVICE_WORKER for the main script or
-  // RESOURCE_TYPE_SCRIPT for an imported script.
+  // This is ResourceType::kServiceWorker for the main script or
+  // ResourceType::kScript for an imported script.
   const ResourceType resource_type_;
 
   scoped_refptr<ServiceWorkerVersion> version_;
diff --git a/content/browser/service_worker/service_worker_new_script_loader_unittest.cc b/content/browser/service_worker/service_worker_new_script_loader_unittest.cc
index e07d3bd..152efa9 100644
--- a/content/browser/service_worker/service_worker_new_script_loader_unittest.cc
+++ b/content/browser/service_worker/service_worker_new_script_loader_unittest.cc
@@ -244,9 +244,9 @@
     network::ResourceRequest request;
     request.url = url;
     request.method = "GET";
-    request.resource_type = (url == version_->script_url())
-                                ? RESOURCE_TYPE_SERVICE_WORKER
-                                : RESOURCE_TYPE_SCRIPT;
+    request.resource_type = static_cast<int>((url == version_->script_url())
+                                                 ? ResourceType::kServiceWorker
+                                                 : ResourceType::kScript);
 
     *out_client = std::make_unique<network::TestURLLoaderClient>();
     if (type == ServiceWorkerNewScriptLoader::Type::kResume) {
diff --git a/content/browser/service_worker/service_worker_request_handler.cc b/content/browser/service_worker/service_worker_request_handler.cc
index dad4fe5..95c9697f 100644
--- a/content/browser/service_worker/service_worker_request_handler.cc
+++ b/content/browser/service_worker/service_worker_request_handler.cc
@@ -70,8 +70,8 @@
                                                 std::move(provider_info));
 
   const ResourceType resource_type = request_info.is_main_frame
-                                         ? RESOURCE_TYPE_MAIN_FRAME
-                                         : RESOURCE_TYPE_SUB_FRAME;
+                                         ? ResourceType::kMainFrame
+                                         : ResourceType::kSubFrame;
   const network::mojom::RequestContextFrameType frame_type =
       request_info.is_main_frame
           ? network::mojom::RequestContextFrameType::kTopLevel
@@ -93,8 +93,10 @@
     const network::ResourceRequest& resource_request,
     ServiceWorkerProviderHost* host) {
   DCHECK(host);
-  DCHECK(resource_request.resource_type == RESOURCE_TYPE_WORKER ||
-         resource_request.resource_type == RESOURCE_TYPE_SHARED_WORKER)
+  DCHECK(resource_request.resource_type ==
+             static_cast<int>(ResourceType::kWorker) ||
+         resource_request.resource_type ==
+             static_cast<int>(ResourceType::kSharedWorker))
       << resource_request.resource_type;
 
   // Create the handler even for insecure HTTP since it's used in the
@@ -110,7 +112,7 @@
       resource_request.fetch_redirect_mode, resource_request.fetch_integrity,
       resource_request.keepalive,
       static_cast<ResourceType>(resource_request.resource_type),
-      resource_request.resource_type == RESOURCE_TYPE_WORKER
+      resource_request.resource_type == static_cast<int>(ResourceType::kWorker)
           ? blink::mojom::RequestContextType::WORKER
           : blink::mojom::RequestContextType::SHARED_WORKER,
       resource_request.fetch_frame_type, resource_request.request_body,
diff --git a/content/browser/service_worker/service_worker_script_loader_factory.cc b/content/browser/service_worker/service_worker_script_loader_factory.cc
index 889761a..41214ad0 100644
--- a/content/browser/service_worker/service_worker_script_loader_factory.cc
+++ b/content/browser/service_worker/service_worker_script_loader_factory.cc
@@ -169,10 +169,12 @@
   if (!version)
     return false;
 
-  // Handle only the service worker main script (RESOURCE_TYPE_SERVICE_WORKER)
-  // or importScripts() (RESOURCE_TYPE_SCRIPT).
-  if (resource_request.resource_type != RESOURCE_TYPE_SERVICE_WORKER &&
-      resource_request.resource_type != RESOURCE_TYPE_SCRIPT) {
+  // Handle only the service worker main script (ResourceType::kServiceWorker)
+  // or importScripts() (ResourceType::kScript).
+  if (resource_request.resource_type !=
+          static_cast<int>(ResourceType::kServiceWorker) &&
+      resource_request.resource_type !=
+          static_cast<int>(ResourceType::kScript)) {
     static auto* key = base::debug::AllocateCrashKeyString(
         "swslf_bad_type", base::debug::CrashKeySize::Size32);
     base::debug::SetCrashKeyString(
diff --git a/content/browser/service_worker/service_worker_script_loader_factory_unittest.cc b/content/browser/service_worker/service_worker_script_loader_factory_unittest.cc
index 0e8e130..0f0ddcd 100644
--- a/content/browser/service_worker/service_worker_script_loader_factory_unittest.cc
+++ b/content/browser/service_worker/service_worker_script_loader_factory_unittest.cc
@@ -114,7 +114,8 @@
     network::mojom::URLLoaderPtr loader;
     network::ResourceRequest resource_request;
     resource_request.url = scope_;
-    resource_request.resource_type = RESOURCE_TYPE_SERVICE_WORKER;
+    resource_request.resource_type =
+        static_cast<int>(ResourceType::kServiceWorker);
     factory_->CreateLoaderAndStart(
         mojo::MakeRequest(&loader), 0 /* routing_id */, 0 /* request_id */,
         network::mojom::kURLLoadOptionNone, resource_request,
diff --git a/content/browser/service_worker/service_worker_single_script_update_checker.cc b/content/browser/service_worker/service_worker_single_script_update_checker.cc
index 2c13b62c..41f86214 100644
--- a/content/browser/service_worker/service_worker_single_script_update_checker.cc
+++ b/content/browser/service_worker/service_worker_single_script_update_checker.cc
@@ -82,8 +82,8 @@
       weak_factory_(this) {
   network::ResourceRequest resource_request;
   resource_request.url = url;
-  resource_request.resource_type =
-      is_main_script ? RESOURCE_TYPE_SERVICE_WORKER : RESOURCE_TYPE_SCRIPT;
+  resource_request.resource_type = static_cast<int>(
+      is_main_script ? ResourceType::kServiceWorker : ResourceType::kScript);
   resource_request.do_not_prompt_for_login = true;
   if (is_main_script)
     resource_request.headers.SetHeader("Service-Worker", "script");
diff --git a/content/browser/ssl/ssl_manager.cc b/content/browser/ssl/ssl_manager.cc
index a9fec389..7bf4d27f 100644
--- a/content/browser/ssl/ssl_manager.cc
+++ b/content/browser/ssl/ssl_manager.cc
@@ -159,9 +159,9 @@
   DCHECK(delegate.get());
   DVLOG(1) << "OnSSLCertificateError() cert_error: "
            << net::MapCertStatusToNetError(ssl_info.cert_status)
-           << " resource_type: " << resource_type
-           << " url: " << url.spec()
-           << " cert_status: " << std::hex << ssl_info.cert_status;
+           << " resource_type: " << static_cast<int>(resource_type)
+           << " url: " << url.spec() << " cert_status: " << std::hex
+           << ssl_info.cert_status;
 
   if (BrowserThread::CurrentlyOn(BrowserThread::UI)) {
     HandleSSLErrorOnUI(web_contents_getter, delegate, BrowserThread::UI,
@@ -185,7 +185,7 @@
     int render_frame_id,
     const net::SSLInfo& ssl_info,
     bool fatal) {
-  OnSSLCertificateError(delegate, RESOURCE_TYPE_SUB_RESOURCE, url,
+  OnSSLCertificateError(delegate, ResourceType::kSubResource, url,
                         base::Bind(&WebContentsImpl::FromRenderFrameHostID,
                                    render_process_id, render_frame_id),
                         ssl_info, fatal);
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index c319c1a..1491bf58 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4498,7 +4498,7 @@
                                                              top_frame_origin);
     } else {
       scoped_refptr<net::URLRequestContextGetter> request_context(
-          resource_type == RESOURCE_TYPE_MEDIA
+          resource_type == ResourceType::kMedia
               ? partition->GetMediaURLRequestContext()
               : partition->GetURLRequestContext());
       base::PostTaskWithTraits(
diff --git a/content/browser/web_contents/web_contents_impl_browsertest.cc b/content/browser/web_contents/web_contents_impl_browsertest.cc
index 5c4fe89..b4b07f5 100644
--- a/content/browser/web_contents/web_contents_impl_browsertest.cc
+++ b/content/browser/web_contents/web_contents_impl_browsertest.cc
@@ -813,17 +813,17 @@
   base::TimeTicks after = base::TimeTicks::Now();
   ASSERT_EQ(3U, observer.resource_load_infos().size());
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      page_url, /*referrer=*/GURL(), "GET", content::RESOURCE_TYPE_MAIN_FRAME,
+      page_url, /*referrer=*/GURL(), "GET", content::ResourceType::kMainFrame,
       FILE_PATH_LITERAL("page_with_iframe.html"), "text/html", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/true, before, after));
   SCOPE_TRACED(observer.CheckResourceLoaded(
       embedded_test_server()->GetURL("/image.jpg"),
-      /*referrer=*/page_url, "GET", content::RESOURCE_TYPE_IMAGE,
+      /*referrer=*/page_url, "GET", content::ResourceType::kImage,
       FILE_PATH_LITERAL("image.jpg"), "image/jpeg", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/false, before, after));
   SCOPE_TRACED(observer.CheckResourceLoaded(
       embedded_test_server()->GetURL("/title1.html"),
-      /*referrer=*/page_url, "GET", content::RESOURCE_TYPE_SUB_FRAME,
+      /*referrer=*/page_url, "GET", content::ResourceType::kSubFrame,
       FILE_PATH_LITERAL("title1.html"), "text/html", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/false, before, after));
 }
@@ -843,13 +843,14 @@
   GURL resource_url = embedded_test_server()->GetURL("/cachetime");
   ASSERT_EQ(2U, observer.resource_load_infos().size());
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      page_url, /*referrer=*/GURL(), "GET", content::RESOURCE_TYPE_MAIN_FRAME,
+      page_url, /*referrer=*/GURL(), "GET", content::ResourceType::kMainFrame,
       /*served_file_name=*/FILE_PATH_LITERAL(""), "text/html", "127.0.0.1",
       /*was_cached=*/false,
       /*first_network_request=*/true, before, after));
 
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      resource_url, /*referrer=*/page_url, "GET", content::RESOURCE_TYPE_SCRIPT,
+      resource_url, /*referrer=*/page_url, "GET",
+      content::ResourceType::kScript,
       /*served_file_name=*/FILE_PATH_LITERAL(""), "text/html", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/false, before, after));
   EXPECT_TRUE(
@@ -863,7 +864,7 @@
   after = base::TimeTicks::Now();
   ASSERT_EQ(1U, observer.resource_load_infos().size());
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      page_url, /*referrer=*/GURL(), "GET", content::RESOURCE_TYPE_MAIN_FRAME,
+      page_url, /*referrer=*/GURL(), "GET", content::ResourceType::kMainFrame,
       /*served_file_name=*/FILE_PATH_LITERAL(""), "text/html", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/false, before, after));
   ASSERT_EQ(1U, observer.memory_cached_loaded_urls().size());
@@ -880,11 +881,12 @@
   after = base::TimeTicks::Now();
   ASSERT_EQ(2U, observer.resource_load_infos().size());
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      page_url, /*referrer=*/GURL(), "GET", content::RESOURCE_TYPE_MAIN_FRAME,
+      page_url, /*referrer=*/GURL(), "GET", content::ResourceType::kMainFrame,
       /*served_file_name=*/FILE_PATH_LITERAL(""), "text/html", "127.0.0.1",
       /*was_cached=*/false, /*first_network_request=*/true, before, after));
   SCOPE_TRACED(observer.CheckResourceLoaded(
-      resource_url, /*referrer=*/page_url, "GET", content::RESOURCE_TYPE_SCRIPT,
+      resource_url, /*referrer=*/page_url, "GET",
+      content::ResourceType::kScript,
       /*served_file_name=*/FILE_PATH_LITERAL(""), "text/html", "127.0.0.1",
       /*was_cached=*/true, /*first_network_request=*/false, before, after));
   EXPECT_TRUE(observer.memory_cached_loaded_urls().empty());
diff --git a/content/browser/web_package/signed_exchange_cert_fetcher.cc b/content/browser/web_package/signed_exchange_cert_fetcher.cc
index 84457b8..b6ee73bd 100644
--- a/content/browser/web_package/signed_exchange_cert_fetcher.cc
+++ b/content/browser/web_package/signed_exchange_cert_fetcher.cc
@@ -112,7 +112,8 @@
   // |request_initiator| is used for cookie checks, but cert requests don't use
   // cookies. So just set an opaque Origin.
   resource_request_->request_initiator = url::Origin();
-  resource_request_->resource_type = RESOURCE_TYPE_SUB_RESOURCE;
+  resource_request_->resource_type =
+      static_cast<int>(ResourceType::kSubResource);
   // Cert requests should not send credential informartion, because the default
   // credentials mode of Fetch is "omit".
   resource_request_->load_flags = net::LOAD_DO_NOT_SEND_AUTH_DATA |
diff --git a/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc b/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
index 5895294..8153505 100644
--- a/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
+++ b/content/browser/web_package/signed_exchange_cert_fetcher_unittest.cc
@@ -262,7 +262,7 @@
   ASSERT_TRUE(mock_loader_factory_.client_ptr());
   ASSERT_TRUE(mock_loader_factory_.url_request());
   EXPECT_EQ(url_, mock_loader_factory_.url_request()->url);
-  EXPECT_EQ(RESOURCE_TYPE_SUB_RESOURCE,
+  EXPECT_EQ(static_cast<int>(ResourceType::kSubResource),
             mock_loader_factory_.url_request()->resource_type);
   EXPECT_EQ(net::LOAD_DO_NOT_SEND_AUTH_DATA | net::LOAD_DO_NOT_SAVE_COOKIES |
                 net::LOAD_DO_NOT_SEND_COOKIES,
@@ -320,7 +320,7 @@
 
   ASSERT_TRUE(mock_loader_factory_.url_request());
   EXPECT_EQ(url_, mock_loader_factory_.url_request()->url);
-  EXPECT_EQ(RESOURCE_TYPE_SUB_RESOURCE,
+  EXPECT_EQ(static_cast<int>(ResourceType::kSubResource),
             mock_loader_factory_.url_request()->resource_type);
   EXPECT_EQ(net::LOAD_DO_NOT_SEND_AUTH_DATA | net::LOAD_DO_NOT_SAVE_COOKIES |
                 net::LOAD_DO_NOT_SEND_COOKIES | net::LOAD_DISABLE_CACHE |
diff --git a/content/browser/web_package/signed_exchange_validity_pinger.cc b/content/browser/web_package/signed_exchange_validity_pinger.cc
index 0e2862a0..f6cfef6 100644
--- a/content/browser/web_package/signed_exchange_validity_pinger.cc
+++ b/content/browser/web_package/signed_exchange_validity_pinger.cc
@@ -87,7 +87,8 @@
   auto resource_request = std::make_unique<network::ResourceRequest>();
   resource_request->url = validity_url;
   resource_request->method = "HEAD";
-  resource_request->resource_type = RESOURCE_TYPE_SUB_RESOURCE;
+  resource_request->resource_type =
+      static_cast<int>(ResourceType::kSubResource);
   // Set empty origin as the initiator and attach no cookies.
   resource_request->request_initiator = url::Origin();
   resource_request->allow_credentials = false;
diff --git a/content/browser/worker_host/dedicated_worker_host.cc b/content/browser/worker_host/dedicated_worker_host.cc
index 2b0850bf..9947f43 100644
--- a/content/browser/worker_host/dedicated_worker_host.cc
+++ b/content/browser/worker_host/dedicated_worker_host.cc
@@ -98,7 +98,8 @@
         storage_partition_impl->GetAppCacheService(), process_id_);
 
     WorkerScriptFetchInitiator::Start(
-        process_id_, script_url, request_initiator_origin, RESOURCE_TYPE_WORKER,
+        process_id_, script_url, request_initiator_origin,
+        ResourceType::kWorker,
         storage_partition_impl->GetServiceWorkerContext(),
         appcache_handle_->core(), std::move(blob_url_loader_factory),
         storage_partition_impl,
diff --git a/content/browser/worker_host/shared_worker_service_impl.cc b/content/browser/worker_host/shared_worker_service_impl.cc
index fab8ac8..618f720 100644
--- a/content/browser/worker_host/shared_worker_service_impl.cc
+++ b/content/browser/worker_host/shared_worker_service_impl.cc
@@ -207,7 +207,7 @@
 
   WorkerScriptFetchInitiator::Start(
       process_id, weak_host->instance()->url(),
-      weak_host->instance()->constructor_origin(), RESOURCE_TYPE_SHARED_WORKER,
+      weak_host->instance()->constructor_origin(), ResourceType::kSharedWorker,
       service_worker_context_, appcache_handle_core,
       std::move(blob_url_loader_factory), storage_partition_,
       base::BindOnce(&SharedWorkerServiceImpl::DidCreateScriptLoader,
diff --git a/content/browser/worker_host/worker_script_fetch_initiator.cc b/content/browser/worker_host/worker_script_fetch_initiator.cc
index 09f73a0..33693a1 100644
--- a/content/browser/worker_host/worker_script_fetch_initiator.cc
+++ b/content/browser/worker_host/worker_script_fetch_initiator.cc
@@ -59,9 +59,9 @@
     CompletionCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(storage_partition);
-  DCHECK(resource_type == RESOURCE_TYPE_WORKER ||
-         resource_type == RESOURCE_TYPE_SHARED_WORKER)
-      << resource_type;
+  DCHECK(resource_type == ResourceType::kWorker ||
+         resource_type == ResourceType::kSharedWorker)
+      << static_cast<int>(resource_type);
 
   BrowserContext* browser_context = storage_partition->browser_context();
   ResourceContext* resource_context =
@@ -96,7 +96,7 @@
     resource_request->url = script_url;
     resource_request->site_for_cookies = script_url;
     resource_request->request_initiator = request_initiator;
-    resource_request->resource_type = resource_type;
+    resource_request->resource_type = static_cast<int>(resource_type);
 
     AddAdditionalRequestHeaders(resource_request.get(), browser_context);
   }
diff --git a/content/browser/worker_host/worker_script_loader_factory.cc b/content/browser/worker_host/worker_script_loader_factory.cc
index 433a6a67..b74841f4 100644
--- a/content/browser/worker_host/worker_script_loader_factory.cc
+++ b/content/browser/worker_host/worker_script_loader_factory.cc
@@ -59,10 +59,12 @@
   // When NetworkService is not enabled, this function is called from the
   // renderer process, so use ReportBadMessage() instead of DCHECK().
   if (!base::FeatureList::IsEnabled(network::features::kNetworkService)) {
-    // Handle only the main script. Import scripts (RESOURCE_TYPE_SCRIPT)
+    // Handle only the main script. Import scripts (ResourceType::kScript)
     // should go to the network loader or controller.
-    if (resource_request.resource_type != RESOURCE_TYPE_WORKER &&
-        resource_request.resource_type != RESOURCE_TYPE_SHARED_WORKER) {
+    if (resource_request.resource_type !=
+            static_cast<int>(ResourceType::kWorker) &&
+        resource_request.resource_type !=
+            static_cast<int>(ResourceType::kSharedWorker)) {
       mojo::ReportBadMessage(
           "WorkerScriptLoaderFactory should only get requests for worker "
           "scripts");
@@ -74,8 +76,10 @@
       return;
     }
   }
-  DCHECK(resource_request.resource_type == RESOURCE_TYPE_WORKER ||
-         resource_request.resource_type == RESOURCE_TYPE_SHARED_WORKER)
+  DCHECK(resource_request.resource_type ==
+             static_cast<int>(ResourceType::kWorker) ||
+         resource_request.resource_type ==
+             static_cast<int>(ResourceType::kSharedWorker))
       << resource_request.resource_type;
   DCHECK(!script_loader_);
 
diff --git a/content/browser/worker_host/worker_script_loader_factory_unittest.cc b/content/browser/worker_host/worker_script_loader_factory_unittest.cc
index 65849e8..51746d5 100644
--- a/content/browser/worker_host/worker_script_loader_factory_unittest.cc
+++ b/content/browser/worker_host/worker_script_loader_factory_unittest.cc
@@ -120,7 +120,8 @@
     network::mojom::URLLoaderPtr loader;
     network::ResourceRequest resource_request;
     resource_request.url = url;
-    resource_request.resource_type = RESOURCE_TYPE_SHARED_WORKER;
+    resource_request.resource_type =
+        static_cast<int>(ResourceType::kSharedWorker);
     factory->CreateLoaderAndStart(
         mojo::MakeRequest(&loader), 0 /* routing_id */, 0 /* request_id */,
         network::mojom::kURLLoadOptionNone, resource_request,
diff --git a/content/common/content_param_traits_macros.h b/content/common/content_param_traits_macros.h
index a840303..82b2c54 100644
--- a/content/common/content_param_traits_macros.h
+++ b/content/common/content_param_traits_macros.h
@@ -32,7 +32,7 @@
 IPC_ENUM_TRAITS_MAX_VALUE(blink::mojom::RequestContextType,
                           blink::mojom::RequestContextType::kMaxValue)
 IPC_ENUM_TRAITS_MAX_VALUE(content::ResourceType,
-                          content::RESOURCE_TYPE_LAST_TYPE - 1)
+                          content::ResourceType::kMaxValue)
 IPC_ENUM_TRAITS_MAX_VALUE(blink::WebContentSecurityPolicySource,
                           blink::kWebContentSecurityPolicySourceLast)
 IPC_ENUM_TRAITS_MAX_VALUE(blink::mojom::ContentSecurityPolicyType,
diff --git a/content/common/net/record_load_histograms.cc b/content/common/net/record_load_histograms.cc
index 9ba7460..d7405bb2 100644
--- a/content/common/net/record_load_histograms.cc
+++ b/content/common/net/record_load_histograms.cc
@@ -7,18 +7,19 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/metrics/histogram_macros.h"
 #include "base/strings/string_piece.h"
-#include "content/public/common/resource_type.h"
 #include "net/base/net_errors.h"
 #include "net/base/url_util.h"
 #include "url/gurl.h"
 
 namespace content {
 
-void RecordLoadHistograms(const GURL& url, int resource_type, int net_error) {
+void RecordLoadHistograms(const GURL& url,
+                          ResourceType resource_type,
+                          int net_error) {
   // Requests shouldn't complete with net::ERR_IO_PENDING.
   DCHECK_NE(net::ERR_IO_PENDING, net_error);
 
-  if (resource_type == RESOURCE_TYPE_MAIN_FRAME) {
+  if (resource_type == ResourceType::kMainFrame) {
     base::UmaHistogramSparse("Net.ErrorCodesForMainFrame4", -net_error);
     if (url.SchemeIsCryptographic()) {
       if (url.host_piece() == "www.google.com") {
@@ -32,7 +33,7 @@
       }
     }
   } else {
-    if (resource_type == RESOURCE_TYPE_IMAGE) {
+    if (resource_type == ResourceType::kImage) {
       base::UmaHistogramSparse("Net.ErrorCodesForImages2", -net_error);
     }
     base::UmaHistogramSparse("Net.ErrorCodesForSubresources3", -net_error);
diff --git a/content/common/net/record_load_histograms.h b/content/common/net/record_load_histograms.h
index 851d5cd..dc690a4a 100644
--- a/content/common/net/record_load_histograms.h
+++ b/content/common/net/record_load_histograms.h
@@ -5,6 +5,8 @@
 #ifndef CONTENT_COMMON_NET_RECORD_LOAD_HISTOGRAMS_H_
 #define CONTENT_COMMON_NET_RECORD_LOAD_HISTOGRAMS_H_
 
+#include "content/public/common/resource_type.h"
+
 class GURL;
 
 namespace content {
@@ -12,7 +14,9 @@
 // Logs histograms when a resource destined for a renderer (One with a
 // content::ResourceType) finishes loading, or when a load is aborted. Not used
 // for internal network requests initiated by the browser itself.
-void RecordLoadHistograms(const GURL& url, int resource_type, int net_error);
+void RecordLoadHistograms(const GURL& url,
+                          ResourceType resource_type,
+                          int net_error);
 
 }  // namespace content
 
diff --git a/content/common/service_worker/service_worker_loader_helpers.cc b/content/common/service_worker/service_worker_loader_helpers.cc
index 3237483..892d1abb 100644
--- a/content/common/service_worker/service_worker_loader_helpers.cc
+++ b/content/common/service_worker/service_worker_loader_helpers.cc
@@ -122,7 +122,8 @@
   // If the request is a MAIN_FRAME request, the first-party URL gets
   // updated on redirects.
   const net::URLRequest::FirstPartyURLPolicy first_party_url_policy =
-      original_request.resource_type == RESOURCE_TYPE_MAIN_FRAME
+      original_request.resource_type ==
+              static_cast<int>(ResourceType::kMainFrame)
           ? net::URLRequest::UPDATE_FIRST_PARTY_URL_ON_REDIRECT
           : net::URLRequest::NEVER_CHANGE_FIRST_PARTY_URL;
   return net::RedirectInfo::ComputeRedirectInfo(
diff --git a/content/common/service_worker/service_worker_utils.cc b/content/common/service_worker/service_worker_utils.cc
index 745b75ed..1624d66 100644
--- a/content/common/service_worker/service_worker_utils.cc
+++ b/content/common/service_worker/service_worker_utils.cc
@@ -48,9 +48,9 @@
 bool ServiceWorkerUtils::IsMainResourceType(ResourceType type) {
   // When PlzDedicatedWorker is enabled, a dedicated worker script is considered
   // to be a main resource.
-  if (type == RESOURCE_TYPE_WORKER)
+  if (type == ResourceType::kWorker)
     return blink::features::IsPlzDedicatedWorkerEnabled();
-  return IsResourceTypeFrame(type) || type == RESOURCE_TYPE_SHARED_WORKER;
+  return IsResourceTypeFrame(type) || type == ResourceType::kSharedWorker;
 }
 
 // static
diff --git a/content/public/browser/site_isolation_policy.cc b/content/public/browser/site_isolation_policy.cc
index 0f23b9c..52b515f 100644
--- a/content/public/browser/site_isolation_policy.cc
+++ b/content/public/browser/site_isolation_policy.cc
@@ -76,8 +76,10 @@
   }
 
   params->is_corb_enabled = true;
-  params->corb_detachable_resource_type = RESOURCE_TYPE_PREFETCH;
-  params->corb_excluded_resource_type = RESOURCE_TYPE_PLUGIN_RESOURCE;
+  params->corb_detachable_resource_type =
+      static_cast<int>(ResourceType::kPrefetch);
+  params->corb_excluded_resource_type =
+      static_cast<int>(ResourceType::kPluginResource);
 }
 
 // static
diff --git a/content/public/common/resource_intercept_policy.h b/content/public/common/resource_intercept_policy.h
index 6f5af52..286afc5 100644
--- a/content/public/common/resource_intercept_policy.h
+++ b/content/public/common/resource_intercept_policy.h
@@ -22,7 +22,7 @@
   // Disallow any type of interceptions.
   //
   // TODO(crbug/930951): the current implementation doesn't completely honor
-  // this description. When the resource type is |RESOURCE_TYPE_OBJECT|, mime
+  // this description. When the resource type is |ResourceType::kObject|, mime
   // sniffing would still check the existence of plugins and may intercept it as
   // a stream.
   kAllowNone = 1,
diff --git a/content/public/common/resource_type.cc b/content/public/common/resource_type.cc
index 6ff7fb6..f966833 100644
--- a/content/public/common/resource_type.cc
+++ b/content/public/common/resource_type.cc
@@ -7,7 +7,7 @@
 namespace content {
 
 bool IsResourceTypeFrame(ResourceType type) {
-  return type == RESOURCE_TYPE_MAIN_FRAME || type == RESOURCE_TYPE_SUB_FRAME;
+  return type == ResourceType::kMainFrame || type == ResourceType::kSubFrame;
 }
 
 }  // namespace content
diff --git a/content/public/common/resource_type.h b/content/public/common/resource_type.h
index 8c87f6f..24084d75d 100644
--- a/content/public/common/resource_type.h
+++ b/content/public/common/resource_type.h
@@ -10,30 +10,27 @@
 namespace content {
 
 // Used in histograms; explicitly assign each type and do not re-use old values.
-enum ResourceType {
-  RESOURCE_TYPE_MAIN_FRAME = 0,       // top level page
-  RESOURCE_TYPE_SUB_FRAME = 1,        // frame or iframe
-  RESOURCE_TYPE_STYLESHEET = 2,       // a CSS stylesheet
-  RESOURCE_TYPE_SCRIPT = 3,           // an external script
-  RESOURCE_TYPE_IMAGE = 4,            // an image (jpg/gif/png/etc)
-  RESOURCE_TYPE_FONT_RESOURCE = 5,    // a font
-  RESOURCE_TYPE_SUB_RESOURCE = 6,     // an "other" subresource.
-  RESOURCE_TYPE_OBJECT = 7,           // an object (or embed) tag for a plugin.
-  RESOURCE_TYPE_MEDIA = 8,            // a media resource.
-  RESOURCE_TYPE_WORKER = 9,           // the main resource of a dedicated
-                                      // worker.
-  RESOURCE_TYPE_SHARED_WORKER = 10,   // the main resource of a shared worker.
-  RESOURCE_TYPE_PREFETCH = 11,        // an explicitly requested prefetch
-  RESOURCE_TYPE_FAVICON = 12,         // a favicon
-  RESOURCE_TYPE_XHR = 13,             // a XMLHttpRequest
-  RESOURCE_TYPE_PING = 14,            // a ping request for <a ping>/sendBeacon.
-  RESOURCE_TYPE_SERVICE_WORKER = 15,  // the main resource of a service worker.
-  RESOURCE_TYPE_CSP_REPORT = 16,      // a report of Content Security Policy
-                                      // violations.
-  RESOURCE_TYPE_PLUGIN_RESOURCE = 17,  // a resource that a plugin requested.
-  RESOURCE_TYPE_NAVIGATION_PRELOAD =
-      18,  // a service worker navigation preload request.
-  RESOURCE_TYPE_LAST_TYPE
+enum class ResourceType {
+  kMainFrame = 0,           // top level page
+  kSubFrame = 1,            // frame or iframe
+  kStylesheet = 2,          // a CSS stylesheet
+  kScript = 3,              // an external script
+  kImage = 4,               // an image (jpg/gif/png/etc)
+  kFontResource = 5,        // a font
+  kSubResource = 6,         // an "other" subresource.
+  kObject = 7,              // an object (or embed) tag for a plugin.
+  kMedia = 8,               // a media resource.
+  kWorker = 9,              // the main resource of a dedicated worker.
+  kSharedWorker = 10,       // the main resource of a shared worker.
+  kPrefetch = 11,           // an explicitly requested prefetch
+  kFavicon = 12,            // a favicon
+  kXhr = 13,                // a XMLHttpRequest
+  kPing = 14,               // a ping request for <a ping>/sendBeacon.
+  kServiceWorker = 15,      // the main resource of a service worker.
+  kCspReport = 16,          // a report of Content Security Policy violations.
+  kPluginResource = 17,     // a resource that a plugin requested.
+  kNavigationPreload = 18,  // a service worker navigation preload request.
+  kMaxValue = kNavigationPreload,
 };
 
 CONTENT_EXPORT bool IsResourceTypeFrame(ResourceType type);
diff --git a/content/public/common/resource_type.mojom b/content/public/common/resource_type.mojom
index 35295cd..6d3c442 100644
--- a/content/public/common/resource_type.mojom
+++ b/content/public/common/resource_type.mojom
@@ -6,27 +6,23 @@
 
 // This needs to match the definition of content::ResourceType.
 enum ResourceType {
-  RESOURCE_TYPE_MAIN_FRAME = 0,       // top level page
-  RESOURCE_TYPE_SUB_FRAME = 1,        // frame or iframe
-  RESOURCE_TYPE_STYLESHEET = 2,       // a CSS stylesheet
-  RESOURCE_TYPE_SCRIPT = 3,           // an external script
-  RESOURCE_TYPE_IMAGE = 4,            // an image (jpg/gif/png/etc)
-  RESOURCE_TYPE_FONT_RESOURCE = 5,    // a font
-  RESOURCE_TYPE_SUB_RESOURCE = 6,     // an "other" subresource.
-  RESOURCE_TYPE_OBJECT = 7,           // an object (or embed) tag for a plugin.
-  RESOURCE_TYPE_MEDIA = 8,            // a media resource.
-  RESOURCE_TYPE_WORKER = 9,           // the main resource of a dedicated
-                                      // worker.
-  RESOURCE_TYPE_SHARED_WORKER = 10,   // the main resource of a shared worker.
-  RESOURCE_TYPE_PREFETCH = 11,        // an explicitly requested prefetch
-  RESOURCE_TYPE_FAVICON = 12,         // a favicon
-  RESOURCE_TYPE_XHR = 13,             // a XMLHttpRequest
-  RESOURCE_TYPE_PING = 14,            // a ping request for <a ping>/sendBeacon.
-  RESOURCE_TYPE_SERVICE_WORKER = 15,  // the main resource of a service worker.
-  RESOURCE_TYPE_CSP_REPORT = 16,      // a report of Content Security Policy
-                                      // violations.
-  RESOURCE_TYPE_PLUGIN_RESOURCE = 17, // a resource that a plugin requested.
-  RESOURCE_TYPE_NAVIGATION_PRELOAD =
-      18, // a service worker navigation preload request.
-  RESOURCE_TYPE_LAST_TYPE
+  kMainFrame = 0,           // top level page
+  kSubFrame = 1,            // frame or iframe
+  kStylesheet = 2,          // a CSS stylesheet
+  kScript = 3,              // an external script
+  kImage = 4,               // an image (jpg/gif/png/etc)
+  kFontResource = 5,        // a font
+  kSubResource = 6,         // an "other" subresource.
+  kObject = 7,              // an object (or embed) tag for a plugin.
+  kMedia = 8,               // a media resource.
+  kWorker = 9,              // the main resource of a dedicated worker.
+  kSharedWorker = 10,       // the main resource of a shared worker.
+  kPrefetch = 11,           // an explicitly requested prefetch
+  kFavicon = 12,            // a favicon
+  kXhr = 13,                // a XMLHttpRequest
+  kPing = 14,               // a ping request for <a ping>/sendBeacon.
+  kServiceWorker = 15,      // the main resource of a service worker.
+  kCspReport = 16,          // a report of Content Security Policy violations.
+  kPluginResource = 17,     // a resource that a plugin requested.
+  kNavigationPreload = 18,  // a service worker navigation preload request.
 };
diff --git a/content/public/common/resource_type_struct_traits.cc b/content/public/common/resource_type_struct_traits.cc
index 414852d..239ba20 100644
--- a/content/public/common/resource_type_struct_traits.cc
+++ b/content/public/common/resource_type_struct_traits.cc
@@ -11,50 +11,48 @@
 EnumTraits<content::mojom::ResourceType, content::ResourceType>::ToMojom(
     content::ResourceType input) {
   switch (input) {
-    case content::RESOURCE_TYPE_MAIN_FRAME:
-      return content::mojom::ResourceType::RESOURCE_TYPE_MAIN_FRAME;
-    case content::RESOURCE_TYPE_SUB_FRAME:
-      return content::mojom::ResourceType::RESOURCE_TYPE_SUB_FRAME;
-    case content::RESOURCE_TYPE_STYLESHEET:
-      return content::mojom::ResourceType::RESOURCE_TYPE_STYLESHEET;
-    case content::RESOURCE_TYPE_SCRIPT:
-      return content::mojom::ResourceType::RESOURCE_TYPE_SCRIPT;
-    case content::RESOURCE_TYPE_IMAGE:
-      return content::mojom::ResourceType::RESOURCE_TYPE_IMAGE;
-    case content::RESOURCE_TYPE_FONT_RESOURCE:
-      return content::mojom::ResourceType::RESOURCE_TYPE_FONT_RESOURCE;
-    case content::RESOURCE_TYPE_SUB_RESOURCE:
-      return content::mojom::ResourceType::RESOURCE_TYPE_SUB_RESOURCE;
-    case content::RESOURCE_TYPE_OBJECT:
-      return content::mojom::ResourceType::RESOURCE_TYPE_OBJECT;
-    case content::RESOURCE_TYPE_MEDIA:
-      return content::mojom::ResourceType::RESOURCE_TYPE_MEDIA;
-    case content::RESOURCE_TYPE_WORKER:
-      return content::mojom::ResourceType::RESOURCE_TYPE_WORKER;
-    case content::RESOURCE_TYPE_SHARED_WORKER:
-      return content::mojom::ResourceType::RESOURCE_TYPE_SHARED_WORKER;
-    case content::RESOURCE_TYPE_PREFETCH:
-      return content::mojom::ResourceType::RESOURCE_TYPE_PREFETCH;
-    case content::RESOURCE_TYPE_FAVICON:
-      return content::mojom::ResourceType::RESOURCE_TYPE_FAVICON;
-    case content::RESOURCE_TYPE_XHR:
-      return content::mojom::ResourceType::RESOURCE_TYPE_XHR;
-    case content::RESOURCE_TYPE_PING:
-      return content::mojom::ResourceType::RESOURCE_TYPE_PING;
-    case content::RESOURCE_TYPE_SERVICE_WORKER:
-      return content::mojom::ResourceType::RESOURCE_TYPE_SERVICE_WORKER;
-    case content::RESOURCE_TYPE_CSP_REPORT:
-      return content::mojom::ResourceType::RESOURCE_TYPE_CSP_REPORT;
-    case content::RESOURCE_TYPE_PLUGIN_RESOURCE:
-      return content::mojom::ResourceType::RESOURCE_TYPE_PLUGIN_RESOURCE;
-    case content::RESOURCE_TYPE_NAVIGATION_PRELOAD:
-      return content::mojom::ResourceType::RESOURCE_TYPE_NAVIGATION_PRELOAD;
-    case content::RESOURCE_TYPE_LAST_TYPE:
-      return content::mojom::ResourceType::RESOURCE_TYPE_LAST_TYPE;
+    case content::ResourceType::kMainFrame:
+      return content::mojom::ResourceType::kMainFrame;
+    case content::ResourceType::kSubFrame:
+      return content::mojom::ResourceType::kSubFrame;
+    case content::ResourceType::kStylesheet:
+      return content::mojom::ResourceType::kStylesheet;
+    case content::ResourceType::kScript:
+      return content::mojom::ResourceType::kScript;
+    case content::ResourceType::kImage:
+      return content::mojom::ResourceType::kImage;
+    case content::ResourceType::kFontResource:
+      return content::mojom::ResourceType::kFontResource;
+    case content::ResourceType::kSubResource:
+      return content::mojom::ResourceType::kSubResource;
+    case content::ResourceType::kObject:
+      return content::mojom::ResourceType::kObject;
+    case content::ResourceType::kMedia:
+      return content::mojom::ResourceType::kMedia;
+    case content::ResourceType::kWorker:
+      return content::mojom::ResourceType::kWorker;
+    case content::ResourceType::kSharedWorker:
+      return content::mojom::ResourceType::kSharedWorker;
+    case content::ResourceType::kPrefetch:
+      return content::mojom::ResourceType::kPrefetch;
+    case content::ResourceType::kFavicon:
+      return content::mojom::ResourceType::kFavicon;
+    case content::ResourceType::kXhr:
+      return content::mojom::ResourceType::kXhr;
+    case content::ResourceType::kPing:
+      return content::mojom::ResourceType::kPing;
+    case content::ResourceType::kServiceWorker:
+      return content::mojom::ResourceType::kServiceWorker;
+    case content::ResourceType::kCspReport:
+      return content::mojom::ResourceType::kCspReport;
+    case content::ResourceType::kPluginResource:
+      return content::mojom::ResourceType::kPluginResource;
+    case content::ResourceType::kNavigationPreload:
+      return content::mojom::ResourceType::kNavigationPreload;
   }
 
   NOTREACHED();
-  return content::mojom::ResourceType::RESOURCE_TYPE_MAIN_FRAME;
+  return content::mojom::ResourceType::kMainFrame;
 }
 // static
 bool EnumTraits<content::mojom::ResourceType, content::ResourceType>::FromMojom(
@@ -62,65 +60,62 @@
     content::mojom::ResourceType input,
     content::ResourceType* output) {
   switch (input) {
-    case content::mojom::ResourceType::RESOURCE_TYPE_MAIN_FRAME:
-      *output = content::RESOURCE_TYPE_MAIN_FRAME;
+    case content::mojom::ResourceType::kMainFrame:
+      *output = content::ResourceType::kMainFrame;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_SUB_FRAME:
-      *output = content::RESOURCE_TYPE_SUB_FRAME;
+    case content::mojom::ResourceType::kSubFrame:
+      *output = content::ResourceType::kSubFrame;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_STYLESHEET:
-      *output = content::RESOURCE_TYPE_STYLESHEET;
+    case content::mojom::ResourceType::kStylesheet:
+      *output = content::ResourceType::kStylesheet;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_SCRIPT:
-      *output = content::RESOURCE_TYPE_SCRIPT;
+    case content::mojom::ResourceType::kScript:
+      *output = content::ResourceType::kScript;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_IMAGE:
-      *output = content::RESOURCE_TYPE_IMAGE;
+    case content::mojom::ResourceType::kImage:
+      *output = content::ResourceType::kImage;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_FONT_RESOURCE:
-      *output = content::RESOURCE_TYPE_FONT_RESOURCE;
+    case content::mojom::ResourceType::kFontResource:
+      *output = content::ResourceType::kFontResource;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_SUB_RESOURCE:
-      *output = content::RESOURCE_TYPE_SUB_RESOURCE;
+    case content::mojom::ResourceType::kSubResource:
+      *output = content::ResourceType::kSubResource;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_OBJECT:
-      *output = content::RESOURCE_TYPE_OBJECT;
+    case content::mojom::ResourceType::kObject:
+      *output = content::ResourceType::kObject;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_MEDIA:
-      *output = content::RESOURCE_TYPE_MEDIA;
+    case content::mojom::ResourceType::kMedia:
+      *output = content::ResourceType::kMedia;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_WORKER:
-      *output = content::RESOURCE_TYPE_WORKER;
+    case content::mojom::ResourceType::kWorker:
+      *output = content::ResourceType::kWorker;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_SHARED_WORKER:
-      *output = content::RESOURCE_TYPE_SHARED_WORKER;
+    case content::mojom::ResourceType::kSharedWorker:
+      *output = content::ResourceType::kSharedWorker;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_PREFETCH:
-      *output = content::RESOURCE_TYPE_PREFETCH;
+    case content::mojom::ResourceType::kPrefetch:
+      *output = content::ResourceType::kPrefetch;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_FAVICON:
-      *output = content::RESOURCE_TYPE_FAVICON;
+    case content::mojom::ResourceType::kFavicon:
+      *output = content::ResourceType::kFavicon;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_XHR:
-      *output = content::RESOURCE_TYPE_XHR;
+    case content::mojom::ResourceType::kXhr:
+      *output = content::ResourceType::kXhr;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_PING:
-      *output = content::RESOURCE_TYPE_PING;
+    case content::mojom::ResourceType::kPing:
+      *output = content::ResourceType::kPing;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_SERVICE_WORKER:
-      *output = content::RESOURCE_TYPE_SERVICE_WORKER;
+    case content::mojom::ResourceType::kServiceWorker:
+      *output = content::ResourceType::kServiceWorker;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_CSP_REPORT:
-      *output = content::RESOURCE_TYPE_CSP_REPORT;
+    case content::mojom::ResourceType::kCspReport:
+      *output = content::ResourceType::kCspReport;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_PLUGIN_RESOURCE:
-      *output = content::RESOURCE_TYPE_PLUGIN_RESOURCE;
+    case content::mojom::ResourceType::kPluginResource:
+      *output = content::ResourceType::kPluginResource;
       return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_NAVIGATION_PRELOAD:
-      *output = content::RESOURCE_TYPE_NAVIGATION_PRELOAD;
-      return true;
-    case content::mojom::ResourceType::RESOURCE_TYPE_LAST_TYPE:
-      *output = content::RESOURCE_TYPE_LAST_TYPE;
+    case content::mojom::ResourceType::kNavigationPreload:
+      *output = content::ResourceType::kNavigationPreload;
       return true;
   }
   return false;
diff --git a/content/renderer/fetchers/resource_fetcher_impl.cc b/content/renderer/fetchers/resource_fetcher_impl.cc
index f5bda17..50fda83 100644
--- a/content/renderer/fetchers/resource_fetcher_impl.cc
+++ b/content/renderer/fetchers/resource_fetcher_impl.cc
@@ -320,7 +320,8 @@
     SetHeader(kAccessControlAllowOriginHeader,
               blink::WebSecurityOrigin::CreateUnique().ToString().Ascii());
   }
-  request_.resource_type = RequestContextToResourceType(request_context);
+  request_.resource_type =
+      static_cast<int>(RequestContextToResourceType(request_context));
 
   client_ = std::make_unique<ClientImpl>(
       this, std::move(callback), maximum_download_size,
diff --git a/content/renderer/loader/child_url_loader_factory_bundle.cc b/content/renderer/loader/child_url_loader_factory_bundle.cc
index e1a07d2..337d720 100644
--- a/content/renderer/loader/child_url_loader_factory_bundle.cc
+++ b/content/renderer/loader/child_url_loader_factory_bundle.cc
@@ -221,7 +221,7 @@
   // special prefetch handling.
   // TODO(horo): Move this routing logic to network service, when we will have
   // the special prefetch handling in network service.
-  if ((request.resource_type == RESOURCE_TYPE_PREFETCH) &&
+  if ((request.resource_type == static_cast<int>(ResourceType::kPrefetch)) &&
       prefetch_loader_factory_) {
     prefetch_loader_factory_->CreateLoaderAndStart(
         std::move(loader), routing_id, request_id, options, request,
diff --git a/content/renderer/loader/navigation_body_loader.cc b/content/renderer/loader/navigation_body_loader.cc
index 66c8f934..5a3271a46 100644
--- a/content/renderer/loader/navigation_body_loader.cc
+++ b/content/renderer/loader/navigation_body_loader.cc
@@ -37,7 +37,7 @@
       !commit_params.original_method.empty() ? commit_params.original_method
                                              : common_params.method,
       common_params.referrer.url,
-      is_main_frame ? RESOURCE_TYPE_MAIN_FRAME : RESOURCE_TYPE_SUB_FRAME);
+      is_main_frame ? ResourceType::kMainFrame : ResourceType::kSubFrame);
 
   size_t redirect_count = commit_params.redirect_response.size();
   navigation_params->redirects.reserve(redirect_count);
diff --git a/content/renderer/loader/resource_dispatcher.cc b/content/renderer/loader/resource_dispatcher.cc
index 962ddf90..3d9d92ac 100644
--- a/content/renderer/loader/resource_dispatcher.cc
+++ b/content/renderer/loader/resource_dispatcher.cc
@@ -503,7 +503,7 @@
   CheckSchemeForReferrerPolicy(*request);
 
 #if defined(OS_ANDROID)
-  if (request->resource_type != RESOURCE_TYPE_MAIN_FRAME &&
+  if (request->resource_type != static_cast<int>(ResourceType::kMainFrame) &&
       request->has_user_gesture) {
     NotifyUpdateUserGestureCarryoverInfo(request->render_frame_id);
   }
@@ -528,8 +528,9 @@
   pending_request->previews_state = request->previews_state;
 
   if (override_url_loader) {
-    DCHECK(request->resource_type == RESOURCE_TYPE_WORKER ||
-           request->resource_type == RESOURCE_TYPE_SHARED_WORKER)
+    DCHECK(request->resource_type == static_cast<int>(ResourceType::kWorker) ||
+           request->resource_type ==
+               static_cast<int>(ResourceType::kSharedWorker))
         << request->resource_type;
 
     // Redirect checks are handled by NavigationURLLoaderImpl, so it's safe to
diff --git a/content/renderer/loader/resource_dispatcher_unittest.cc b/content/renderer/loader/resource_dispatcher_unittest.cc
index dab6a80..e937c1c 100644
--- a/content/renderer/loader/resource_dispatcher_unittest.cc
+++ b/content/renderer/loader/resource_dispatcher_unittest.cc
@@ -118,7 +118,7 @@
     request->url = GURL(kTestPageUrl);
     request->site_for_cookies = GURL(kTestPageUrl);
     request->referrer_policy = Referrer::GetDefaultReferrerPolicy();
-    request->resource_type = RESOURCE_TYPE_SUB_RESOURCE;
+    request->resource_type = static_cast<int>(ResourceType::kSubResource);
     request->priority = net::LOW;
     request->fetch_request_mode = network::mojom::FetchRequestMode::kNoCors;
     request->fetch_frame_type = network::mojom::RequestContextFrameType::kNone;
diff --git a/content/renderer/loader/resource_load_stats.cc b/content/renderer/loader/resource_load_stats.cc
index 0ce9338..d0567fd 100644
--- a/content/renderer/loader/resource_load_stats.cc
+++ b/content/renderer/loader/resource_load_stats.cc
@@ -145,7 +145,7 @@
     const network::ResourceResponseHead& response_head,
     PreviewsState previews_state) {
   if (response_head.network_accessed) {
-    if (resource_load_info->resource_type == RESOURCE_TYPE_MAIN_FRAME) {
+    if (resource_load_info->resource_type == ResourceType::kMainFrame) {
       UMA_HISTOGRAM_ENUMERATION("Net.ConnectionInfo.MainFrame",
                                 response_head.connection_info,
                                 net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS);
diff --git a/content/renderer/loader/web_url_loader_impl.cc b/content/renderer/loader/web_url_loader_impl.cc
index 20625ce..49db8a6 100644
--- a/content/renderer/loader/web_url_loader_impl.cc
+++ b/content/renderer/loader/web_url_loader_impl.cc
@@ -656,14 +656,18 @@
 
   resource_request->referrer_policy =
       Referrer::ReferrerPolicyForUrlRequest(request.GetReferrerPolicy());
-  resource_request->resource_type = WebURLRequestToResourceType(request);
+  resource_request->resource_type =
+      static_cast<int>(WebURLRequestToResourceType(request));
 
   resource_request->headers = GetWebURLRequestHeaders(request);
-  if (resource_request->resource_type == RESOURCE_TYPE_STYLESHEET) {
+  if (resource_request->resource_type ==
+      static_cast<int>(ResourceType::kStylesheet)) {
     resource_request->headers.SetHeader(network::kAcceptHeader,
                                         kStylesheetAcceptHeader);
-  } else if (resource_request->resource_type == RESOURCE_TYPE_FAVICON ||
-             resource_request->resource_type == RESOURCE_TYPE_IMAGE) {
+  } else if (resource_request->resource_type ==
+                 static_cast<int>(ResourceType::kFavicon) ||
+             resource_request->resource_type ==
+                 static_cast<int>(ResourceType::kImage)) {
     resource_request->headers.SetHeader(network::kAcceptHeader,
                                         kImageAcceptHeader);
   } else {
@@ -687,8 +691,10 @@
         WebString(request.GetPurposeHeader()).Utf8());
   }
 
-  if (resource_request->resource_type == RESOURCE_TYPE_PREFETCH ||
-      resource_request->resource_type == RESOURCE_TYPE_FAVICON) {
+  if (resource_request->resource_type ==
+          static_cast<int>(ResourceType::kPrefetch) ||
+      resource_request->resource_type ==
+          static_cast<int>(ResourceType::kFavicon)) {
     resource_request->do_not_prompt_for_login = true;
   }
 
@@ -761,8 +767,8 @@
   if (request.IsDownloadToNetworkCacheOnly()) {
     peer = std::make_unique<SinkPeer>(this);
   } else {
-    const bool discard_body =
-        (resource_request->resource_type == RESOURCE_TYPE_PREFETCH);
+    const bool discard_body = (resource_request->resource_type ==
+                               static_cast<int>(ResourceType::kPrefetch));
     peer =
         std::make_unique<WebURLLoaderImpl::RequestPeerImpl>(this, discard_body);
   }
diff --git a/content/renderer/loader/web_url_request_util.cc b/content/renderer/loader/web_url_request_util.cc
index 213837d..084a641f 100644
--- a/content/renderer/loader/web_url_request_util.cc
+++ b/content/renderer/loader/web_url_request_util.cc
@@ -113,82 +113,82 @@
   switch (request_context) {
     // CSP report
     case blink::mojom::RequestContextType::CSP_REPORT:
-      return RESOURCE_TYPE_CSP_REPORT;
+      return ResourceType::kCspReport;
 
     // Favicon
     case blink::mojom::RequestContextType::FAVICON:
-      return RESOURCE_TYPE_FAVICON;
+      return ResourceType::kFavicon;
 
     // Font
     case blink::mojom::RequestContextType::FONT:
-      return RESOURCE_TYPE_FONT_RESOURCE;
+      return ResourceType::kFontResource;
 
     // Image
     case blink::mojom::RequestContextType::IMAGE:
     case blink::mojom::RequestContextType::IMAGE_SET:
-      return RESOURCE_TYPE_IMAGE;
+      return ResourceType::kImage;
 
     // Media
     case blink::mojom::RequestContextType::AUDIO:
     case blink::mojom::RequestContextType::VIDEO:
-      return RESOURCE_TYPE_MEDIA;
+      return ResourceType::kMedia;
 
     // Object
     case blink::mojom::RequestContextType::EMBED:
     case blink::mojom::RequestContextType::OBJECT:
-      return RESOURCE_TYPE_OBJECT;
+      return ResourceType::kObject;
 
     // Ping
     case blink::mojom::RequestContextType::BEACON:
     case blink::mojom::RequestContextType::PING:
-      return RESOURCE_TYPE_PING;
+      return ResourceType::kPing;
 
     // Subresource of plugins
     case blink::mojom::RequestContextType::PLUGIN:
-      return RESOURCE_TYPE_PLUGIN_RESOURCE;
+      return ResourceType::kPluginResource;
 
     // Prefetch
     case blink::mojom::RequestContextType::PREFETCH:
-      return RESOURCE_TYPE_PREFETCH;
+      return ResourceType::kPrefetch;
 
     // Script
     case blink::mojom::RequestContextType::IMPORT:
     case blink::mojom::RequestContextType::SCRIPT:
-      return RESOURCE_TYPE_SCRIPT;
+      return ResourceType::kScript;
 
     // Style
     case blink::mojom::RequestContextType::XSLT:
     case blink::mojom::RequestContextType::STYLE:
-      return RESOURCE_TYPE_STYLESHEET;
+      return ResourceType::kStylesheet;
 
     // Subresource
     case blink::mojom::RequestContextType::DOWNLOAD:
     case blink::mojom::RequestContextType::MANIFEST:
     case blink::mojom::RequestContextType::SUBRESOURCE:
-      return RESOURCE_TYPE_SUB_RESOURCE;
+      return ResourceType::kSubResource;
 
     // TextTrack
     case blink::mojom::RequestContextType::TRACK:
-      return RESOURCE_TYPE_MEDIA;
+      return ResourceType::kMedia;
 
     // Workers
     case blink::mojom::RequestContextType::SERVICE_WORKER:
-      return RESOURCE_TYPE_SERVICE_WORKER;
+      return ResourceType::kServiceWorker;
     case blink::mojom::RequestContextType::SHARED_WORKER:
-      return RESOURCE_TYPE_SHARED_WORKER;
+      return ResourceType::kSharedWorker;
     case blink::mojom::RequestContextType::WORKER:
-      return RESOURCE_TYPE_WORKER;
+      return ResourceType::kWorker;
 
     // Unspecified
     case blink::mojom::RequestContextType::INTERNAL:
     case blink::mojom::RequestContextType::UNSPECIFIED:
-      return RESOURCE_TYPE_SUB_RESOURCE;
+      return ResourceType::kSubResource;
 
     // XHR
     case blink::mojom::RequestContextType::EVENT_SOURCE:
     case blink::mojom::RequestContextType::FETCH:
     case blink::mojom::RequestContextType::XML_HTTP_REQUEST:
-      return RESOURCE_TYPE_XHR;
+      return ResourceType::kXhr;
 
     // Navigation requests should not go through WebURLLoader.
     case blink::mojom::RequestContextType::FORM:
@@ -197,11 +197,11 @@
     case blink::mojom::RequestContextType::FRAME:
     case blink::mojom::RequestContextType::IFRAME:
       NOTREACHED();
-      return RESOURCE_TYPE_SUB_RESOURCE;
+      return ResourceType::kSubResource;
 
     default:
       NOTREACHED();
-      return RESOURCE_TYPE_SUB_RESOURCE;
+      return ResourceType::kSubResource;
   }
 }
 
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index c4321ec..c75b617 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -5332,7 +5332,7 @@
   extra_data->set_frame_request_blocker(frame_request_blocker_);
 
   request.SetDownloadToNetworkCacheOnly(
-      is_for_no_state_prefetch && resource_type != RESOURCE_TYPE_MAIN_FRAME);
+      is_for_no_state_prefetch && resource_type != ResourceType::kMainFrame);
 
   // The RenderThreadImpl or its URLLoaderThrottleProvider member may not be
   // valid in some tests.
@@ -7102,7 +7102,7 @@
   // else in blink.
   WillSendRequestInternal(
       request,
-      frame_->Parent() ? RESOURCE_TYPE_SUB_FRAME : RESOURCE_TYPE_MAIN_FRAME,
+      frame_->Parent() ? ResourceType::kSubFrame : ResourceType::kMainFrame,
       document_state, transition_type);
 
   if (!info->url_request.GetExtraData())
diff --git a/content/renderer/service_worker/service_worker_provider_context_unittest.cc b/content/renderer/service_worker/service_worker_provider_context_unittest.cc
index 263e08c..96f859aa 100644
--- a/content/renderer/service_worker/service_worker_provider_context_unittest.cc
+++ b/content/renderer/service_worker/service_worker_provider_context_unittest.cc
@@ -278,7 +278,7 @@
                     const GURL& url) {
     network::ResourceRequest request;
     request.url = url;
-    request.resource_type = static_cast<int>(RESOURCE_TYPE_SUB_RESOURCE);
+    request.resource_type = static_cast<int>(ResourceType::kSubResource);
     network::mojom::URLLoaderPtr loader;
     network::TestURLLoaderClient loader_client;
     factory->CreateLoaderAndStart(
diff --git a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
index 40e5a6ab..9b2a016 100644
--- a/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
+++ b/content/renderer/service_worker/service_worker_subresource_loader_unittest.cc
@@ -555,7 +555,7 @@
     network::ResourceRequest request;
     request.url = url;
     request.method = "GET";
-    request.resource_type = RESOURCE_TYPE_SUB_RESOURCE;
+    request.resource_type = static_cast<int>(ResourceType::kSubResource);
     return request;
   }
 
diff --git a/extensions/browser/api/declarative_net_request/ruleset_manager.cc b/extensions/browser/api/declarative_net_request/ruleset_manager.cc
index 9d7c0e6..c943b2d 100644
--- a/extensions/browser/api/declarative_net_request/ruleset_manager.cc
+++ b/extensions/browser/api/declarative_net_request/ruleset_manager.cc
@@ -82,7 +82,7 @@
     return false;
 
   // If this is a main frame request, |request.url| will be the main frame url.
-  if (request.type == content::RESOURCE_TYPE_MAIN_FRAME)
+  if (request.type == content::ResourceType::kMainFrame)
     return allowed_pages.MatchesURL(request.url);
 
   // This should happen for:
diff --git a/extensions/browser/api/declarative_net_request/ruleset_matcher.cc b/extensions/browser/api/declarative_net_request/ruleset_matcher.cc
index 20e932e4..f20ad8e 100644
--- a/extensions/browser/api/declarative_net_request/ruleset_matcher.cc
+++ b/extensions/browser/api/declarative_net_request/ruleset_matcher.cc
@@ -35,37 +35,36 @@
 // Maps content::ResourceType to flat_rule::ElementType.
 flat_rule::ElementType GetElementType(content::ResourceType type) {
   switch (type) {
-    case content::RESOURCE_TYPE_LAST_TYPE:
-    case content::RESOURCE_TYPE_PREFETCH:
-    case content::RESOURCE_TYPE_SUB_RESOURCE:
-    case content::RESOURCE_TYPE_NAVIGATION_PRELOAD:
+    case content::ResourceType::kPrefetch:
+    case content::ResourceType::kSubResource:
+    case content::ResourceType::kNavigationPreload:
       return flat_rule::ElementType_OTHER;
-    case content::RESOURCE_TYPE_MAIN_FRAME:
+    case content::ResourceType::kMainFrame:
       return flat_rule::ElementType_MAIN_FRAME;
-    case content::RESOURCE_TYPE_CSP_REPORT:
+    case content::ResourceType::kCspReport:
       return flat_rule::ElementType_CSP_REPORT;
-    case content::RESOURCE_TYPE_SCRIPT:
-    case content::RESOURCE_TYPE_WORKER:
-    case content::RESOURCE_TYPE_SHARED_WORKER:
-    case content::RESOURCE_TYPE_SERVICE_WORKER:
+    case content::ResourceType::kScript:
+    case content::ResourceType::kWorker:
+    case content::ResourceType::kSharedWorker:
+    case content::ResourceType::kServiceWorker:
       return flat_rule::ElementType_SCRIPT;
-    case content::RESOURCE_TYPE_IMAGE:
-    case content::RESOURCE_TYPE_FAVICON:
+    case content::ResourceType::kImage:
+    case content::ResourceType::kFavicon:
       return flat_rule::ElementType_IMAGE;
-    case content::RESOURCE_TYPE_STYLESHEET:
+    case content::ResourceType::kStylesheet:
       return flat_rule::ElementType_STYLESHEET;
-    case content::RESOURCE_TYPE_OBJECT:
-    case content::RESOURCE_TYPE_PLUGIN_RESOURCE:
+    case content::ResourceType::kObject:
+    case content::ResourceType::kPluginResource:
       return flat_rule::ElementType_OBJECT;
-    case content::RESOURCE_TYPE_XHR:
+    case content::ResourceType::kXhr:
       return flat_rule::ElementType_XMLHTTPREQUEST;
-    case content::RESOURCE_TYPE_SUB_FRAME:
+    case content::ResourceType::kSubFrame:
       return flat_rule::ElementType_SUBDOCUMENT;
-    case content::RESOURCE_TYPE_PING:
+    case content::ResourceType::kPing:
       return flat_rule::ElementType_PING;
-    case content::RESOURCE_TYPE_MEDIA:
+    case content::ResourceType::kMedia:
       return flat_rule::ElementType_MEDIA;
-    case content::RESOURCE_TYPE_FONT_RESOURCE:
+    case content::ResourceType::kFontResource:
       return flat_rule::ElementType_FONT;
   }
   NOTREACHED();
diff --git a/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc b/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc
index 742ad02..4f65e65 100644
--- a/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc
+++ b/extensions/browser/api/declarative_webrequest/webrequest_condition_attribute_unittest.cc
@@ -108,7 +108,7 @@
       GURL("http://www.example.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   content::ResourceRequestInfo::AllocateForTesting(
-      url_request_ok.get(), content::RESOURCE_TYPE_SUB_FRAME,
+      url_request_ok.get(), content::ResourceType::kSubFrame,
       NULL,   // context
       -1,     // render_process_id
       -1,     // render_view_id
@@ -126,7 +126,7 @@
       GURL("http://www.example.com"), net::DEFAULT_PRIORITY, nullptr,
       TRAFFIC_ANNOTATION_FOR_TESTS));
   content::ResourceRequestInfo::AllocateForTesting(
-      url_request_fail.get(), content::RESOURCE_TYPE_MAIN_FRAME,
+      url_request_fail.get(), content::ResourceType::kMainFrame,
       NULL,  // context
       -1,    // render_process_id
       -1,    // render_view_id
diff --git a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
index 0a66a1d..31fb92b 100644
--- a/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
+++ b/extensions/browser/api/declarative_webrequest/webrequest_condition_unittest.cc
@@ -82,7 +82,7 @@
   std::unique_ptr<net::URLRequest> match_request(context.CreateRequest(
       http_url, net::DEFAULT_PRIORITY, nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
   content::ResourceRequestInfo::AllocateForTesting(
-      match_request.get(), content::RESOURCE_TYPE_MAIN_FRAME,
+      match_request.get(), content::ResourceType::kMainFrame,
       NULL,  // context
       -1,    // render_process_id
       -1,    // render_view_id
@@ -103,7 +103,7 @@
   std::unique_ptr<net::URLRequest> wrong_resource_type(context.CreateRequest(
       https_url, net::DEFAULT_PRIORITY, nullptr, TRAFFIC_ANNOTATION_FOR_TESTS));
   content::ResourceRequestInfo::AllocateForTesting(
-      wrong_resource_type.get(), content::RESOURCE_TYPE_SUB_FRAME,
+      wrong_resource_type.get(), content::ResourceType::kSubFrame,
       NULL,   // context
       -1,     // render_process_id
       -1,     // render_view_id
@@ -157,7 +157,7 @@
   request_data.first_party_url_match_ids = matcher.MatchURL(first_party_url);
   EXPECT_EQ(1u, request_data.first_party_url_match_ids.size());
   content::ResourceRequestInfo::AllocateForTesting(
-      match_request.get(), content::RESOURCE_TYPE_MAIN_FRAME,
+      match_request.get(), content::ResourceType::kMainFrame,
       NULL,  // context
       -1,    // render_process_id
       -1,    // render_view_id
diff --git a/extensions/browser/api/web_request/web_request_api.cc b/extensions/browser/api/web_request/web_request_api.cc
index f20c75e..6c3886f 100644
--- a/extensions/browser/api/web_request/web_request_api.cc
+++ b/extensions/browser/api/web_request/web_request_api.cc
@@ -1975,7 +1975,7 @@
 
 bool ExtensionWebRequestEventRouter::IsPageLoad(
     const WebRequestInfo& request) const {
-  return request.type == content::RESOURCE_TYPE_MAIN_FRAME;
+  return request.type == content::ResourceType::kMainFrame;
 }
 
 void ExtensionWebRequestEventRouter::NotifyPageLoad() {
diff --git a/extensions/browser/api/web_request/web_request_permissions.cc b/extensions/browser/api/web_request/web_request_permissions.cc
index bd0811c..bf321bd 100644
--- a/extensions/browser/api/web_request/web_request_permissions.cc
+++ b/extensions/browser/api/web_request/web_request_permissions.cc
@@ -255,19 +255,19 @@
   if (is_request_from_browser) {
     // Hide all non-navigation requests made by the browser. crbug.com/884932.
     if (!request.is_browser_side_navigation &&
-        request.type != content::RESOURCE_TYPE_NAVIGATION_PRELOAD) {
+        request.type != content::ResourceType::kNavigationPreload) {
       return true;
     }
 
-    DCHECK(request.type == content::RESOURCE_TYPE_MAIN_FRAME ||
-           request.type == content::RESOURCE_TYPE_SUB_FRAME ||
-           request.type == content::RESOURCE_TYPE_NAVIGATION_PRELOAD);
+    DCHECK(request.type == content::ResourceType::kMainFrame ||
+           request.type == content::ResourceType::kSubFrame ||
+           request.type == content::ResourceType::kNavigationPreload);
 
     // Hide sub-frame requests to clientsX.google.com.
     // TODO(crbug.com/890006): Determine if the code here can be cleaned up
     // since browser initiated non-navigation requests are now hidden from
     // extensions.
-    if (request.type != content::RESOURCE_TYPE_MAIN_FRAME &&
+    if (request.type != content::ResourceType::kMainFrame &&
         IsSensitiveGoogleClientUrl(request)) {
       return true;
     }
diff --git a/extensions/browser/api/web_request/web_request_permissions_unittest.cc b/extensions/browser/api/web_request/web_request_permissions_unittest.cc
index f375041..b3cac15 100644
--- a/extensions/browser/api/web_request/web_request_permissions_unittest.cc
+++ b/extensions/browser/api/web_request/web_request_permissions_unittest.cc
@@ -109,8 +109,8 @@
 
     request.web_request_type = ToWebRequestResourceType(type);
     request.is_browser_side_navigation =
-        type == content::RESOURCE_TYPE_MAIN_FRAME ||
-        type == content::RESOURCE_TYPE_SUB_FRAME;
+        type == content::ResourceType::kMainFrame ||
+        type == content::ResourceType::kSubFrame;
     return request;
   };
 
@@ -123,7 +123,7 @@
     {
       SCOPED_TRACE("Renderer initiated sub-resource request");
       WebRequestInfo request = create_request(
-          request_url, content::RESOURCE_TYPE_SUB_RESOURCE, kRendererProcessId);
+          request_url, content::ResourceType::kSubResource, kRendererProcessId);
       bool expect_hidden =
           test_case.expected_hide_request_mask & HIDE_RENDERER_REQUEST;
       EXPECT_EQ(expect_hidden,
@@ -133,7 +133,7 @@
     {
       SCOPED_TRACE("Browser initiated sub-resource request");
       WebRequestInfo request = create_request(
-          request_url, content::RESOURCE_TYPE_SUB_RESOURCE, kBrowserProcessId);
+          request_url, content::ResourceType::kSubResource, kBrowserProcessId);
       bool expect_hidden = test_case.expected_hide_request_mask &
                            HIDE_BROWSER_SUB_RESOURCE_REQUEST;
       EXPECT_EQ(expect_hidden,
@@ -143,7 +143,7 @@
     {
       SCOPED_TRACE("Main-frame navigation");
       WebRequestInfo request = create_request(
-          request_url, content::RESOURCE_TYPE_MAIN_FRAME, kBrowserProcessId);
+          request_url, content::ResourceType::kMainFrame, kBrowserProcessId);
       bool expect_hidden =
           test_case.expected_hide_request_mask & HIDE_MAIN_FRAME_NAVIGATION;
       EXPECT_EQ(expect_hidden,
@@ -153,7 +153,7 @@
     {
       SCOPED_TRACE("Sub-frame navigation");
       WebRequestInfo request = create_request(
-          request_url, content::RESOURCE_TYPE_SUB_FRAME, kBrowserProcessId);
+          request_url, content::ResourceType::kSubFrame, kBrowserProcessId);
       bool expect_hidden =
           test_case.expected_hide_request_mask & HIDE_SUB_FRAME_NAVIGATION;
       EXPECT_EQ(expect_hidden,
@@ -165,7 +165,7 @@
   // WebStore. Normally this request is not protected:
   GURL non_sensitive_url("http://www.google.com/test.js");
   WebRequestInfo non_sensitive_request_info = create_request(
-      non_sensitive_url, content::RESOURCE_TYPE_SCRIPT, kRendererProcessId);
+      non_sensitive_url, content::ResourceType::kScript, kRendererProcessId);
   EXPECT_FALSE(WebRequestPermissions::HideRequest(info_map.get(),
                                                   non_sensitive_request_info));
 
@@ -176,7 +176,7 @@
     info_map->RegisterExtensionProcess(extensions::kWebStoreAppId,
                                        kWebstoreProcessId, kSiteInstanceId);
     WebRequestInfo sensitive_request_info = create_request(
-        non_sensitive_url, content::RESOURCE_TYPE_SCRIPT, kWebstoreProcessId);
+        non_sensitive_url, content::ResourceType::kScript, kWebstoreProcessId);
     EXPECT_TRUE(WebRequestPermissions::HideRequest(info_map.get(),
                                                    sensitive_request_info));
   }
@@ -231,8 +231,8 @@
   base::Optional<url::Origin> initiators[] = {base::nullopt, example_com_origin,
                                               chromium_org_origin};
   base::Optional<content::ResourceType> resource_types[] = {
-      base::nullopt, content::RESOURCE_TYPE_SUB_RESOURCE,
-      content::RESOURCE_TYPE_MAIN_FRAME};
+      base::nullopt, content::ResourceType::kSubResource,
+      content::ResourceType::kMainFrame};
 
   // With all permissions withheld, the result of any request should be
   // kWithheld.
@@ -260,10 +260,10 @@
   // that the extension doesn't have access to, access is withheld.
   EXPECT_EQ(PermissionsData::PageAccess::kWithheld,
             get_access(example_com, base::nullopt,
-                       content::RESOURCE_TYPE_SUB_RESOURCE));
+                       content::ResourceType::kSubResource));
   EXPECT_EQ(PermissionsData::PageAccess::kWithheld,
             get_access(example_com, example_com_origin,
-                       content::RESOURCE_TYPE_MAIN_FRAME));
+                       content::ResourceType::kMainFrame));
 
   // However, if a sub-resource request is made to example.com from an initiator
   // that the extension has access to, access is allowed. This is functionally
@@ -271,15 +271,15 @@
   // permissions feature. See https://crbug.com/851722.
   EXPECT_EQ(PermissionsData::PageAccess::kAllowed,
             get_access(example_com, chromium_org_origin,
-                       content::RESOURCE_TYPE_SUB_RESOURCE));
+                       content::ResourceType::kSubResource));
   EXPECT_EQ(PermissionsData::PageAccess::kAllowed,
             get_access(example_com, chromium_org_origin, base::nullopt));
   EXPECT_EQ(PermissionsData::PageAccess::kWithheld,
             get_access(example_com, chromium_org_origin,
-                       content::RESOURCE_TYPE_SUB_FRAME));
+                       content::ResourceType::kSubFrame));
   EXPECT_EQ(PermissionsData::PageAccess::kWithheld,
             get_access(example_com, chromium_org_origin,
-                       content::RESOURCE_TYPE_MAIN_FRAME));
+                       content::ResourceType::kMainFrame));
 
   // With access to the requested origin, access is always allowed for
   // REQUIRE_HOST_PERMISSION_FOR_URL, independent of initiator.
@@ -382,15 +382,15 @@
         test_case.initiator ? test_case.initiator->Serialize().c_str()
                             : "empty"));
     EXPECT_EQ(get_access(test_case.url, test_case.initiator,
-                         content::RESOURCE_TYPE_SUB_RESOURCE),
+                         content::ResourceType::kSubResource),
               test_case.expected_access_subresource);
     EXPECT_EQ(get_access(test_case.url, test_case.initiator, base::nullopt),
               test_case.expected_access_subresource);
     EXPECT_EQ(get_access(test_case.url, test_case.initiator,
-                         content::RESOURCE_TYPE_SUB_FRAME),
+                         content::ResourceType::kSubFrame),
               test_case.expected_access_navigation);
     EXPECT_EQ(get_access(test_case.url, test_case.initiator,
-                         content::RESOURCE_TYPE_MAIN_FRAME),
+                         content::ResourceType::kMainFrame),
               test_case.expected_access_navigation);
   }
 }
diff --git a/extensions/browser/api/web_request/web_request_resource_type.cc b/extensions/browser/api/web_request/web_request_resource_type.cc
index b0da58b..8a59ef2 100644
--- a/extensions/browser/api/web_request/web_request_resource_type.cc
+++ b/extensions/browser/api/web_request/web_request_resource_type.cc
@@ -43,44 +43,42 @@
 
 WebRequestResourceType ToWebRequestResourceType(content::ResourceType type) {
   switch (type) {
-    case content::RESOURCE_TYPE_MAIN_FRAME:
+    case content::ResourceType::kMainFrame:
       return WebRequestResourceType::MAIN_FRAME;
-    case content::RESOURCE_TYPE_SUB_FRAME:
+    case content::ResourceType::kSubFrame:
       return WebRequestResourceType::SUB_FRAME;
-    case content::RESOURCE_TYPE_STYLESHEET:
+    case content::ResourceType::kStylesheet:
       return WebRequestResourceType::STYLESHEET;
-    case content::RESOURCE_TYPE_SCRIPT:
+    case content::ResourceType::kScript:
       return WebRequestResourceType::SCRIPT;
-    case content::RESOURCE_TYPE_IMAGE:
+    case content::ResourceType::kImage:
       return WebRequestResourceType::IMAGE;
-    case content::RESOURCE_TYPE_FONT_RESOURCE:
+    case content::ResourceType::kFontResource:
       return WebRequestResourceType::FONT;
-    case content::RESOURCE_TYPE_SUB_RESOURCE:
+    case content::ResourceType::kSubResource:
       return WebRequestResourceType::OTHER;
-    case content::RESOURCE_TYPE_OBJECT:
+    case content::ResourceType::kObject:
       return WebRequestResourceType::OBJECT;
-    case content::RESOURCE_TYPE_MEDIA:
+    case content::ResourceType::kMedia:
       return WebRequestResourceType::MEDIA;
-    case content::RESOURCE_TYPE_WORKER:
-    case content::RESOURCE_TYPE_SHARED_WORKER:
+    case content::ResourceType::kWorker:
+    case content::ResourceType::kSharedWorker:
       return WebRequestResourceType::SCRIPT;
-    case content::RESOURCE_TYPE_PREFETCH:
+    case content::ResourceType::kPrefetch:
       return WebRequestResourceType::OTHER;
-    case content::RESOURCE_TYPE_FAVICON:
+    case content::ResourceType::kFavicon:
       return WebRequestResourceType::IMAGE;
-    case content::RESOURCE_TYPE_XHR:
+    case content::ResourceType::kXhr:
       return WebRequestResourceType::XHR;
-    case content::RESOURCE_TYPE_PING:
+    case content::ResourceType::kPing:
       return WebRequestResourceType::PING;
-    case content::RESOURCE_TYPE_SERVICE_WORKER:
+    case content::ResourceType::kServiceWorker:
       return WebRequestResourceType::SCRIPT;
-    case content::RESOURCE_TYPE_CSP_REPORT:
+    case content::ResourceType::kCspReport:
       return WebRequestResourceType::CSP_REPORT;
-    case content::RESOURCE_TYPE_PLUGIN_RESOURCE:
+    case content::ResourceType::kPluginResource:
       return WebRequestResourceType::OBJECT;
-    case content::RESOURCE_TYPE_NAVIGATION_PRELOAD:
-      return WebRequestResourceType::OTHER;
-    case content::RESOURCE_TYPE_LAST_TYPE:
+    case content::ResourceType::kNavigationPreload:
       return WebRequestResourceType::OTHER;
   }
   NOTREACHED();
diff --git a/extensions/browser/extension_protocols.cc b/extensions/browser/extension_protocols.cc
index b52b0205..9732e5e 100644
--- a/extensions/browser/extension_protocols.cc
+++ b/extensions/browser/extension_protocols.cc
@@ -406,7 +406,7 @@
                                 bool extension_enabled_in_incognito,
                                 const ExtensionSet& extensions,
                                 const ProcessMap& process_map) {
-  const bool is_main_frame = resource_type == content::RESOURCE_TYPE_MAIN_FRAME;
+  const bool is_main_frame = resource_type == content::ResourceType::kMainFrame;
   if (is_incognito &&
       !ExtensionCanLoadInIncognito(is_main_frame, extension,
                                    extension_enabled_in_incognito)) {
diff --git a/extensions/browser/url_request_util.cc b/extensions/browser/url_request_util.cc
index dbf3be7..3ac3b88 100644
--- a/extensions/browser/url_request_util.cc
+++ b/extensions/browser/url_request_util.cc
@@ -34,7 +34,7 @@
 
   // This logic is performed for main frame requests in
   // ExtensionNavigationThrottle::WillStartRequest.
-  if (child_id != -1 || resource_type != content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (child_id != -1 || resource_type != content::ResourceType::kMainFrame) {
     // Extensions with webview: allow loading certain resources by guest
     // renderers with privileged partition IDs as specified in owner's extension
     // the manifest file.
@@ -81,10 +81,10 @@
 
   // Navigating the main frame to an extension URL is allowed, even if not
   // explicitly listed as web_accessible_resource.
-  if (resource_type == content::RESOURCE_TYPE_MAIN_FRAME) {
+  if (resource_type == content::ResourceType::kMainFrame) {
     *allowed = true;
     return true;
-  } else if (resource_type == content::RESOURCE_TYPE_SUB_FRAME) {
+  } else if (resource_type == content::ResourceType::kSubFrame) {
     // When navigating in subframe, allow if it is the same origin
     // as the top-level frame. This can only be the case if the subframe
     // request is coming from the extension process.
diff --git a/ios/chrome/browser/search_engines/search_engine_tab_helper.mm b/ios/chrome/browser/search_engines/search_engine_tab_helper.mm
index 2434dbca..71eccbc 100644
--- a/ios/chrome/browser/search_engines/search_engine_tab_helper.mm
+++ b/ios/chrome/browser/search_engines/search_engine_tab_helper.mm
@@ -208,11 +208,10 @@
   //      https://cs.chromium.org/chromium/src/services/network/public/cpp/resource_request.h?rcl=39c6fbea496641a6514e34c0ab689871d14e6d52&l=100
   //      Use the same value as the SearchEngineTabHelper for Desktop.
   ios::TemplateURLFetcherFactory::GetForBrowserState(browser_state)
-      ->ScheduleDownload(
-          keyword, osdd_url, item->GetFavicon().url,
-          url::Origin::Create(web_state_->GetLastCommittedURL()),
-          browser_state->GetURLLoaderFactory(), MSG_ROUTING_NONE,
-          /* content::ResourceType::RESOURCE_TYPE_SUB_RESOURCE */ 6);
+      ->ScheduleDownload(keyword, osdd_url, item->GetFavicon().url,
+                         url::Origin::Create(web_state_->GetLastCommittedURL()),
+                         browser_state->GetURLLoaderFactory(), MSG_ROUTING_NONE,
+                         /* content::ResourceType::kSubResource */ 6);
 }
 
 // Creates a TemplateURL by |searchable_url| and adds it to TemplateURLService.
diff --git a/services/network/cross_origin_read_blocking.h b/services/network/cross_origin_read_blocking.h
index 6bef66e..489184e 100644
--- a/services/network/cross_origin_read_blocking.h
+++ b/services/network/cross_origin_read_blocking.h
@@ -222,7 +222,7 @@
 
   // Notifies CORB that |process_id| is proxying requests on behalf of a
   // universal-access plugin and therefore CORB should stop blocking requests
-  // marked as RESOURCE_TYPE_PLUGIN_RESOURCE.
+  // marked as ResourceType::kPluginResource.
   //
   // TODO(lukasza, laforge): https://crbug.com/702995: Remove the static
   // ...ForPlugin methods once Flash support is removed from Chromium (probably
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index 2bc4866..9e29276 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -462,15 +462,15 @@
   // Cross-origin read blocking (CORB) configuration.
   bool is_corb_enabled = true;
   // TODO(lukasza): The field below in practice is always set to
-  // RESOURCE_TYPE_PREFETCH by the //content layer, but in the long-term we want
-  // to avoid using resource types (even as an opaque int) in
+  // ResourceType::kPrefetch by the //content layer, but in the long-term we
+  // want to avoid using resource types (even as an opaque int) in
   // //services/network.  See also the TODO comment for
   // network::ResourceRequest::resource_type.
   int32 corb_detachable_resource_type = -1;
   // TODO(lukasza): https://crbug.com/846339: Remove the field below and instead
   // make plugins use a separate URLoaderFactory. Note requests of this type are
   // only excluded if ResourceRequest::fetch_request_mode is kNoCors. The field
-  // below in practice is always set to RESOURCE_TYPE_PLUGIN_RESOURCE by the
+  // below in practice is always set to ResourceType::kPluginResource by the
   //  content layer, but in the long-term we want to avoid using resource types
   // (even as an opaque int) in //services/network.  See also the TODO comment
   // for network::ResourceRequest::resource_type.
diff --git a/services/network/public/mojom/network_service.mojom b/services/network/public/mojom/network_service.mojom
index f3bc2da..e11b4b03 100644
--- a/services/network/public/mojom/network_service.mojom
+++ b/services/network/public/mojom/network_service.mojom
@@ -379,7 +379,7 @@
 
   // Notifies CORB (Cross-Origin Read Blocking) that |process_id| is proxying
   // requests on behalf of a universal-access plugin and therefore CORB should
-  // stop blocking requests marked as RESOURCE_TYPE_PLUGIN_RESOURCE.
+  // stop blocking requests marked as ResourceType::kPluginResource.
   //
   // TODO(lukasza, laforge): https://crbug.com/702995: Remove the ...ForPlugin
   // methods once Flash support is removed from Chromium (probably around 2020
diff --git a/services/network/websocket_factory.cc b/services/network/websocket_factory.cc
index ea9d224..deaf8b22 100644
--- a/services/network/websocket_factory.cc
+++ b/services/network/websocket_factory.cc
@@ -45,7 +45,7 @@
     NetworkService* network_service = factory_->context_->network_service();
     // See content::ResourceType defined in
     // content/public/common/resource_type.h. This is
-    // RESOURCE_TYPE_SUB_RESOURCE.
+    // ResourceType::kSubResource.
     constexpr int resource_type = 6;
     // We need to provide a request ID which we don't have. Provide an
     // invalid ID.