| // Copyright 2015 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "chrome/browser/ui/user_manager.h" | 
 |  | 
 | #include "base/bind.h" | 
 | #include "components/guest_view/browser/guest_view_manager.h" | 
 |  | 
 | namespace { | 
 |  | 
 | bool AddToSet(std::set<content::WebContents*>* content_set, | 
 |               content::WebContents* web_contents) { | 
 |   content_set->insert(web_contents); | 
 |   return false; | 
 | } | 
 |  | 
 | }  // namespace | 
 |  | 
 | UserManagerProfileDialog::BaseDialogDelegate::BaseDialogDelegate() | 
 |     : guest_web_contents_(nullptr) {} | 
 |  | 
 | bool UserManagerProfileDialog::BaseDialogDelegate::HandleContextMenu( | 
 |     content::RenderFrameHost* render_frame_host, | 
 |     const content::ContextMenuParams& params) { | 
 |   // Ignores context menu. | 
 |   return true; | 
 | } | 
 |  | 
 | void UserManagerProfileDialog::BaseDialogDelegate::LoadingStateChanged( | 
 |     content::WebContents* source, | 
 |     bool to_different_document) { | 
 |   if (source->IsLoading() || guest_web_contents_) | 
 |     return; | 
 |  | 
 |   // Try to find the embedded WebView and manage its WebContents. The WebView | 
 |   // may not be found in the initial page load since it loads asynchronously. | 
 |   std::set<content::WebContents*> content_set; | 
 |   guest_view::GuestViewManager* manager = | 
 |       guest_view::GuestViewManager::FromBrowserContext( | 
 |           source->GetBrowserContext()); | 
 |   if (manager) | 
 |     manager->ForEachGuest(source, base::Bind(&AddToSet, &content_set)); | 
 |   DCHECK_LE(content_set.size(), 1U); | 
 |   if (!content_set.empty()) { | 
 |     guest_web_contents_ = *content_set.begin(); | 
 |     guest_web_contents_->SetDelegate(this); | 
 |   } | 
 | } |