Bug 787203: Get Marionette working in Fennec.
MozReview-Commit-ID: D5sFULBOdcU
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -14,16 +14,21 @@
//
// For instance: cachePercentageWidth is 1500
// viewport height is 500
// => display port height will be 500 * 1.5 = 750
//
pref("toolkit.browser.cacheRatioWidth", 2000);
pref("toolkit.browser.cacheRatioHeight", 3000);
+//marionette to be removed
+
+pref("marionette.defaultPrefs.enabled", true);
+pref("marionette.defaultPrefs.port", 2828);
+
// How long before a content view (a handle to a remote scrollable object)
// expires.
pref("toolkit.browser.contentViewExpire", 3000);
pref("toolkit.defaultChromeURI", "chrome://browser/content/browser.xul");
pref("browser.chromeURL", "chrome://browser/content/");
// If a tab has not been active for this long (seconds), then it may be
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -3342,16 +3342,18 @@ Tab.prototype = {
return;
aParams = aParams || {};
this.browser = document.createElement("browser");
this.browser.setAttribute("type", "content-targetable");
this.browser.setAttribute("messagemanagergroup", "browsers");
+ this.browser.permanentKey = {};
+
// Make sure the previously selected panel remains selected. The selected panel of a deck is
// not stable when panels are added.
let selectedPanel = BrowserApp.deck.selectedPanel;
BrowserApp.deck.insertBefore(this.browser, aParams.sibling || null);
BrowserApp.deck.selectedPanel = selectedPanel;
if (BrowserApp.manifestUrl) {
let appsService = Cc["@mozilla.org/AppsService;1"].getService(Ci.nsIAppsService);
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -1499,39 +1499,39 @@ GeckoDriver.prototype.setWindowPosition
* Switch current top-level browsing context by name or server-assigned ID.
* Searches for windows by name, then ID. Content windows take precedence.
*
* @param {string} name
* Target name or ID of the window to switch to.
*/
GeckoDriver.prototype.switchToWindow = function*(cmd, resp) {
let switchTo = cmd.parameters.name;
- let isB2G = this.appName == "B2G";
+ let isMobile = this.appName == "B2G" || this.appName == "Fennec";
let found;
let getOuterWindowId = function(win) {
let rv = win.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils)
.outerWindowID;
- rv += isB2G ? "-b2g" : "";
+ rv += isMobile ? "-b2g" : "";
return rv;
};
let byNameOrId = function(name, outerId, contentWindowId) {
return switchTo == name ||
switchTo == contentWindowId ||
switchTo == outerId;
};
let winEn = this.getWinEnumerator();
while (winEn.hasMoreElements()) {
let win = winEn.getNext();
let outerId = getOuterWindowId(win);
- if (win.gBrowser && !isB2G) {
+ if (win.gBrowser && !isMobile) {
let tabbrowser = win.gBrowser;
for (let i = 0; i < tabbrowser.browsers.length; ++i) {
let browser = tabbrowser.getBrowserAtIndex(i);
let contentWindowId = this.getIdForBrowser(browser);
if (byNameOrId(win.name, contentWindowId, outerId)) {
found = {
win: win,
outerId: outerId,
@@ -3034,29 +3034,33 @@ var BrowserObj = function(win, driver) {
this.updateIdForBrowser = driver.updateIdForBrowser.bind(driver);
this._curFrameId = null;
this._browserWasRemote = null;
this._hasRemotenessChange = false;
};
Object.defineProperty(BrowserObj.prototype, "browserForTab", {
get() {
- return this.browser.getBrowserForTab(this.tab);
+ if (this.browser.getBrowserForTab) {
+ return this.browser.getBrowserForTab(this.tab);
+ } else {
+ return this.browser.selectedBrowser;
+ }
}
});
/**
* The current frame ID is managed per browser element on desktop in
* case the ID needs to be refreshed. The currently selected window is
* identified within BrowserObject by a tab.
*/
Object.defineProperty(BrowserObj.prototype, "curFrameId", {
get() {
let rv = null;
- if (this.driver.appName != "Firefox") {
+ if (this.driver.appName != "Firefox" && this.driver.appName != "Fennec") {
rv = this._curFrameId;
} else if (this.tab) {
rv = this.getIdForBrowser(this.browserForTab);
}
return rv;
},
set(id) {
@@ -3137,20 +3141,21 @@ BrowserObj.prototype.addTab = function(u
* If a window is provided, this BrowserObj's internal reference is updated
* before proceeding.
*/
BrowserObj.prototype.switchToTab = function(ind, win) {
if (win) {
this.window = win;
this.setBrowser(win);
}
-
- this.browser.selectTabAtIndex(ind);
+ if (this.browser.selectTabAtIndex) {
+ this.browser.selectTabAtIndex(ind);
+ this._browserWasRemote = this.browserForTab.isRemoteBrowser;
+ }
this.tab = this.browser.selectedTab;
- this._browserWasRemote = this.browserForTab.isRemoteBrowser;
this._hasRemotenessChange = false;
};
/**
* Registers a new frame, and sets its current frame id to this frame
* if it is not already assigned, and if a) we already have a session
* or b) we're starting a new session and it is the right start frame.
*
--- a/testing/marionette/harness/marionette/marionette_test.py
+++ b/testing/marionette/harness/marionette/marionette_test.py
@@ -90,17 +90,18 @@ def skip_if_desktop(target):
def wrapper(self, *args, **kwargs):
if self.marionette.session_capabilities.get('b2g') is None:
raise SkipTest('skipping due to desktop')
return target(self, *args, **kwargs)
return wrapper
def skip_if_b2g(target):
def wrapper(self, *args, **kwargs):
- if self.marionette.session_capabilities.get('b2g') == True:
+ if self.marionette.session_capabilities.get('b2g') == True or \
+ self.marionette.session_capabilities.get('browserName') == 'Fennec':
raise SkipTest('skipping due to b2g')
return target(self, *args, **kwargs)
return wrapper
def skip_if_e10s(target):
def wrapper(self, *args, **kwargs):
with self.marionette.using_context('chrome'):
multi_process_browser = self.marionette.execute_script("""
--- a/testing/marionette/harness/marionette/runner/base.py
+++ b/testing/marionette/harness/marionette/runner/base.py
@@ -808,17 +808,17 @@ setReq.onerror = function() {
need_external_ip = True
if not self.marionette:
self.start_marionette()
# Retrieve capabilities for later use
if not self._capabilities:
self.capabilities
# if we're working against a desktop version, we usually don't need
# an external ip
- if self._capabilities['device'] == "desktop":
+ if self._capabilities['device'] == "desktop" and self.capabilities['browserName'] != 'Fennec':
need_external_ip = False
self.logger.info('Initial Profile Destination is '
'"{}"'.format(self.marionette.profile_path))
# Gaia sets server_root and that means we shouldn't spin up our own httpd
if not self.httpd:
if self.server_root is None or os.path.isdir(self.server_root):
self.logger.info("starting httpd")
@@ -847,25 +847,25 @@ setReq.onerror = function() {
invalid_tests = \
[t['filepath'] for t in self.tests
if not os.path.basename(t['filepath']).startswith('test_')]
if invalid_tests:
raise Exception("Tests file names must starts with 'test_'."
" Invalid test names:\n %s"
% '\n '.join(invalid_tests))
- version_info = mozversion.get_version(binary=self.bin,
- sources=self.sources,
- dm_type=os.environ.get('DM_TRANS', 'adb'),
- device_serial=self.device_serial,
- adb_host=self.marionette.adb_host,
- adb_port=self.marionette.adb_port)
+ # version_info = mozversion.get_version(binary=self.bin,
+ # sources=self.sources,
+ # dm_type=os.environ.get('DM_TRANS', 'adb'),
+ # device_serial=self.device_serial,
+ # adb_host=self.marionette.adb_host,
+ # adb_port=self.marionette.adb_port)
self.logger.suite_start(self.tests,
- version_info=version_info,
+ # version_info=version_info,
device_info=device_info)
for test in self.manifest_skipped_tests:
name = os.path.basename(test['path'])
self.logger.test_start(name)
self.logger.test_end(name,
'SKIP',
message=test['disabled'])