Skip to content

Commit f0c9248

Browse files
ars18wrwiText-CI
authored andcommitted
Implement disabled pseudo class selector. Minor refactoring.
DEVSIX-1973 Autoported commit. Original commit hash: [83282e402]
1 parent f3fc72a commit f0c9248

File tree

6 files changed

+73
-9
lines changed

6 files changed

+73
-9
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.IO;
3+
using iText.StyledXmlParser;
4+
using iText.StyledXmlParser.Node;
5+
using iText.StyledXmlParser.Node.Impl.Jsoup;
6+
using iText.StyledXmlParser.Node.Impl.Jsoup.Node;
7+
using iText.Test;
8+
9+
namespace iText.StyledXmlParser.Css.Selector.Item {
10+
public class CssPseudoClassDisabledSelectorItemTest : ExtendedITextTest {
11+
private static readonly String sourceFolder = iText.Test.TestUtil.GetParentProjectDirectory(NUnit.Framework.TestContext
12+
.CurrentContext.TestDirectory) + "/resources/itext/styledxmlparser/css/selector/item/CssPseudoClassDisabledSelectorItemTest/";
13+
14+
/// <exception cref="System.IO.IOException"/>
15+
[NUnit.Framework.Test]
16+
public virtual void TestDisabledSelector() {
17+
String filename = sourceFolder + "disabled.html";
18+
CssPseudoClassDisabledSelectorItem item = CssPseudoClassDisabledSelectorItem.GetInstance();
19+
IXmlParser htmlParser = new JsoupHtmlParser();
20+
IDocumentNode documentNode = htmlParser.Parse(new FileStream(filename, FileMode.Open, FileAccess.Read), "UTF-8"
21+
);
22+
IElementNode disabledInput = new JsoupElementNode(((JsoupDocumentNode)documentNode).GetDocument().GetElementsByTag
23+
("input").First());
24+
IElementNode enabledInput = new JsoupElementNode(((JsoupDocumentNode)documentNode).GetDocument().GetElementsByTag
25+
("input")[1]);
26+
NUnit.Framework.Assert.IsFalse(item.Matches(documentNode));
27+
NUnit.Framework.Assert.IsTrue(item.Matches(disabledInput));
28+
NUnit.Framework.Assert.IsFalse(item.Matches(enabledInput));
29+
NUnit.Framework.Assert.IsFalse(item.Matches(null));
30+
}
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<input type="text" disabled name="FirstD" value="Mickey">
2+
<input type="text" name="FirstE" value="Mickey">

itext/itext.styledxmlparser/itext/styledxmlparser/CommonAttributeConstants.cs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,22 @@ source product.
4444

4545
namespace iText.StyledXmlParser {
4646
public class CommonAttributeConstants {
47-
/// <summary>The Constant ID.</summary>
48-
public const String ID = "id";
49-
5047
/// <summary>The Constant CLASS.</summary>
5148
public const String CLASS = "class";
5249

53-
/// <summary>The Constant LANG.</summary>
54-
public const String LANG = "lang";
50+
/// <summary>The Constant DISABLED.</summary>
51+
public const String DISABLED = "disabled";
5552

56-
/// <summary>The Constant LANG.</summary>
57-
public const String STYLESHEET = "stylesheet";
53+
/// <summary>The Constant ID.</summary>
54+
public const String ID = "id";
5855

5956
/// <summary>The Constant LANG.</summary>
57+
public const String LANG = "lang";
58+
59+
/// <summary>The Constant REL.</summary>
6060
public const String REL = "rel";
61+
62+
/// <summary>The Constant STYLESHEET.</summary>
63+
public const String STYLESHEET = "stylesheet";
6164
}
6265
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using iText.StyledXmlParser.Css;
2+
using iText.StyledXmlParser.Node;
3+
4+
namespace iText.StyledXmlParser.Css.Selector.Item {
5+
internal class CssPseudoClassDisabledSelectorItem : CssPseudoClassSelectorItem {
6+
private static readonly iText.StyledXmlParser.Css.Selector.Item.CssPseudoClassDisabledSelectorItem instance
7+
= new iText.StyledXmlParser.Css.Selector.Item.CssPseudoClassDisabledSelectorItem();
8+
9+
public static iText.StyledXmlParser.Css.Selector.Item.CssPseudoClassDisabledSelectorItem GetInstance() {
10+
return instance;
11+
}
12+
13+
private CssPseudoClassDisabledSelectorItem()
14+
: base(CommonCssConstants.DISABLED) {
15+
}
16+
17+
public override bool Matches(INode node) {
18+
if (!(node is IElementNode) || node is ICustomElementNode || node is IDocumentNode) {
19+
return false;
20+
}
21+
return null != ((IElementNode)node).GetAttribute(CommonCssConstants.DISABLED);
22+
}
23+
}
24+
}

itext/itext.styledxmlparser/itext/styledxmlparser/css/selector/item/CssPseudoClassSelectorItem.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,13 @@ public static iText.StyledXmlParser.Css.Selector.Item.CssPseudoClassSelectorItem
145145
return new CssPseudoClassSelectorItem.AlwaysNotApplySelectorItem(pseudoClass, arguments);
146146
}
147147

148+
case CommonCssConstants.DISABLED: {
149+
return CssPseudoClassDisabledSelectorItem.GetInstance();
150+
}
151+
148152
default: {
149153
//Still unsupported, should be addressed in DEVSIX-1440
150154
//case CommonCssConstants.CHECKED:
151-
//case CommonCssConstants.DISABLED:
152155
//case CommonCssConstants.ENABLED:
153156
//case CommonCssConstants.IN_RANGE:
154157
//case CommonCssConstants.INVALID:

port-hash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
f3e0536399965437889335f4918663bd1e7c355c
1+
83282e4027ffeb08f11a616eb0d8879d8c301ae8

0 commit comments

Comments
 (0)