| 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 35b6f47b57087b79d5f0144e6deaffda7dd2d900..fbebee60977914ace7ae501836958339faac0382 100644
|
| --- a/content/browser/web_contents/web_contents_impl.cc
|
| +++ b/content/browser/web_contents/web_contents_impl.cc
|
| @@ -596,9 +596,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
|
| @@ -3120,6 +3123,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;
|
|
|