LCOV - app.info - parser/html/nsHtml5HtmlAttributes.cpp

LCOV - code coverage report
| Current view: | directory - parser/html - nsHtml5HtmlAttributes.cpp (source / functions) |  | Found | Hit | Coverage |
| Test: | app.info | Lines: | 108 | 28 | 25.9 %
| Date: | 2012-06-02 | Functions: | 21 | 8 | 38.1 %

           1                 : /*
           2                 :  * Copyright (c) 2007 Henri Sivonen
           3                 :  * Copyright (c) 2008-2011 Mozilla Foundation
           4                 :  *
           5                 :  * Permission is hereby granted, free of charge, to any person obtaining a
           6                 :  * copy of this software and associated documentation files (the "Software"),
           7                 :  * to deal in the Software without restriction, including without limitation
           8                 :  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
           9                 :  * and/or sell copies of the Software, and to permit persons to whom the
          10                 :  * Software is furnished to do so, subject to the following conditions:
          11                 :  *
          12                 :  * The above copyright notice and this permission notice shall be included in
          13                 :  * all copies or substantial portions of the Software.
          14                 :  *
          15                 :  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
          16                 :  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
          17                 :  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
          18                 :  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
          19                 :  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
          20                 :  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
          21                 :  * DEALINGS IN THE SOFTWARE.
          22                 :  */
          23                 :
          24                 : /*
          25                 :  * THIS IS A GENERATED FILE. PLEASE DO NOT EDIT.
          26                 :  * Please edit HtmlAttributes.java instead and regenerate.
          27                 :  */
          28                 :
          29                 : #define nsHtml5HtmlAttributes_cpp__
          30                 :
          31                 : #include "prtypes.h"
          32                 : #include "nsIAtom.h"
          33                 : #include "nsHtml5AtomTable.h"
          34                 : #include "nsString.h"
          35                 : #include "nsINameSpaceManager.h"
          36                 : #include "nsIContent.h"
          37                 : #include "nsTraceRefcnt.h"
          38                 : #include "jArray.h"
          39                 : #include "nsHtml5ArrayCopy.h"
          40                 : #include "nsAHtml5TreeBuilderState.h"
          41                 : #include "nsHtml5Atoms.h"
          42                 : #include "nsHtml5ByteReadable.h"
          43                 : #include "nsIUnicodeDecoder.h"
          44                 : #include "nsHtml5Macros.h"
          45                 :
          46                 : #include "nsHtml5Tokenizer.h"
          47                 : #include "nsHtml5TreeBuilder.h"
          48                 : #include "nsHtml5MetaScanner.h"
          49                 : #include "nsHtml5AttributeName.h"
          50                 : #include "nsHtml5ElementName.h"
          51                 : #include "nsHtml5StackNode.h"
          52                 : #include "nsHtml5UTF16Buffer.h"
          53                 : #include "nsHtml5StateSnapshot.h"
          54                 : #include "nsHtml5Portability.h"
          55                 :
          56                 : #include "nsHtml5HtmlAttributes.h"
          57                 :
          58                 : nsHtml5HtmlAttributes* nsHtml5HtmlAttributes::EMPTY_ATTRIBUTES = nsnull;
          59                 :
          60            1404 : nsHtml5HtmlAttributes::nsHtml5HtmlAttributes(PRInt32 mode)
          61                 :   : mode(mode),
          62                 :     length(0),
          63                 :     names(jArray<nsHtml5AttributeName*,PRInt32>::newJArray(5)),
          64            1404 :     values(jArray<nsString*,PRInt32>::newJArray(5))
          65                 : {
          66            1404 :   MOZ_COUNT_CTOR(nsHtml5HtmlAttributes);
          67            1404 : }
          68                 :
          69                 :
          70            2806 : nsHtml5HtmlAttributes::~nsHtml5HtmlAttributes()
          71                 : {
          72            1403 :   MOZ_COUNT_DTOR(nsHtml5HtmlAttributes);
          73            1403 :   clear(0);
          74            1403 : }
          75                 :
          76                 : PRInt32
          77             234 : nsHtml5HtmlAttributes::getIndex(nsHtml5AttributeName* name)
          78                 : {
          79             234 :   for (PRInt32 i = 0; i < length; i++) {
          80               0 :     if (names[i] == name) {
          81               0 :       return i;
          82                 :     }
          83                 :   }
          84             234 :   return -1;
          85                 : }
          86                 :
          87                 : PRInt32
          88               3 : nsHtml5HtmlAttributes::getLength()
          89                 : {
          90               3 :   return length;
          91                 : }
          92                 :
          93                 : nsIAtom*
          94               0 : nsHtml5HtmlAttributes::getLocalName(PRInt32 index)
          95                 : {
          96               0 :   if (index < length && index >= 0) {
          97               0 :     return names[index]->getLocal(mode);
          98                 :   } else {
          99               0 :     return nsnull;
         100                 :   }
         101                 : }
         102                 :
         103                 : nsHtml5AttributeName*
         104               0 : nsHtml5HtmlAttributes::getAttributeName(PRInt32 index)
         105                 : {
         106               0 :   if (index < length && index >= 0) {
         107               0 :     return names[index];
         108                 :   } else {
         109               0 :     return nsnull;
         110                 :   }
         111                 : }
         112                 :
         113                 : PRInt32
         114               0 : nsHtml5HtmlAttributes::getURI(PRInt32 index)
         115                 : {
         116               0 :   if (index < length && index >= 0) {
         117               0 :     return names[index]->getUri(mode);
         118                 :   } else {
         119               0 :     return nsnull;
         120                 :   }
         121                 : }
         122                 :
         123                 : nsIAtom*
         124               0 : nsHtml5HtmlAttributes::getPrefix(PRInt32 index)
         125                 : {
         126               0 :   if (index < length && index >= 0) {
         127               0 :     return names[index]->getPrefix(mode);
         128                 :   } else {
         129               0 :     return nsnull;
         130                 :   }
         131                 : }
         132                 :
         133                 : nsString*
         134               0 : nsHtml5HtmlAttributes::getValue(PRInt32 index)
         135                 : {
         136               0 :   if (index < length && index >= 0) {
         137               0 :     return values[index];
         138                 :   } else {
         139               0 :     return nsnull;
         140                 :   }
         141                 : }
         142                 :
         143                 : nsString*
         144             234 : nsHtml5HtmlAttributes::getValue(nsHtml5AttributeName* name)
         145                 : {
         146             234 :   PRInt32 index = getIndex(name);
         147             234 :   if (index == -1) {
         148             234 :     return nsnull;
         149                 :   } else {
         150               0 :     return getValue(index);
         151                 :   }
         152                 : }
         153                 :
         154                 : void
         155               0 : nsHtml5HtmlAttributes::addAttribute(nsHtml5AttributeName* name, nsString* value)
         156                 : {
         157               0 :   if (names.length == length) {
         158               0 :     PRInt32 newLen = length << 1;
         159               0 :     jArray<nsHtml5AttributeName*,PRInt32> newNames = jArray<nsHtml5AttributeName*,PRInt32>::newJArray(newLen);
         160               0 :     nsHtml5ArrayCopy::arraycopy(names, newNames, names.length);
         161               0 :     names = newNames;
         162               0 :     jArray<nsString*,PRInt32> newValues = jArray<nsString*,PRInt32>::newJArray(newLen);
         163               0 :     nsHtml5ArrayCopy::arraycopy(values, newValues, values.length);
         164               0 :     values = newValues;
         165                 :   }
         166               0 :   names[length] = name;
         167               0 :   values[length] = value;
         168               0 :   length++;
         169               0 : }
         170                 :
         171                 : void
         172            1403 : nsHtml5HtmlAttributes::clear(PRInt32 m)
         173                 : {
         174            1403 :   for (PRInt32 i = 0; i < length; i++) {
         175               0 :     names[i]->release();
         176               0 :     names[i] = nsnull;
         177               0 :     nsHtml5Portability::releaseString(values[i]);
         178               0 :     values[i] = nsnull;
         179                 :   }
         180            1403 :   length = 0;
         181            1403 :   mode = m;
         182            1403 : }
         183                 :
         184                 : void
         185               0 : nsHtml5HtmlAttributes::releaseValue(PRInt32 i)
         186                 : {
         187               0 :   nsHtml5Portability::releaseString(values[i]);
         188               0 : }
         189                 :
         190                 : void
         191               0 : nsHtml5HtmlAttributes::clearWithoutReleasingContents()
         192                 : {
         193               0 :   for (PRInt32 i = 0; i < length; i++) {
         194               0 :     names[i] = nsnull;
         195               0 :     values[i] = nsnull;
         196                 :   }
         197               0 :   length = 0;
         198               0 : }
         199                 :
         200                 : bool
         201               0 : nsHtml5HtmlAttributes::contains(nsHtml5AttributeName* name)
         202                 : {
         203               0 :   for (PRInt32 i = 0; i < length; i++) {
         204               0 :     if (name->equalsAnother(names[i])) {
         205               0 :       return true;
         206                 :     }
         207                 :   }
         208               0 :   return false;
         209                 : }
         210                 :
         211                 : void
         212               0 : nsHtml5HtmlAttributes::adjustForMath()
         213                 : {
         214               0 :   mode = NS_HTML5ATTRIBUTE_NAME_MATHML;
         215               0 : }
         216                 :
         217                 : void
         218               0 : nsHtml5HtmlAttributes::adjustForSvg()
         219                 : {
         220               0 :   mode = NS_HTML5ATTRIBUTE_NAME_SVG;
         221               0 : }
         222                 :
         223                 : nsHtml5HtmlAttributes*
         224               0 : nsHtml5HtmlAttributes::cloneAttributes(nsHtml5AtomTable* interner)
         225                 : {
         226                 :
         227               0 :   nsHtml5HtmlAttributes* clone = new nsHtml5HtmlAttributes(0);
         228               0 :   for (PRInt32 i = 0; i < length; i++) {
         229               0 :     clone->addAttribute(names[i]->cloneAttributeName(interner), nsHtml5Portability::newStringFromString(values[i]));
         230                 :   }
         231               0 :   return clone;
         232                 : }
         233                 :
         234                 : bool
         235               0 : nsHtml5HtmlAttributes::equalsAnother(nsHtml5HtmlAttributes* other)
         236                 : {
         237                 :
         238               0 :   PRInt32 otherLength = other->getLength();
         239               0 :   if (length != otherLength) {
         240               0 :     return false;
         241                 :   }
         242               0 :   for (PRInt32 i = 0; i < length; i++) {
         243               0 :     bool found = false;
         244               0 :     nsIAtom* ownLocal = names[i]->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML);
         245               0 :     for (PRInt32 j = 0; j < otherLength; j++) {
         246               0 :       if (ownLocal == other->names[j]->getLocal(NS_HTML5ATTRIBUTE_NAME_HTML)) {
         247               0 :         found = true;
         248               0 :         if (!nsHtml5Portability::stringEqualsString(values[i], other->values[j])) {
         249               0 :           return false;
         250                 :         }
         251                 :       }
         252                 :     }
         253               0 :     if (!found) {
         254               0 :       return false;
         255                 :     }
         256                 :   }
         257               0 :   return true;
         258                 : }
         259                 :
         260                 : void
         261            1404 : nsHtml5HtmlAttributes::initializeStatics()
         262                 : {
         263            1404 :   EMPTY_ATTRIBUTES = new nsHtml5HtmlAttributes(NS_HTML5ATTRIBUTE_NAME_HTML);
         264            1404 : }
         265                 :
         266                 : void
         267            1403 : nsHtml5HtmlAttributes::releaseStatics()
         268                 : {
         269            1403 :   delete EMPTY_ATTRIBUTES;
         270            1403 : }
         271                 :
         272                 :

Generated by: LCOV version 1.7