blob: a509a164f639156b001083ca67cf5f6531913555 [file] [log] [blame]
// Copyright 2018 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 "third_party/blink/renderer/core/frame/picture_in_picture_controller.h"
#include "third_party/blink/renderer/core/core_initializer.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element.h"
namespace blink {
PictureInPictureController::PictureInPictureController(Document& document)
: Supplement<Document>(document) {}
// static
const char PictureInPictureController::kSupplementName[] =
"PictureInPictureController";
// static
PictureInPictureController& PictureInPictureController::From(
Document& document) {
PictureInPictureController* controller =
Supplement<Document>::From<PictureInPictureController>(document);
if (!controller) {
controller =
CoreInitializer::GetInstance().CreatePictureInPictureController(
document);
ProvideTo(document, controller);
}
return *controller;
}
// static
bool PictureInPictureController::IsElementInPictureInPicture(
const Element* element) {
DCHECK(element);
Document& document = element->GetDocument();
PictureInPictureController* controller =
Supplement<Document>::From<PictureInPictureController>(document);
return controller && controller->IsPictureInPictureElement(element);
}
void PictureInPictureController::Trace(blink::Visitor* visitor) {
Supplement<Document>::Trace(visitor);
}
} // namespace blink