summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjkarlin@chromium.org <jkarlin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-19 22:00:49 +0000
committerjkarlin@chromium.org <jkarlin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-19 22:00:49 +0000
commit1bad893173b5a95b03e1b498694b4eea85480caa (patch)
treecbf173df27419210eb76d1bd24343ea3153d8447
parent052b53d7871af81837dcdfada6835e1bf3850d15 (diff)
downloadchromium_src-1bad893173b5a95b03e1b498694b4eea85480caa.zip
chromium_src-1bad893173b5a95b03e1b498694b4eea85480caa.tar.gz
chromium_src-1bad893173b5a95b03e1b498694b4eea85480caa.tar.bz2
Stop accumulating event handlers for the serviceworker-internals buttons.
Each time you hit "start" or "stop" etc. in chrome://serviceworker-internals the registration process is rerun, adding an addEventListener to each button for each existing callback, causing a quadratic increase in event listeners. This CL only allows the event to be registered once per button. BUG= Review URL: https://codereview.chromium.org/204573003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@258118 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/resources/service_worker/serviceworker_internals.js5
1 files changed, 4 insertions, 1 deletions
diff --git a/content/browser/resources/service_worker/serviceworker_internals.js b/content/browser/resources/service_worker/serviceworker_internals.js
index 1f81379..cacbd9c 100644
--- a/content/browser/resources/service_worker/serviceworker_internals.js
+++ b/content/browser/resources/service_worker/serviceworker_internals.js
@@ -73,7 +73,10 @@ cr.define('serviceworker', function() {
var handler = commandHandler(COMMANDS[i]);
var links = container.querySelectorAll('button.' + COMMANDS[i]);
for (var j = 0; j < links.length; ++j) {
- links[j].addEventListener('click', handler, false);
+ if (!links[j].hasClickEvent) {
+ links[j].addEventListener('click', handler, false);
+ links[j].hasClickEvent = true;
+ }
}
}
}