1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var contentWatcherNative = requireNative("contentWatcherNative"); 6 7 // Returns the indices in |cssSelectors| that match any element on the page. 8 exports.FindMatchingSelectors = function(cssSelectors) { 9 var result = [] 10 $Array.forEach(cssSelectors, function(selector, index) { 11 try { 12 if (document.querySelector(selector) != null) 13 $Array.push(result, index); 14 } catch (exception) { 15 throw new Error("query Selector failed on '" + selector + "': " + 16 exception.stack); 17 } 18 }); 19 return result; 20 }; 21 22 // Watches the page for all changes and calls FrameMutated (a C++ callback) in 23 // response. 24 var mutation_observer = new MutationObserver(contentWatcherNative.FrameMutated); 25 26 // This runs once per frame, when the module is 'require'd. 27 mutation_observer.observe(document, { 28 childList: true, 29 attributes: true, 30 characterData: true, 31 subtree: true}); 32