| Index: Source/web/WebFrame.cpp
|
| diff --git a/Source/web/WebFrame.cpp b/Source/web/WebFrame.cpp
|
| index e5eb22bacb679fc1c1f139ebd6ea93b9d47fc6bf..85054aad547e8a42316697e9837078b31d4d1204 100644
|
| --- a/Source/web/WebFrame.cpp
|
| +++ b/Source/web/WebFrame.cpp
|
| @@ -6,6 +6,7 @@
|
| #include "public/web/WebFrame.h"
|
|
|
| #include "core/frame/FrameHost.h"
|
| +#include "core/frame/FrameView.h"
|
| #include "core/frame/RemoteFrame.h"
|
| #include "core/html/HTMLFrameOwnerElement.h"
|
| #include "platform/UserGestureIndicator.h"
|
| @@ -75,10 +76,14 @@ bool WebFrame::swap(WebFrame* frame)
|
| // increments of connected subframes.
|
| FrameOwner* owner = oldFrame->owner();
|
| oldFrame->disconnectOwnerElement();
|
| - if (toCoreFrame(frame)) {
|
| - ASSERT(owner == toCoreFrame(frame)->owner());
|
| - if (owner->isLocal())
|
| - toHTMLFrameOwnerElement(owner)->setContentFrame(*toCoreFrame(frame));
|
| + if (Frame* newFrame = toCoreFrame(frame)) {
|
| + ASSERT(owner == newFrame->owner());
|
| + if (owner->isLocal()) {
|
| + HTMLFrameOwnerElement* ownerElement = toHTMLFrameOwnerElement(owner);
|
| + ownerElement->setContentFrame(*newFrame);
|
| + if (newFrame->isLocalFrame())
|
| + ownerElement->setWidget(toLocalFrame(newFrame)->view());
|
| + }
|
| } else if (frame->isWebLocalFrame()) {
|
| toWebLocalFrameImpl(frame)->initializeCoreFrame(oldFrame->host(), owner, oldFrame->tree().name(), nullAtom);
|
| } else {
|
|
|