#include "chrome/browser/glic/glic_occlusion_notifier.h"
#include "base/feature_list.h"
#include "chrome/browser/glic/widget/glic_widget.h"
#include "chrome/browser/picture_in_picture/picture_in_picture_occlusion_tracker.h"
#include "chrome/browser/picture_in_picture/picture_in_picture_window_manager.h"
#include "chrome/common/chrome_features.h"
#include "ui/views/widget/widget.h"
namespace glic {
GlicOcclusionNotifier::GlicOcclusionNotifier(GlicInstance& instance)
: glic_instance_(instance) {
glic_instance_->AddStateObserver(this);
}
GlicOcclusionNotifier::~GlicOcclusionNotifier() {
glic_instance_->RemoveStateObserver(this);
}
void GlicOcclusionNotifier::PanelStateChanged(
const mojom::PanelState& panel_state,
const GlicWindowController::PanelStateContext& context) {
if (GlicEnabling::IsMultiInstanceEnabled()) {
return;
}
PictureInPictureOcclusionTracker* tracker =
PictureInPictureWindowManager::GetInstance()->GetOcclusionTracker();
if (!glic_instance_->IsShowing() || glic_instance_->IsAttached() ||
!tracker) {
return;
}
if (!context.glic_widget) {
return;
}
if (panel_state.kind == mojom::PanelStateKind::kDetached) {
tracker->OnPictureInPictureWidgetOpened(context.glic_widget);
} else {
tracker->RemovePictureInPictureWidget(context.glic_widget);
}
}
}