Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
7799984a
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看板
提交
7799984a
编写于
9月 27, 2013
作者:
J
jgodinez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6870661: Setting a custom PrintService on a PrinterJob leads to a PrinterException
Reviewed-by: prr, jgodinez Contributed-by: patrick@reini.net
上级
4d8a111f
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
271 addition
and
5 deletion
+271
-5
src/windows/classes/sun/awt/windows/WPrinterJob.java
src/windows/classes/sun/awt/windows/WPrinterJob.java
+4
-5
test/java/awt/print/PrinterJob/CustomPrintService/PrintDialog.java
.../awt/print/PrinterJob/CustomPrintService/PrintDialog.java
+59
-0
test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java
...print/PrinterJob/CustomPrintService/PrintServiceStub.java
+160
-0
test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java
...nt/PrinterJob/CustomPrintService/SetPrintServiceTest.java
+48
-0
未找到文件。
src/windows/classes/sun/awt/windows/WPrinterJob.java
浏览文件 @
7799984a
...
...
@@ -96,7 +96,6 @@ import javax.print.attribute.standard.PrinterName;
import
javax.print.attribute.standard.JobMediaSheetsSupported
;
import
javax.print.attribute.standard.PageRanges
;
import
javax.print.attribute.Size2DSyntax
;
import
javax.print.StreamPrintService
;
import
sun.awt.Win32FontManager
;
...
...
@@ -440,7 +439,7 @@ public class WPrinterJob extends RasterPrinterJob implements DisposerTarget {
throw
new
HeadlessException
();
}
if
(
getPrintService
()
instanceof
StreamPrintService
)
{
if
(
!(
getPrintService
()
instanceof
Win32PrintService
)
)
{
return
super
.
pageDialog
(
page
);
}
...
...
@@ -586,7 +585,7 @@ public class WPrinterJob extends RasterPrinterJob implements DisposerTarget {
attributes
=
new
HashPrintRequestAttributeSet
();
}
if
(
getPrintService
()
instanceof
StreamPrintService
)
{
if
(
!(
getPrintService
()
instanceof
Win32PrintService
)
)
{
return
super
.
printDialog
(
attributes
);
}
...
...
@@ -611,7 +610,7 @@ public class WPrinterJob extends RasterPrinterJob implements DisposerTarget {
public
void
setPrintService
(
PrintService
service
)
throws
PrinterException
{
super
.
setPrintService
(
service
);
if
(
service
instanceof
StreamPrintService
)
{
if
(
!(
service
instanceof
Win32PrintService
)
)
{
return
;
}
driverDoesMultipleCopies
=
false
;
...
...
@@ -648,7 +647,7 @@ public class WPrinterJob extends RasterPrinterJob implements DisposerTarget {
}
myService
=
PrintServiceLookup
.
lookupDefaultPrintService
();
if
(
myService
!=
null
)
{
if
(
myService
instanceof
Win32PrintService
)
{
try
{
setNativePrintServiceIfNeeded
(
myService
.
getName
());
}
catch
(
Exception
e
)
{
...
...
test/java/awt/print/PrinterJob/CustomPrintService/PrintDialog.java
0 → 100644
浏览文件 @
7799984a
/*
* Copyright (c) 2013, 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
java.awt.*
;
import
java.awt.print.PrinterJob
;
import
javax.print.PrintServiceLookup
;
/**
* @test
* @bug 6870661
* @summary Verify that no native dialog is opened for a custom PrintService
* @run main/manual PrintDialog
* @author reinhapa
*/
public
class
PrintDialog
{
private
static
final
String
instructions
=
"This test shows a non native print dialog having a 'test' print service\n"
+
"selected. No other options are selectable on the General tab. The other\n"
+
"tabs are as follows:\n"
+
"Page Setup: Media & Margins enabled, Orientation disabled\n"
+
"Appearance: All parts disabled\n\n"
+
"Test passes if the dialog is shown as described above."
;
public
static
void
main
(
String
[]
args
)
throws
Exception
{
// instruction dialog
Frame
instruction
=
new
Frame
(
"Verify that no native print dialog is showed"
);
instruction
.
add
(
new
TextArea
(
instructions
));
instruction
.
pack
();
instruction
.
show
();
// test begin
PrintServiceStub
service
=
new
PrintServiceStub
(
"test"
);
PrintServiceLookup
.
registerService
(
service
);
PrinterJob
job
=
PrinterJob
.
getPrinterJob
();
job
.
setPrintService
(
service
);
job
.
printDialog
();
System
.
out
.
println
(
"test passed"
);
}
}
test/java/awt/print/PrinterJob/CustomPrintService/PrintServiceStub.java
0 → 100644
浏览文件 @
7799984a
/*
* Copyright (c) 2013, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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
java.util.HashMap
;
import
java.util.HashSet
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.print.DocFlavor
;
import
javax.print.DocPrintJob
;
import
javax.print.PrintService
;
import
javax.print.ServiceUIFactory
;
import
javax.print.attribute.Attribute
;
import
javax.print.attribute.AttributeSet
;
import
javax.print.attribute.HashPrintServiceAttributeSet
;
import
javax.print.attribute.PrintServiceAttribute
;
import
javax.print.attribute.PrintServiceAttributeSet
;
import
javax.print.attribute.standard.Media
;
import
javax.print.attribute.standard.MediaSizeName
;
import
javax.print.attribute.standard.PrinterInfo
;
import
javax.print.attribute.standard.PrinterIsAcceptingJobs
;
import
javax.print.attribute.standard.PrinterMakeAndModel
;
import
javax.print.attribute.standard.PrinterName
;
import
javax.print.attribute.standard.PrinterState
;
import
javax.print.event.PrintServiceAttributeListener
;
/**
* Stub implementation of a custom {@link PrintService}.
*
* @author reinhapa
*/
public
class
PrintServiceStub
implements
PrintService
{
private
final
String
_name
;
private
final
Set
<
DocFlavor
>
_flavors
;
private
final
Map
<
Class
<?>,
Object
>
_attributes
;
public
PrintServiceStub
(
String
name
)
{
_name
=
name
;
_flavors
=
new
HashSet
<
DocFlavor
>();
_flavors
.
add
(
DocFlavor
.
SERVICE_FORMATTED
.
PAGEABLE
);
_flavors
.
add
(
DocFlavor
.
SERVICE_FORMATTED
.
PRINTABLE
);
_attributes
=
new
HashMap
<>();
_attributes
.
put
(
PrinterName
.
class
,
new
PrinterName
(
name
,
null
));
_attributes
.
put
(
PrinterState
.
class
,
PrinterState
.
IDLE
);
_attributes
.
put
(
PrinterInfo
.
class
,
new
PrinterInfo
(
"Custom location"
,
null
));
_attributes
.
put
(
PrinterIsAcceptingJobs
.
class
,
PrinterIsAcceptingJobs
.
ACCEPTING_JOBS
);
_attributes
.
put
(
PrinterMakeAndModel
.
class
,
new
PrinterMakeAndModel
(
"Custom printer"
,
null
));
_attributes
.
put
(
Media
.
class
,
new
Media
[]
{
MediaSizeName
.
ISO_A4
});
}
@Override
public
String
getName
()
{
return
_name
;
}
@Override
public
boolean
isDocFlavorSupported
(
DocFlavor
flavor
)
{
return
_flavors
.
contains
(
flavor
);
}
@Override
public
Object
getSupportedAttributeValues
(
Class
<?
extends
Attribute
>
category
,
DocFlavor
flavor
,
AttributeSet
attributes
)
{
return
_attributes
.
get
(
category
);
}
@Override
public
boolean
isAttributeCategorySupported
(
Class
<?
extends
Attribute
>
category
)
{
return
_attributes
.
containsKey
(
category
);
}
@Override
public
<
T
extends
PrintServiceAttribute
>
T
getAttribute
(
Class
<
T
>
category
)
{
return
category
.
cast
(
_attributes
.
get
(
category
));
}
@Override
public
PrintServiceAttributeSet
getAttributes
()
{
return
new
HashPrintServiceAttributeSet
(
_attributes
.
values
().
toArray
(
new
PrintServiceAttribute
[
_attributes
.
size
()]));
}
@Override
public
DocFlavor
[]
getSupportedDocFlavors
()
{
return
_flavors
.
toArray
(
new
DocFlavor
[
_flavors
.
size
()]);
}
// not implemented methods
@Override
public
DocPrintJob
createPrintJob
()
{
return
null
;
}
@Override
public
void
addPrintServiceAttributeListener
(
PrintServiceAttributeListener
listener
)
{
}
@Override
public
void
removePrintServiceAttributeListener
(
PrintServiceAttributeListener
listener
)
{
}
@Override
public
Class
<?>[]
getSupportedAttributeCategories
()
{
return
null
;
}
@Override
public
Object
getDefaultAttributeValue
(
Class
<?
extends
Attribute
>
category
)
{
return
null
;
}
@Override
public
boolean
isAttributeValueSupported
(
Attribute
attrval
,
DocFlavor
flavor
,
AttributeSet
attributes
)
{
return
false
;
}
@Override
public
AttributeSet
getUnsupportedAttributes
(
DocFlavor
flavor
,
AttributeSet
attributes
)
{
return
null
;
}
@Override
public
ServiceUIFactory
getServiceUIFactory
()
{
return
null
;
}
}
test/java/awt/print/PrinterJob/CustomPrintService/SetPrintServiceTest.java
0 → 100644
浏览文件 @
7799984a
/*
* Copyright (c) 2013, 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. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* 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
java.awt.print.PrinterException
;
import
java.awt.print.PrinterJob
;
/**
* @test
* @bug 6870661
* @summary tests setPrintService() with a custom implementation
* @author reinhapa
*/
public
class
SetPrintServiceTest
{
public
static
void
main
(
String
[]
args
)
{
PrintServiceStub
service
=
new
PrintServiceStub
(
"CustomPrintService"
);
PrinterJob
printerJob
=
PrinterJob
.
getPrinterJob
();
try
{
printerJob
.
setPrintService
(
service
);
System
.
out
.
println
(
"Test Passed"
);
}
catch
(
PrinterException
e
)
{
throw
new
RuntimeException
(
"Test FAILED"
,
e
);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录