diff --git a/chrome/browser/ui/toolbar/BUILD.gn b/chrome/browser/ui/toolbar/BUILD.gn
index 3fead94..014ae54 100644
--- a/chrome/browser/ui/toolbar/BUILD.gn
+++ b/chrome/browser/ui/toolbar/BUILD.gn
@@ -152,6 +152,7 @@
 }
 
 source_set("unit_tests") {
+  configs += [ "//build/config/compiler:enable_arc" ]
   testonly = true
   sources = [
     "toolbar_controller_unittest.mm",
diff --git a/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm b/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm
index 1e7fe95..06979e0 100644
--- a/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm
+++ b/chrome/browser/ui/toolbar/toolbar_controller_unittest.mm
@@ -5,13 +5,16 @@
 #import <Foundation/Foundation.h>
 
 #include "base/format_macros.h"
-#include "base/mac/scoped_nsobject.h"
 #import "ios/chrome/browser/ui/toolbar/toolbar_controller.h"
 #import "ios/chrome/browser/ui/toolbar/toolbar_controller_private.h"
 #import "ios/chrome/browser/ui/ui_util.h"
 #include "testing/gtest_mac.h"
 #include "testing/platform_test.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 // A constant holding some number of tabs that will trigger an easter egg.
 const NSInteger kStackButtonEasterEggTabCount = kStackButtonMaxTabCount + 1;
 
@@ -31,11 +34,12 @@
 class ToolbarControllerTest : public PlatformTest {
  protected:
   void SetUp() override {
-    toolbarController_.reset([[ToolbarController alloc]
-        initWithStyle:ToolbarControllerStyleLightMode]);
+    PlatformTest::SetUp();
+    toolbarController_ = [[ToolbarController alloc]
+        initWithStyle:ToolbarControllerStyleLightMode];
   }
 
-  base::scoped_nsobject<ToolbarController> toolbarController_;
+  ToolbarController* toolbarController_;
 };
 
 // Verify that if tab count is set to zero, the title is blank, but the a11y
diff --git a/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm b/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
index 80eddcb..b29b25e 100644
--- a/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
+++ b/chrome/browser/ui/toolbar/toolbar_model_impl_ios_unittest.mm
@@ -6,7 +6,6 @@
 
 #include <memory>
 
-#include "base/mac/scoped_nsobject.h"
 #include "base/memory/ptr_util.h"
 #include "base/message_loop/message_loop.h"
 #include "base/strings/utf_string_conversions.h"
@@ -31,6 +30,10 @@
 #include "third_party/ocmock/gtest_support.h"
 #include "third_party/ocmock/ocmock_extensions.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 namespace {
 
 static const char kWebUrl[] = "http://www.chromium.org";
@@ -39,6 +42,7 @@
 class ToolbarModelImplIOSTest : public PlatformTest {
  protected:
   void SetUp() override {
+    PlatformTest::SetUp();
     TestChromeBrowserState::Builder test_cbs_builder;
     chrome_browser_state_ = test_cbs_builder.Build();
     chrome_browser_state_->CreateBookmarkModel(true);
diff --git a/chrome/browser/ui/toolbar/web_toolbar_controller_unittest.mm b/chrome/browser/ui/toolbar/web_toolbar_controller_unittest.mm
index cd917a7..bb2c4bb 100644
--- a/chrome/browser/ui/toolbar/web_toolbar_controller_unittest.mm
+++ b/chrome/browser/ui/toolbar/web_toolbar_controller_unittest.mm
@@ -9,7 +9,6 @@
 #include <memory>
 
 #include "base/ios/ios_util.h"
-#include "base/mac/scoped_nsobject.h"
 #include "base/message_loop/message_loop.h"
 #include "base/strings/utf_string_conversions.h"
 #include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
@@ -22,6 +21,10 @@
 #include "testing/gtest_mac.h"
 #import "third_party/ocmock/OCMock/OCMock.h"
 
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
 @interface UIView (SubViewTesting)
 - (NSMutableArray*)allSubviews;
 @end
@@ -69,15 +72,15 @@
     id urlLoader = [OCMockObject niceMockForProtocol:@protocol(UrlLoader)];
 
     // Create the WebToolbarController using the test objects.
-    web_toolbar_controller_.reset([[WebToolbarController alloc]
+    web_toolbar_controller_ = [[WebToolbarController alloc]
         initWithDelegate:delegate
                urlLoader:urlLoader
             browserState:chrome_browser_state_.get()
-         preloadProvider:nil]);
+         preloadProvider:nil];
     [web_toolbar_controller_ setUnitTesting:YES];
   }
   void TearDown() override {
-    web_toolbar_controller_.reset();
+    web_toolbar_controller_ = nil;
     BlockCleanupTest::TearDown();
   }
 
@@ -85,7 +88,7 @@
   std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
   TestToolbarModel* toolbar_model_;  // weak. Owned by toolbar_model_ios_.
   std::unique_ptr<TestToolbarModelIOS> toolbar_model_ios_;
-  base::scoped_nsobject<WebToolbarController> web_toolbar_controller_;
+  WebToolbarController* web_toolbar_controller_;
 };
 
 TEST_F(WebToolbarControllerTest, TestUpdateToolbar_NavigationButtonsEnabled) {
