1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
'use strict'
const { Cu, Cc, Ci } = require('chrome');
const Request = require('sdk/request').Request;
const { WindowTracker } = require('sdk/deprecated/window-utils');
const { close, open } = require('sdk/window/helpers');
const { data } = require('sdk/self');
const { Panel } = require('sdk/panel');
const XUL_URL = 'chrome://test/content/new-window.xul'
const { Services } = Cu.import('resource://gre/modules/Services.jsm', {});
const { NetUtil } = Cu.import('resource://gre/modules/NetUtil.jsm', {});
exports.testChromeSkin = function(assert, done) {
let skinURL = 'chrome://test/skin/style.css';
Request({
url: skinURL,
overrideMimeType: 'text/plain',
onComplete: function (response) {
assert.ok(/test\{\}\s*$/.test(response.text), 'chrome.manifest skin folder was registered!');
done();
}
}).get();
assert.pass('requesting ' + skinURL);
}
exports.testChromeContent = function(assert, done) {
let wt = WindowTracker({
onTrack: function(window) {
if (window.document.documentElement.getAttribute('windowtype') === 'test:window') {
assert.pass('test xul window was opened');
wt.unload();
close(window).then(done, assert.fail);
}
}
});
open(XUL_URL).then(
assert.pass.bind(assert, 'opened ' + XUL_URL),
assert.fail);
assert.pass('opening ' + XUL_URL);
}
exports.testChromeLocale = function(assert) {
let jpLocalePath = Cc['@mozilla.org/chrome/chrome-registry;1'].
getService(Ci.nsIChromeRegistry).
convertChromeURL(NetUtil.newURI('chrome://test/locale/description.properties')).
spec.replace(/(en\-US|ja\-JP)/, 'ja-JP');
let enLocalePath = jpLocalePath.replace(/ja\-JP/, 'en-US');
let jpStringBundle = Services.strings.createBundle(jpLocalePath);
assert.equal(jpStringBundle.GetStringFromName('test'),
'テスト',
'locales ja-JP folder was copied correctly');
let enStringBundle = Services.strings.createBundle(enLocalePath);
assert.equal(enStringBundle.GetStringFromName('test'),
'Test',
'locales en-US folder was copied correctly');
}
exports.testChromeInPanel = function*(assert) {
let panel = Panel({
contentURL: 'chrome://test/content/panel.html',
contentScriptWhen: 'end',
contentScriptFile: data.url('panel.js')
});
yield new Promise(resolve => panel.port.once('start', resolve));
assert.pass('start was emitted');
yield new Promise(resolve => {
panel.once('show', resolve);
panel.show();
});
assert.pass('panel shown');
yield new Promise(resolve => {
panel.port.once('echo', resolve);
panel.port.emit('echo');
});
assert.pass('got echo');
panel.destroy();
assert.pass('panel is destroyed');
}
require('sdk/test/runner').runTestsFromModule(module);
|