Index: content/common/frame_replication_state.h |
diff --git a/content/common/frame_replication_state.h b/content/common/frame_replication_state.h |
index f6cfa9407d67fd5ac00486d0e8cdc4cc60c51288..77ec8596466b58167e9dac7c51996f68a90809e6 100644 |
--- a/content/common/frame_replication_state.h |
+++ b/content/common/frame_replication_state.h |
@@ -48,15 +48,42 @@ struct CONTENT_EXPORT FrameReplicationState { |
FrameReplicationState(const std::string& name); |
~FrameReplicationState(); |
- // Current serialized security origin of the frame. Unique origins are |
- // represented as the string "null" per RFC 6454. |
+ // Current serialized security origin of the frame. Unique origins are |
+ // represented as the string "null" per RFC 6454. This field is updated |
+ // whenever a frame navigation commits. |
+ // |
+ // TODO(alexmos): For now, |origin| updates are immediately sent to all frame |
+ // proxies when in --site-per-process mode. This isn't ideal, since Blink |
+ // typically needs a proxy's origin only when performing security checks on |
+ // the ancestors of a local frame. So, as a future improvement, we could |
+ // delay sending origin updates to proxies until they have a local descendant |
+ // (if ever). This would reduce leaking a user's browsing history into a |
+ // compromized renderer. |
url::Origin origin; |
- // Current sandbox flags of the frame. |
+ // Current sandbox flags of the frame. |sandbox_flags| are initialized for |
+ // new child frames using the value of the <iframe> element's "sandbox" |
+ // attribute. They are updated dynamically whenever a parent frame updates an |
+ // <iframe>'s sandbox attribute via JavaScript. |
+ // |
+ // Updates to |sandbox_flags| are sent to proxies, but only after a |
+ // subsequent navigation of the (sandboxed) frame, since the flags only take |
+ // effect on navigation (see also FrameTreeNode::effective_sandbox_flags_). |
+ // The proxies need updated flags so that they can be inherited properly if a |
+ // proxy ever becomes a parent of a local frame. |
SandboxFlags sandbox_flags; |
// The assigned name of the frame. This name can be empty, unlike the unique |
// name generated internally in the DOM tree. |
+ // |
+ // |name| is set when a new child frame is created using the value of the |
+ // <iframe> element's "name" attribute (see |
+ // RenderFrameHostImpl::OnCreateChildFrame), and it is updated dynamically |
+ // whenever a frame sets its window.name. |
+ // |
+ // |name| updates are immediately sent to all frame proxies (when in |
+ // --site-per-process mode), so that other frames can look up or navigate a |
+ // frame using its updated name (e.g., using window.open(url, frame_name)). |
std::string name; |
// TODO(alexmos): Eventually, this structure can also hold other state that |