OLD | NEW |
(Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/ui/webui/signin/get_auth_frame.h" |
| 6 |
| 7 #include <set> |
| 8 |
| 9 #include "base/bind.h" |
| 10 #include "components/guest_view/browser/guest_view_manager.h" |
| 11 #include "content/public/browser/web_contents.h" |
| 12 #include "extensions/browser/guest_view/web_view/web_view_guest.h" |
| 13 |
| 14 namespace { |
| 15 |
| 16 bool AddWebContentsToSet(std::set<content::WebContents*>* frame_set, |
| 17 const std::string& web_view_name, |
| 18 content::WebContents* web_contents) { |
| 19 auto* web_view = extensions::WebViewGuest::FromWebContents(web_contents); |
| 20 if (web_view && web_view->name() == web_view_name) |
| 21 frame_set->insert(web_contents); |
| 22 return false; |
| 23 } |
| 24 |
| 25 } // namespace |
| 26 |
| 27 namespace signin { |
| 28 |
| 29 content::RenderFrameHost* GetAuthFrame(content::WebContents* web_contents, |
| 30 const std::string& parent_frame_name) { |
| 31 content::WebContents* auth_web_contents = |
| 32 GetAuthFrameWebContents(web_contents, parent_frame_name); |
| 33 return auth_web_contents ? auth_web_contents->GetMainFrame() : nullptr; |
| 34 } |
| 35 |
| 36 content::WebContents* GetAuthFrameWebContents( |
| 37 content::WebContents* web_contents, |
| 38 const std::string& parent_frame_name) { |
| 39 std::set<content::WebContents*> frame_set; |
| 40 auto* manager = guest_view::GuestViewManager::FromBrowserContext( |
| 41 web_contents->GetBrowserContext()); |
| 42 if (manager) { |
| 43 manager->ForEachGuest( |
| 44 web_contents, |
| 45 base::Bind(&AddWebContentsToSet, &frame_set, parent_frame_name)); |
| 46 } |
| 47 DCHECK_GE(1U, frame_set.size()); |
| 48 if (!frame_set.empty()) |
| 49 return *frame_set.begin(); |
| 50 |
| 51 return nullptr; |
| 52 } |
| 53 |
| 54 } // namespace signin |
OLD | NEW |