Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
121
gaia/apps/system/js/browser_frame.js
Executable file
121
gaia/apps/system/js/browser_frame.js
Executable file
|
|
@ -0,0 +1,121 @@
|
|||
'use strict';
|
||||
|
||||
/**
|
||||
* Define a basic mozbrowser iframe class.
|
||||
* It creates a mozbrowser iframe,
|
||||
* and finally returns the DOM element it just created.
|
||||
*
|
||||
* The BrowserFrame instance has a 'element' field,
|
||||
* which is the mozbrowser iframe it generated or converted to.
|
||||
*
|
||||
* @param {Object} config
|
||||
* The configuration object generated by BrowserConfig.
|
||||
* @param {DOMIFRAMEElement} [frame]
|
||||
* The existing frame to be converted to mozbrowsr iframe.
|
||||
* @class BrowserFrame
|
||||
*/
|
||||
|
||||
(function(exports) {
|
||||
var nextId = 0;
|
||||
var BrowserFrame = function BrowserFrame() {
|
||||
this.element = null;
|
||||
this._id = nextId++;
|
||||
// All arguments are values to createFrame
|
||||
createFrame.apply(this, arguments);
|
||||
return this;
|
||||
};
|
||||
|
||||
BrowserFrame.prototype.CLASS_NAME = 'browser';
|
||||
|
||||
// These are helper functions and variables used by the methods above
|
||||
// They're not part of the public API of the module, but they're hidden
|
||||
// within this function scope so we don't have to define them as a
|
||||
// property of Browser or prefix them with underscores.
|
||||
function createFrame(config, frame) {
|
||||
var browser = frame || document.createElement('iframe');
|
||||
|
||||
// Most apps currently need to be hosted in a special 'mozbrowser' iframe.
|
||||
// They also need to be marked as 'mozapp' to be recognized as apps by the
|
||||
// platform.
|
||||
browser.setAttribute('mozbrowser', 'true');
|
||||
|
||||
// Give a name to the frame for differentiating between main frame and
|
||||
// inline frame. With the name we can get frames of the same app using the
|
||||
// window.open method.
|
||||
browser.name = config.window_name || 'main';
|
||||
|
||||
if (config.oop) {
|
||||
browser.setAttribute('remote', 'true');
|
||||
}
|
||||
|
||||
if (config.isPrivate && !config.isMockPrivate) {
|
||||
browser.setAttribute('mozprivatebrowsing', 'true');
|
||||
}
|
||||
|
||||
if (config.manifestURL) {
|
||||
browser.setAttribute('mozapp', config.manifestURL);
|
||||
|
||||
// Only app with manifest could get system message.
|
||||
if (config.isSystemMessage) {
|
||||
browser.setAttribute('expecting-system-message',
|
||||
'expecting-system-message');
|
||||
}
|
||||
}
|
||||
|
||||
if (config.parentApp) {
|
||||
browser.setAttribute('parentapp', config.parentApp);
|
||||
}
|
||||
|
||||
if (config.isInputMethod) {
|
||||
browser.setAttribute('mozpasspointerevents', 'true');
|
||||
browser.setAttribute('ignoreuserfocus', 'true');
|
||||
} else {
|
||||
browser.setAttribute('mozallowfullscreen', 'true');
|
||||
}
|
||||
|
||||
setMozAppType(browser, config);
|
||||
|
||||
if (config.url) {
|
||||
browser.src = config.url;
|
||||
// XXX: This one is for some failing python tests using
|
||||
// iframe[data-url*=XXX] to locate. But we shall change it later.
|
||||
browser.dataset.url = config.url;
|
||||
}
|
||||
|
||||
/*jshint validthis: true */
|
||||
browser.id = this.CLASS_NAME + this._id;
|
||||
|
||||
browser.classList.add(this.CLASS_NAME);
|
||||
|
||||
this.config = config;
|
||||
|
||||
this.element = browser;
|
||||
}
|
||||
|
||||
function setMozAppType(iframe, config) {
|
||||
// XXX: Those urls needs to be built dynamically.
|
||||
if (config.url.startsWith(window.location.protocol +
|
||||
'//callscreen.gaiamobile.org') ||
|
||||
config.url.startsWith(window.location.protocol +
|
||||
'//clock.gaiamobile.org')) {
|
||||
iframe.setAttribute('mozapptype', 'critical');
|
||||
} else if (config.isHomescreen) {
|
||||
/* If this frame corresponds to the homescreen, set mozapptype=homescreen
|
||||
* so we're less likely to kill this frame's process when we're running
|
||||
* low on memory.
|
||||
*
|
||||
* We must do this before we the appendChild() call below. Once
|
||||
* we add this frame to the document, we can't change its app type.
|
||||
*/
|
||||
iframe.setAttribute('mozapptype', 'homescreen');
|
||||
} else if (config.isSearch) {
|
||||
/* If this frame corresponds to search, set mozapptype=search
|
||||
*/
|
||||
iframe.setAttribute('mozapptype', 'search');
|
||||
} else if (config.isInputMethod) {
|
||||
iframe.setAttribute('mozapptype', 'inputmethod');
|
||||
}
|
||||
}
|
||||
|
||||
exports.BrowserFrame = BrowserFrame;
|
||||
}(window));
|
||||
Loading…
Reference in a new issue