LCOV - code coverage report
Current view: top level - dom/base - ElementInlines.h (source / functions) Hit Total Coverage
Test: output.info Lines: 3 35 8.6 %
Date: 2017-07-14 16:53:18 Functions: 1 6 16.7 %
Legend: Lines: hit not hit

          Line data    Source code
       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             : #ifndef mozilla_dom_ElementInlines_h
       8             : #define mozilla_dom_ElementInlines_h
       9             : 
      10             : #include "mozilla/dom/Element.h"
      11             : #include "mozilla/ServoBindingTypes.h"
      12             : #include "nsIContentInlines.h"
      13             : #include "nsIDocument.h"
      14             : #include "nsIPresShell.h"
      15             : #include "nsIPresShellInlines.h"
      16             : 
      17             : namespace mozilla {
      18             : namespace dom {
      19             : 
      20             : inline void
      21           1 : Element::RegisterActivityObserver()
      22             : {
      23           1 :   OwnerDoc()->RegisterActivityObserver(this);
      24           1 : }
      25             : 
      26             : inline void
      27           0 : Element::UnregisterActivityObserver()
      28             : {
      29           0 :   OwnerDoc()->UnregisterActivityObserver(this);
      30           0 : }
      31             : 
      32             : inline Element*
      33           0 : Element::GetFlattenedTreeParentElement() const
      34             : {
      35           0 :   nsINode* parentNode = GetFlattenedTreeParentNode();
      36           0 :   if MOZ_LIKELY(parentNode && parentNode->IsElement()) {
      37           0 :     return parentNode->AsElement();
      38             :   }
      39             : 
      40           0 :   return nullptr;
      41             : }
      42             : 
      43             : inline Element*
      44           0 : Element::GetFlattenedTreeParentElementForStyle() const
      45             : {
      46           0 :   nsINode* parentNode = GetFlattenedTreeParentNodeForStyle();
      47           0 :   if MOZ_LIKELY(parentNode && parentNode->IsElement()) {
      48           0 :     return parentNode->AsElement();
      49             :   }
      50             : 
      51           0 :   return nullptr;
      52             : }
      53             : 
      54             : inline void
      55           0 : Element::NoteDirtyDescendantsForServo()
      56             : {
      57           0 :   if (!HasServoData()) {
      58             :     // The dirty descendants bit only applies to styled elements.
      59           0 :     return;
      60             :   }
      61             : 
      62           0 :   Element* curr = this;
      63           0 :   while (curr && !curr->HasDirtyDescendantsForServo()) {
      64           0 :     curr->SetHasDirtyDescendantsForServo();
      65           0 :     curr = curr->GetFlattenedTreeParentElementForStyle();
      66             :   }
      67             : 
      68           0 :   if (nsIPresShell* shell = OwnerDoc()->GetShell()) {
      69           0 :     shell->EnsureStyleFlush();
      70             :   }
      71             : 
      72           0 :   MOZ_ASSERT(DirtyDescendantsBitIsPropagatedForServo());
      73             : }
      74             : 
      75             : #ifdef DEBUG
      76             : inline bool
      77           0 : Element::DirtyDescendantsBitIsPropagatedForServo()
      78             : {
      79           0 :   Element* curr = this;
      80           0 :   while (curr) {
      81           0 :     if (!curr->HasDirtyDescendantsForServo()) {
      82           0 :       return false;
      83             :     }
      84           0 :     nsINode* parentNode = curr->GetParentNode();
      85           0 :     curr = curr->GetFlattenedTreeParentElementForStyle();
      86           0 :     MOZ_ASSERT_IF(!curr,
      87             :                   parentNode == OwnerDoc() ||
      88             :                   parentNode == parentNode->OwnerDoc()->GetRootElement());
      89             :   }
      90           0 :   return true;
      91             : }
      92             : #endif
      93             : 
      94             : } // namespace dom
      95             : } // namespace mozilla
      96             : 
      97             : #endif // mozilla_dom_ElementInlines_h

Generated by: LCOV version 1.13