# Copyright 2014 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. def GetScriptToWaitForUnchangingDOM(): """Gets Javascript that waits until the DOM is stable for 5 seconds. Times out if the DOM is not stable within 30 seconds. Returns: Javascript as a string. """ return """ var target = document.body; var callback = arguments[arguments.length - 1] var timeout_id = setTimeout(function() { callback() }, 5000); var observer = new MutationObserver(function(mutations) { clearTimeout(timeout_id); timeout_id = setTimeout(function() { callback(); }, 5000); }).observe(target, {attributes: true, childList: true, characterData: true, subtree: true}); """