Correctly handle problematic nested escapes in URL paths.

Specifically, if unescaping in the input leads to the output URL
containing a new escaped sequence, e.g. converting the input "%%30%30" to "%00", escape the leading '%' as "%25" to ensure the output sequence is not treated as a new valid escape sequence.

This ensures that canonicalizing the same URL a second time won't make changes
to it, which is important for avoiding crashes and other bugs in a variety of
places in both debug and release builds.

TEST=Visit , hover the link there, Chrome should not crash.

Review URL:

(cherry picked from commit 6982036dc15ba85cdbf7339265f030ff7582ff3b)

Cr-Original-Commit-Position: refs/heads/master@{#350086}
Cr-Commit-Position: refs/branch-heads/2454@{#497}
Cr-Branched-From: 12bfc3360892ec53cd00fc239a47e5298beb063b-refs/heads/master@{#338390}
2 files changed