Index: third_party/WebKit/Source/web/WebFrame.cpp |
diff --git a/third_party/WebKit/Source/web/WebFrame.cpp b/third_party/WebKit/Source/web/WebFrame.cpp |
index 29bf0d8c04e50f829b0c326208c3b21c650beb84..264f8af87e67639e82594bf91f5831eed9cca65f 100644 |
--- a/third_party/WebKit/Source/web/WebFrame.cpp |
+++ b/third_party/WebKit/Source/web/WebFrame.cpp |
@@ -28,7 +28,7 @@ namespace blink { |
bool WebFrame::Swap(WebFrame* frame) { |
using std::swap; |
- Frame* old_frame = ToImplBase()->GetFrame(); |
+ Frame* old_frame = CoreFrame(this); |
if (!old_frame->IsAttached()) |
return false; |
@@ -85,7 +85,7 @@ bool WebFrame::Swap(WebFrame* frame) { |
// increments of connected subframes. |
if (frame->IsWebLocalFrame()) { |
// TODO(dcheng): in an ideal world, both branches would just use |
- // WebFrameImplBase's initializeCoreFrame() helper. However, Blink |
+ // WebFrame's initializeCoreFrame() helper. However, Blink |
// currently requires a 'provisional' local frame to serve as a |
// placeholder for loading state when swapping to a local frame. |
// In this case, the core LocalFrame is already initialized, so just |
@@ -108,10 +108,9 @@ bool WebFrame::Swap(WebFrame* frame) { |
} |
if (parent_ && old_frame->HasReceivedUserGesture()) |
- frame->ToImplBase()->GetFrame()->SetDocumentHasReceivedUserGesture(); |
+ CoreFrame(frame)->SetDocumentHasReceivedUserGesture(); |
- frame->ToImplBase()->GetFrame()->GetWindowProxyManager()->SetGlobalProxies( |
- global_proxies); |
+ CoreFrame(frame)->GetWindowProxyManager()->SetGlobalProxies(global_proxies); |
parent_ = nullptr; |
@@ -119,12 +118,12 @@ bool WebFrame::Swap(WebFrame* frame) { |
} |
void WebFrame::Detach() { |
- ToImplBase()->GetFrame()->Detach(FrameDetachType::kRemove); |
+ CoreFrame(this)->Detach(FrameDetachType::kRemove); |
} |
WebSecurityOrigin WebFrame::GetSecurityOrigin() const { |
return WebSecurityOrigin( |
- ToImplBase()->GetFrame()->GetSecurityContext()->GetSecurityOrigin()); |
+ CoreFrame(this)->GetSecurityContext()->GetSecurityOrigin()); |
} |
void WebFrame::SetFrameOwnerPolicy( |
@@ -132,29 +131,24 @@ void WebFrame::SetFrameOwnerPolicy( |
const blink::WebParsedFeaturePolicy& container_policy) { |
// At the moment, this is only used to replicate sandbox flags and container |
// policy for frames with a remote owner. |
- RemoteFrameOwner* owner = |
- ToRemoteFrameOwner(ToImplBase()->GetFrame()->Owner()); |
+ RemoteFrameOwner* owner = ToRemoteFrameOwner(CoreFrame(this)->Owner()); |
DCHECK(owner); |
owner->SetSandboxFlags(static_cast<SandboxFlags>(flags)); |
owner->SetContainerPolicy(container_policy); |
} |
WebInsecureRequestPolicy WebFrame::GetInsecureRequestPolicy() const { |
- return ToImplBase() |
- ->GetFrame() |
- ->GetSecurityContext() |
- ->GetInsecureRequestPolicy(); |
+ return CoreFrame(this)->GetSecurityContext()->GetInsecureRequestPolicy(); |
} |
void WebFrame::SetFrameOwnerProperties( |
const WebFrameOwnerProperties& properties) { |
// At the moment, this is only used to replicate frame owner properties |
// for frames with a remote owner. |
- RemoteFrameOwner* owner = |
- ToRemoteFrameOwner(ToImplBase()->GetFrame()->Owner()); |
+ RemoteFrameOwner* owner = ToRemoteFrameOwner(CoreFrame(this)->Owner()); |
DCHECK(owner); |
- Frame* frame = ToImplBase()->GetFrame(); |
+ Frame* frame = CoreFrame(this); |
DCHECK(frame); |
if (frame->IsLocalFrame()) { |
@@ -209,8 +203,8 @@ void WebFrame::InsertAfter(WebFrame* new_child, WebFrame* previous_sibling) { |
last_child_ = new_child; |
} |
- ToImplBase()->GetFrame()->Tree().InvalidateScopedChildCount(); |
- ToImplBase()->GetFrame()->GetPage()->IncrementSubframeCount(); |
+ CoreFrame(this)->Tree().InvalidateScopedChildCount(); |
+ CoreFrame(this)->GetPage()->IncrementSubframeCount(); |
} |
void WebFrame::AppendChild(WebFrame* child) { |
@@ -234,8 +228,8 @@ void WebFrame::RemoveChild(WebFrame* child) { |
child->previous_sibling_ = child->next_sibling_ = 0; |
- ToImplBase()->GetFrame()->Tree().InvalidateScopedChildCount(); |
- ToImplBase()->GetFrame()->GetPage()->DecrementSubframeCount(); |
+ CoreFrame(this)->Tree().InvalidateScopedChildCount(); |
+ CoreFrame(this)->GetPage()->DecrementSubframeCount(); |
} |
void WebFrame::SetParent(WebFrame* parent) { |
@@ -262,7 +256,7 @@ WebFrame* WebFrame::NextSibling() const { |
} |
WebFrame* WebFrame::TraverseNext() const { |
- if (Frame* frame = ToImplBase()->GetFrame()) |
+ if (Frame* frame = CoreFrame(this)) |
return FromFrame(frame->Tree().TraverseNext()); |
return nullptr; |
} |
@@ -276,7 +270,7 @@ WebFrame* WebFrame::FromFrameOwnerElement(const WebElement& web_element) { |
} |
bool WebFrame::IsLoading() const { |
- if (Frame* frame = ToImplBase()->GetFrame()) |
+ if (Frame* frame = CoreFrame(this)) |
return frame->IsLoading(); |
return false; |
} |
@@ -326,4 +320,21 @@ void WebFrame::Close() { |
opened_frame_tracker_->Dispose(); |
} |
+void WebFrame::InitializeCoreFrame(WebFrame* frame, Page& page) { |
+ if (frame->IsWebLocalFrame()) |
+ ToWebLocalFrameImpl(frame)->InitializeCoreFrame(page, 0, g_null_atom); |
+ else if (frame->IsWebRemoteFrame()) |
+ ToWebRemoteFrameImpl(frame)->InitializeCoreFrame(page, 0, g_null_atom); |
dcheng
2017/04/26 11:45:33
I think this is missing an else before the NOTREAC
mustaq
2017/04/26 18:12:48
Yikes! Done.
|
+ NOTREACHED(); |
+} |
+ |
+Frame* WebFrame::CoreFrame(const WebFrame* frame) { |
+ if (frame->IsWebLocalFrame()) |
+ return ToWebLocalFrameImpl(frame)->GetFrame(); |
+ if (frame->IsWebRemoteFrame()) |
+ return ToWebRemoteFrameImpl(frame)->GetFrame(); |
+ NOTREACHED(); |
+ return nullptr; |
+} |
+ |
} // namespace blink |