1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/guest_view/chrome_guest_view_manager_delegate.h"
#include "build/build_config.h"
#include "chrome/browser/task_manager/web_contents_tags.h"
#include "chrome/common/buildflags.h"
#if BUILDFLAG(IS_CHROMEOS)
#include "chrome/browser/ash/app_mode/kiosk_chrome_app_manager.h"
#include "chrome/browser/ash/app_mode/kiosk_controller.h"
#include "chrome/browser/ash/app_mode/kiosk_system_session.h"
#endif // BUILDFLAG(IS_CHROMEOS)
#if BUILDFLAG(ENABLE_GLIC)
#include "chrome/browser/glic/host/guest_util.h"
#endif
namespace extensions {
ChromeGuestViewManagerDelegate::ChromeGuestViewManagerDelegate() = default;
ChromeGuestViewManagerDelegate::~ChromeGuestViewManagerDelegate() = default;
void ChromeGuestViewManagerDelegate::OnGuestAdded(
content::WebContents* guest_web_contents) const {
ExtensionsGuestViewManagerDelegate::OnGuestAdded(guest_web_contents);
// Attaches the task-manager-specific tag for the GuestViews to its
// `guest_web_contents` so that their corresponding tasks show up in the task
// manager.
task_manager::WebContentsTags::CreateForGuestContents(guest_web_contents);
#if BUILDFLAG(IS_CHROMEOS)
// Notifies Kiosk controller about the added guest.
ash::KioskController::Get().OnGuestAdded(guest_web_contents);
#endif
#if BUILDFLAG(ENABLE_GLIC)
// Check if guest belongs to glic and apply transparent background if so.
glic::OnGuestAdded(guest_web_contents);
#endif
}
// ExtensionsGuestViewManagerDelegate::IsGuestAvailableToContextWithFeature()
// will check for the availability of the feature provided by |guest|. If the
// API feature provided is "controlledFrameInternal", the controlled_frame.cc's
// AvailabilityCheck will be run to verify the associated RenderFrameHost is
// isolated and that it's only exposed in the expected schemes / feature modes.
bool ChromeGuestViewManagerDelegate::IsOwnedByControlledFrameEmbedder(
const guest_view::GuestViewBase* guest) {
return ExtensionsGuestViewManagerDelegate::
IsGuestAvailableToContextWithFeature(guest, "controlledFrameInternal");
}
} // namespace extensions
|