Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/layout/style/CSSMediaRule.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "mozilla/dom/CSSMediaRule.h"
8
9
#include "mozilla/dom/CSSMediaRuleBinding.h"
10
#include "mozilla/dom/MediaList.h"
11
#include "mozilla/ServoBindings.h"
12
13
namespace mozilla {
14
namespace dom {
15
16
CSSMediaRule::CSSMediaRule(RefPtr<RawServoMediaRule> aRawRule,
17
                           StyleSheet* aSheet,
18
                           css::Rule* aParentRule,
19
                           uint32_t aLine,
20
                           uint32_t aColumn)
21
  : ConditionRule(Servo_MediaRule_GetRules(aRawRule).Consume(),
22
                  aSheet, aParentRule, aLine, aColumn)
23
  , mRawRule(std::move(aRawRule))
24
0
{
25
0
}
26
27
CSSMediaRule::~CSSMediaRule()
28
0
{
29
0
  if (mMediaList) {
30
0
    mMediaList->SetStyleSheet(nullptr);
31
0
  }
32
0
}
33
34
NS_IMPL_ADDREF_INHERITED(CSSMediaRule, css::ConditionRule)
35
NS_IMPL_RELEASE_INHERITED(CSSMediaRule, css::ConditionRule)
36
37
// QueryInterface implementation for MediaRule
38
0
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(CSSMediaRule)
39
0
NS_INTERFACE_MAP_END_INHERITING(css::ConditionRule)
40
41
NS_IMPL_CYCLE_COLLECTION_CLASS(CSSMediaRule)
42
43
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(CSSMediaRule, css::ConditionRule)
44
0
  if (tmp->mMediaList) {
45
0
    tmp->mMediaList->SetStyleSheet(nullptr);
46
0
    tmp->mMediaList = nullptr;
47
0
  }
48
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
49
50
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(CSSMediaRule, css::ConditionRule)
51
0
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMediaList)
52
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
53
54
/* virtual */ void
55
CSSMediaRule::DropSheetReference()
56
0
{
57
0
  if (mMediaList) {
58
0
    mMediaList->SetStyleSheet(nullptr);
59
0
  }
60
0
  ConditionRule::DropSheetReference();
61
0
}
62
63
#ifdef DEBUG
64
/* virtual */ void
65
CSSMediaRule::List(FILE* out, int32_t aIndent) const
66
{
67
  nsAutoCString str;
68
  for (int32_t i = 0; i < aIndent; i++) {
69
    str.AppendLiteral("  ");
70
  }
71
  Servo_MediaRule_Debug(mRawRule, &str);
72
  fprintf_stderr(out, "%s\n", str.get());
73
}
74
#endif
75
76
void
77
CSSMediaRule::GetConditionText(nsAString& aConditionText)
78
0
{
79
0
  Media()->GetMediaText(aConditionText);
80
0
}
81
82
void
83
CSSMediaRule::SetConditionText(const nsAString& aConditionText,
84
                               ErrorResult& aRv)
85
0
{
86
0
  Media()->SetMediaText(aConditionText);
87
0
}
88
89
/* virtual */ void
90
CSSMediaRule::GetCssText(nsAString& aCssText) const
91
0
{
92
0
  Servo_MediaRule_GetCssText(mRawRule, &aCssText);
93
0
}
94
95
/* virtual */ dom::MediaList*
96
CSSMediaRule::Media()
97
0
{
98
0
  if (!mMediaList) {
99
0
    mMediaList = new MediaList(Servo_MediaRule_GetMedia(mRawRule).Consume());
100
0
    mMediaList->SetStyleSheet(GetStyleSheet());
101
0
  }
102
0
  return mMediaList;
103
0
}
104
105
/* virtual */ size_t
106
CSSMediaRule::SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const
107
0
{
108
0
  // TODO Implement this!
109
0
  return aMallocSizeOf(this);
110
0
}
111
112
/* virtual */ JSObject*
113
CSSMediaRule::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
114
0
{
115
0
  return CSSMediaRule_Binding::Wrap(aCx, this, aGivenProto);
116
0
}
117
118
} // namespace dom
119
} // namespace mozilla