blob: cb2789336ae896cc96e062dff5c0f5350285e17b [file] [log] [blame]
// Copyright 2019 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.
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_NON_TOUCH_MEDIA_CONTROLS_NON_TOUCH_IMPL_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_NON_TOUCH_MEDIA_CONTROLS_NON_TOUCH_IMPL_H_
#include "third_party/blink/renderer/core/html/html_div_element.h"
#include "third_party/blink/renderer/core/html/media/media_controls.h"
#include "third_party/blink/renderer/modules/media_controls/non_touch/media_controls_non_touch_media_event_listener_observer.h"
#include "third_party/blink/renderer/modules/modules_export.h"
namespace blink {
class MediaControlsNonTouchMediaEventListener;
class MODULES_EXPORT MediaControlsNonTouchImpl final
: public HTMLDivElement,
public MediaControls,
public MediaControlsNonTouchMediaEventListenerObserver {
USING_GARBAGE_COLLECTED_MIXIN(MediaControlsNonTouchImpl);
public:
static MediaControlsNonTouchImpl* Create(HTMLMediaElement&, ShadowRoot&);
explicit MediaControlsNonTouchImpl(HTMLMediaElement&);
// Node override.
Node::InsertionNotificationRequest InsertedInto(ContainerNode&) override;
void RemovedFrom(ContainerNode&) override;
// MediaControls implementation.
void MaybeShow() override;
void Hide() override;
void Reset() override {}
void OnControlsListUpdated() override {}
void OnTrackElementFailedToLoad() override {}
void NetworkStateChanged() override {}
LayoutObject* PanelLayoutObject() override { return nullptr; }
LayoutObject* TimelineLayoutObject() override { return nullptr; }
LayoutObject* ButtonPanelLayoutObject() override { return nullptr; }
LayoutObject* ContainerLayoutObject() override { return nullptr; }
void SetTestMode(bool) override {}
HTMLDivElement* PanelElement() override { return nullptr; }
void OnMediaControlsEnabledChange() override {}
// MediaControlsNonTouchMediaEventListenerObserver implementation.
void OnFocusIn() override;
void OnTimeUpdate() override {}
void OnDurationChange() override {}
void OnPlay() override {}
void OnPause() override {}
void OnError() override {}
void OnLoadedMetadata() override {}
void OnKeyPress(KeyboardEvent* event) override {}
void OnKeyDown(KeyboardEvent* event) override;
void OnKeyUp(KeyboardEvent* event) override {}
void Trace(blink::Visitor*) override;
private:
friend class MediaControlsNonTouchImplTest;
// Node
bool IsMediaControls() const override { return true; }
Member<MediaControlsNonTouchMediaEventListener> media_event_listener_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIA_CONTROLS_NON_TOUCH_MEDIA_CONTROLS_NON_TOUCH_IMPL_H_