Update form_urlencoded to v1.2.1

Change-Id: I58c6697524d35778f402b50ffaaf86fd4aeb7cd9
diff --git a/crates/form_urlencoded/.cargo-checksum.json b/crates/form_urlencoded/.cargo-checksum.json
index 29befa6..23f854f 100644
--- a/crates/form_urlencoded/.cargo-checksum.json
+++ b/crates/form_urlencoded/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"1771c35bc67b544a7ebc6f31168d7bc08d29ae76323e7ee10352d43b5a38afac","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","src/lib.rs":"c1a0db36086e4fd0e8bb1489f9c2bb55945dd233614bf5dc3a0c41cb49292dd3"},"package":"a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"}
\ No newline at end of file
+{"files":{"Cargo.toml":"be4adf82c2b4b20237e7a660defcfed92034e751ca581dfc38cb2fd05b6a90d6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","src/lib.rs":"ab14e1d39ed5ffaf5ded448f3cdf7157e721c61321963c9b6eb6ae27a0ab8d48"},"package":"e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"}
\ No newline at end of file
diff --git a/crates/form_urlencoded/Android.bp b/crates/form_urlencoded/Android.bp
index f115f49..a99496b 100644
--- a/crates/form_urlencoded/Android.bp
+++ b/crates/form_urlencoded/Android.bp
@@ -18,9 +18,14 @@
     host_supported: true,
     crate_name: "form_urlencoded",
     cargo_env_compat: true,
-    cargo_pkg_version: "1.1.0",
+    cargo_pkg_version: "1.2.1",
     crate_root: "src/lib.rs",
     edition: "2018",
+    features: [
+        "alloc",
+        "default",
+        "std",
+    ],
     rustlibs: ["libpercent_encoding"],
     apex_available: [
         "//apex_available:platform",
diff --git a/crates/form_urlencoded/Cargo.toml b/crates/form_urlencoded/Cargo.toml
index 037361d..921d265 100644
--- a/crates/form_urlencoded/Cargo.toml
+++ b/crates/form_urlencoded/Cargo.toml
@@ -13,14 +13,27 @@
 edition = "2018"
 rust-version = "1.51"
 name = "form_urlencoded"
-version = "1.1.0"
+version = "1.2.1"
 authors = ["The rust-url developers"]
 description = "Parser and serializer for the application/x-www-form-urlencoded syntax, as used by HTML forms."
+categories = ["no_std"]
 license = "MIT OR Apache-2.0"
 repository = "https://github.com/servo/rust-url"
 
+[package.metadata.docs.rs]
+rustdoc-args = ["--generate-link-to-definition"]
+
 [lib]
 test = false
 
 [dependencies.percent-encoding]
-version = "2.2.0"
+version = "2.3.0"
+default-features = false
+
+[features]
+alloc = ["percent-encoding/alloc"]
+default = ["std"]
+std = [
+    "alloc",
+    "percent-encoding/std",
+]
diff --git a/crates/form_urlencoded/METADATA b/crates/form_urlencoded/METADATA
index 49b256b..2041e31 100644
--- a/crates/form_urlencoded/METADATA
+++ b/crates/form_urlencoded/METADATA
@@ -1,17 +1,17 @@
 name: "form_urlencoded"
 description: "Parser and serializer for the application/x-www-form-urlencoded syntax, as used by HTML forms."
 third_party {
-  version: "1.1.0"
+  version: "1.2.1"
   license_type: NOTICE
   last_upgrade_date {
-    year: 2022
-    month: 12
-    day: 9
+    year: 2024
+    month: 11
+    day: 20
   }
   homepage: "https://crates.io/crates/form_urlencoded"
   identifier {
     type: "Archive"
-    value: "https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.1.0.crate"
-    version: "1.1.0"
+    value: "https://static.crates.io/crates/form_urlencoded/form_urlencoded-1.2.1.crate"
+    version: "1.2.1"
   }
 }
diff --git a/crates/form_urlencoded/src/lib.rs b/crates/form_urlencoded/src/lib.rs
index 477594b..30221ad 100644
--- a/crates/form_urlencoded/src/lib.rs
+++ b/crates/form_urlencoded/src/lib.rs
@@ -12,10 +12,21 @@
 //!
 //! Converts between a string (such as an URL’s query string)
 //! and a sequence of (name, value) pairs.
+#![no_std]
 
+// For forwards compatibility
+#[cfg(feature = "std")]
+extern crate std as _;
+
+extern crate alloc;
+
+#[cfg(not(feature = "alloc"))]
+compile_error!("the `alloc` feature must currently be enabled");
+
+use alloc::borrow::{Borrow, Cow, ToOwned};
+use alloc::string::String;
+use core::str;
 use percent_encoding::{percent_decode, percent_encode_byte};
-use std::borrow::{Borrow, Cow};
-use std::str;
 
 /// Convert a byte string in the `application/x-www-form-urlencoded` syntax
 /// into a iterator of (name, value) pairs.
@@ -186,7 +197,7 @@
 
 impl<'a> Target for &'a mut String {
     fn as_mut_string(&mut self) -> &mut String {
-        &mut **self
+        self
     }
     fn finish(self) -> Self {
         self
@@ -282,7 +293,7 @@
         {
             let string = string(&mut self.target);
             for pair in iter {
-                let &(ref k, ref v) = pair.borrow();
+                let (k, v) = pair.borrow();
                 append_pair(
                     string,
                     self.start_position,
diff --git a/pseudo_crate/Cargo.lock b/pseudo_crate/Cargo.lock
index c919434..4bb6cee 100644
--- a/pseudo_crate/Cargo.lock
+++ b/pseudo_crate/Cargo.lock
@@ -2016,9 +2016,9 @@
 
 [[package]]
 name = "form_urlencoded"
-version = "1.1.0"
+version = "1.2.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
+checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
 dependencies = [
  "percent-encoding",
 ]
diff --git a/pseudo_crate/Cargo.toml b/pseudo_crate/Cargo.toml
index 157f085..e834c74 100644
--- a/pseudo_crate/Cargo.toml
+++ b/pseudo_crate/Cargo.toml
@@ -110,7 +110,7 @@
 fnv = "=1.0.7"
 foreign-types = "=0.3.1"
 foreign-types-shared = "=0.1.0"
-form_urlencoded = "=1.1.0"
+form_urlencoded = "=1.2.1"
 fragile = "=2.0.0"
 fs-err = "=2.11.0"
 futures = "=0.3.31"