Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/javax/imageio/AppletResourceTest.java
38833 views
1
/*
2
* Copyright (c) 2003, 2017, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 4481957
27
* @key headful
28
* @summary Tests that applet-supplied ImageReader, ImageWriter, and
29
* IIOMetadataFormat implementations do not throw unexpected exceptions
30
* when indirectly attempting to access ResourceBundles
31
* @run main AppletResourceTest
32
* @run applet AppletResourceTest.html
33
*/
34
35
import java.applet.Applet;
36
import java.awt.Rectangle;
37
import java.awt.image.BufferedImage;
38
import java.io.IOException;
39
import java.util.Iterator;
40
import java.util.ListResourceBundle;
41
import java.util.Locale;
42
import java.util.MissingResourceException;
43
import java.util.Vector;
44
45
import javax.imageio.IIOException;
46
import javax.imageio.ImageReadParam;
47
import javax.imageio.ImageReader;
48
import javax.imageio.ImageTypeSpecifier;
49
import javax.imageio.event.IIOReadWarningListener;
50
import javax.imageio.metadata.IIOInvalidTreeException;
51
import javax.imageio.metadata.IIOMetadata;
52
import javax.imageio.spi.ImageReaderSpi;
53
54
import org.w3c.dom.Node;
55
56
public class AppletResourceTest extends Applet {
57
58
public static void main(String[] argv) {
59
new AppletResourceTest().init();
60
}
61
62
public void init() {
63
DummyImageReaderImpl reader;
64
MyReadWarningListener listener = new MyReadWarningListener();
65
Locale[] locales = {new Locale("ru"),
66
new Locale("fr"),
67
new Locale("uk")};
68
69
reader = new DummyImageReaderImpl(new DummyImageReaderSpiImpl());
70
reader.setAvailableLocales(locales);
71
reader.setLocale(new Locale("fr"));
72
reader.addIIOReadWarningListener(listener);
73
74
String baseName = "AppletResourceTest$BugStats";
75
try {
76
reader.processWarningOccurred("WarningMessage");
77
reader.processWarningOccurred(baseName, "water");
78
} catch (MissingResourceException mre) {
79
throw new RuntimeException("Test failed: couldn't load resource");
80
}
81
82
83
}
84
85
private class MyReadWarningListener implements IIOReadWarningListener {
86
public void warningOccurred(ImageReader source,
87
String warning)
88
{
89
System.out.println("warning occurred: " + warning);
90
}
91
}
92
93
public static class BugStats extends ListResourceBundle {
94
95
public Object[][] getContents(){
96
return contents;
97
}
98
99
private Object[][] contents = {
100
{"coffee", new String("coffee from Stats class")},
101
{"tea", new String("tea from Stats class")},
102
{"water", new String("water from Stats class")}
103
};
104
}
105
106
107
public static class DummyImageReaderImpl extends ImageReader {
108
109
public DummyImageReaderImpl(ImageReaderSpi originatingProvider) {
110
super(originatingProvider);
111
}
112
113
public int getNumImages(boolean allowSearch) throws IOException {
114
return 5;
115
}
116
117
public int getWidth(int imageIndex) throws IOException {
118
if (input == null)
119
throw new IllegalStateException();
120
if (imageIndex >= 5 || imageIndex < 0)
121
throw new IndexOutOfBoundsException();
122
123
return 10;
124
}
125
126
public int getHeight(int imageIndex) throws IOException {
127
if (input == null)
128
throw new IllegalStateException();
129
if (imageIndex >= 5 || imageIndex < 0)
130
throw new IndexOutOfBoundsException();
131
132
return 15;
133
}
134
135
public Iterator getImageTypes(int imageIndex) throws IOException {
136
if (input == null)
137
throw new IllegalStateException();
138
if (imageIndex >= 5 || imageIndex < 0)
139
throw new IndexOutOfBoundsException();
140
141
Vector imageTypes = new Vector();
142
imageTypes.add(ImageTypeSpecifier.createFromBufferedImageType
143
(BufferedImage.TYPE_BYTE_GRAY ));
144
return imageTypes.iterator();
145
}
146
147
public IIOMetadata getStreamMetadata() throws IOException {
148
return new DummyIIOMetadataImpl(true, null, null, null, null);
149
}
150
151
public IIOMetadata getImageMetadata(int imageIndex)
152
throws IOException {
153
154
if (input == null)
155
throw new IllegalStateException();
156
if (imageIndex >= 5 || imageIndex < 0)
157
throw new IndexOutOfBoundsException();
158
if (seekForwardOnly) {
159
if (imageIndex < minIndex)
160
throw new IndexOutOfBoundsException();
161
minIndex = imageIndex;
162
}
163
return new DummyIIOMetadataImpl(true, null, null, null, null);
164
}
165
166
167
public BufferedImage read(int imageIndex, ImageReadParam param)
168
throws IOException {
169
if (input == null)
170
throw new IllegalStateException();
171
if (imageIndex >= 5 || imageIndex < 0)
172
throw new IndexOutOfBoundsException();
173
if (seekForwardOnly) {
174
if (imageIndex < minIndex)
175
throw new IndexOutOfBoundsException();
176
minIndex = imageIndex;
177
}
178
179
return getDestination(param, getImageTypes(imageIndex), 10, 15);
180
}
181
182
// protected methods - now public
183
184
public boolean abortRequested() {
185
return super.abortRequested();
186
}
187
188
public void clearAbortRequest() {
189
super.clearAbortRequest();
190
}
191
192
public void processImageComplete() {
193
super.processImageComplete();
194
}
195
196
public void processImageProgress(float percentageDone) {
197
super.processImageProgress(percentageDone);
198
}
199
200
public void processImageStarted(int imageIndex) {
201
super.processImageStarted(imageIndex);
202
}
203
204
public void processImageUpdate(BufferedImage theImage,
205
int minX,
206
int minY,
207
int width,
208
int height,
209
int periodX,
210
int periodY,
211
int[] bands) {
212
super.processImageUpdate(theImage,
213
minX,
214
minY,
215
width,
216
height,
217
periodX,
218
periodY,
219
bands);
220
}
221
222
public void processPassComplete(BufferedImage theImage) {
223
super. processPassComplete(theImage);
224
}
225
226
public void processPassStarted(BufferedImage theImage,
227
int pass, int minPass,
228
int maxPass,
229
int minX,
230
int minY,
231
int periodX,
232
int periodY,
233
int[] bands) {
234
super.processPassStarted(theImage,
235
pass,
236
minPass,
237
maxPass,
238
minX,
239
minY,
240
periodX,
241
periodY,
242
bands);
243
}
244
245
public void processReadAborted() {
246
super.processReadAborted();
247
}
248
249
public void processSequenceComplete() {
250
super.processSequenceComplete();
251
}
252
253
public void processSequenceStarted(int minIndex) {
254
super.processSequenceStarted(minIndex);
255
}
256
257
public void processThumbnailComplete() {
258
super.processThumbnailComplete();
259
}
260
261
public void processThumbnailPassComplete(BufferedImage theThumbnail) {
262
super.processThumbnailPassComplete(theThumbnail);
263
}
264
265
public void processThumbnailPassStarted(BufferedImage theThumbnail,
266
int pass,
267
int minPass,
268
int maxPass,
269
int minX,
270
int minY,
271
int periodX,
272
int periodY,
273
int[] bands) {
274
super.processThumbnailPassStarted(theThumbnail,
275
pass,
276
minPass,
277
maxPass,
278
minX,
279
minY,
280
periodX,
281
periodY,
282
bands);
283
}
284
285
public void processThumbnailProgress(float percentageDone) {
286
super.processThumbnailProgress(percentageDone);
287
}
288
289
public void processThumbnailStarted(int imageIndex, int thumbnailIndex) {
290
super.processThumbnailStarted(imageIndex, thumbnailIndex);
291
}
292
293
public void processThumbnailUpdate(BufferedImage theThumbnail,
294
int minX,
295
int minY,
296
int width,
297
int height,
298
int periodX,
299
int periodY,
300
int[] bands) {
301
super.processThumbnailUpdate(theThumbnail,
302
minX,
303
minY,
304
width,
305
height,
306
periodX,
307
periodY,
308
bands);
309
}
310
311
public void processWarningOccurred(String warning) {
312
super.processWarningOccurred(warning);
313
}
314
315
316
317
public static Rectangle getSourceRegion(ImageReadParam param,
318
int srcWidth,
319
int srcHeight) {
320
return ImageReader.getSourceRegion(param, srcWidth, srcHeight);
321
}
322
323
public static void computeRegions(ImageReadParam param,
324
int srcWidth,
325
int srcHeight,
326
BufferedImage image,
327
Rectangle srcRegion,
328
Rectangle destRegion) {
329
ImageReader.computeRegions(param,
330
srcWidth,
331
srcHeight,
332
image,
333
srcRegion,
334
destRegion);
335
}
336
337
public static void checkReadParamBandSettings(ImageReadParam param,
338
int numSrcBands,
339
int numDstBands) {
340
ImageReader.checkReadParamBandSettings( param,
341
numSrcBands,
342
numDstBands);
343
}
344
345
public static BufferedImage getDestination(ImageReadParam param,
346
Iterator imageTypes,
347
int width,
348
int height) throws IIOException {
349
return ImageReader.getDestination(param,
350
imageTypes,
351
width,
352
height);
353
}
354
355
public void setAvailableLocales(Locale[] locales) {
356
if (locales == null || locales.length == 0)
357
availableLocales = null;
358
else
359
availableLocales = (Locale[])locales.clone();
360
}
361
362
public void processWarningOccurred(String baseName, String keyword) {
363
super.processWarningOccurred(baseName, keyword);
364
}
365
}
366
367
public static class DummyIIOMetadataImpl extends IIOMetadata {
368
369
public DummyIIOMetadataImpl() {
370
super();
371
}
372
373
public DummyIIOMetadataImpl(boolean standardMetadataFormatSupported,
374
String nativeMetadataFormatName,
375
String nativeMetadataFormatClassName,
376
String[] extraMetadataFormatNames,
377
String[] extraMetadataFormatClassNames) {
378
super(standardMetadataFormatSupported,
379
nativeMetadataFormatName,
380
nativeMetadataFormatClassName,
381
extraMetadataFormatNames,
382
extraMetadataFormatClassNames);
383
}
384
385
public boolean isReadOnly() {
386
return true;
387
}
388
389
public Node getAsTree(String formatName) {
390
return null;
391
}
392
393
public void mergeTree(String formatName, Node root)
394
throws IIOInvalidTreeException {
395
throw new IllegalStateException();
396
}
397
398
public void reset() {
399
throw new IllegalStateException();
400
}
401
}
402
403
public static class DummyImageReaderSpiImpl extends ImageReaderSpi {
404
405
static final String[] names ={ "myformat" };
406
407
public DummyImageReaderSpiImpl() {
408
super("vendorName",
409
"version",
410
names,
411
null,
412
null,
413
"DummyImageReaderImpl",
414
STANDARD_INPUT_TYPE,
415
null,
416
true,
417
null,
418
null,
419
null,
420
null,
421
true,
422
null,
423
null,
424
null,
425
null);
426
}
427
public boolean canDecodeInput(Object source)
428
throws IOException {
429
return true;
430
}
431
public ImageReader createReaderInstance(Object extension)
432
throws IOException {
433
return new DummyImageReaderImpl(this);
434
}
435
public String getDescription(Locale locale) {
436
return "DummyImageReaderSpiImpl";
437
}
438
}
439
}
440
441