<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">            <
<!--                                                          <
 - Copyright (C) 2008 Google Inc.                             <
 -                                                            <
 - Licensed under the Apache License, Version 2.0 (the "Licen <
 - you may not use this file except in compliance with the Li <
 - You may obtain a copy of the License at                    <
 -                                                            <
 -      http://www.apache.org/licenses/LICENSE-2.0            <
 -                                                            <
 - Unless required by applicable law or agreed to in writing, <
 - distributed under the License is distributed on an "AS IS" <
 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either expre <
 - See the License for the specific language governing permis <
 - limitations under the License.                             <
-->                                                           <
<html id="html"><!-- attributes on document should not show i <
  <head id="head">                                            <
    <title>Domita</title>                                     <
                                                              <
    <script src="../console.js" onerror="console.error(this.s <
    <script src="../../../../js/json_sans_eval/json_sans_eval <
     onerror="console.error(this.src)"></script>              <
    <script src="../cajita.js" onerror="console.error(this.sr <
    <script src="../cajita-promise.js" onerror="console.error <
     </script>                                                <
    <script src="../cajita-module.js" onerror="console.error( <
     </script>                                                <
    <script src="../../../../js/jsunit/2.2/jsUnitCore.js"></s <
    <script src="jsunit.js" onerror="console.error(this.src)" <
    <script src="unicode.js" onerror="console.error(this.src) <
    <script src="html4-defs.js" onerror="console.error(this.s <
    <script src="css-defs.js" onerror="console.error(this.src <
    <script src="html-sanitizer.js" onerror="console.error(th <
    <script src="bridal.js" onerror="console.error(this.src)" <
    <script src="html-emitter.js" onerror="console.error(this <
    <script src="domita.js" onerror="console.error(this.src)" <
    <!-- Prime the browser cache by loading the whitelisted s <
      - synchronously so the test doesn't take so long. -->   <
    <script src="whitelisted_script.js"                       <
     onerror="console.error(this.src)"></script>              <
                                                              <
    <script src="../console.js"></script>                     <
                                                              <
    <script type="text/javascript">                           <
    function testDomita() {                                   <
      this.evaluateAsyncRequirements(function (pass) {        <
        if (!pass) {                                          <
          document.title = document.title.replace(            <
              / - all tests passed$/, ' - async tests failed' <
        }                                                     <
        assertTrue(document.title,                            <
                   /(?: - all tests passed)?$/.test(document. <
      });                                                     <
    }                                                         <
                                                              <
    // globalSideEffect() is not exposed to cajoled code, so  <
    // can reach it, then it has escaped containment.         <
    // checkGlobalSideEffect() is exposed to cajoled code and <
    // globalSideEffect() has been called since the last call <
    // checkGlobalSideEffect().                               <
    (function () {                                            <
      var sideEffectHappened = false;                         <
      function globalSideEffect() { sideEffectHappened = true <
      function checkGlobalSideEffect() {                      <
        var result = sideEffectHappened;                      <
        sideEffectHappened = false;                           <
        return result;                                        <
      }                                                       <
      this.globalSideEffect = globalSideEffect;               <
      this.checkGlobalSideEffect = checkGlobalSideEffect;     <
    })();                                                     <
                                                              <
    // Test that side effect catching works by trying it unca <
    jsunitRegister(                                           <
        '_testSideEffectTestFramework',                       <
        function _testSideEffectTestFramework() {             <
          assertFalse(checkGlobalSideEffect());               <
          var s = document.createElement('SCRIPT');           <
          s.innerHTML = 'globalSideEffect()';                 <
          document.body.appendChild(s);                       <
          assertTrue(checkGlobalSideEffect());                <
          assertFalse(checkGlobalSideEffect());               <
          jsunit.pass('_testSideEffectTestFramework');        <
        });                                                   <
    </script>                                                 <
  </head>                                                     <
                                                              <
  <body bgcolor="white" onload="testDomita()">                <
                                                              <
    <style type="text/css">                                   <
      a:visited { color: purple; }                            <
      a:link { color: blue; }                                 <
    </style>                                                  <
                                                              <
    <!-- Ensure http://www.google.com/favicon.ico is :visited <
    <img src="http://www.google.com/favicon.ico"/>            <
                                                              <
    <div id="untrusted_content" class="vdoc-body___ xyz___"   <
     title="<Untrusted Content Title>"                        <
     style="position: relative;                               <
            width: 600px;                                     <
            height: 400px;                                    <
            color: rgb(3,6,9);                                <
            /* on IE, width and height aren't limited for ove <
            overflow: hidden;">                               <
      <!-- should appear first -->                            <
      <div id="absolutely-positioned-xyz___"                  <
       style="position: absolute; padding: 0; margin: 0;      <
              left: 11px; top: 3px; width:100px; height:40px; <
      >abs</div                                               <
      ><div id="relatively-positioned-xyz___"                 <
        style="margin: 0 0 0 9px; padding: 0; border-width: 0 <
               width: 100px; height: 40px"                    <
        >rel</div>                                            <
                                                              <
      <!-- inaccessible to document.getElementById -->        <
      <div id="foo"></div>                                    <
                                                              <
      <!-- accessible, but with certain inaccessible attribut <
      <!-- The unescaped title attribute and the > after the  <
        - intentionally non-standard to test the behavior of  <
        - various browsers. -->                               <
      <div id="test-inner-html-xyz___" class="testcontainer"  <
       ><a id="bar" href="http://foo.com?a=b&c=d"; class="link <
         title="<click me!>" target="_parent"                 <
         >Test <em id="em-xyz___">Not</em>> run yet.</a>      <
      </div>                                                  <
                                                              <
      <div class="testcontainer" id="test-opaque-nodes-xyz___ <
       ><!-- Comment -->a<script id="howdy-script-xyz___">/*  <
       >b<object></object>c</div>                             <
                                                              <
      <!-- http://www.google.com/favicon.ico has been visited <
           by the above IMG tag -->                           <
      <a id="direct-visited-xyz___" href="http://www.google.c <
        Visited                                               <
      </a>                                                    <
      <a href="http://www.google.com/";>                       <
        <span id="nested-visited-xyz___">Visited</span>       <
      </a>                                                    <
                                                              <
      <!-- http://www.example.com/ is reserved by RFC2606 --> <
      <a id="direct-link-xyz___" href="http://www.example.com <
        Link                                                  <
      </a>                                                    <
      <a href="http://www.example.com/";>                      <
        <span id="nested-link-xyz___">Link</span>             <
      </a>                                                    <
    </div>                                                    <
                                                              <
    <div id="console-results"></div>                          <
                                                              <
    <script type="text/javascript">                           <
      function loadScript(src) {                              <
        document.write(                                       <
            '<script src="' + html.escapeAttrib(src) + '"'    <
            + ' onerror="console.error(this.src)"><\/script>' <
      }                                                       <
                                                              <
      function makeXhr() {                                      function 
makeXhr() {
        if (typeof XMLHttpRequest === 'undefined') {              if (typeof 
XMLHttpRequest === 'undefined') {
          var activeXClassIds = [                                   var 
activeXClassIds = [
              'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MS           
'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.X
              'MSXML2.XMLHTTP', 'MICROSOFT.XMLHTTP.1.0', 'MIC           
'MSXML2.XMLHTTP', 'MICROSOFT.XMLHTTP.1.0', 'MICROSOFT
              'MICROSOFT.XMLHTTP'];                                     
'MICROSOFT.XMLHTTP'];
          for (var i = 0, n = activeXClassIds.length; i < n;        for (var i 
= 0, n = activeXClassIds.length; i < n; i++) {
            var candidate = activeXClassIds[i];                       var 
candidate = activeXClassIds[i];
            try {                                                     try {
              return new ActiveXObject(candidate);                      return 
new ActiveXObject(candidate);
            } catch (e) {}                                            } catch 
(e) {}
          }                                                         }
        }                                                         }
        return new XMLHttpRequest;                                return new 
XMLHttpRequest;
      }                                                         }

      function inlineHtml(href, container) {                    function 
inlineHtml(href, container) {
        var xhr = makeXhr();                                      var xhr = 
makeXhr();
        xhr.open('GET', href, false);                             
xhr.open('GET', href, false);
        xhr.send(null);                                           
xhr.send(null);
        if (xhr.status !== 200 && xhr.status !== 0) {             if 
(xhr.status !== 200 && xhr.status !== 0) {
          throw new Error('Failed to load ' + href + ' : ' +        throw new 
Error('Failed to load ' + href + ' : ' + xhr.st
        }                                                         }
        var htmlAndScript = xhr.responseText.match(               var 
htmlAndScript = xhr.responseText.match(
            /^([\s\S]*?)<script[^>]*>([\s\S]*?)<\/script>$/);         
/^([\s\S]*?)<script[^>]*>([\s\S]*?)<\/script>$/);
        var div = container.ownerDocument.createElement('DIV'     var div = 
container.ownerDocument.createElement('DIV');
        div.innerHTML = htmlAndScript[1];                         div.innerHTML 
= htmlAndScript[1];
        while (div.firstChild) { container.appendChild(div.fi     while 
(div.firstChild) { container.appendChild(div.firstChi
        eval(htmlAndScript[2]);                                   
eval(htmlAndScript[2]);
      }                                                         }

      var isValija = /[&?]valija([=&]|$)/.test(location.searc   var isValija = 
/[&?]valija([=&]|$)/.test(location.search);
    </script>                                                 <

    <script type="text/javascript">                           | var 
valijaModuleVow = isValija ?
    var valijaMaker;                                          |     
scriptModuleLoad.async('valija.co.js') :
    (function () {                                            |     undefined;
      if (isValija) {                                         | var 
serverJsSandboxModuleVow = isValija?
        var testImports = ___.copy(___.sharedImports);        |     
scriptModuleLoad.async('serverjs-sandbox.co.js') :
        testImports.loader = ___.freeze({                     |     undefined;
              provide: ___.markFuncFreeze(function (v) { vali <
            });                                               <
        ___.getNewModuleHandler().setImports(testImports);    <
        loadScript('valija.co.js');                           <
      }                                                       <
    })();</script>                                            <

    <script type="text/javascript">                           | // 
globalSideEffect() is not exposed to cajoled code, so if c
    var serverJsSandboxMaker;                                 | // can reach 
it, then it has escaped containment.
                                                              > // 
checkGlobalSideEffect() is exposed to cajoled code and ret
                                                              > // 
globalSideEffect() has been called since the last call to
                                                              > // 
checkGlobalSideEffect().
    (function () {                                              (function () {
      if (isValija) {                                         |   var 
sideEffectHappened = false;
        var testImports = ___.copy(___.sharedImports);        |   function 
globalSideEffect() { sideEffectHappened = true; }
        testImports.loader = ___.freeze({                     |   function 
checkGlobalSideEffect() {
              provide: ___.markFuncFreeze(function (v)        |     var result 
= sideEffectHappened;
                  { serverJsSandboxMaker = v; })              |     
sideEffectHappened = false;
            });                                               |     return 
result;
        ___.getNewModuleHandler().setImports(testImports);    <
        loadScript('serverjs-sandbox.co.js');                 <
      }                                                           }
    })();</script>                                            |   
this.globalSideEffect = globalSideEffect;
                                                              >   
this.checkGlobalSideEffect = checkGlobalSideEffect;
                                                              > })();

    <script type="text/javascript">(function () {             | function 
initialize(serverJsSandboxModule, valijaModule) {
      ___.setLogFunc(function(msg) { console.log(msg); });        
___.setLogFunc(function(msg) { console.log(msg); });

      var testImports = ___.copy(___.sharedImports);              var 
testImports = ___.copy(___.sharedImports);
      if (valijaMaker) { testImports.outers = testImports; }  |   if (isValija) 
{ testImports.outers = testImports; }
      var testDomContainer = document.getElementById('untrust     var 
testDomContainer = document.getElementById('untrusted_c
      var pseudoWindowLocation = {                                var 
pseudoWindowLocation = {
          href: 'http://zip.example.com:4242/pumpkin.html?q=g         href: 
'http://zip.example.com:4242/pumpkin.html?q=getit
          hash: '#myanchor',                                          hash: 
'#myanchor',
          host: 'zip.example.com:4242',                               host: 
'zip.example.com:4242',
          hostname: 'zip.example.com',                                hostname: 
'zip.example.com',
          pathname: '/pumpkin.html',                                  pathname: 
'/pumpkin.html',
          port: '4242',                                               port: 
'4242',
          protocol: 'http:',                                          protocol: 
'http:',
          search: '?q=getit'                                          search: 
'?q=getit'
      };                                                          };

                                                              >   
___.setNewModuleHandler(___.makeNormalNewModuleHandler());
      ___.getNewModuleHandler().setImports(testImports);          
___.getNewModuleHandler().setImports(testImports);

      testImports.jsunitRegister = ___.markFuncFreeze(jsunitR     
testImports.jsunitRegister = ___.markFuncFreeze(jsunitRegis
      testImports.jsunitRun = ___.markFuncFreeze(jsunitRun);      
testImports.jsunitRun = ___.markFuncFreeze(jsunitRun);
      testImports.console = ___.primFreeze({                      
testImports.console = ___.primFreeze({
        log: ___.markFuncFreeze(                                    log: 
___.markFuncFreeze(
            function () { console.log.apply(console, argument           
function () { console.log.apply(console, arguments); 
        warn: ___.markFuncFreeze(                                   warn: 
___.markFuncFreeze(
            function () { console.warn.apply(console, argumen           
function () { console.warn.apply(console, arguments);
        error: ___.markFuncFreeze(                                  error: 
___.markFuncFreeze(
            function () { console.error.apply(console, argume           
function () { console.error.apply(console, arguments)
        trace: ___.markFuncFreeze(                                  trace: 
___.markFuncFreeze(
            function () {                                               
function () {
              console.trace ? console.trace()                             
console.trace ? console.trace()
                  : console.error.apply(console, arguments);                  : 
console.error.apply(console, arguments);
            })                                                          })
      });                                                         });

      // Give unfiltered DOM access so we can check the resul     // Give 
unfiltered DOM access so we can check the results o
      testImports.directAccess = ___.primFreeze({                 
testImports.directAccess = ___.primFreeze({
        // Allow testing of emitHtml by exposing it for testi       // Allow 
testing of emitHtml by exposing it for testing
        click: ___.markFuncFreeze(function (tameNode) {             click: 
___.markFuncFreeze(function (tameNode) {
          tameNode.node___.click();                                   
tameNode.node___.click();
        }),                                                         }),
        emitCssHook: ___.markFuncFreeze(function (css) {            
emitCssHook: ___.markFuncFreeze(function (css) {
          testImports.emitCss___(css.join('xyz___'));                 
testImports.emitCss___(css.join('xyz___'));
        }),                                                         }),
        getInnerHTML: ___.markFuncFreeze(function (tameNode)        
getInnerHTML: ___.markFuncFreeze(function (tameNode) {
          return tameNode.node___.innerHTML;                          return 
tameNode.node___.innerHTML;
        }),                                                         }),
        getAttribute: ___.markFuncFreeze(function (tameNode,        
getAttribute: ___.markFuncFreeze(function (tameNode, name
          return tameNode.node___.getAttribute(name);                 return 
tameNode.node___.getAttribute(name);
        }),                                                         }),
        getBodyNode: ___.markFuncFreeze(function () {               
getBodyNode: ___.markFuncFreeze(function () {
          return testImports.tameNode___(testDomContainer);           return 
testImports.tameNode___(testDomContainer);
        }),                                                         }),
        getComputedStyle: ___.markFuncFreeze(function (tameNo       
getComputedStyle: ___.markFuncFreeze(function (tameNode, 
          var node = tameNode.node___;                                var node 
= tameNode.node___;
          if (node.currentStyle) {                                    if 
(node.currentStyle) {
            return node.currentStyle[styleProp.replace(                 return 
node.currentStyle[styleProp.replace(
                /-([a-z])/g,                                                
/-([a-z])/g,
                function (_, letter) {                                      
function (_, letter) {
                  return letter.toUpperCase();                                
return letter.toUpperCase();
                })];                                                        })];
          } else if (window.getComputedStyle) {                       } else if 
(window.getComputedStyle) {
            return window.getComputedStyle(node, null)                  return 
window.getComputedStyle(node, null)
                .getPropertyValue(styleProp);                               
.getPropertyValue(styleProp);
          } else {                                                    } else {
            return null;                                                return 
null;
          }                                                           }
        }),                                                         }),
        // Lets tests check that an outer hull breach -- acce       // Lets 
tests check that an outer hull breach -- access t
        // an unexecuted script node -- does not allow a full       // an 
unexecuted script node -- does not allow a full bre
        makeUnattachedScriptNode: ___.markFuncFreeze(function       
makeUnattachedScriptNode: ___.markFuncFreeze(function () 
          var s = document.createElement('script');                   var s = 
document.createElement('script');
          s.appendChild(document.createTextNode('/* intention         
s.appendChild(document.createTextNode('/* intentionally
          return testImports.tameNode___(s, true);                    return 
testImports.tameNode___(s, true);
        }),                                                         }),
        isValija: isValija,                                         isValija: 
isValija,
        clearModuleCache: clearModuleCache                          
clearModuleCache: clearModuleCache
      });                                                         });

      // Marks a container green to indicate that test passed     // Marks a 
container green to indicate that test passed
      testImports.pass = ___.markFuncFreeze(function (id) {       
testImports.pass = ___.markFuncFreeze(function (id) {
        jsunit.pass(id);                                            
jsunit.pass(id);
        var node = testImports.document.getElementById(id);         var node = 
testImports.document.getElementById(id);
        if (!node) return;                                          if (!node) 
return;
        node = node.node___;                                        node = 
node.node___;
        node.appendChild(document.createTextNode('Passed ' +        
node.appendChild(document.createTextNode('Passed ' + id))
        if (node.className) {                                       if 
(node.className) {
          node.className = node.className.replace(/^clickme-|         
node.className = node.className.replace(/^clickme-|^wai
        }                                                           }
        node.className = (node.className || '') + ' passed';        
node.className = (node.className || '') + ' passed';
      }, 'pass');                                                 }, 'pass');

      testImports.checkGlobalSideEffect =                         
testImports.checkGlobalSideEffect =
          ___.markFuncFreeze(checkGlobalSideEffect);                  
___.markFuncFreeze(checkGlobalSideEffect);
      // An explicit channel between whitelisted_script.js an     // An 
explicit channel between whitelisted_script.js and ca
      testImports.externalScript = { loaded: false };             
testImports.externalScript = { loaded: false };

      // TODO: async requirements are not counted in the test     // TODO: 
async requirements are not counted in the test sta

      // Define an asynchronous test mechanism so that we can     // Define an 
asynchronous test mechanism so that we can tes
      // XHR, dynamic script loading, setTimeout, etc.            // XHR, 
dynamic script loading, setTimeout, etc.
      // This allows test code to register conditions that mu     // This 
allows test code to register conditions that must b
      // The conditions can be run periodically until all are     // The 
conditions can be run periodically until all are sat
      // the test times out.                                      // the test 
times out.
      // If a condition returns true once, it is never evalua     // If a 
condition returns true once, it is never evaluated 
      // TODO(mikesamuel): rewrite XHR and setTimeout tests t     // 
TODO(mikesamuel): rewrite XHR and setTimeout tests to us
      (function () {                                              (function () {
        var req = [];                                               var req = 
[];
        var intervalId = null;                                      var 
intervalId = null;
        var TIMEOUT_MILLIS = 250;                                   var 
TIMEOUT_MILLIS = 250;

        /**                                                         /**
         * Registers a requirement for later checking.               * 
Registers a requirement for later checking.
         * @param {string} msg descriptive text used in error        * @param 
{string} msg descriptive text used in error mes
         * @param {function () : boolean} predicate returns t        * @param 
{function () : boolean} predicate returns true 
         *     the requirement has been satisfied.                   *     the 
requirement has been satisfied.
         */                                                          */
        testImports.assertAsynchronousRequirement = ___.markF       
testImports.assertAsynchronousRequirement = ___.markFuncF
            function (msg, predicate) {                                 
function (msg, predicate) {
              req.push({ message: String(msg), predicate: pre             
req.push({ message: String(msg), predicate: predica
            });                                                         });
        /**                                                         /**
         * Start checking the asynchronous requirements.             * Start 
checking the asynchronous requirements.
         * @param {function (boolean) : void} handler called         * @param 
{function (boolean) : void} handler called with
         *     {...@code true} when and if all requirements are              *  
   {...@code true} when and if all requirements are sati
         *     Called with false if more than TIMEOUT_MILLIS         *     
Called with false if more than TIMEOUT_MILLIS time
         *     and requirements still aren't satisfied.              *     and 
requirements still aren't satisfied.
         */                                                          */
        this.evaluateAsyncRequirements = function (handler) {       
this.evaluateAsyncRequirements = function (handler) {
          if (intervalId !== null) { throw new Error('dupe ha         if 
(intervalId !== null) { throw new Error('dupe handle
          if (req.length === 0) {                                     if 
(req.length === 0) {
            handler(true);                                              
handler(true);
          } else {                                                    } else {
            var timeoutTime = (new Date).getTime() + TIMEOUT_           var 
timeoutTime = (new Date).getTime() + TIMEOUT_MILL
            intervalId = setInterval(function () {                      
intervalId = setInterval(function () {
              for (var i = req.length; --i >= 0;) {                       for 
(var i = req.length; --i >= 0;) {
                var msgAndPredicate = req[i];                               var 
msgAndPredicate = req[i];
                try {                                                       try 
{
                  if (true === ___.toFunc(msgAndPredicate.pre                 
if (true === ___.toFunc(msgAndPredicate.predica
                    // Requirement satisfied.                                   
// Requirement satisfied.
                    req[i] = req[req.length - 1];                               
req[i] = req[req.length - 1];
                    --req.length;                                               
--req.length;
                  }                                                           }
                } catch (e) {                                               } 
catch (e) {
                  console.error(                                              
console.error(
                      'Asynchronous failure : ' + msgAndPredi                   
  'Asynchronous failure : ' + msgAndPredicate
                }                                                           }
              }                                                           }
              if (req.length === 0 || (new Date).getTime() >=             if 
(req.length === 0 || (new Date).getTime() >= tim
                clearInterval(intervalId);                                  
clearInterval(intervalId);
                intervalId = null;                                          
intervalId = null;

                var failures = req.length !== 0;                            var 
failures = req.length !== 0;
                if (failures) {                                             if 
(failures) {
                  for (var i = req.length; --i >= 0;) {                       
for (var i = req.length; --i >= 0;) {
                    console.error('async test timeout: ' + re                   
console.error('async test timeout: ' + req[i]
                  }                                                           }
                  req.length = 0;                                             
req.length = 0;
                }                                                           }
                handler(!failures);                                         
handler(!failures);
              }                                                           }
            }, 50);                                                     }, 50);
          }                                                           }
        };                                                          };
      })();                                                       })();

      var jsunitFns = [                                           var jsunitFns 
= [
          'assert', 'assertContains', 'assertEquals', 'assert         'assert', 
'assertContains', 'assertEquals', 'assertEval
          'assertEvaluatesToTrue', 'assertFalse', 'assertHTML         
'assertEvaluatesToTrue', 'assertFalse', 'assertHTMLEqua
          'assertHashEquals', 'assertNotEquals', 'assertNotNu         
'assertHashEquals', 'assertNotEquals', 'assertNotNull',
          'assertNotUndefined', 'assertNull', 'assertRoughlyE         
'assertNotUndefined', 'assertNull', 'assertRoughlyEqual
          'assertTrue', 'assertObjectEquals', 'assertUndefine         
'assertTrue', 'assertObjectEquals', 'assertUndefined', 
          'fail', 'setUp', 'tearDown'];                               'fail', 
'setUp', 'tearDown'];
      for (var i = jsunitFns.length; --i >= 0;) {                 for (var i = 
jsunitFns.length; --i >= 0;) {
        var name = jsunitFns[i];                                    var name = 
jsunitFns[i];
        if (testImports.hasOwnProperty(name)) {                     if 
(testImports.hasOwnProperty(name)) {
          throw new Error('already defined', name);                   throw new 
Error('already defined', name);
        }                                                           }
        testImports[name] = ___.markFuncFreeze(this[name], na       
testImports[name] = ___.markFuncFreeze(this[name], name);
      }                                                           }

      testImports.valijaMode = !!valijaMaker;                 |   
testImports.valijaMode = isValija;

      testImports.Q = Q;                                          testImports.Q 
= Q;

      testImports.xhrModuleLoad = ___.primFreeze({                
testImports.xhrModuleLoad = ___.primFreeze({
        async: ___.markFuncFreeze(function(src) {                   async: 
___.markFuncFreeze(function(src) {
          return xhrModuleLoad.async(                                 return 
xhrModuleLoad.async(
              '/ant-lib/com/google/caja/' + src);                         
'/ant-lib/com/google/caja/' + src);
        })                                                          })
      });                                                         });
        
      testImports.scriptModuleLoad = ___.primFreeze({             
testImports.scriptModuleLoad = ___.primFreeze({
        async: ___.markFuncFreeze(function(src) {                   async: 
___.markFuncFreeze(function(src) {
          return scriptModuleLoad.async(                              return 
scriptModuleLoad.async(
              'http://localhost:8000/ant-lib/com/google/caja/             
'http://localhost:8000/ant-lib/com/google/caja/' + 
        })                                                          })
      });                                                         });

      if (isValija) {                                             if (isValija) 
{
        testImports.xhrIncludeScript = ___.primFreeze({             
testImports.xhrIncludeScript = ___.primFreeze({
          async: ___.markFuncFreeze(function(src) {                   async: 
___.markFuncFreeze(function(src) {
            var m = xhrModuleLoad.async(                                var m = 
xhrModuleLoad.async(
                '/ant-lib/com/google/caja/' + src);                         
'/ant-lib/com/google/caja/' + src);
            return Q.when(m,                                            return 
Q.when(m,
                function(module) { return module({$v: testImp               
function(module) { return module({$v: testImports
          })                                                          })
        });                                                         });
            
        testImports.scriptIncludeScript = ___.primFreeze({          
testImports.scriptIncludeScript = ___.primFreeze({
          async: ___.markFuncFreeze(function(src) {                   async: 
___.markFuncFreeze(function(src) {
            var m = scriptModuleLoad.async(                             var m = 
scriptModuleLoad.async(
                'http://localhost:8000/ant-lib/com/google/caj               
'http://localhost:8000/ant-lib/com/google/caja/' 
            return Q.when(m,                                            return 
Q.when(m,
                function(module) { return module({$v: testImp               
function(module) { return module({$v: testImports
          })                                                          })
        });                                                         });
        
        testImports.env = testImports;                              
testImports.env = testImports;
        testImports.env.x = 6;                                      
testImports.env.x = 6;
        var $s = serverJsSandboxMaker.CALL___(                |     var $s = 
serverJsSandboxModule.CALL___({
                testImports.env, valijaMaker, testImports.xhr |       env: 
testImports.env,
                                                              >       
valijaModule: valijaModule,
                                                              >       load: 
testImports.xhrModuleLoad
                                                              >     });
        testImports.serverJsModuleLoad = $s.loadModule;             
testImports.serverJsModuleLoad = $s.loadModule;
      }                                                           }

      attachDocumentStub(                                         
attachDocumentStub(
           '-xyz___',                                                  
'-xyz___',
           {                                                           {
             rewrite:                                                    
rewrite:
                 function (uri, mimeType) {                                  
function (uri, mimeType) {
                   // TODO(mikesamuel): write this properly.                   
// TODO(mikesamuel): write this properly.
                   // Whitelisting via regexp is not correct.                  
// Whitelisting via regexp is not correct.
                   var m = uri.match(                                          
var m = uri.match(
                       /^([^?#]*\/)?unproxied_whitelisted_scr                   
   /^([^?#]*\/)?unproxied_whitelisted_script\
                   if (m) { return (m[1] || '') + 'whiteliste                  
if (m) { return (m[1] || '') + 'whitelisted_sc
                   if (/^(?:[^?#]*\/)?xhrTest[^\/?#]*$/.test(                  
if (/^(?:[^?#]*\/)?xhrTest[^\/?#]*$/.test(uri)
                     return uri;                                                
 return uri;
                   }                                                           }
                   if (!/^https?:\/\//i.test(uri)) { return n                  
if (!/^https?:\/\//i.test(uri)) { return null;
                   return 'http://gadget-proxy/?url=' + encod                  
return 'http://gadget-proxy/?url=' + encodeURI
                       + '&mimeType=' + encodeURIComponent(mi                   
   + '&mimeType=' + encodeURIComponent(mimeTy
                 }                                                           }
           },                                                          },
           testImports,                                                
testImports,
           testDomContainer,                                           
testDomContainer,
           pseudoWindowLocation);                                      
pseudoWindowLocation);
      console.log('attached stubs');                              
console.log('attached stubs');

      // Create a readonly mirror of document so that we can      // Create a 
readonly mirror of document so that we can test
      // fail when they should.                                   // fail when 
they should.
      var documentHolder = valijaMaker ? testImports.outers : |   var 
documentHolder = isValija ? testImports.outers : testIm
      documentHolder.documentRO = new testImports.TameHTMLDoc     
documentHolder.documentRO = new testImports.TameHTMLDocumen
          document, testDomContainer, false);                         document, 
testDomContainer, false);

      testImports.htmlEmitter___ = new HtmlEmitter(               
testImports.htmlEmitter___ = new HtmlEmitter(
          testDomContainer, testImports.document);                    
testDomContainer, testImports.document);
      if (valijaMaker) {                                      |   if (isValija) 
{
        testImports.$v = valijaMaker.CALL___(testImports.oute |     
testImports.$v = valijaModule.CALL___({ outers: testImpor
      }                                                           }
      window.toString = function () { return '[WINDOW]'; };       
window.toString = function () { return '[WINDOW]'; };

      inlineHtml(isValija ? 'domita_test.vo.html' : 'domita_t     
inlineHtml(isValija ? 'domita_test.vo.html' : 'domita_test.
                 testDomContainer);                                          
testDomContainer);
    })(); </script>                                           <

  </body>                                                     |   
this.evaluateAsyncRequirements(function (pass) {
</html>                                                       |     if (!pass) {
                                                              >       
document.title = document.title.replace(
                                                              >           / - 
all tests passed$/, ' - async tests failed');
                                                              >     }
                                                              >     
assertTrue(document.title,
                                                              >                
/(?: - all tests passed)?$/.test(document.titl
                                                              >   });
                                                              > }
                                                              >
                                                              > function 
testDomita() {
                                                              >   if (isValija) 
{
                                                              >     
Q.when(serverJsSandboxModuleVow, function(serverJsSandbox
                                                              >       
Q.when(valijaModuleVow, function(valijaModule) {
                                                              >         
initialize(serverJsSandboxModule, valijaModule)
                                                              >       })
                                                              >     });
                                                              >   } else {
                                                              >     
initialize(undefined, undefined);
                                                              >   }
                                                              > }
                                                              >
                                                              > // Test that 
side effect catching works by trying it uncajole
                                                              > jsunitRegister(
                                                              >     
'_testSideEffectTestFramework',
                                                              >     function 
_testSideEffectTestFramework() {
                                                              >       
assertFalse(checkGlobalSideEffect());
                                                              >       var s = 
document.createElement('SCRIPT');
                                                              >       
s.innerHTML = 'globalSideEffect()';
                                                              >       
document.body.appendChild(s);
                                                              >       
assertTrue(checkGlobalSideEffect());
                                                              >       
assertFalse(checkGlobalSideEffect());
                                                              >       
jsunit.pass('_testSideEffectTestFramework');
                                                              >     });

Reply via email to