1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef MediaValuesDynamic_h
6#define MediaValuesDynamic_h
7
8#include "core/css/MediaValues.h"
9
10namespace blink {
11
12class Document;
13
14class MediaValuesDynamic FINAL : public MediaValues {
15public:
16    static PassRefPtr<MediaValues> create(Document&);
17    static PassRefPtr<MediaValues> create(LocalFrame*);
18    virtual PassRefPtr<MediaValues> copy() const OVERRIDE;
19    virtual bool isSafeToSendToAnotherThread() const OVERRIDE;
20    virtual bool computeLength(double value, CSSPrimitiveValue::UnitType, int& result) const OVERRIDE;
21    virtual bool computeLength(double value, CSSPrimitiveValue::UnitType, double& result) const OVERRIDE;
22
23    virtual int viewportWidth() const OVERRIDE;
24    virtual int viewportHeight() const OVERRIDE;
25    virtual int deviceWidth() const OVERRIDE;
26    virtual int deviceHeight() const OVERRIDE;
27    virtual float devicePixelRatio() const OVERRIDE;
28    virtual int colorBitsPerComponent() const OVERRIDE;
29    virtual int monochromeBitsPerComponent() const OVERRIDE;
30    virtual PointerType primaryPointerType() const OVERRIDE;
31    virtual int availablePointerTypes() const OVERRIDE;
32    virtual HoverType primaryHoverType() const OVERRIDE;
33    virtual int availableHoverTypes() const OVERRIDE;
34    virtual bool threeDEnabled() const OVERRIDE;
35    virtual bool strictMode() const OVERRIDE;
36    virtual const String mediaType() const OVERRIDE;
37    virtual Document* document() const OVERRIDE;
38    virtual bool hasValues() const OVERRIDE;
39
40protected:
41    MediaValuesDynamic(LocalFrame*);
42
43    // This raw ptr is safe, as MediaValues would not outlive MediaQueryEvaluator, and
44    // MediaQueryEvaluator is reset on |Document::detach|.
45    // FIXME: Oilpan: This raw ptr should be changed to a Member when LocalFrame is migrated to the heap.
46    LocalFrame* m_frame;
47};
48
49} // namespace
50
51#endif // MediaValuesDynamic_h
52