forked from mirrors/gecko-dev
		
	 9a9e65a7e5
			
		
	
	
		9a9e65a7e5
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D41224 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			75 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| "use strict";
 | |
| 
 | |
| add_task(async function test_offscreen_text() {
 | |
|   // Generate URI of a big DOM that contains the target text
 | |
|   // within a textarea at several line positions (to force
 | |
|   // some targets to be overflowed).
 | |
|   const linesToGenerate = 155;
 | |
|   const linesToInsertTargetText = [5, 50, 150];
 | |
|   const targetCount = linesToInsertTargetText.length;
 | |
|   let t = 0;
 | |
|   const TARGET_TEXT = "findthis";
 | |
| 
 | |
|   let URI = "<body><textarea>";
 | |
|   for (let i = 0; i < linesToGenerate; i++) {
 | |
|     URI += i + " ";
 | |
|     if (t < targetCount && linesToInsertTargetText[t] == i) {
 | |
|       URI += TARGET_TEXT;
 | |
|       t++;
 | |
|     }
 | |
|     URI += "\n";
 | |
|   }
 | |
|   URI += "</textarea></body>";
 | |
| 
 | |
|   await BrowserTestUtils.withNewTab(
 | |
|     {
 | |
|       gBrowser,
 | |
|       url: "data:text/html;charset=utf-8," + encodeURIComponent(URI),
 | |
|     },
 | |
|     async function(browser) {
 | |
|       let finder = browser.finder;
 | |
|       let listener = {
 | |
|         onFindResult() {
 | |
|           ok(false, "callback wasn't replaced");
 | |
|         },
 | |
|       };
 | |
|       finder.addResultListener(listener);
 | |
| 
 | |
|       function waitForFind() {
 | |
|         return new Promise(resolve => {
 | |
|           listener.onFindResult = resolve;
 | |
|         });
 | |
|       }
 | |
| 
 | |
|       // Find each of the targets.
 | |
|       for (let t = 0; t < targetCount; ++t) {
 | |
|         let promiseFind = waitForFind();
 | |
|         if (t == 0) {
 | |
|           finder.fastFind(TARGET_TEXT, false, false);
 | |
|         } else {
 | |
|           finder.findAgain(TARGET_TEXT, false, false, false);
 | |
|         }
 | |
|         let findResult = await promiseFind;
 | |
|         is(
 | |
|           findResult.result,
 | |
|           Ci.nsITypeAheadFind.FIND_FOUND,
 | |
|           "Found target " + t
 | |
|         );
 | |
|       }
 | |
| 
 | |
|       // Find one more time and make sure we wrap.
 | |
|       let promiseFind = waitForFind();
 | |
|       finder.findAgain(TARGET_TEXT, false, false, false);
 | |
|       let findResult = await promiseFind;
 | |
|       is(
 | |
|         findResult.result,
 | |
|         Ci.nsITypeAheadFind.FIND_WRAPPED,
 | |
|         "Wrapped to first target"
 | |
|       );
 | |
| 
 | |
|       finder.removeResultListener(listener);
 | |
|     }
 | |
|   );
 | |
| });
 |