code: function _doSearchInOneFile(file) {
          var result = new $.Deferred();
  
          DocumentManager.getDocumentText(file)
              .done(function (text, timestamp) {
                  // Note that we don't fire a model change here, since this is always called by some outer batch
                  // operation that will fire it once it's done.
                  var matches = _getSearchMatches(text, searchModel.queryExpr);
                  searchModel.setResults(file.fullPath, {matches: matches, timestamp: timestamp});
                  result.resolve(!!matches.length);
              })
              .fail(function () {
                  // Always resolve. If there is an error, this file
                  // is skipped and we move on to the next file.
                  result.resolve(false);
              });
  
          return result.promise();
      }
docs: @private
  Finds search results in the given file and adds them to 'searchResults.' Resolves with
  true if any matches found, false if none found. Errors reading the file are treated the
  same as if no results found.
  
  Does not perform any filtering - assumes caller has already vetted this file as a search
  candidate.
  
  @param {!File} file
  @return {$.Promise}