OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/blocked_content/app_modal_dialog_helper.h" | 5 #include "chrome/browser/ui/blocked_content/app_modal_dialog_helper.h" |
6 | 6 |
7 #include "chrome/browser/ui/browser.h" | 7 #include "chrome/browser/ui/browser.h" |
8 #include "chrome/browser/ui/browser_finder.h" | 8 #include "chrome/browser/ui/browser_finder.h" |
9 #include "chrome/browser/ui/browser_list.h" | 9 #include "chrome/browser/ui/browser_list.h" |
10 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 10 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 actual_host = guest->embedder_web_contents(); | 28 actual_host = guest->embedder_web_contents(); |
29 #endif | 29 #endif |
30 | 30 |
31 // If the WebContents that triggered this dialog is not currently focused, we | 31 // If the WebContents that triggered this dialog is not currently focused, we |
32 // want to store a potential popup here to restore it after the dialog was | 32 // want to store a potential popup here to restore it after the dialog was |
33 // closed. | 33 // closed. |
34 Browser* active_browser = BrowserList::GetInstance()->GetLastActive(); | 34 Browser* active_browser = BrowserList::GetInstance()->GetLastActive(); |
35 if (active_browser) { | 35 if (active_browser) { |
36 content::WebContents* active_web_contents = | 36 content::WebContents* active_web_contents = |
37 active_browser->tab_strip_model()->GetActiveWebContents(); | 37 active_browser->tab_strip_model()->GetActiveWebContents(); |
38 if (active_browser->is_type_popup() && active_web_contents && | 38 if (active_browser->is_type_popup() && active_web_contents) { |
39 active_web_contents->GetOriginalOpener() == actual_host) { | 39 content::WebContents* original_opener = |
40 // It's indeed a popup from the dialog opening WebContents. Store it, so | 40 content::WebContents::FromRenderFrameHost( |
41 // we can focus it later. | 41 active_web_contents->GetOriginalOpener()); |
42 popup_ = active_web_contents; | 42 if (original_opener == actual_host) { |
43 Observe(popup_); | 43 // It's indeed a popup from the dialog opening WebContents. Store it, so |
| 44 // we can focus it later. |
| 45 popup_ = active_web_contents; |
| 46 Observe(popup_); |
| 47 } |
44 } | 48 } |
45 } | 49 } |
46 } | 50 } |
47 | 51 |
48 AppModalDialogHelper::~AppModalDialogHelper() { | 52 AppModalDialogHelper::~AppModalDialogHelper() { |
49 if (!popup_) | 53 if (!popup_) |
50 return; | 54 return; |
51 | 55 |
52 content::WebContentsDelegate* delegate = popup_->GetDelegate(); | 56 content::WebContentsDelegate* delegate = popup_->GetDelegate(); |
53 if (!delegate) | 57 if (!delegate) |
54 return; | 58 return; |
55 | 59 |
56 delegate->ActivateContents(popup_); | 60 delegate->ActivateContents(popup_); |
57 } | 61 } |
58 | 62 |
59 void AppModalDialogHelper::WebContentsDestroyed() { | 63 void AppModalDialogHelper::WebContentsDestroyed() { |
60 popup_ = nullptr; | 64 popup_ = nullptr; |
61 } | 65 } |
OLD | NEW |