Reviewed by Geoff Garen.
[WebKit-https.git] / LayoutTests / platform / mac / plugins / bindings-test-objc.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 </script>
69 </head>
70 <body onload="doTest();">
71 <p>This page tests invoking as functions JavaScript objects that are provided by objective-c plugins.</p>
72 <embed id="testCPlugin" type="application/x-webkit-test-netscape"></embed>
73 </body>
74 </html>