Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
3a1c2798
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
3a1c2798
编写于
12月 06, 2019
作者:
A
andrew
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
4949105: Access Bridge lacks html tags parsing
Reviewed-by: aph, andrew Contributed-by:
N
Alex Kashchenko
<
akashche@redhat.com
>
上级
49171c28
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
167 addition
and
1 deletion
+167
-1
src/share/classes/javax/swing/plaf/basic/BasicHTML.java
src/share/classes/javax/swing/plaf/basic/BasicHTML.java
+30
-1
test/javax/accessibility/AccessibleName/GetAccessibleNameTest.java
...x/accessibility/AccessibleName/GetAccessibleNameTest.java
+137
-0
未找到文件。
src/share/classes/javax/swing/plaf/basic/BasicHTML.java
浏览文件 @
3a1c2798
/*
* Copyright (c) 1998, 20
06
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 20
19
, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
...
...
@@ -28,6 +28,7 @@ import java.io.*;
import
java.awt.*
;
import
java.net.URL
;
import
javax.accessibility.AccessibleContext
;
import
javax.swing.*
;
import
javax.swing.text.*
;
import
javax.swing.text.html.*
;
...
...
@@ -212,6 +213,34 @@ public class BasicHTML {
}
}
c
.
putClientProperty
(
BasicHTML
.
propertyKey
,
value
);
String
currentAccessibleNameProperty
=
(
String
)
c
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
);
String
previousParsedText
=
null
;
if
(
currentAccessibleNameProperty
!=
null
&&
oldValue
!=
null
)
{
try
{
previousParsedText
=
(
oldValue
.
getDocument
().
getText
(
0
,
oldValue
.
getDocument
().
getLength
())).
trim
();
}
catch
(
BadLocationException
e
)
{
}
}
// AccessibleContext.ACCESSIBLE_NAME_PROPERTY should be set from here only if,
// 1. If AccessibleContext.ACCESSIBLE_NAME_PROPERTY was NOT set before
// i.e. currentAccessibleNameProperty is null. and,
// 2. If AccessibleContext.ACCESSIBLE_NAME_PROPERTY was previously set from this method
// using the value.getDocument().getText().
if
(
currentAccessibleNameProperty
==
null
||
currentAccessibleNameProperty
.
equals
(
previousParsedText
))
{
String
parsedText
=
null
;
if
(
value
!=
null
)
{
try
{
parsedText
=
(
value
.
getDocument
().
getText
(
0
,
value
.
getDocument
().
getLength
())).
trim
();
}
catch
(
BadLocationException
e
)
{
}
}
c
.
putClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
,
parsedText
);
}
}
/**
...
...
test/javax/accessibility/AccessibleName/GetAccessibleNameTest.java
0 → 100644
浏览文件 @
3a1c2798
/*
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import
javax.accessibility.AccessibleContext
;
import
javax.swing.JButton
;
import
javax.swing.JCheckBox
;
import
javax.swing.JCheckBoxMenuItem
;
import
javax.swing.JComponent
;
import
javax.swing.JLabel
;
import
javax.swing.JMenu
;
import
javax.swing.JMenuItem
;
import
javax.swing.JRadioButton
;
import
javax.swing.JRadioButtonMenuItem
;
import
javax.swing.JToggleButton
;
import
javax.swing.SwingUtilities
;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.InvocationTargetException
;
/*
* @test
* @bug 4949105
* @summary Access Bridge lacks html tags parsing
* @run main GetAccessibleNameTest
*/
public
class
GetAccessibleNameTest
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
testConstructor
();
testSetText
();
testAccessibleProperty
();
}
private
static
void
testConstructor
()
{
Class
[]
testClass
=
new
Class
[]
{
JLabel
.
class
,
JButton
.
class
,
JMenuItem
.
class
,
JMenu
.
class
,
JCheckBoxMenuItem
.
class
,
JRadioButtonMenuItem
.
class
,
JToggleButton
.
class
,
JRadioButton
.
class
,
JCheckBox
.
class
};
Class
[]
ctorArg
=
new
Class
[
1
];
ctorArg
[
0
]
=
String
.
class
;
String
expectedText
=
"bold italic em mark del small big sup sub ins strong code strike"
;
String
inputText
=
"<html><style>{color:#FF0000;}</style><body>"
+
"<b>bold</b> <i>italic</i> <em>em</em> <mark>mark</mark> <del>del</del> "
+
"<small>small</small> <big>big</big> <sup>sup</sup> <sub>sub</sub> <ins>ins</ins> "
+
"<strong>strong</strong> <code>code</code> <strike>strike</strike>"
+
"</body></html>"
;
for
(
Class
aClass
:
testClass
)
{
try
{
Constructor
constructor
=
aClass
.
getDeclaredConstructor
(
ctorArg
);
JComponent
comp
=
(
JComponent
)
constructor
.
newInstance
(
inputText
);
if
(!
expectedText
.
equals
(
comp
.
getAccessibleContext
().
getAccessibleName
()))
{
throw
new
RuntimeException
(
"AccessibleName of "
+
aClass
.
getName
()
+
" is incorrect."
+
" Expected: "
+
expectedText
+
" Actual: "
+
comp
.
getAccessibleContext
().
getAccessibleName
());
}
}
catch
(
NoSuchMethodException
e
)
{
throw
new
RuntimeException
(
aClass
.
getName
()
+
" does not have a constructor accepting"
+
"String parameter."
,
e
.
getCause
());
}
catch
(
InstantiationException
e
)
{
throw
new
RuntimeException
(
aClass
.
getName
()
+
" could not be instantiated."
,
e
.
getCause
());
}
catch
(
IllegalAccessException
e
)
{
throw
new
RuntimeException
(
aClass
.
getName
()
+
" constructor cannot be accessed."
,
e
.
getCause
());
}
catch
(
InvocationTargetException
e
)
{
throw
new
RuntimeException
(
aClass
.
getName
()
+
" constructor cannot be invoked."
,
e
.
getCause
());
}
}
}
private
static
void
testSetText
()
{
String
text
=
"html text"
;
JLabel
testLabel
=
new
JLabel
(
"<html>"
+
text
+
"</html>"
);
if
(!
text
.
equals
(
testLabel
.
getAccessibleContext
().
getAccessibleName
()))
{
throw
new
RuntimeException
(
"Incorrect AccessibleName,"
+
" Expected: "
+
text
+
" Actual: "
+
testLabel
.
getAccessibleContext
().
getAccessibleName
());
}
text
=
"Non html text"
;
testLabel
.
setText
(
text
);
if
(!
text
.
equals
(
testLabel
.
getAccessibleContext
().
getAccessibleName
()))
{
throw
new
RuntimeException
(
"Incorrect AccessibleName,"
+
" Expected: "
+
text
+
" Actual: "
+
testLabel
.
getAccessibleContext
().
getAccessibleName
());
}
}
private
static
void
testAccessibleProperty
()
{
String
text
=
"html text"
;
JLabel
testLabel
=
new
JLabel
(
"<html>"
+
text
+
"</html>"
);
if
(!
text
.
equals
(
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
)))
{
throw
new
RuntimeException
(
"Incorrect ACCESSIBLE_NAME_PROPERTY,"
+
" Expected: "
+
text
+
" Actual: "
+
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
));
}
String
namePropertyText
=
"name property"
;
testLabel
.
putClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
,
namePropertyText
);
if
(!
namePropertyText
.
equals
(
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
)))
{
throw
new
RuntimeException
(
"Incorrect ACCESSIBLE_NAME_PROPERTY,"
+
" Expected: "
+
namePropertyText
+
" Actual: "
+
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
));
}
text
=
"different html text"
;
testLabel
.
setText
(
"<html>"
+
text
+
"</html>"
);
if
(!
namePropertyText
.
equals
(
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
)))
{
throw
new
RuntimeException
(
"Incorrect ACCESSIBLE_NAME_PROPERTY,"
+
" Expected: "
+
namePropertyText
+
" Actual: "
+
testLabel
.
getClientProperty
(
AccessibleContext
.
ACCESSIBLE_NAME_PROPERTY
));
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录