123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- SimpleTest.waitForExplicitFinish();
- var fileTestOnCurrentOrigin = (location.protocol + '//' + location.host + location.pathname)
- .replace('test_', 'file_')
- .replace('_inproc', '').replace('_oop', '');
- var previousPrefs = {
- mozBrowserFramesEnabled: undefined,
- oop_by_default: undefined,
- };
- try {
- previousPrefs.mozBrowserFramesEnabled = SpecialPowers.getBoolPref('dom.mozBrowserFramesEnabled');
- } catch(e)
- {
- }
- try {
- previousPrefs.oop_by_default = SpecialPowers.getBoolPref('dom.ipc.browser_frames.oop_by_default');
- } catch(e) {
- }
- SpecialPowers.setBoolPref('dom.mozBrowserFramesEnabled', true);
- SpecialPowers.setBoolPref("dom.ipc.browser_frames.oop_by_default", location.pathname.indexOf('_inproc') == -1);
- SpecialPowers.addPermission("browser", true, window.document);
- var gData = [
- // APP 1
- {
- app: 'http://example.org/manifest.webapp',
- action: 'read-no',
- src: fileTestOnCurrentOrigin,
- },
- {
- app: 'http://example.org/manifest.webapp',
- action: 'write',
- src: fileTestOnCurrentOrigin,
- },
- {
- app: 'http://example.org/manifest.webapp',
- action: 'read-yes',
- src: fileTestOnCurrentOrigin,
- },
- // APP 2
- {
- app: 'https://example.com/manifest.webapp',
- action: 'read-no',
- src: fileTestOnCurrentOrigin,
- },
- {
- app: 'https://example.com/manifest.webapp',
- action: 'write',
- src: fileTestOnCurrentOrigin,
- },
- {
- app: 'https://example.com/manifest.webapp',
- action: 'read-yes',
- src: fileTestOnCurrentOrigin,
- },
- // Browser
- {
- browser: true,
- action: 'read-no',
- src: fileTestOnCurrentOrigin,
- },
- {
- browser: true,
- action: 'write',
- src: fileTestOnCurrentOrigin,
- },
- {
- browser: true,
- action: 'read-yes',
- src: fileTestOnCurrentOrigin,
- },
- ];
- function runTest() {
- for (var i in gData) {
- var iframe = document.createElement('iframe');
- var data = gData[i];
- if (data.app) {
- iframe.setAttribute('mozbrowser', '');
- iframe.setAttribute('mozapp', data.app);
- } else if (data.browser) {
- iframe.setAttribute('mozbrowser', '');
- }
- if (data.app || data.browser) {
- iframe.addEventListener('mozbrowsershowmodalprompt', function(e) {
- is(e.detail.message, 'success', 'test number ' + i);
- // document.getElementById('content').removeChild(iframe);
- i++;
- if (i >= gData.length) {
- if (previousPrefs.mozBrowserFramesEnabled !== undefined) {
- SpecialPowers.setBoolPref('dom.mozBrowserFramesEnabled', previousPrefs.mozBrowserFramesEnabled);
- }
- if (previousPrefs.oop_by_default !== undefined) {
- SpecialPowers.setBoolPref("dom.ipc.browser_frames.oop_by_default", previousPrefs.oop_by_default);
- }
- SpecialPowers.removePermission("browser", window.document);
- indexedDB.deleteDatabase('AppIsolationTest').onsuccess = function() {
- SimpleTest.finish();
- };
- } else {
- gTestRunner.next();
- }
- });
- }
- iframe.src = data.src + '?' + data.action;
- document.getElementById('content').appendChild(iframe);
- yield undefined;
- }
- }
- var gTestRunner = runTest();
- function startTest() {
- var request = window.indexedDB.open('AppIsolationTest');
- var created = false;
- request.onupgradeneeded = function(event) {
- created = true;
- var db = event.target.result;
- var data = [
- { id: "0", name: "foo" },
- ];
- var objectStore = db.createObjectStore("test", { keyPath: "id" });
- for (var i in data) {
- objectStore.add(data[i]);
- }
- }
- request.onsuccess = function(event) {
- var db = event.target.result;
- is(created, true, "we should have created the db");
- db.transaction("test").objectStore("test").get("0").onsuccess = function(event) {
- is(event.target.result.name, 'foo', 'data have been written');
- db.close();
- gTestRunner.next();
- };
- }
- }
- // TODO: remove unsetting network.disable.ipc.security as part of bug 820712
- SpecialPowers.pushPrefEnv({
- "set": [
- ["network.disable.ipc.security", true],
- ]
- }, startTest);
|