Index: chrome/test/data/extensions/api_test/mdns/api-packaged-apps/register_too_many_listeners.js |
diff --git a/chrome/test/data/extensions/api_test/mdns/api-packaged-apps/register_too_many_listeners.js b/chrome/test/data/extensions/api_test/mdns/api-packaged-apps/register_too_many_listeners.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4b22bc93038e37bcf9b3853143feb1446e367585 |
--- /dev/null |
+++ b/chrome/test/data/extensions/api_test/mdns/api-packaged-apps/register_too_many_listeners.js |
@@ -0,0 +1,45 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+chrome.app.runtime.onLaunched.addListener(function() { |
+ chrome.test.runTests([ |
+ function registerListeners() { |
+ // Add the maximum number of listeners. |
+ var listeners = []; |
+ var MAX_LISTENERS = 10; |
+ for (var i = 0; i < MAX_LISTENERS; i++) { |
+ listeners.push({ |
+ 'callback': function() {}, |
+ 'filter': {'serviceType': '_' + i + '._tcp.local'} |
+ }); |
+ } |
+ listeners.forEach(function(x) { |
+ chrome.mdns.onServiceList.addListener(x.callback, x.filter); |
+ }); |
+ |
+ var removeAllListeners = function() { |
+ }; |
+ |
+ // Now try adding one more. This should exceed the limit. |
+ var failedToAddLast = false; |
+ try { |
+ chrome.mdns.onServiceList.addListener( |
+ function() {}, |
+ {'serviceType': '_one_too_many._tcp.local'}); |
+ } catch (x) { |
+ chrome.test.assertEq('Too many listeners for mdns.onServiceList', |
+ x.message); |
+ failedToAddLast = true; |
+ } |
+ chrome.test.assertBool( |
+ true, failedToAddLast, |
+ "there should be an error when adding the 11th listener"); |
+ |
+ listeners.forEach(function(x) { |
+ chrome.mdns.onServiceList.removeListener(x.callback, x.filter); |
+ }); |
+ chrome.test.notifyPass(); |
+ } |
+ ]); |
+}); |