LCOV - code coverage report
Current view: top level - editor/libeditor - TextEditUtils.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 10 34 29.4 %
Date: 2017-07-14 16:53:18 Functions: 2 8 25.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #include "TextEditUtils.h"
       7             : 
       8             : #include "mozilla/Assertions.h"
       9             : #include "mozilla/TextEditor.h"
      10             : #include "mozilla/dom/Element.h"
      11             : #include "nsAString.h"
      12             : #include "nsCOMPtr.h"
      13             : #include "nsCaseTreatment.h"
      14             : #include "nsDebug.h"
      15             : #include "nsError.h"
      16             : #include "nsGkAtoms.h"
      17             : #include "nsIDOMElement.h"
      18             : #include "nsIDOMNode.h"
      19             : #include "nsNameSpaceManager.h"
      20             : #include "nsLiteralString.h"
      21             : #include "nsString.h"
      22             : 
      23             : namespace mozilla {
      24             : 
      25             : /******************************************************************************
      26             :  * TextEditUtils
      27             :  ******************************************************************************/
      28             : 
      29             : /**
      30             :  * IsBody() returns true if aNode is an html body node.
      31             :  */
      32             : bool
      33           0 : TextEditUtils::IsBody(nsIDOMNode* aNode)
      34             : {
      35           0 :   return EditorBase::NodeIsType(aNode, nsGkAtoms::body);
      36             : }
      37             : 
      38             : /**
      39             :  * IsBreak() returns true if aNode is an html break node.
      40             :  */
      41             : bool
      42           0 : TextEditUtils::IsBreak(nsIDOMNode* aNode)
      43             : {
      44           0 :   return EditorBase::NodeIsType(aNode, nsGkAtoms::br);
      45             : }
      46             : 
      47             : bool
      48           0 : TextEditUtils::IsBreak(nsINode* aNode)
      49             : {
      50           0 :   MOZ_ASSERT(aNode);
      51           0 :   return aNode->IsHTMLElement(nsGkAtoms::br);
      52             : }
      53             : 
      54             : 
      55             : /**
      56             :  * IsMozBR() returns true if aNode is an html br node with |type = _moz|.
      57             :  */
      58             : bool
      59           0 : TextEditUtils::IsMozBR(nsIDOMNode* aNode)
      60             : {
      61           0 :   MOZ_ASSERT(aNode);
      62           0 :   return IsBreak(aNode) && HasMozAttr(aNode);
      63             : }
      64             : 
      65             : bool
      66           0 : TextEditUtils::IsMozBR(nsINode* aNode)
      67             : {
      68           0 :   MOZ_ASSERT(aNode);
      69           0 :   return aNode->IsHTMLElement(nsGkAtoms::br) &&
      70           0 :          aNode->AsElement()->AttrValueIs(kNameSpaceID_None, nsGkAtoms::type,
      71           0 :                                          NS_LITERAL_STRING("_moz"),
      72           0 :                                          eIgnoreCase);
      73             : }
      74             : 
      75             : /**
      76             :  * HasMozAttr() returns true if aNode has type attribute and its value is
      77             :  * |_moz|. (Used to indicate div's and br's we use in mail compose rules)
      78             :  */
      79             : bool
      80           0 : TextEditUtils::HasMozAttr(nsIDOMNode* aNode)
      81             : {
      82           0 :   MOZ_ASSERT(aNode);
      83           0 :   nsCOMPtr<nsIDOMElement> element = do_QueryInterface(aNode);
      84           0 :   if (!element) {
      85           0 :     return false;
      86             :   }
      87           0 :   nsAutoString typeAttrVal;
      88           0 :   nsresult rv = element->GetAttribute(NS_LITERAL_STRING("type"), typeAttrVal);
      89           0 :   return NS_SUCCEEDED(rv) && typeAttrVal.LowerCaseEqualsLiteral("_moz");
      90             : }
      91             : 
      92             : /******************************************************************************
      93             :  * AutoEditInitRulesTrigger
      94             :  ******************************************************************************/
      95             : 
      96           2 : AutoEditInitRulesTrigger::AutoEditInitRulesTrigger(TextEditor* aTextEditor,
      97           2 :                                                    nsresult& aResult)
      98             :   : mTextEditor(aTextEditor)
      99           2 :   , mResult(aResult)
     100             : {
     101           2 :   if (mTextEditor) {
     102           2 :     mTextEditor->BeginEditorInit();
     103             :   }
     104           2 : }
     105             : 
     106           4 : AutoEditInitRulesTrigger::~AutoEditInitRulesTrigger()
     107             : {
     108           2 :   if (mTextEditor) {
     109           2 :     mResult = mTextEditor->EndEditorInit();
     110             :   }
     111           2 : }
     112             : 
     113             : } // namespace mozilla

Generated by: LCOV version 1.13