1 /*
2 * Copyright (c) 2002-2025 Gargoyle Software Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 * https://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15 package org.htmlunit.javascript.host.html;
16
17 import java.io.ByteArrayOutputStream;
18 import java.io.ObjectOutputStream;
19
20 import org.htmlunit.SimpleWebTestCase;
21 import org.htmlunit.html.HtmlPage;
22 import org.htmlunit.junit.annotation.Alerts;
23 import org.junit.jupiter.api.Test;
24
25 /**
26 * Tests for {@link HTMLFrameElement} when used for {@link org.htmlunit.html.HtmlFrame}.
27 *
28 * @author Chris Erskine
29 * @author Marc Guillemot
30 * @author Thomas Robbs
31 * @author David K. Taylor
32 * @author Ahmed Ashour
33 * @author Frank Danek
34 */
35 public class HTMLFrameElementTest extends SimpleWebTestCase {
36
37 /**
38 * @throws Exception if the test fails
39 */
40 @Test
41 @Alerts("Frame2")
42 public void serialization() throws Exception {
43 final String html = DOCTYPE_HTML
44 + "<html><head><title>first</title></head>\n"
45 + "<frameset cols='20%,80%'>\n"
46 + " <frame id='frame1'>\n"
47 + " <frame name='Frame2' onload='alert(this.name)' id='frame2'>\n"
48 + "</frameset></html>";
49
50 final HtmlPage page = loadPageWithAlerts(html);
51
52 final ObjectOutputStream objectOS = new ObjectOutputStream(new ByteArrayOutputStream());
53 objectOS.writeObject(page);
54 }
55 }