| 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 |