OOPIF: Replicate dynamic window.name updates.

This CL adds the plumbing to replicate window.name updates to the
associated RenderFrameProxies.  This consists of:
- sending a FrameHostMsg_DidChangeName to the browser process whenever
  there's a window.name update in JS
- recording the changed name in the frame's FrameReplicationState
- forwarding the updated name to any of the frame's proxies in other
  renderer processes via FrameMsg_DidUpdateName.

This is a Chromium-only patch since the plumbing for getting
window.name notifications out of Blink was already in place and used
in <webview>.  <webview>'s Chromium-side window.name code is
refactored to use the new plumbing in this CL.

BUG= 426512

Review URL: https://codereview.chromium.org/974723002

Cr-Commit-Position: refs/heads/master@{#319823}
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index e89f17a..8d6c6a0 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3947,6 +3947,12 @@
   NotifyNavigationStateChanged(INVALIDATE_TYPE_URL);
 }
 
+void WebContentsImpl::DidChangeName(RenderFrameHost* render_frame_host,
+                                    const std::string& name) {
+  FOR_EACH_OBSERVER(WebContentsObserver, observers_,
+                    FrameNameChanged(render_frame_host, name));
+}
+
 void WebContentsImpl::DidDisownOpener(RenderFrameHost* render_frame_host) {
   // No action is necessary if the opener has already been cleared.
   if (!opener_)