- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / api_test / executescript / navigation_race / test.js
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 chrome.test.getConfig(function(config) {
6   var path = "/extensions/test_file.txt";
7   var urlA = "http://a.com:" + config.testServer.port + path;
8   var urlB = "http://b.com:" + config.testServer.port + path;
9   var testTabId;
10
11   function onTabUpdated(tabId, changeInfo, tab) {
12     if (testTabId == tab.id && tab.status == "complete") {
13       chrome.tabs.onUpdated.removeListener(onTabUpdated);
14       chrome.tabs.update(tabId, {url: urlB});
15       executeCodeInTab(testTabId, function() {
16         // Generally, the tab navigation hasn't happened by the time we execute
17         // the script, so it's still showing a.com, where we don't have
18         // permission to run it.
19         if (chrome.runtime.lastError) {
20           chrome.test.assertTrue(
21               chrome.runtime.lastError.message.indexOf(
22                   'Cannot access contents of url "http://a.com:') == 0);
23           chrome.test.notifyPass();
24         } else {
25           // If there were no errors, then the script did run, but it should
26           // have run on on b.com (where we do have permission).
27           chrome.tabs.get(tabId, function(tab) {
28             chrome.test.assertTrue(
29                 tab.title.indexOf("hi, I'm on http://b.com:") == 0);
30             chrome.test.notifyPass();
31           });
32         }
33       });
34     }
35   }
36
37   chrome.tabs.onUpdated.addListener(onTabUpdated);
38   chrome.tabs.create({url: urlA}, function(tab) {
39     testTabId = tab.id;
40   });
41 });