// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_COMMON_FRAME_REPLICATION_STATE_H_ #define CONTENT_COMMON_FRAME_REPLICATION_STATE_H_ #include "content/common/content_export.h" #include "url/origin.h" namespace blink { enum class WebTreeScopeType; enum class WebSandboxFlags; } namespace content { // This structure holds information that needs to be replicated between a // RenderFrame and any of its associated RenderFrameProxies. struct CONTENT_EXPORT FrameReplicationState { FrameReplicationState(); FrameReplicationState(blink::WebTreeScopeType scope, const std::string& name, blink::WebSandboxFlags sandbox_flags); ~FrameReplicationState(); // Current origin of the frame. 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. |sandbox_flags| are initialized for // new child frames using the value of the