Internal change

PiperOrigin-RevId: 249345559
Change-Id: I06e208d98ce924b3395d3cc353bd9a411f5fe834
diff --git a/src/base/strings/utf_string_conversion_utils.cc b/src/base/strings/utf_string_conversion_utils.cc
index a22b109..c42c7a2 100644
--- a/src/base/strings/utf_string_conversion_utils.cc
+++ b/src/base/strings/utf_string_conversion_utils.cc
@@ -123,7 +123,9 @@
 
 // Instantiate versions we know callers will need.
 template void PrepareForUTF8Output(const wchar_t*, size_t, std::string*);
+#ifndef WCHAR_T_IS_UTF16
 template void PrepareForUTF8Output(const char16*, size_t, std::string*);
+#endif
 
 template<typename STRING>
 void PrepareForUTF16Or32Output(const char* src,
@@ -144,7 +146,9 @@
 
 // Instantiate versions we know callers will need.
 template void PrepareForUTF16Or32Output(const char*, size_t, std::wstring*);
+#ifndef WCHAR_T_IS_UTF16
 template void PrepareForUTF16Or32Output(const char*, size_t, string16*);
+#endif
 
 }  // namespace base
 }  // namespace url
diff --git a/src/build/build_config.h b/src/build/build_config.h
index a039dda..8acd0b7 100644
--- a/src/build/build_config.h
+++ b/src/build/build_config.h
@@ -63,6 +63,8 @@
 #define OS_QNX 1
 #elif defined(_AIX)
 #define OS_AIX 1
+#elif defined(__EMSCRIPTEN__)
+#define OS_EMSCRIPTEN 1
 #else
 #error Please add support for your platform in build/build_config.h
 #endif
@@ -99,6 +101,8 @@
 #define COMPILER_GCC 1
 #elif defined(_MSC_VER)
 #define COMPILER_MSVC 1
+#elif defined(__EMSCRIPTEN__)
+#define COMPILER_EMSCRIPTEN 1
 #else
 #error Please add support for your compiler in build/build_config.h
 #endif
@@ -186,6 +190,22 @@
 #define ARCH_CPU_32_BITS 1
 #define ARCH_CPU_BIG_ENDIAN 1
 #endif
+#elif defined(__EMSCRIPTEN__)
+// Emscripten can target asm.js or WebAssembly.
+#define ARCH_CPU_EMSCRIPTEN_FAMILY 1
+#define ARCH_CPU_LITTLE_ENDIAN 1
+#if defined(__wasm64__)
+#define ARCH_CPU_64_BITS 1
+#else
+#define ARCH_CPU_32_BITS 1
+#endif
+#if defined(__wasm64__)
+#define ARCH_CPU_WASM64 1
+#elif defined(__wasm__)
+#define ARCH_CPU_WASM 1
+#elif defined(__asmjs__)
+#define ARCH_CPU_ASMJS 1
+#endif
 #else
 #error Please add support for your architecture in build/build_config.h
 #endif
@@ -193,10 +213,10 @@
 // Type detection for wchar_t.
 #if defined(OS_WIN)
 #define WCHAR_T_IS_UTF16
-#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
+#elif defined(__WCHAR_MAX__) && \
     (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
 #define WCHAR_T_IS_UTF32
-#elif defined(OS_POSIX) && defined(COMPILER_GCC) && defined(__WCHAR_MAX__) && \
+#elif defined(__WCHAR_MAX__) && \
     (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
 // On Posix, we'll detect short wchar_t, but projects aren't guaranteed to
 // compile in this mode (in particular, Chrome doesn't). This is intended for