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( ...@@ -682,28 +682,27 @@ void XRSystem::OverlayFullscreenExitObserver::Invoke(
Event* event) { Event* event) {
DVLOG(2) << __func__ << ": event type=" << event->type(); DVLOG(2) << __func__ << ": event type=" << event->type();
element_->GetDocument().removeEventListener( document_->removeEventListener(event_type_names::kFullscreenchange, this,
event_type_names::kFullscreenchange, this, true); true);
if (event->type() == event_type_names::kFullscreenchange) { if (event->type() == event_type_names::kFullscreenchange) {
// Succeeded, proceed with session shutdown. Expanding into the fullscreen // Succeeded, proceed with session shutdown. Expanding into the fullscreen
// cutout is only valid for fullscreen mode which we just exited (cf. // cutout is only valid for fullscreen mode which we just exited (cf.
// MediaControlsDisplayCutoutDelegate::DidExitFullscreen), so we can // MediaControlsDisplayCutoutDelegate::DidExitFullscreen), so we can
// unconditionally turn this off here. // unconditionally turn this off here.
element_->GetDocument().GetViewportData().SetExpandIntoDisplayCutout(false); document_->GetViewportData().SetExpandIntoDisplayCutout(false);
xr_->ExitPresent(std::move(on_exited_)); xr_->ExitPresent(std::move(on_exited_));
} }
} }
void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen( void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen(
Element* element, Document* document,
base::OnceClosure on_exited) { base::OnceClosure on_exited) {
DVLOG(2) << __func__; DVLOG(2) << __func__;
element_ = element; document_ = document;
on_exited_ = std::move(on_exited); on_exited_ = std::move(on_exited);
element->GetDocument().addEventListener(event_type_names::kFullscreenchange, document->addEventListener(event_type_names::kFullscreenchange, this, true);
this, true);
// "ua_originated" means that the browser process already exited // "ua_originated" means that the browser process already exited
// fullscreen. Set it to false because we need the browser process // fullscreen. Set it to false because we need the browser process
// to get notified that it needs to exit fullscreen. Use // to get notified that it needs to exit fullscreen. Use
...@@ -712,12 +711,12 @@ void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen( ...@@ -712,12 +711,12 @@ void XRSystem::OverlayFullscreenExitObserver::ExitFullscreen(
// leaving others in fullscreen mode. // leaving others in fullscreen mode.
constexpr bool kUaOriginated = false; constexpr bool kUaOriginated = false;
Fullscreen::FullyExitFullscreen(element_->GetDocument(), kUaOriginated); Fullscreen::FullyExitFullscreen(*document, kUaOriginated);
} }
void XRSystem::OverlayFullscreenExitObserver::Trace(Visitor* visitor) const { void XRSystem::OverlayFullscreenExitObserver::Trace(Visitor* visitor) const {
visitor->Trace(xr_); visitor->Trace(xr_);
visitor->Trace(element_); visitor->Trace(document_);
EventListener::Trace(visitor); EventListener::Trace(visitor);
} }
...@@ -827,8 +826,7 @@ void XRSystem::ExitPresent(base::OnceClosure on_exited) { ...@@ -827,8 +826,7 @@ void XRSystem::ExitPresent(base::OnceClosure on_exited) {
if (fullscreen_element) { if (fullscreen_element) {
fullscreen_exit_observer_ = fullscreen_exit_observer_ =
MakeGarbageCollected<OverlayFullscreenExitObserver>(this); MakeGarbageCollected<OverlayFullscreenExitObserver>(this);
fullscreen_exit_observer_->ExitFullscreen(fullscreen_element, fullscreen_exit_observer_->ExitFullscreen(doc, std::move(on_exited));
std::move(on_exited));
return; return;
} }
} }
......
...@@ -327,13 +327,13 @@ class XRSystem final : public EventTargetWithInlineData, ...@@ -327,13 +327,13 @@ class XRSystem final : public EventTargetWithInlineData,
// NativeEventListener // NativeEventListener
void Invoke(ExecutionContext*, Event*) override; 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; void Trace(Visitor*) const override;
private: private:
Member<XRSystem> xr_; Member<XRSystem> xr_;
Member<Element> element_; Member<Document> document_;
base::OnceClosure on_exited_; base::OnceClosure on_exited_;
DISALLOW_COPY_AND_ASSIGN(OverlayFullscreenExitObserver); 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