Home | History | Annotate | Download | only in extensions
      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