blob: 468cf5576617c365b0f33447b3d2380ce139ba2c [file] [log] [blame]
// Copyright 2014 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 "core/css/MediaValuesDynamic.h"
#include "core/css/CSSHelper.h"
#include "core/css/CSSPrimitiveValue.h"
#include "core/css/CSSToLengthConversionData.h"
#include "core/css/MediaValuesCached.h"
#include "core/dom/Document.h"
#include "core/frame/LocalFrame.h"
namespace blink {
PassRefPtrWillBeRawPtr<MediaValues> MediaValuesDynamic::create(Document& document)
{
return MediaValuesDynamic::create(frameFrom(document));
}
PassRefPtrWillBeRawPtr<MediaValues> MediaValuesDynamic::create(LocalFrame* frame)
{
if (!frame || !frame->view() || !frame->document() || !frame->document()->layoutView())
return MediaValuesCached::create();
return adoptRefWillBeNoop(new MediaValuesDynamic(frame));
}
MediaValuesDynamic::MediaValuesDynamic(LocalFrame* frame)
: m_frame(frame)
{
ASSERT(m_frame);
}
PassRefPtrWillBeRawPtr<MediaValues> MediaValuesDynamic::copy() const
{
return adoptRefWillBeNoop(new MediaValuesDynamic(m_frame));
}
bool MediaValuesDynamic::computeLength(double value, CSSPrimitiveValue::UnitType type, int& result) const
{
return MediaValues::computeLength(value,
type,
calculateDefaultFontSize(m_frame),
calculateViewportWidth(m_frame),
calculateViewportHeight(m_frame),
result);
}
bool MediaValuesDynamic::computeLength(double value, CSSPrimitiveValue::UnitType type, double& result) const
{
return MediaValues::computeLength(value,
type,
calculateDefaultFontSize(m_frame),
calculateViewportWidth(m_frame),
calculateViewportHeight(m_frame),
result);
}
double MediaValuesDynamic::viewportWidth() const
{
return calculateViewportWidth(m_frame);
}
double MediaValuesDynamic::viewportHeight() const
{
return calculateViewportHeight(m_frame);
}
int MediaValuesDynamic::deviceWidth() const
{
return calculateDeviceWidth(m_frame);
}
int MediaValuesDynamic::deviceHeight() const
{
return calculateDeviceHeight(m_frame);
}
float MediaValuesDynamic::devicePixelRatio() const
{
return calculateDevicePixelRatio(m_frame);
}
int MediaValuesDynamic::colorBitsPerComponent() const
{
return calculateColorBitsPerComponent(m_frame);
}
int MediaValuesDynamic::monochromeBitsPerComponent() const
{
return calculateMonochromeBitsPerComponent(m_frame);
}
PointerType MediaValuesDynamic::primaryPointerType() const
{
return calculatePrimaryPointerType(m_frame);
}
int MediaValuesDynamic::availablePointerTypes() const
{
return calculateAvailablePointerTypes(m_frame);
}
HoverType MediaValuesDynamic::primaryHoverType() const
{
return calculatePrimaryHoverType(m_frame);
}
int MediaValuesDynamic::availableHoverTypes() const
{
return calculateAvailableHoverTypes(m_frame);
}
bool MediaValuesDynamic::threeDEnabled() const
{
return calculateThreeDEnabled(m_frame);
}
const String MediaValuesDynamic::mediaType() const
{
return calculateMediaType(m_frame);
}
WebDisplayMode MediaValuesDynamic::displayMode() const
{
return calculateDisplayMode(m_frame);
}
bool MediaValuesDynamic::strictMode() const
{
return calculateStrictMode(m_frame);
}
Document* MediaValuesDynamic::document() const
{
return m_frame->document();
}
bool MediaValuesDynamic::hasValues() const
{
return m_frame;
}
DEFINE_TRACE(MediaValuesDynamic)
{
visitor->trace(m_frame);
MediaValues::trace(visitor);
}
} // namespace blink