blob: c18de9dd94177cdd09435c25e67b8a8495228b75 [file] [log] [blame]
// Copyright 2017 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 "modules/media_controls/elements/MediaControlElementBase.h"
#include "core/html/media/HTMLMediaElement.h"
#include "core/layout/LayoutObject.h"
#include "modules/media_controls/MediaControlsImpl.h"
namespace blink {
void MediaControlElementBase::SetIsWanted(bool wanted) {
if (is_wanted_ == wanted)
return;
is_wanted_ = wanted;
UpdateShownState();
}
bool MediaControlElementBase::IsWanted() const {
return is_wanted_;
}
void MediaControlElementBase::SetDoesFit(bool fits) {
does_fit_ = fits;
UpdateShownState();
}
bool MediaControlElementBase::DoesFit() const {
return does_fit_;
}
MediaControlElementType MediaControlElementBase::DisplayType() const {
return display_type_;
}
bool MediaControlElementBase::HasOverflowButton() const {
return false;
}
MediaControlElementBase::MediaControlElementBase(
MediaControlsImpl& media_controls,
MediaControlElementType display_type,
HTMLElement* element)
: media_controls_(&media_controls),
display_type_(display_type),
element_(element),
is_wanted_(true),
does_fit_(true) {}
void MediaControlElementBase::UpdateShownState() {
if (is_wanted_ && does_fit_)
element_->RemoveInlineStyleProperty(CSSPropertyDisplay);
else
element_->SetInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
}
MediaControlsImpl& MediaControlElementBase::GetMediaControls() const {
DCHECK(media_controls_);
return *media_controls_;
}
HTMLMediaElement& MediaControlElementBase::MediaElement() const {
return GetMediaControls().MediaElement();
}
void MediaControlElementBase::SetDisplayType(
MediaControlElementType display_type) {
if (display_type == display_type_)
return;
display_type_ = display_type;
if (LayoutObject* object = element_->GetLayoutObject())
object->SetShouldDoFullPaintInvalidation();
}
void MediaControlElementBase::Trace(blink::Visitor* visitor) {
visitor->Trace(media_controls_);
visitor->Trace(element_);
}
} // namespace blink