Add navigator.registerProtocolHandler behind a flag.
[WebKit-https.git] / LayoutTests / fast / dom / register-protocol-handler.html
1 <html>
2 <body>
3 <p>This test makes sure that navigator.registerProtocolHandler throws the proper exceptions and has no-op default implementation.</p>
4 <pre id="console"></pre>
5 <script>
6 if (window.layoutTestController)
7     layoutTestController.dumpAsText();
8
9 function debug(str)
10 {
11     var c = document.getElementById('console')
12     c.appendChild(document.createTextNode(str + '\n'));
13 }
14
15 if (window.navigator.registerProtocolHandler)
16     debug('Pass: window.navigator.registerProtocolHandler is defined.');
17 else
18     debug('Fail: window.navigator.registerProtocolHandler is not defined.');
19
20 var invalid_protocols = ['http', 'https', 'file'];
21 invalid_protocols.forEach(function (protocol) {
22     var succeeded = false;
23     try {
24         window.navigator.registerProtocolHandler(protocol, "invalid protocol %s", "title");
25     } catch (e) {
26         succeeded = 'SECURITY_ERR' == e.name;
27     }
28
29     if (succeeded)
30         debug('Pass: Invalid protocol "' + protocol + '" threw SECURITY_ERR exception.');
31     else
32         debug('Fail: Invalid protocol "' + protocol + '" allowed.');
33 });
34
35 var invalid_urls = ["", "%S"];
36 invalid_urls.forEach(function (url) {
37    var succeeded = false;
38    try {
39         window.navigator.registerProtocolHandler('myprotocol', url, 'title');
40     } catch (e) {
41         succeeded = 'SYNTAX_ERR' == e.name;
42     }
43
44     if (succeeded)
45         debug('Pass: Invalid url "' + url + '" threw SYNTAX_ERR exception.');
46     else
47         debug('Fail: Invalid url "' + url + '" allowed.');
48 });
49
50 // Test that the API has default no-op implementation.
51 var succeeded = true;
52 try {
53     window.navigator.registerProtocolHandler('myprotocol', "%s", "title");
54 } catch (e) {
55     succeeded = false;
56 }
57
58 if (succeeded)
59     debug('Pass: Valid call succeeded.');
60 else
61     debug('Fail: Invalid call did not succeed.');
62 </script>
63 </body>
64 </html>