| Index: content/browser/web_contents/web_contents_impl.cc
|
| diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
| index 5de41501132cdb93374972fc497b40581a3ed1fb..86c320733a7e817833d5315d636982b1153a8144 100644
|
| --- a/content/browser/web_contents/web_contents_impl.cc
|
| +++ b/content/browser/web_contents/web_contents_impl.cc
|
| @@ -593,9 +593,12 @@ WebContentsImpl* WebContentsImpl::CreateWithOpener(
|
|
|
| FrameTreeNode* new_root = new_contents->GetFrameTree()->root();
|
|
|
| - if (!params.opener_suppressed && opener) {
|
| - new_root->SetOpener(opener);
|
| - new_contents->created_with_opener_ = true;
|
| + if (opener) {
|
| + new_root->SetOriginalOpener(opener);
|
| + if (!params.opener_suppressed) {
|
| + new_root->SetOpener(opener);
|
| + new_contents->created_with_opener_ = true;
|
| + }
|
| }
|
|
|
| // If the opener is sandboxed, a new popup must inherit the opener's sandbox
|
| @@ -3115,6 +3118,15 @@ WebContentsImpl* WebContentsImpl::GetOpener() const {
|
| return opener_ftn ? FromFrameTreeNode(opener_ftn) : nullptr;
|
| }
|
|
|
| +bool WebContentsImpl::HasOriginalOpener() const {
|
| + return GetOriginalOpener() != NULL;
|
| +}
|
| +
|
| +WebContents* WebContentsImpl::GetOriginalOpener() const {
|
| + FrameTreeNode* opener_ftn = frame_tree_.root()->original_opener();
|
| + return opener_ftn ? FromFrameTreeNode(opener_ftn) : nullptr;
|
| +}
|
| +
|
| void WebContentsImpl::DidChooseColorInColorChooser(SkColor color) {
|
| if (!color_chooser_info_.get())
|
| return;
|
|
|