Internal change

PiperOrigin-RevId: 133767835
Change-Id: Ia37d6a5f13f39a8d33abf9bfc30a5ac058eb115b
diff --git a/import.sh b/import.sh
new file mode 100644
index 0000000..dd789ed
--- /dev/null
+++ b/import.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Download the latest and previous versions of the Chromium url library.
+# This makes it easy to run "diff -r -u" and "patch -p2".
+top=/tmp/chromium
+mkdir $top
+prefix=https://chromium.googlesource.com/chromium/src.git/+archive
+for version in 52.0.2743.82 53.0.2785.116
+do
+  mkdir $top/$version
+  cd $top/$version
+  for d in base build url
+  do
+    wget $prefix/$version/$d.tar.gz
+    mkdir $top/$version/$d
+    cat $d.tar.gz | gunzip | (cd $top/$version/$d; tar fx -)
+  done
+done
diff --git a/src/base/strings/string16.h b/src/base/strings/string16.h
index 925e52f..67f9cee 100644
--- a/src/base/strings/string16.h
+++ b/src/base/strings/string16.h
@@ -51,6 +51,8 @@
 
 #elif defined(WCHAR_T_IS_UTF32)
 
+#include <wchar.h>  // for mbstate_t
+
 namespace url {
 namespace base {
 
diff --git a/src/url/gurl.cc b/src/url/gurl.cc
index 3dadacf..c057724 100644
--- a/src/url/gurl.cc
+++ b/src/url/gurl.cc
@@ -101,9 +101,7 @@
 }
 
 GURL::GURL(std::string canonical_spec, const url::Parsed& parsed, bool is_valid)
-    : is_valid_(is_valid),
-      parsed_(parsed) {
-  spec_.swap(canonical_spec);
+    : spec_(std::move(canonical_spec)), is_valid_(is_valid), parsed_(parsed) {
   InitializeFromCanonicalSpec();
 }
 
diff --git a/src/url/gurl.h b/src/url/gurl.h
index 3509247..4d8b5d4 100644
--- a/src/url/gurl.h
+++ b/src/url/gurl.h
@@ -70,7 +70,7 @@
   // from WebURL without copying the string. When we call this constructor
   // we pass in a temporary std::string, which lets the compiler skip the
   // copy and just move the std::string into the function argument. In the
-  // implementation, we use swap to move the data into the GURL itself,
+  // implementation, we use std::move to move the data into the GURL itself,
   // which means we end up with zero copies.
   GURL(std::string canonical_spec, const url::Parsed& parsed, bool is_valid);
 
diff --git a/src/url/gurl_unittest.cc b/src/url/gurl_unittest.cc
index cd680c2..79c16bb 100644
--- a/src/url/gurl_unittest.cc
+++ b/src/url/gurl_unittest.cc
@@ -660,6 +660,9 @@
 
   GURL c("foo://bar/baz");
   EXPECT_FALSE(c.IsStandard());
+
+  GURL d("cid:bar@baz");
+  EXPECT_FALSE(d.IsStandard());
 }
 
 TEST(GURLTest, SchemeIsHTTPOrHTTPS) {
diff --git a/src/url/url_constants.cc b/src/url/url_constants.cc
index 0388fbc..549819e 100644
--- a/src/url/url_constants.cc
+++ b/src/url/url_constants.cc
@@ -11,6 +11,7 @@
 const char kAboutScheme[] = "about";
 const char kBlobScheme[] = "blob";
 const char kContentScheme[] = "content";
+const char kContentIDScheme[] = "cid";
 const char kDataScheme[] = "data";
 const char kFileScheme[] = "file";
 const char kFileSystemScheme[] = "filesystem";
diff --git a/src/url/url_constants.h b/src/url/url_constants.h
index fa71164..3a423d2 100644
--- a/src/url/url_constants.h
+++ b/src/url/url_constants.h
@@ -17,6 +17,7 @@
 URL_EXPORT extern const char kBlobScheme[];
 // The content scheme is specific to Android for identifying a stored file.
 URL_EXPORT extern const char kContentScheme[];
+URL_EXPORT extern const char kContentIDScheme[];
 URL_EXPORT extern const char kDataScheme[];
 URL_EXPORT extern const char kFileScheme[];
 URL_EXPORT extern const char kFileSystemScheme[];