| Index: chrome/test/data/extensions/api_test/content_scripts/about_blank_srcdoc/test.js | 
| diff --git a/chrome/test/data/extensions/api_test/content_scripts/about_blank_srcdoc/test.js b/chrome/test/data/extensions/api_test/content_scripts/about_blank_srcdoc/test.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..55ec364ed56154a99e100ca98d50c7b7a9faa707 | 
| --- /dev/null | 
| +++ b/chrome/test/data/extensions/api_test/content_scripts/about_blank_srcdoc/test.js | 
| @@ -0,0 +1,111 @@ | 
| +// Copyright (c) 2014 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +chrome.test.getConfig(function(config) { | 
| +  chrome.test.runTests([ | 
| +    function testAboutBlankInFrame() { | 
| +      chrome.runtime.onMessage.addListener(function onMessageListener(message) { | 
| +        chrome.runtime.onMessage.removeListener(onMessageListener); | 
| +        chrome.test.assertEq('message from about:blank', message); | 
| +        chrome.test.succeed(); | 
| +      }); | 
| +      chrome.test.log('Creating tab...'); | 
| +      var test_url = | 
| +          ('http://localhost:PORT/extensions/' + | 
| +           'test_file_with_about_blank_iframe.html') | 
| +              .replace(/PORT/, config.testServer.port); | 
| +      chrome.tabs.create({ url: test_url }); | 
| +    }, | 
| +    function testAboutSrcdocFrame() { | 
| +      chrome.runtime.onMessage.addListener(function onMessageListener(message) { | 
| +        chrome.runtime.onMessage.removeListener(onMessageListener); | 
| +        chrome.test.assertEq('message from about:srcdoc', message); | 
| +        chrome.test.succeed(); | 
| +      }); | 
| +      chrome.test.log('Creating tab...'); | 
| +      var test_url = | 
| +          ('http://localhost:PORT/extensions/' + | 
| +           'api_test/webnavigation/srcdoc/a.html') | 
| +              .replace(/PORT/, config.testServer.port); | 
| +      chrome.tabs.create({ url: test_url }); | 
| +    }, | 
| +    // Tests that content scripts are inserted in about:blank frames, even if | 
| +    // they are embedded in another about:-frame. | 
| +    function testAboutSrcdocNestedFrame() { | 
| +      chrome.runtime.onMessage.addListener(function onMessageListener(message) { | 
| +        chrome.runtime.onMessage.removeListener(onMessageListener); | 
| +        // Child frame of srcdoc document | 
| +        chrome.test.assertEq('message from about:blank', message); | 
| +        chrome.runtime.onMessage.addListener(function secondListener(message) { | 
| +          chrome.runtime.onMessage.removeListener(secondListener); | 
| +          // Child frame of top-level document | 
| +          chrome.test.assertEq('message from about:srcdoc', message); | 
| +          chrome.test.succeed(); | 
| +        }); | 
| +      }); | 
| +      chrome.test.log('Creating tab...'); | 
| +      var test_url = | 
| +          ('http://localhost:PORT/extensions/' + | 
| +           'test_file_with_about_blank_in_srcdoc.html') | 
| +              .replace(/PORT/, config.testServer.port); | 
| +      chrome.tabs.create({ url: test_url }); | 
| +    }, | 
| +    function testAboutBlankInTopLevelFrame() { | 
| +      chrome.runtime.onMessage.addListener(function onMessageListener(message) { | 
| +        chrome.runtime.onMessage.removeListener(onMessageListener); | 
| +        chrome.test.assertEq('message from about:blank', message); | 
| +        chrome.test.succeed(); | 
| +      }); | 
| + | 
| +      // Create tab using window.open on an existing page to inherit the origin | 
| +      // of the document. | 
| +      chrome.test.log('Creating tab using window.open("about:blank")...'); | 
| +      chrome.tabs.query({ | 
| +        url: '*://*/*test_file_with_about_blank_iframe*' | 
| +      }, function(tabs) { | 
| +        chrome.test.assertTrue(tabs.length > 0); | 
| +        chrome.tabs.executeScript(tabs[0].id, { | 
| +          code: 'window.open("about:blank");' | 
| +        }, function() { | 
| +          chrome.test.assertNoLastError(); | 
| +        }); | 
| +      }); | 
| +    }, | 
| +    // chrome.tabs.executeScript should run in the frame | 
| +    function testExecuteScriptInFrame() { | 
| +      chrome.tabs.query({ | 
| +        url: '*://*/*test_file_with_about_blank_iframe*' | 
| +      }, function(tabs) { | 
| +        chrome.test.assertTrue(tabs.length > 0); | 
| +        chrome.tabs.executeScript(tabs[0].id, { | 
| +          code: 'frameElement && (frameElement.src || "about:blank")', | 
| +          matchAboutBlank: true, | 
| +          allFrames: true | 
| +        }, function(results) { | 
| +          chrome.test.assertNoLastError(); | 
| +          chrome.test.assertTrue(results.indexOf('about:blank') >= 0); | 
| +          chrome.test.succeed(); | 
| +        }); | 
| +      }); | 
| +    }, | 
| +    // chtome.tabs.executeScript should run in about:srcdoc frames | 
| +    function testExecuteScriptInSrcdocFrame() { | 
| +      chrome.tabs.query({ | 
| +        url: '*://*/*srcdoc*' | 
| +      }, function(tabs) { | 
| +        chrome.test.assertTrue(tabs.length > 0); | 
| +        chrome.tabs.executeScript(tabs[0].id, { | 
| +          code: 'frameElement && frameElement.srcdoc && "srcdoc"', | 
| +          matchAboutBlank: true, | 
| +          allFrames: true | 
| +        }, function(results) { | 
| +          chrome.test.assertNoLastError(); | 
| +          chrome.test.assertTrue(results.indexOf('srcdoc') >= 0, | 
| +              'contentscript should be able to run in srcdoc frame'); | 
| +          chrome.test.succeed(); | 
| +        }); | 
| +      }); | 
| +    } | 
| +  ]); | 
| +}); | 
|  |