diff --git a/src/net/BUILD.gn b/src/net/BUILD.gn
index a60b3dae14..113ec0ef08 100644
--- a/src/net/BUILD.gn
+++ b/src/net/BUILD.gn
@@ -1682,13 +1682,18 @@ component("net") {
   if (use_platform_icu_alternatives) {
     if (is_android) {
       # Use ICU alternative on Android.
-      sources += [ "base/net_string_util_icu_alternatives_android.cc" ]
+      sources += [
+        "base/filename_util_icu_dummy.cc",
+        "base/net_string_util_icu_alternatives_dummy.cc",
+      ]
     } else if (is_ios) {
       # Use ICU alternative on iOS.
       sources += [ "base/net_string_util_icu_alternatives_ios.mm" ]
     } else {
-      assert(false,
-             "ICU alternative is not implemented for platform: " + target_os)
+      sources += [
+        "base/filename_util_icu_dummy.cc",
+        "base/net_string_util_icu_alternatives_dummy.cc",
+      ]
     }
   } else {
     # Use ICU.
diff --git a/src/net/base/filename_util_icu_dummy.cc b/src/net/base/filename_util_icu_dummy.cc
new file mode 100644
index 0000000000..4c12b707f4
--- /dev/null
+++ b/src/net/base/filename_util_icu_dummy.cc
@@ -0,0 +1,44 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/base/filename_util.h"
+
+#include "base/files/file_path.h"
+#include "base/notreached.h"
+
+class GURL;
+
+namespace net {
+
+bool IsSafePortablePathComponent(const base::FilePath& component) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
+bool IsSafePortableRelativePath(const base::FilePath& path) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
+std::u16string GetSuggestedFilename(const GURL& url,
+                                    const std::string& content_disposition,
+                                    const std::string& referrer_charset,
+                                    const std::string& suggested_name,
+                                    const std::string& mime_type,
+                                    const std::string& default_name) {
+  NOTIMPLEMENTED();
+  return {};
+}
+
+base::FilePath GenerateFileName(const GURL& url,
+                                const std::string& content_disposition,
+                                const std::string& referrer_charset,
+                                const std::string& suggested_name,
+                                const std::string& mime_type,
+                                const std::string& default_file_name) {
+  NOTIMPLEMENTED();
+  return {};
+}
+
+}  // namespace net
diff --git a/src/net/base/net_string_util_icu_alternatives_dummy.cc b/src/net/base/net_string_util_icu_alternatives_dummy.cc
new file mode 100644
index 0000000000..4f412a215a
--- /dev/null
+++ b/src/net/base/net_string_util_icu_alternatives_dummy.cc
@@ -0,0 +1,37 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <string_view>
+
+#include "net/base/net_string_util.h"
+
+namespace net {
+
+const char* const kCharsetLatin1 = "";
+
+bool ConvertToUtf8(std::string_view text, const char* charset,
+                   std::string* output) {
+  return false;
+}
+
+bool ConvertToUtf8AndNormalize(std::string_view text, const char* charset,
+                               std::string* output) {
+  return false;
+}
+
+bool ConvertToUTF16(std::string_view text, const char* charset,
+                    std::u16string* output) {
+  return false;
+}
+
+bool ConvertToUTF16WithSubstitutions(std::string_view text,
+                                     const char* charset,
+                                     std::u16string* output) {
+  return false;
+}
+
+bool ToUpperUsingLocale(std::u16string_view str, std::u16string* output) {
+  return false;
+}
+}  // namespace net
diff --git a/src/url/BUILD.gn b/src/url/BUILD.gn
index 47bb1cb3d5..ef5aa55b8e 100644
--- a/src/url/BUILD.gn
+++ b/src/url/BUILD.gn
@@ -95,13 +95,11 @@ component("url") {
   # ICU support.
   if (use_platform_icu_alternatives) {
     if (is_android) {
-      sources += [ "url_idna_icu_alternatives_android.cc" ]
-      deps += [ ":buildflags" ]
+      sources += [ "url_canon_icu_alternatives_dummy.cc" ]
     } else if (is_ios) {
       sources += [ "url_idna_icu_alternatives_ios.mm" ]
     } else {
-      assert(false,
-             "ICU alternative is not implemented for platform: " + target_os)
+      sources += [ "url_canon_icu_alternatives_dummy.cc" ]
     }
   } else {
     # Use ICU.
diff --git a/src/url/url_canon_icu_alternatives_dummy.cc b/src/url/url_canon_icu_alternatives_dummy.cc
new file mode 100644
index 0000000000..2d74a3a1c8
--- /dev/null
+++ b/src/url/url_canon_icu_alternatives_dummy.cc
@@ -0,0 +1,15 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/notreached.h"
+#include "url/url_canon.h"
+
+namespace url {
+
+bool IDNToASCII(std::u16string_view src, CanonOutputW* output) {
+  NOTIMPLEMENTED();
+  return false;
+}
+
+}  // namespace url