Chromium Code Reviews| Index: chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| diff --git a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| index 1da08e0e54dfdf0b1575f6d5192a90a1c7b00035..0cc3fa0e98e399e9f8c684496af2539e5f18a943 100644 |
| --- a/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| +++ b/chrome/browser/ui/cocoa/constrained_window/constrained_window_mac.mm |
| @@ -20,12 +20,15 @@ ConstrainedWindowMac::ConstrainedWindowMac( |
| id<ConstrainedWindowSheet> sheet) |
| : delegate_(delegate) { |
| DCHECK(sheet); |
| - extensions::GuestViewBase* guest_view = |
| - extensions::GuestViewBase::FromWebContents(web_contents); |
| - // For embedded WebContents, use the embedder's WebContents for constrained |
| - // window. |
| - web_contents = guest_view && guest_view->embedder_web_contents() ? |
| - guest_view->embedder_web_contents() : web_contents; |
| + |
| + // |web_contents| may be embedded within a chain of nested GuestViews. If it |
| + // is, follow the chain of embedders to the outermost WebContents and use it. |
| + while (extensions::GuestViewBase* guest_view = |
|
Fady Samuel
2015/03/26 01:43:02
Drive by comment: This pattern has started emergin
|
| + extensions::GuestViewBase::FromWebContents(web_contents)) { |
| + if (!guest_view->embedder_web_contents()) |
| + break; |
| + web_contents = guest_view->embedder_web_contents(); |
| + } |
| auto manager = WebContentsModalDialogManager::FromWebContents(web_contents); |
| scoped_ptr<SingleWebContentsDialogManagerCocoa> native_manager( |