forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the public domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
// Test that the onmozbrowsertitlechange event works.
 | 
						|
"use strict";
 | 
						|
 | 
						|
SimpleTest.waitForExplicitFinish();
 | 
						|
browserElementTestHelpers.setEnabledPref(true);
 | 
						|
browserElementTestHelpers.addPermission();
 | 
						|
browserElementTestHelpers.allowTopLevelDataURINavigation();
 | 
						|
 | 
						|
function runTest() {
 | 
						|
  var iframe1 = document.createElement('iframe');
 | 
						|
  iframe1.setAttribute('mozbrowser', 'true');
 | 
						|
  document.body.appendChild(iframe1);
 | 
						|
 | 
						|
  // iframe2 is a red herring; we modify its title but don't listen for
 | 
						|
  // titlechanges; we want to make sure that its titlechange events aren't
 | 
						|
  // picked up by the listener on iframe1.
 | 
						|
  var iframe2 = document.createElement('iframe');
 | 
						|
  iframe2.setAttribute('mozbrowser', 'true');
 | 
						|
  document.body.appendChild(iframe2);
 | 
						|
 | 
						|
  // iframe3 is another red herring.  It's not a mozbrowser, so we shouldn't
 | 
						|
  // get any titlechange events on it.
 | 
						|
  var iframe3 = document.createElement('iframe');
 | 
						|
  document.body.appendChild(iframe3);
 | 
						|
 | 
						|
  var numTitleChanges = 0;
 | 
						|
 | 
						|
  iframe1.addEventListener('mozbrowsertitlechange', function(e) {
 | 
						|
    // Ignore empty titles; these come from about:blank.
 | 
						|
    if (e.detail == '')
 | 
						|
      return;
 | 
						|
 | 
						|
    numTitleChanges++;
 | 
						|
 | 
						|
    if (numTitleChanges == 1) {
 | 
						|
      is(e.detail, 'Title');
 | 
						|
      SpecialPowers.getBrowserFrameMessageManager(iframe1)
 | 
						|
                   .loadFrameScript("data:,content.document.title='New title';",
 | 
						|
                                    /* allowDelayedLoad = */ false);
 | 
						|
      SpecialPowers.getBrowserFrameMessageManager(iframe2)
 | 
						|
                   .loadFrameScript("data:,content.document.title='BAD TITLE 2';",
 | 
						|
                                    /* allowDelayedLoad = */ false);
 | 
						|
    }
 | 
						|
    else if (numTitleChanges == 2) {
 | 
						|
      is(e.detail, 'New title');
 | 
						|
      iframe1.src = 'data:text/html,<html><head><title>Title 3</title></head><body></body></html>';
 | 
						|
    }
 | 
						|
    else if (numTitleChanges == 3) {
 | 
						|
      is(e.detail, 'Title 3');
 | 
						|
      SimpleTest.finish();
 | 
						|
    }
 | 
						|
    else {
 | 
						|
      ok(false, 'Too many titlechange events.');
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  iframe3.addEventListener('mozbrowsertitlechange', function(e) {
 | 
						|
    ok(false, 'Should not get a titlechange event for iframe3.');
 | 
						|
  });
 | 
						|
 | 
						|
  iframe1.src = 'data:text/html,<html><head><title>Title</title></head><body></body></html>';
 | 
						|
  iframe2.src = 'data:text/html,<html><head><title>BAD TITLE</title></head><body></body></html>';
 | 
						|
  iframe3.src = 'data:text/html,<html><head><title>SHOULD NOT GET EVENT</title></head><body></body></html>';
 | 
						|
}
 | 
						|
 | 
						|
addEventListener('testready', runTest);
 |