Commit 70d00041 authored by Klaus Weidner's avatar Klaus Weidner Committed by Commit Bot

WebXR: simplify FullscreenExitObserver

Pass in a Document instead of Element since the internal methods just
use the Document.

Change-Id: If7a1d65b86cab1344ef336b955d5769b8f37a0b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2358492
Auto-Submit: Klaus Weidner <klausw@chromium.org>
Commit-Queue: Piotr Bialecki <bialpio@chromium.org>
Reviewed-by: default avatarPiotr Bialecki <bialpio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799291}
parent 6ef75c8b
......@@ -682,28 +682,27 @@ void XRSystem::OverlayFullscreenExitObserver::Invoke(
Event* event) {
DVLOG(2) << __func__ << ": event type=" << event->type();
element_->GetDocument().removeEventListener(
event_type_names::kFullscreenchange, this, true);
document_->removeEventListener(event_type_names::kFullscreenchange, this,
true);
if (event->type() == event_type_names::kFullscreenchange) {
// Succeeded, proceed with session shutdown. Expanding into the fullscreen
// cutout is only valid for fullscreen mode which we just exited (cf.
// MediaControlsDisplayCutoutDelegate::DidExitFullscreen), so we can
// unconditionally turn this off here.
element_->GetDocument().GetViewportData().SetExpandIntoDisplayCutout(false);
document_->GetViewportData().SetExpandIntoDisplayCutout(false);
xr_->ExitPresent(std::move(on_exited_));
}
}
void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen(
Element* element,
Document* document,
base::OnceClosure on_exited) {
DVLOG(2) << __func__;
element_ = element;
document_ = document;
on_exited_ = std::move(on_exited);
element->GetDocument().addEventListener(event_type_names::kFullscreenchange,
this, true);
document->addEventListener(event_type_names::kFullscreenchange, this, true);
// "ua_originated" means that the browser process already exited
// fullscreen. Set it to false because we need the browser process
// to get notified that it needs to exit fullscreen. Use
......@@ -712,12 +711,12 @@ void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen(
// leaving others in fullscreen mode.
constexpr bool kUaOriginated = false;
Fullscreen::FullyExitFullscreen(element_->GetDocument(), kUaOriginated);
Fullscreen::FullyExitFullscreen(*document, kUaOriginated);
}
void XRSystem::OverlayFullscreenExitObserver::Trace(Visitor* visitor) const {
visitor->Trace(xr_);
visitor->Trace(element_);
visitor->Trace(document_);
EventListener::Trace(visitor);
}
......@@ -827,8 +826,7 @@ void XRSystem::ExitPresent(base::OnceClosure on_exited) {
if (fullscreen_element) {
fullscreen_exit_observer_ =
MakeGarbageCollected<OverlayFullscreenExitObserver>(this);
fullscreen_exit_observer_->ExitFullscreen(fullscreen_element,
std::move(on_exited));
fullscreen_exit_observer_->ExitFullscreen(doc, std::move(on_exited));
return;
}
}
......
......@@ -327,13 +327,13 @@ class XRSystem final : public EventTargetWithInlineData,
// NativeEventListener
void Invoke(ExecutionContext*, Event*) override;
void ExitFullscreen(Element* element, base::OnceClosure on_exited);
void ExitFullscreen(Document* doc, base::OnceClosure on_exited);
void Trace(Visitor*) const override;
private:
Member<XRSystem> xr_;
Member<Element> element_;
Member<Document> document_;
base::OnceClosure on_exited_;
DISALLOW_COPY_AND_ASSIGN(OverlayFullscreenExitObserver);
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment