0b726d9e58bbda0cc4327ecbcab06136137d3a5d
[WebKit-https.git] / LayoutTests / plugins / bindings-test.html
1 <html>
2 <head>
3 <script>
4 function doTest()
5 {
6     if (window.layoutTestController)
7         layoutTestController.dumpAsText();
8
9     if (window.objCPlugin) {
10         // Type should be "object"
11         alert("typeof(objCPlugin)=" + typeof(objCPlugin));
12
13         // Calling objCPlugin() should raise an exception.
14         var result;
15         try {
16             result = objCPlugin();
17         } catch (e) {
18             result = e.name;
19         }
20         alert("objCPlugin()=" + result);
21     }
22
23     if (window.objCPluginFunction) {
24         // Type should be "function"
25         alert("typeof(objCPluginFunction)=" + typeof(objCPluginFunction));
26
27         // Calling objCPluginFunction() should return "test"
28         var result;
29         try {
30             result = objCPluginFunction();
31         } catch (e) {
32             result = e.name;
33         }
34         alert("objCPluginFunction()=" + result);
35
36         function echoTest(arg) {
37             var echo = objCPlugin.echo(arg);
38             var sameVal = (arg == echo) ? "same" : "different";
39             var sameType = (typeof(arg) == typeof(echo)) ? "same" : "different";
40
41             alert(arg + " = " + echo + " (" + sameVal + ")");
42             alert(typeof(arg) + " = " + typeof(echo) + " (" + sameType + ")");
43         }
44
45         // Test the echo function
46         echoTest("hello");
47         echoTest(42);
48         echoTest(null);
49         echoTest(undefined);
50         echoTest(new Array("one", "two"));
51         
52         // Test exceptions
53         function exceptionTest(arg) {
54                 try {
55                         objCPlugin.throwIfArgumentIsNotHello(arg);
56                 } catch (e) {
57                         alert("String " + arg + " != Hello");
58                         return;
59                 }
60                 
61                 alert("String " + arg + " == Hello");
62         }
63         
64         exceptionTest("Hello");
65         exceptionTest("Not Hello");
66     }
67     
68     // Test the C plugin
69     var cPlugin = document.getElementById("testCPlugin");
70     if (cPlugin) {
71         // Type should be "function"
72         alert("typeof(cPlugin)=" + typeof(cPlugin));
73         
74         // Calling cPlugin() should return 1
75         var result;
76         try {
77             result = cPlugin();
78         } catch (e) {
79             result = e.name;
80         }
81         alert("cPlugin()=" + result);
82
83         // Special function that removes cPlugin's default method implementation.  The runtime should consider
84         // cPlugin an "object" if it has no default method.
85         cPlugin.removeDefaultMethod();
86
87         // Type should be "object"
88         alert("typeof(cPlugin)=" + typeof(cPlugin));
89         
90         // Calling cPlugin() now should raise an exception
91         var result;
92         try {
93             result = cPlugin();
94         } catch (e) {
95             result = e.name;
96         }
97         alert("cPlugin()=" + result);
98     }
99 }
100 </script>
101 </head>
102 <body onload="doTest();">
103 <p>This page tests invoking as functions JavaScript objects that are provided by plugins.</p>
104 <embed id="testCPlugin" type="application/x-webkit-test-netscape"></embed>
105 </body>
106 </html>