Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Bug 1103589 - Support window.open calls from a private browser r=gduan
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinGrandon committed Nov 25, 2014
1 parent 058396f commit acde76b
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 5 deletions.
1 change: 1 addition & 0 deletions apps/system/js/browser_config_helper.js
Expand Up @@ -107,6 +107,7 @@
this.manifest = manifest;
} else {
this.iframe = config.iframe;
this.isPrivate = config.isPrivate;
this.name = config.name || '';
this.origin = config.url;
this.manifestURL = '';
Expand Down
7 changes: 4 additions & 3 deletions apps/system/js/child_window_factory.js
Expand Up @@ -141,9 +141,9 @@
var configObject = {
url: evt.detail.url,
name: evt.detail.name,
iframe: evt.detail.frameElement
iframe: evt.detail.frameElement,
isPrivate: this.app.isPrivateBrowser()
};

window.dispatchEvent(new CustomEvent('openwindow', {
detail: configObject
}));
Expand All @@ -158,7 +158,8 @@
url: evt.detail.url,
name: this.app.name,
iframe: evt.detail.frameElement,
origin: this.app.origin
origin: this.app.origin,
isPrivate: this.app.isPrivateBrowser()
};
if (this._sameOrigin(this.app.origin, evt.detail.url)) {
configObject.manifestURL = this.app.manifestURL;
Expand Down
75 changes: 75 additions & 0 deletions apps/system/test/marionette/browser_private_window_open_test.js
@@ -0,0 +1,75 @@
'use strict';

var Home = require(
'../../../../apps/verticalhome/test/marionette/lib/home2');
var Search = require(
'../../../../apps/search/test/marionette/lib/search');
var Server = require('../../../../shared/test/integration/server');
var Rocketbar = require('./lib/rocketbar');

marionette('Private Browser - Window.open', function() {

var client = marionette.client({
prefs: {
'focusmanager.testmode': true,
'dom.w3c_touch_events.enabled': 1
},
settings: {
'ftu.manifestURL': null,
'lockscreen.enabled': false
}
});

var home, rocketbar, search, server, system;

suiteSetup(function(done) {
Server.create(__dirname + '/fixtures/', function(err, _server) {
server = _server;
done();
});
});

suiteTeardown(function() {
server.stop();
});

setup(function() {
home = new Home(client);
rocketbar = new Rocketbar(client);
search = new Search(client);
system = client.loader.getAppClass('system');
system.waitForStartup();

search.removeGeolocationPermission();
});

test('Open windows from private browsers are also private', function() {
// Use the home-screen search box to open up the system browser
var url = server.url('sample.html');
rocketbar.homescreenFocus();
search.triggerFirstRun(rocketbar);
rocketbar.enterText(url + '\uE006');
system.gotoBrowser(url);

client.switchToFrame();
system.appChromeContextLink.tap();
system.appChromeContextNewPrivate.tap();
system.gotoBrowser('app://system.gaiamobile.org/private_browser.html');

client.switchToFrame();
system.appUrlbar.tap();

var opener = server.url('windowopen.html');
rocketbar.enterText(opener + '\uE006');
system.gotoBrowser(opener);
client.findElement('#trigger1').click();
client.switchToFrame();

var browsers;
client.waitFor(function() {
browsers = client.findElements(
'.appWindow.private iframe[data-url*="http://localhost"]');
return browsers.length === 2;
});
});
});
3 changes: 2 additions & 1 deletion apps/system/test/unit/child_window_factory_test.js
Expand Up @@ -268,7 +268,8 @@ suite('system/ChildWindowFactory', function() {
assert.deepEqual(stubDispatchEvent.getCall(0).args[0].detail, {
url: fakeWindowOpenBlank.url,
name: fakeWindowOpenBlank.name,
iframe: fakeWindowOpenBlank.frameElement
iframe: fakeWindowOpenBlank.frameElement,
isPrivate: false
});
});

Expand Down
2 changes: 1 addition & 1 deletion apps/system/test/unit/mock_app_window.js
Expand Up @@ -99,7 +99,7 @@
reload: function() {},
stop: function() {},
isBrowser: function() {},
isPrivateBrowser: function() {},
isPrivateBrowser: function() { return false; },
isCertified: function() {},
navigate: function() {},
isFullScreen: function() {},
Expand Down

0 comments on commit acde76b

Please sign in to comment.