mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-07 18:04:46 +00:00
Merge m-c to mozilla-inbound
This commit is contained in:
commit
e156f56b85
@ -8,8 +8,14 @@
|
||||
|
||||
// This file is only loaded on Gonk to manage ADB state
|
||||
|
||||
const { utils: Cu } = Components;
|
||||
|
||||
const DEBUG = false;
|
||||
var debug = function(str) {
|
||||
dump("AdbController: " + str + "\n");
|
||||
}
|
||||
|
||||
let AdbController = {
|
||||
DEBUG: false,
|
||||
locked: undefined,
|
||||
remoteDebuggerEnabled: undefined,
|
||||
lockEnabled: undefined,
|
||||
@ -17,31 +23,21 @@ let AdbController = {
|
||||
disableAdbTimeoutHours: 12,
|
||||
umsActive: false,
|
||||
|
||||
debug: function(str) {
|
||||
dump("AdbController: " + str + "\n");
|
||||
},
|
||||
|
||||
setLockscreenEnabled: function(value) {
|
||||
this.lockEnabled = value;
|
||||
if (this.DEBUG) {
|
||||
this.debug("setLockscreenEnabled = " + this.lockEnabled);
|
||||
}
|
||||
DEBUG && debug("setLockscreenEnabled = " + this.lockEnabled);
|
||||
this.updateState();
|
||||
},
|
||||
|
||||
setLockscreenState: function(value) {
|
||||
this.locked = value;
|
||||
if (this.DEBUG) {
|
||||
this.debug("setLockscreenState = " + this.locked);
|
||||
}
|
||||
DEBUG && debug("setLockscreenState = " + this.locked);
|
||||
this.updateState();
|
||||
},
|
||||
|
||||
setRemoteDebuggerState: function(value) {
|
||||
this.remoteDebuggerEnabled = value;
|
||||
if (this.DEBUG) {
|
||||
this.debug("setRemoteDebuggerState = " + this.remoteDebuggerEnabled);
|
||||
}
|
||||
DEBUG && debug("setRemoteDebuggerState = " + this.remoteDebuggerEnabled);
|
||||
this.updateState();
|
||||
},
|
||||
|
||||
@ -59,25 +55,19 @@ let AdbController = {
|
||||
}
|
||||
}
|
||||
if (this.disableAdbTimeoutHours <= 0) {
|
||||
if (this.DEBUG) {
|
||||
this.debug("Timer to disable ADB not started due to zero timeout");
|
||||
}
|
||||
DEBUG && debug("Timer to disable ADB not started due to zero timeout");
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.DEBUG) {
|
||||
this.debug("Starting timer to disable ADB in " +
|
||||
this.disableAdbTimeoutHours + " hours");
|
||||
}
|
||||
DEBUG && debug("Starting timer to disable ADB in " +
|
||||
this.disableAdbTimeoutHours + " hours");
|
||||
let timeoutMilliseconds = this.disableAdbTimeoutHours * 60 * 60 * 1000;
|
||||
this.disableAdbTimer.initWithCallback(this, timeoutMilliseconds,
|
||||
Ci.nsITimer.TYPE_ONE_SHOT);
|
||||
},
|
||||
|
||||
stopDisableAdbTimer: function() {
|
||||
if (this.DEBUG) {
|
||||
this.debug("Stopping timer to disable ADB");
|
||||
}
|
||||
DEBUG && debug("Stopping timer to disable ADB");
|
||||
if (this.disableAdbTimer) {
|
||||
this.disableAdbTimer.cancel();
|
||||
this.disableAdbTimer = null;
|
||||
@ -90,7 +80,7 @@ let AdbController = {
|
||||
// The following dump will be the last thing that shows up in logcat,
|
||||
// and will at least give the user a clue about why logcat was
|
||||
// disconnected, if the user happens to be using logcat.
|
||||
dump("AdbController: ADB timer expired - disabling ADB\n");
|
||||
debug("ADB timer expired - disabling ADB\n");
|
||||
navigator.mozSettings.createLock().set(
|
||||
{'debugger.remote-mode': 'disabled'});
|
||||
}
|
||||
@ -110,17 +100,11 @@ let AdbController = {
|
||||
return;
|
||||
}
|
||||
let storage = this.storages[storageIndex];
|
||||
if (this.DEBUG) {
|
||||
this.debug("Checking availability of storage: '" +
|
||||
storage.storageName);
|
||||
}
|
||||
DEBUG && debug("Checking availability of storage: '" + storage.storageName);
|
||||
|
||||
let req = storage.available();
|
||||
req.onsuccess = function(e) {
|
||||
if (this.DEBUG) {
|
||||
this.debug("Storage: '" + storage.storageName + "' is '" +
|
||||
e.target.result);
|
||||
}
|
||||
DEBUG && debug("Storage: '" + storage.storageName + "' is '" + e.target.result);
|
||||
if (e.target.result == 'shared') {
|
||||
// We've found a storage area that's being shared with the PC.
|
||||
// We can stop looking now.
|
||||
@ -131,16 +115,15 @@ let AdbController = {
|
||||
this.updateStorageState(storageIndex + 1);
|
||||
}.bind(this);
|
||||
req.onerror = function(e) {
|
||||
dump("AdbController: error querying storage availability for '" +
|
||||
this.storages[storageIndex].storageName + "' (ignoring)\n");
|
||||
|
||||
Cu.reportError("AdbController: error querying storage availability for '" +
|
||||
this.storages[storageIndex].storageName + "' (ignoring)\n");
|
||||
this.updateStorageState(storageIndex + 1);
|
||||
}.bind(this);
|
||||
},
|
||||
|
||||
updateStateInternal: function() {
|
||||
if (this.DEBUG) {
|
||||
this.debug("updateStateInternal: called");
|
||||
}
|
||||
DEBUG && debug("updateStateInternal: called");
|
||||
|
||||
if (this.remoteDebuggerEnabled === undefined ||
|
||||
this.lockEnabled === undefined ||
|
||||
@ -162,18 +145,14 @@ let AdbController = {
|
||||
//
|
||||
// By waiting until both values are properly initialized, we avoid
|
||||
// turning adb on or off accidentally.
|
||||
if (this.DEBUG) {
|
||||
this.debug("updateState: Waiting for all vars to be initialized");
|
||||
}
|
||||
DEBUG && debug("updateState: Waiting for all vars to be initialized");
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if we have a remote debugging session going on. If so, we won't
|
||||
// disable adb even if the screen is locked.
|
||||
let isDebugging = USBRemoteDebugger.isDebugging;
|
||||
if (this.DEBUG) {
|
||||
this.debug("isDebugging=" + isDebugging);
|
||||
}
|
||||
DEBUG && debug("isDebugging=" + isDebugging);
|
||||
|
||||
// If USB Mass Storage, USB tethering, or a debug session is active,
|
||||
// then we don't want to disable adb in an automatic fashion (i.e.
|
||||
@ -199,13 +178,11 @@ let AdbController = {
|
||||
// This means that the pref doesn't exist. Which is fine. We just leave
|
||||
// enableAdb alone.
|
||||
}
|
||||
if (this.DEBUG) {
|
||||
this.debug("updateState: enableAdb = " + enableAdb +
|
||||
" remoteDebuggerEnabled = " + this.remoteDebuggerEnabled +
|
||||
" lockEnabled = " + this.lockEnabled +
|
||||
" locked = " + this.locked +
|
||||
" usbFuncActive = " + usbFuncActive);
|
||||
}
|
||||
DEBUG && debug("updateState: enableAdb = " + enableAdb +
|
||||
" remoteDebuggerEnabled = " + this.remoteDebuggerEnabled +
|
||||
" lockEnabled = " + this.lockEnabled +
|
||||
" locked = " + this.locked +
|
||||
" usbFuncActive = " + usbFuncActive);
|
||||
|
||||
// Configure adb.
|
||||
let currentConfig = libcutils.property_get("persist.sys.usb.config");
|
||||
@ -225,14 +202,12 @@ let AdbController = {
|
||||
}
|
||||
let newConfig = configFuncs.join(",");
|
||||
if (newConfig != currentConfig) {
|
||||
if (this.DEBUG) {
|
||||
this.debug("updateState: currentConfig = " + currentConfig);
|
||||
this.debug("updateState: newConfig = " + newConfig);
|
||||
}
|
||||
DEBUG && debug("updateState: currentConfig = " + currentConfig);
|
||||
DEBUG && debug("updateState: newConfig = " + newConfig);
|
||||
try {
|
||||
libcutils.property_set("persist.sys.usb.config", newConfig);
|
||||
} catch(e) {
|
||||
dump("Error configuring adb: " + e);
|
||||
Cu.reportError("Error configuring adb: " + e);
|
||||
}
|
||||
}
|
||||
if (useDisableAdbTimer) {
|
||||
@ -243,6 +218,7 @@ let AdbController = {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
SettingsListener.observe("lockscreen.locked", false,
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="3a2947df41a480de1457a6dcdbf46ad0af70d8e0">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="9f6b7471c881ee689183d681658cf2ba3dfc5610"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="3a2947df41a480de1457a6dcdbf46ad0af70d8e0">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="3a2947df41a480de1457a6dcdbf46ad0af70d8e0">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="9f6b7471c881ee689183d681658cf2ba3dfc5610"/>
|
||||
|
@ -4,6 +4,6 @@
|
||||
"remote": "",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "210585c281313afd89e28d6df035201e56dc80e8",
|
||||
"revision": "8017299c3eb7b82bdaee1334994f546c11eb16ab",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="9f6b7471c881ee689183d681658cf2ba3dfc5610"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="841d0d7d1b879f0ff4b5a8727f5dd23c7b0000a9"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5c636a7a54b2c86d8ff6bc1aa1e5f9594c7bc586"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="cc1f362ce43dce92ac786187ff4abf39060094bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
@ -1380,6 +1380,13 @@ pref("devtools.debugger.ui.variables-searchbox-visible", false);
|
||||
pref("devtools.profiler.enabled", true);
|
||||
pref("devtools.timeline.enabled", false);
|
||||
|
||||
// Enable perftools via build command
|
||||
#ifdef MOZ_DEVTOOLS_PERFTOOLS
|
||||
pref("devtools.performance_dev.enabled", true);
|
||||
#else
|
||||
pref("devtools.performance_dev.enabled", false);
|
||||
#endif
|
||||
|
||||
// The default Profiler UI settings
|
||||
pref("devtools.profiler.ui.show-platform-data", false);
|
||||
|
||||
|
@ -128,7 +128,7 @@
|
||||
&community.start2;<label class="text-link" href="http://www.mozilla.org/">&community.mozillaLink;</label>&community.middle2;<label class="text-link" href="about:credits">&community.creditsLink;</label>&community.end3;
|
||||
</description>
|
||||
<description class="text-blurb" id="contributeDesc">
|
||||
&contribute.start;<label class="text-link" href="http://www.mozilla.org/contribute/">&contribute.getInvolvedLink;</label>&contribute.end;
|
||||
&helpus.start;<label class="text-link" href="https://sendto.mozilla.org/page/contribute/Give-Now?source=mozillaorg_default_footer&ref=firefox_about&utm_campaign=firefox_about&tm_source=firefox&tm_medium=referral&utm_content=20140929_FireFoxAbout">&helpus.donateLink;</label>&helpus.middle;<label class="text-link" href="http://www.mozilla.org/contribute/">&helpus.getInvolvedLink;</label>&helpus.end;
|
||||
</description>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
@ -154,14 +154,13 @@ let gUpdater = {
|
||||
*/
|
||||
_fillEmptyCells: function Updater_fillEmptyCells(aLinks, aCallback) {
|
||||
let {cells, sites} = gGrid;
|
||||
let batch = [];
|
||||
|
||||
// Find empty cells and fill them.
|
||||
sites.forEach(function (aSite, aIndex) {
|
||||
Promise.all(sites.map((aSite, aIndex) => {
|
||||
if (aSite || !aLinks[aIndex])
|
||||
return;
|
||||
return null;
|
||||
|
||||
batch.push(new Promise(resolve => {
|
||||
return new Promise(resolve => {
|
||||
// Create the new site and fade it in.
|
||||
let site = gGrid.createSite(aLinks[aIndex], cells[aIndex]);
|
||||
|
||||
@ -172,9 +171,7 @@ let gUpdater = {
|
||||
// the fade-in transition work.
|
||||
window.getComputedStyle(site.node).opacity;
|
||||
gTransformation.showSite(site, resolve);
|
||||
}));
|
||||
});
|
||||
|
||||
Promise.all(batch).then(aCallback);
|
||||
});
|
||||
})).then(aCallback).catch(console.exception);
|
||||
}
|
||||
};
|
||||
|
@ -49,6 +49,7 @@ skip-if = e10s # when we backed out bug 1047603, this test broke.
|
||||
[browser_social_marks.js]
|
||||
skip-if = e10s # Bug 915547 (social providers don't install)
|
||||
[browser_social_multiprovider.js]
|
||||
skip-if = e10s # Bug 1069162 - lots of orange
|
||||
[browser_social_multiworker.js]
|
||||
[browser_social_perwindowPB.js]
|
||||
[browser_social_sidebar.js]
|
||||
|
@ -923,7 +923,7 @@ const CustomizableWidgets = [
|
||||
}, {
|
||||
id: "loop-call-button",
|
||||
type: "custom",
|
||||
label: "loop-call-button2.label",
|
||||
label: "loop-call-button3.label",
|
||||
tooltiptext: "loop-call-button2.tooltiptext",
|
||||
defaultArea: CustomizableUI.AREA_NAVBAR,
|
||||
introducedInVersion: 1,
|
||||
|
@ -86,6 +86,10 @@ browser.jar:
|
||||
content/browser/devtools/profiler.js (profiler/profiler.js)
|
||||
content/browser/devtools/ui-recordings.js (profiler/ui-recordings.js)
|
||||
content/browser/devtools/ui-profile.js (profiler/ui-profile.js)
|
||||
#ifdef MOZ_DEVTOOLS_PERFTOOLS
|
||||
content/browser/devtools/performance.xul (performance/performance.xul)
|
||||
content/browser/devtools/performance.js (performance/performance.js)
|
||||
#endif
|
||||
content/browser/devtools/responsivedesign/resize-commands.js (responsivedesign/resize-commands.js)
|
||||
content/browser/devtools/commandline.css (commandline/commandline.css)
|
||||
content/browser/devtools/commandlineoutput.xhtml (commandline/commandlineoutput.xhtml)
|
||||
|
@ -31,6 +31,7 @@ loader.lazyGetter(this, "ShaderEditorPanel", () => require("devtools/shaderedito
|
||||
loader.lazyGetter(this, "CanvasDebuggerPanel", () => require("devtools/canvasdebugger/panel").CanvasDebuggerPanel);
|
||||
loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/webaudioeditor/panel").WebAudioEditorPanel);
|
||||
loader.lazyGetter(this, "ProfilerPanel", () => require("devtools/profiler/panel").ProfilerPanel);
|
||||
loader.lazyGetter(this, "PerformancePanel", () => require("devtools/performance/panel").PerformancePanel);
|
||||
loader.lazyGetter(this, "TimelinePanel", () => require("devtools/timeline/panel").TimelinePanel);
|
||||
loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/netmonitor/panel").NetMonitorPanel);
|
||||
loader.lazyGetter(this, "StoragePanel", () => require("devtools/storage/panel").StoragePanel);
|
||||
@ -274,6 +275,32 @@ Tools.jsprofiler = {
|
||||
}
|
||||
};
|
||||
|
||||
Tools.performance = {
|
||||
id: "performance",
|
||||
ordinal: 19,
|
||||
icon: "chrome://browser/skin/devtools/tool-profiler.svg",
|
||||
invertIconForLightTheme: true,
|
||||
url: "chrome://browser/content/devtools/performance.xul",
|
||||
// TODO bug 1082695 audit the Performance tools labels
|
||||
label: "Performance++", //l10n("profiler.label2", profilerStrings),
|
||||
panelLabel: "Performance++", //l10n("profiler.panelLabel2", profilerStrings),
|
||||
tooltip: l10n("profiler.tooltip2", profilerStrings),
|
||||
accesskey: l10n("profiler.accesskey", profilerStrings),
|
||||
key: l10n("profiler.commandkey2", profilerStrings),
|
||||
modifiers: "shift",
|
||||
inMenu: true,
|
||||
|
||||
isTargetSupported: function (target) {
|
||||
// Hide the profiler when debugging devices pre bug 1046394,
|
||||
// that don't expose profiler actor in content processes.
|
||||
return !target.isAddon && (!target.isApp || target.form.profilerActor);
|
||||
},
|
||||
|
||||
build: function (frame, target) {
|
||||
return new PerformancePanel(frame, target);
|
||||
}
|
||||
};
|
||||
|
||||
Tools.timeline = {
|
||||
id: "timeline",
|
||||
ordinal: 8,
|
||||
@ -404,6 +431,16 @@ let defaultTools = [
|
||||
Tools.scratchpad
|
||||
];
|
||||
|
||||
// Only enable in-development performance tools if `--enable-devtools-perf`
|
||||
// used in build, turning on `devtools.performance_dev.enabled`.
|
||||
// Add to normal `defaultTools` when ready for normal release,
|
||||
// pull out MOZ_DEVTOOLS_PERFTOOLS setting in `./configure.in`, and
|
||||
// leave config on in `./browser/app/profile/firefox.js`, and always
|
||||
// build in `./browser/devtools/moz.build`.
|
||||
if (Services.prefs.getBoolPref("devtools.performance_dev.enabled")) {
|
||||
defaultTools.push(Tools.performance);
|
||||
}
|
||||
|
||||
exports.defaultTools = defaultTools;
|
||||
|
||||
for (let definition of defaultTools) {
|
||||
|
@ -33,6 +33,9 @@ DIRS += [
|
||||
'webide',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_DEVTOOLS_PERFTOOLS']:
|
||||
DIRS += ['performance']
|
||||
|
||||
EXTRA_COMPONENTS += [
|
||||
'devtools-clhandler.js',
|
||||
'devtools-clhandler.manifest',
|
||||
|
8
browser/devtools/performance/moz.build
Normal file
8
browser/devtools/performance/moz.build
Normal file
@ -0,0 +1,8 @@
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
||||
EXTRA_JS_MODULES.devtools.performance += [
|
||||
'panel.js'
|
||||
]
|
62
browser/devtools/performance/panel.js
Normal file
62
browser/devtools/performance/panel.js
Normal file
@ -0,0 +1,62 @@
|
||||
/* -*- Mode: javascript; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
|
||||
/* 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 {Cc, Ci, Cu, Cr} = require("chrome");
|
||||
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
|
||||
loader.lazyRequireGetter(this, "promise");
|
||||
loader.lazyRequireGetter(this, "EventEmitter",
|
||||
"devtools/toolkit/event-emitter");
|
||||
|
||||
function PerformancePanel(iframeWindow, toolbox) {
|
||||
this.panelWin = iframeWindow;
|
||||
this._toolbox = toolbox;
|
||||
|
||||
EventEmitter.decorate(this);
|
||||
}
|
||||
|
||||
exports.PerformancePanel = PerformancePanel;
|
||||
|
||||
PerformancePanel.prototype = {
|
||||
/**
|
||||
* Open is effectively an asynchronous constructor.
|
||||
*
|
||||
* @return object
|
||||
* A promise that is resolved when the Profiler completes opening.
|
||||
*/
|
||||
open: Task.async(function*() {
|
||||
this.panelWin.gToolbox = this._toolbox;
|
||||
this.panelWin.gTarget = this.target;
|
||||
|
||||
// Mock Front for now
|
||||
let gFront = {};
|
||||
EventEmitter.decorate(gFront);
|
||||
this.panelWin.gFront = gFront;
|
||||
|
||||
yield this.panelWin.startupPerformance();
|
||||
|
||||
this.isReady = true;
|
||||
this.emit("ready");
|
||||
return this;
|
||||
}),
|
||||
|
||||
// DevToolPanel API
|
||||
|
||||
get target() this._toolbox.target,
|
||||
|
||||
destroy: Task.async(function*() {
|
||||
// Make sure this panel is not already destroyed.
|
||||
if (this._destroyed) {
|
||||
return;
|
||||
}
|
||||
|
||||
yield this.panelWin.shutdownPerformance();
|
||||
this.emit("destroyed");
|
||||
this._destroyed = true;
|
||||
})
|
||||
};
|
97
browser/devtools/performance/performance.js
Normal file
97
browser/devtools/performance/performance.js
Normal file
@ -0,0 +1,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 { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://gre/modules/devtools/Loader.jsm");
|
||||
Cu.import("resource:///modules/devtools/ViewHelpers.jsm");
|
||||
|
||||
devtools.lazyRequireGetter(this, "Services");
|
||||
devtools.lazyRequireGetter(this, "promise");
|
||||
devtools.lazyRequireGetter(this, "EventEmitter",
|
||||
"devtools/toolkit/event-emitter");
|
||||
devtools.lazyRequireGetter(this, "DevToolsUtils",
|
||||
"devtools/toolkit/DevToolsUtils");
|
||||
|
||||
/**
|
||||
* The current target and the profiler connection, set by this tool's host.
|
||||
*/
|
||||
let gToolbox, gTarget, gFront;
|
||||
|
||||
/**
|
||||
* Initializes the profiler controller and views.
|
||||
*/
|
||||
let startupPerformance = Task.async(function*() {
|
||||
yield promise.all([
|
||||
PrefObserver.register(),
|
||||
EventsHandler.initialize()
|
||||
]);
|
||||
});
|
||||
|
||||
/**
|
||||
* Destroys the profiler controller and views.
|
||||
*/
|
||||
let shutdownPerformance = Task.async(function*() {
|
||||
yield promise.all([
|
||||
PrefObserver.unregister(),
|
||||
EventsHandler.destroy()
|
||||
]);
|
||||
});
|
||||
|
||||
/**
|
||||
* Observes pref changes on the devtools.profiler branch and triggers the
|
||||
* required frontend modifications.
|
||||
*/
|
||||
let PrefObserver = {
|
||||
register: function() {
|
||||
this.branch = Services.prefs.getBranch("devtools.profiler.");
|
||||
this.branch.addObserver("", this, false);
|
||||
},
|
||||
unregister: function() {
|
||||
this.branch.removeObserver("", this);
|
||||
},
|
||||
observe: function(subject, topic, pref) {
|
||||
Prefs.refresh();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Functions handling target-related lifetime events.
|
||||
*/
|
||||
let EventsHandler = {
|
||||
/**
|
||||
* Listen for events emitted by the current tab target.
|
||||
*/
|
||||
initialize: function() {
|
||||
},
|
||||
|
||||
/**
|
||||
* Remove events emitted by the current tab target.
|
||||
*/
|
||||
destroy: function() {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Shortcuts for accessing various profiler preferences.
|
||||
*/
|
||||
const Prefs = new ViewHelpers.Prefs("devtools.profiler", {
|
||||
});
|
||||
|
||||
/**
|
||||
* Convenient way of emitting events from the panel window.
|
||||
*/
|
||||
EventEmitter.decorate(this);
|
||||
|
||||
/**
|
||||
* DOM query helpers.
|
||||
*/
|
||||
function $(selector, target = document) {
|
||||
return target.querySelector(selector);
|
||||
}
|
||||
function $$(selector, target = document) {
|
||||
return target.querySelectorAll(selector);
|
||||
}
|
47
browser/devtools/performance/performance.xul
Normal file
47
browser/devtools/performance/performance.xul
Normal file
@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://browser/content/devtools/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://browser/skin/devtools/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://browser/skin/devtools/performance.css" type="text/css"?>
|
||||
<!DOCTYPE window [
|
||||
<!ENTITY % profilerDTD SYSTEM "chrome://browser/locale/devtools/profiler.dtd">
|
||||
%profilerDTD;
|
||||
]>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
<script src="chrome://browser/content/devtools/theme-switching.js"/>
|
||||
<script type="application/javascript" src="performance.js"/>
|
||||
|
||||
<vbox class="theme-body" flex="1">
|
||||
<toolbar id="performance-toolbar" class="devtools-toolbar">
|
||||
<hbox id="performance-toolbar-controls-recordings" class="devtools-toolbarbutton-group">
|
||||
<toolbarbutton id="record-button"
|
||||
class="devtools-toolbarbutton"
|
||||
tooltiptext="&profilerUI.recordButton.tooltip;"/>
|
||||
<toolbarbutton id="clear-button"
|
||||
class="devtools-toolbarbutton"
|
||||
label="&profilerUI.clearButton;"/>
|
||||
</hbox>
|
||||
<spacer flex="1"></spacer>
|
||||
<hbox id="performance-toolbar-controls-storage" class="devtools-toolbarbutton-group">
|
||||
<toolbarbutton id="import-button"
|
||||
class="devtools-toolbarbutton"
|
||||
label="&profilerUI.importButton;"/>
|
||||
</hbox>
|
||||
</toolbar>
|
||||
<splitter class="devtools-horizontal-splitter" />
|
||||
<box id="overview-pane"
|
||||
class="devtools-responsive-container"
|
||||
flex="1">
|
||||
</box>
|
||||
<splitter class="devtools-horizontal-splitter" />
|
||||
<box id="details-pane"
|
||||
class="devtools-responsive-container"
|
||||
flex="1">
|
||||
</box>
|
||||
</vbox>
|
||||
</window>
|
@ -22,6 +22,7 @@ support-files =
|
||||
[browser_audionode-actor-get-type.js]
|
||||
[browser_audionode-actor-is-source.js]
|
||||
[browser_audionode-actor-bypass.js]
|
||||
[browser_audionode-actor-connectnode-disconnect.js]
|
||||
[browser_webaudio-actor-simple.js]
|
||||
[browser_webaudio-actor-destroy-node.js]
|
||||
[browser_webaudio-actor-connect-param.js]
|
||||
|
@ -0,0 +1,44 @@
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
|
||||
/**
|
||||
* Tests that AudioNodeActor#connectNode() and AudioNodeActor#disconnect() work.
|
||||
* Uses the editor front as the actors do not retain connect state.
|
||||
*/
|
||||
|
||||
function spawnTest() {
|
||||
let { target, panel } = yield initWebAudioEditor(SIMPLE_CONTEXT_URL);
|
||||
let { panelWin } = panel;
|
||||
let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
|
||||
|
||||
reload(target);
|
||||
|
||||
let [actors] = yield Promise.all([
|
||||
get3(gFront, "create-node"),
|
||||
waitForGraphRendered(panelWin, 3, 2)
|
||||
]);
|
||||
|
||||
let [dest, osc, gain] = actors;
|
||||
|
||||
info("Disconnecting oscillator...");
|
||||
osc.disconnect();
|
||||
yield Promise.all([
|
||||
waitForGraphRendered(panelWin, 3, 1),
|
||||
once(gAudioNodes, "disconnect")
|
||||
]);
|
||||
ok(true, "Oscillator disconnected, event emitted.");
|
||||
|
||||
|
||||
info("Reconnecting oscillator...");
|
||||
osc.connectNode(gain);
|
||||
yield Promise.all([
|
||||
waitForGraphRendered(panelWin, 3, 2),
|
||||
once(gAudioNodes, "connect")
|
||||
]);
|
||||
ok(true, "Oscillator reconnected.");
|
||||
|
||||
|
||||
yield teardown(panel);
|
||||
finish();
|
||||
}
|
||||
|
@ -38,10 +38,13 @@
|
||||
<!ENTITY community.creditsLink "global community">
|
||||
<!ENTITY community.end3 " working together to keep the Web open, public and accessible to all.">
|
||||
|
||||
<!ENTITY contribute.start "Sound interesting? ">
|
||||
<!-- LOCALIZATION NOTE (contribute.getInvolvedLink): This is a link title that links to http://www.mozilla.org/contribute/. -->
|
||||
<!ENTITY contribute.getInvolvedLink "Get involved!">
|
||||
<!ENTITY contribute.end "">
|
||||
<!ENTITY helpus.start "Want to help? ">
|
||||
<!-- LOCALIZATION NOTE (helpus.donateLink): This is a link title that links to https://sendto.mozilla.org/page/contribute/Give-Now?source=mozillaorg_default_footer&ref=firefox_about&utm_campaign=firefox_about&utm_source=firefox&utm_medium=referral&utm_content=20140929_FireFoxAbout. -->
|
||||
<!ENTITY helpus.donateLink "Make a donation">
|
||||
<!ENTITY helpus.middle " or ">
|
||||
<!-- LOCALIZATION NOTE (helpus.getInvolvedLink): This is a link title that links to http://www.mozilla.org/contribute/. -->
|
||||
<!ENTITY helpus.getInvolvedLink "get involved!">
|
||||
<!ENTITY helpus.end "">
|
||||
|
||||
<!-- LOCALIZATION NOTE (bottomLinks.license): This is a link title that links to about:license. -->
|
||||
<!ENTITY bottomLinks.license "Licensing Information">
|
||||
|
@ -97,7 +97,9 @@ quit-button.tooltiptext.linux2 = Quit %1$S (%2$S)
|
||||
# %2$S is the keyboard shortcut
|
||||
quit-button.tooltiptext.mac = Quit %1$S (%2$S)
|
||||
|
||||
loop-call-button2.label = Start a conversation
|
||||
# LOCALIZATION NOTE(loop-call-button2.label2): This is a brand name, request
|
||||
# approval before you change it.
|
||||
loop-call-button3.label = Hello
|
||||
loop-call-button2.tooltiptext = Start a conversation
|
||||
|
||||
social-share-button.label = Share This Page
|
||||
|
@ -19,7 +19,8 @@ this.E10SUtils = {
|
||||
if (aURL.startsWith("about:") &&
|
||||
aURL.toLowerCase() != "about:home" &&
|
||||
aURL.toLowerCase() != "about:blank" &&
|
||||
!aURL.toLowerCase().startsWith("about:neterror")) {
|
||||
!aURL.toLowerCase().startsWith("about:neterror") &&
|
||||
!aURL.toLowerCase().startsWith("about:certerror")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ XPCOMUtils.defineLazyModuleGetter(this, "BrowserUITelemetry",
|
||||
|
||||
|
||||
const UITOUR_PERMISSION = "uitour";
|
||||
const PREF_TEST_WHITELIST = "browser.uitour.testingOrigins";
|
||||
const PREF_SEENPAGEIDS = "browser.uitour.seenPageIDs";
|
||||
const MAX_BUTTONS = 4;
|
||||
|
||||
@ -620,6 +621,25 @@ this.UITour = {
|
||||
.wrappedJSObject;
|
||||
},
|
||||
|
||||
isTestingOrigin: function(aURI) {
|
||||
if (Services.prefs.getPrefType(PREF_TEST_WHITELIST) != Services.prefs.PREF_STRING) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Add any testing origins (comma-seperated) to the whitelist for the session.
|
||||
for (let origin of Services.prefs.getCharPref(PREF_TEST_WHITELIST).split(",")) {
|
||||
try {
|
||||
let testingURI = Services.io.newURI(origin, null, null);
|
||||
if (aURI.prePath == testingURI.prePath) {
|
||||
return true;
|
||||
}
|
||||
} catch (ex) {
|
||||
Cu.reportError(ex);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
ensureTrustedOrigin: function(aDocument) {
|
||||
if (aDocument.defaultView.top != aDocument.defaultView)
|
||||
return false;
|
||||
@ -633,7 +653,10 @@ this.UITour = {
|
||||
return false;
|
||||
|
||||
let permission = Services.perms.testPermission(uri, UITOUR_PERMISSION);
|
||||
return permission == Services.perms.ALLOW_ACTION;
|
||||
if (permission == Services.perms.ALLOW_ACTION)
|
||||
return true;
|
||||
|
||||
return this.isTestingOrigin(uri);
|
||||
},
|
||||
|
||||
isSafeScheme: function(aURI) {
|
||||
|
@ -25,6 +25,23 @@ let tests = [
|
||||
done();
|
||||
}, "http://mochi.test:8888/");
|
||||
},
|
||||
function test_testing_host(done) {
|
||||
// Add two testing origins intentionally surrounded by whitespace to be ignored.
|
||||
Services.prefs.setCharPref("browser.uitour.testingOrigins",
|
||||
"https://test1.example.com, https://test2.example.com:443 ");
|
||||
|
||||
registerCleanupFunction(() => {
|
||||
Services.prefs.clearUserPref("browser.uitour.testingOrigins");
|
||||
});
|
||||
function callback(result) {
|
||||
ok(result, "Callback should be called on a testing origin");
|
||||
done();
|
||||
}
|
||||
|
||||
loadUITourTestPage(function() {
|
||||
gContentAPI.getConfiguration("appinfo", callback);
|
||||
}, "https://test2.example.com/");
|
||||
},
|
||||
function test_unsecure_host(done) {
|
||||
loadUITourTestPage(function() {
|
||||
let bookmarksMenu = document.getElementById("bookmarks-menu-button");
|
||||
|
5
browser/themes/linux/devtools/performance.css
Normal file
5
browser/themes/linux/devtools/performance.css
Normal file
@ -0,0 +1,5 @@
|
||||
/* 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/. */
|
||||
|
||||
%include ../../shared/devtools/performance.inc.css
|
@ -252,6 +252,7 @@ browser.jar:
|
||||
skin/classic/browser/devtools/eyedropper.css (../shared/devtools/eyedropper.css)
|
||||
* skin/classic/browser/devtools/netmonitor.css (devtools/netmonitor.css)
|
||||
* skin/classic/browser/devtools/profiler.css (devtools/profiler.css)
|
||||
* skin/classic/browser/devtools/performance.css (devtools/performance.css)
|
||||
* skin/classic/browser/devtools/timeline.css (devtools/timeline.css)
|
||||
* skin/classic/browser/devtools/scratchpad.css (devtools/scratchpad.css)
|
||||
* skin/classic/browser/devtools/shadereditor.css (devtools/shadereditor.css)
|
||||
|
6
browser/themes/osx/devtools/performance.css
Normal file
6
browser/themes/osx/devtools/performance.css
Normal file
@ -0,0 +1,6 @@
|
||||
/* 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/. */
|
||||
|
||||
%include ../shared.inc
|
||||
%include ../../shared/devtools/performance.inc.css
|
@ -382,6 +382,7 @@ browser.jar:
|
||||
skin/classic/browser/devtools/eyedropper.css (../shared/devtools/eyedropper.css)
|
||||
* skin/classic/browser/devtools/netmonitor.css (devtools/netmonitor.css)
|
||||
* skin/classic/browser/devtools/profiler.css (devtools/profiler.css)
|
||||
* skin/classic/browser/devtools/performance.css (devtools/performance.css)
|
||||
* skin/classic/browser/devtools/timeline.css (devtools/timeline.css)
|
||||
* skin/classic/browser/devtools/scratchpad.css (devtools/scratchpad.css)
|
||||
* skin/classic/browser/devtools/shadereditor.css (devtools/shadereditor.css)
|
||||
|
34
browser/themes/shared/devtools/performance.inc.css
Normal file
34
browser/themes/shared/devtools/performance.inc.css
Normal file
@ -0,0 +1,34 @@
|
||||
/* vim:set ts=2 sw=2 sts=2 et: */
|
||||
/* 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/. */
|
||||
|
||||
/* Toolbar */
|
||||
|
||||
#performance-toolbar {
|
||||
-moz-border-end: 1px solid;
|
||||
}
|
||||
|
||||
.theme-dark #performance-toolbar > tabs,
|
||||
.theme-dark #performance-toolbar {
|
||||
-moz-border-end-color: #000; /* Splitters */
|
||||
}
|
||||
|
||||
.theme-light #performance-toolbar > tabs,
|
||||
.theme-light #performance-toolbar {
|
||||
-moz-border-end-color: #aaa; /* Splitters */
|
||||
}
|
||||
|
||||
/* Overview Panel */
|
||||
|
||||
#record-button {
|
||||
list-style-image: url(profiler-stopwatch.svg);
|
||||
}
|
||||
|
||||
#record-button[checked] {
|
||||
list-style-image: url(profiler-stopwatch-checked.svg);
|
||||
}
|
||||
|
||||
#record-button[locked] {
|
||||
pointer-events: none;
|
||||
}
|
5
browser/themes/windows/devtools/performance.css
Normal file
5
browser/themes/windows/devtools/performance.css
Normal file
@ -0,0 +1,5 @@
|
||||
/* 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/. */
|
||||
|
||||
%include ../../shared/devtools/performance.inc.css
|
@ -289,6 +289,7 @@ browser.jar:
|
||||
* skin/classic/browser/devtools/debugger.css (devtools/debugger.css)
|
||||
* skin/classic/browser/devtools/netmonitor.css (devtools/netmonitor.css)
|
||||
* skin/classic/browser/devtools/profiler.css (devtools/profiler.css)
|
||||
* skin/classic/browser/devtools/performance.css (devtools/performance.css)
|
||||
* skin/classic/browser/devtools/timeline.css (devtools/timeline.css)
|
||||
* skin/classic/browser/devtools/scratchpad.css (devtools/scratchpad.css)
|
||||
* skin/classic/browser/devtools/shadereditor.css (devtools/shadereditor.css)
|
||||
|
13
configure.in
13
configure.in
@ -7710,6 +7710,19 @@ if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
|
||||
AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
|
||||
fi
|
||||
|
||||
dnl =========================================================
|
||||
dnl Enable support for revamped devtools Performance Tools
|
||||
dnl =========================================================
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(devtools-perf,
|
||||
[ --enable-devtools-perf Set compile flags necessary for compiling devtools perftools],
|
||||
MOZ_DEVTOOLS_PERFTOOLS=1,
|
||||
MOZ_DEVTOOLS_PERFTOOLS= )
|
||||
if test -n "$MOZ_DEVTOOLS_PERFTOOLS"; then
|
||||
AC_DEFINE(MOZ_DEVTOOLS_PERFTOOLS)
|
||||
fi
|
||||
AC_SUBST(MOZ_DEVTOOLS_PERFTOOLS)
|
||||
|
||||
dnl =========================================================
|
||||
dnl Omnijar packaging (bug 552121)
|
||||
dnl =========================================================
|
||||
|
@ -21,7 +21,9 @@
|
||||
#include "mozilla/WeakPtr.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "GeckoProfiler.h"
|
||||
#ifdef MOZ_ENABLE_PROFILER_SPS
|
||||
#include "ProfilerMarkers.h"
|
||||
#endif
|
||||
|
||||
// Helper Classes
|
||||
#include "nsCOMPtr.h"
|
||||
@ -951,6 +953,8 @@ private:
|
||||
|
||||
// Storing profile timeline markers and if/when recording started
|
||||
mozilla::TimeStamp mProfileTimelineStartTime;
|
||||
|
||||
#ifdef MOZ_ENABLE_PROFILER_SPS
|
||||
struct InternalProfileTimelineMarker
|
||||
{
|
||||
InternalProfileTimelineMarker(const char* aName,
|
||||
@ -971,6 +975,7 @@ private:
|
||||
float mTime;
|
||||
};
|
||||
nsTArray<InternalProfileTimelineMarker*> mProfileTimelineMarkers;
|
||||
#endif
|
||||
|
||||
// Get the elapsed time (in millis) since the profile timeline recording
|
||||
// started
|
||||
|
@ -1215,16 +1215,18 @@ CreateDependentString(MacroAssembler &masm, const JSAtomState &names,
|
||||
|
||||
Label notInline;
|
||||
|
||||
int32_t maxInlineLength =
|
||||
latin1 ? JSFatInlineString::MAX_LENGTH_LATIN1 : JSFatInlineString::MAX_LENGTH_TWO_BYTE;
|
||||
int32_t maxInlineLength = latin1
|
||||
? (int32_t) JSFatInlineString::MAX_LENGTH_LATIN1
|
||||
: (int32_t) JSFatInlineString::MAX_LENGTH_TWO_BYTE;
|
||||
masm.branch32(Assembler::Above, temp1, Imm32(maxInlineLength), ¬Inline);
|
||||
|
||||
{
|
||||
// Make a normal or fat inline string.
|
||||
Label stringAllocated, fatInline;
|
||||
|
||||
int32_t maxNormalInlineLength =
|
||||
latin1 ? JSInlineString::MAX_LENGTH_LATIN1 : JSInlineString::MAX_LENGTH_TWO_BYTE;
|
||||
int32_t maxNormalInlineLength = latin1
|
||||
? (int32_t) JSInlineString::MAX_LENGTH_LATIN1
|
||||
: (int32_t) JSInlineString::MAX_LENGTH_TWO_BYTE;
|
||||
masm.branch32(Assembler::Above, temp1, Imm32(maxNormalInlineLength), &fatInline);
|
||||
|
||||
int32_t normalFlags = (latin1 ? JSString::LATIN1_CHARS_BIT : 0) | JSString::INIT_INLINE_FLAGS;
|
||||
|
@ -37,7 +37,7 @@ import android.util.Log;
|
||||
class ChromeCast implements GeckoMediaPlayer {
|
||||
private static final boolean SHOW_DEBUG = false;
|
||||
|
||||
static final String MIRROR_RECIEVER_APP_ID = "5F72F863";
|
||||
static final String MIRROR_RECEIVER_APP_ID = "5F72F863";
|
||||
|
||||
private final Context context;
|
||||
private final RouteInfo route;
|
||||
@ -147,7 +147,7 @@ class ChromeCast implements GeckoMediaPlayer {
|
||||
|
||||
this.context = context;
|
||||
this.route = route;
|
||||
this.canMirror = route.supportsControlCategory(CastMediaControlIntent.categoryForCast(MIRROR_RECIEVER_APP_ID));
|
||||
this.canMirror = route.supportsControlCategory(CastMediaControlIntent.categoryForCast(MIRROR_RECEIVER_APP_ID));
|
||||
}
|
||||
|
||||
// This dumps everything we can find about the device into JSON. This will hopefully make it
|
||||
@ -453,7 +453,7 @@ class ChromeCast implements GeckoMediaPlayer {
|
||||
|
||||
// Launch the media player app and launch this url once its loaded
|
||||
try {
|
||||
Cast.CastApi.launchApplication(apiClient, MIRROR_RECIEVER_APP_ID, true)
|
||||
Cast.CastApi.launchApplication(apiClient, MIRROR_RECEIVER_APP_ID, true)
|
||||
.setResultCallback(new MirrorCallback(callback));
|
||||
} catch (Exception e) {
|
||||
debug("Failed to launch application", e);
|
||||
|
@ -120,7 +120,7 @@ public class ContactService implements GeckoEventListener {
|
||||
@Override
|
||||
public void handleMessage(final String event, final JSONObject message) {
|
||||
// If the account chooser dialog needs shown to the user, the message handling becomes
|
||||
// asychronous so it needs posted to a background thread from the UI thread when the
|
||||
// asynchronous so it needs posted to a background thread from the UI thread when the
|
||||
// account chooser dialog is dismissed by the user.
|
||||
Runnable handleMessage = new Runnable() {
|
||||
@Override
|
||||
@ -1024,7 +1024,7 @@ public class ContactService implements GeckoEventListener {
|
||||
// row from the contacts data table that belongs to the contact, and insert the new
|
||||
// fields. But then why not just delete all the data from the data in one go and
|
||||
// insert the new data in another? Because if all the data relating to a contact is
|
||||
// deleted, Android will "conviently" remove the ID making it impossible to insert data
|
||||
// deleted, Android will "conveniently" remove the ID making it impossible to insert data
|
||||
// under the old ID. To work around this, we put a Mozilla contact flag in the database
|
||||
|
||||
ContentProviderOperation removeOptions = ContentProviderOperation.newDelete(Data.CONTENT_URI)
|
||||
@ -1968,9 +1968,9 @@ public class ContactService implements GeckoEventListener {
|
||||
mEmailTypesMap.put("work", Email.TYPE_WORK);
|
||||
}
|
||||
|
||||
private int getWebsiteType(String webisteType) {
|
||||
private int getWebsiteType(String websiteType) {
|
||||
initWebsiteTypesMap();
|
||||
Integer type = mWebsiteTypesMap.get(webisteType.toLowerCase());
|
||||
Integer type = mWebsiteTypesMap.get(websiteType.toLowerCase());
|
||||
return type != null ? type : Website.TYPE_CUSTOM;
|
||||
}
|
||||
|
||||
|
@ -184,7 +184,7 @@ public class DoorHangerPopup extends ArrowPopup
|
||||
mDoorHangers.add(newDoorHanger);
|
||||
mContent.addView(newDoorHanger);
|
||||
|
||||
// Only update the popup if we're adding a notifcation to the selected tab
|
||||
// Only update the popup if we're adding a notification to the selected tab
|
||||
if (tabId == Tabs.getInstance().getSelectedTab().getId())
|
||||
updatePopup();
|
||||
}
|
||||
|
@ -54,10 +54,10 @@ public class EditBookmarkDialog {
|
||||
|
||||
/**
|
||||
* This text watcher to enable or disable the OK button if the dialog contains
|
||||
* valid information. This class is overridden to do data checking diffferent fields.
|
||||
* valid information. This class is overridden to do data checking on different fields.
|
||||
* By itself, it always enables the button.
|
||||
*
|
||||
* Callers can also assing a paired partner to the TextWatcher, and callers will check
|
||||
* Callers can also assign a paired partner to the TextWatcher, and callers will check
|
||||
* that both are enabled before enabling the ok button.
|
||||
*/
|
||||
private class EditBookmarkTextWatcher implements TextWatcher {
|
||||
|
@ -100,7 +100,7 @@ public class FilePicker implements GeckoEventListener {
|
||||
private List<Intent> getIntentsForFilePicker(final String mimeType,
|
||||
final FilePickerResultHandler fileHandler) {
|
||||
// The base intent to use for the file picker. Even if this is an implicit intent, Android will
|
||||
// still show a list of Activitiees that match this action/type.
|
||||
// still show a list of Activities that match this action/type.
|
||||
Intent baseIntent;
|
||||
// A HashMap of Activities the base intent will show in the chooser. This is used
|
||||
// to filter activities from other intents so that we don't show duplicates.
|
||||
|
@ -84,7 +84,7 @@ public class GeckoBatteryManager extends BroadcastReceiver {
|
||||
// NOTE: it might not be common (in 2012) but technically, Android can run
|
||||
// on a device that has no battery so we want to make sure it's not the case
|
||||
// before bothering checking for battery state.
|
||||
// However, the Galaxy Nexus phone advertizes itself as battery-less which
|
||||
// However, the Galaxy Nexus phone advertises itself as battery-less which
|
||||
// force us to special-case the logic.
|
||||
// See the Google bug: https://code.google.com/p/android/issues/detail?id=22035
|
||||
if (intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, false) ||
|
||||
|
@ -258,9 +258,9 @@ final class GeckoEditable
|
||||
KeyCharacterMap.VIRTUAL_KEYBOARD);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// KeyCharacterMap.UnavailableExcepton is not found on Gingerbread;
|
||||
// KeyCharacterMap.UnavailableException is not found on Gingerbread;
|
||||
// besides, it seems like HC and ICS will throw something other than
|
||||
// KeyCharacterMap.UnavailableExcepton; so use a generic Exception here
|
||||
// KeyCharacterMap.UnavailableException; so use a generic Exception here
|
||||
return null;
|
||||
}
|
||||
KeyEvent [] keyEvents = mKeyMap.getEvents(cs.toString().toCharArray());
|
||||
|
@ -290,7 +290,7 @@ public class GeckoScreenOrientation {
|
||||
}
|
||||
|
||||
/*
|
||||
* Retrieve the scren orientation from a string.
|
||||
* Retrieve the screen orientation from a string.
|
||||
*
|
||||
* @param aStr
|
||||
* String hopefully containing a screen orientation name.
|
||||
|
@ -470,7 +470,7 @@ public class GeckoSmsManager
|
||||
envelope.setMessageId(id);
|
||||
envelope.setMessageTimestamp(timestamp);
|
||||
|
||||
Log.i("GeckoSmsManager", "SMS sending was successfull!");
|
||||
Log.i("GeckoSmsManager", "SMS sending was successful!");
|
||||
} else {
|
||||
notifySmsDelivery(envelope.getMessageId(),
|
||||
kDeliveryStatusSuccess,
|
||||
|
@ -661,10 +661,10 @@ public class GeckoView extends LayerView
|
||||
* A Browser has finished loading content from the network.
|
||||
* @param view The GeckoView that initiated the callback.
|
||||
* @param browser The Browser that was loading the content.
|
||||
* @param success Whether the page loaded successfully or an error occured.
|
||||
* @param success Whether the page loaded successfully or an error occurred.
|
||||
*/
|
||||
public void onPageStop(GeckoView view, GeckoView.Browser browser, boolean success);
|
||||
|
||||
|
||||
/**
|
||||
* A Browser is displaying content. This page could have been loaded via
|
||||
* network or from the session history.
|
||||
@ -672,7 +672,7 @@ public class GeckoView extends LayerView
|
||||
* @param browser The Browser that is showing the content.
|
||||
*/
|
||||
public void onPageShow(GeckoView view, GeckoView.Browser browser);
|
||||
|
||||
|
||||
/**
|
||||
* A page title was discovered in the content or updated after the content
|
||||
* loaded.
|
||||
@ -681,7 +681,7 @@ public class GeckoView extends LayerView
|
||||
* @param title The title sent from the content.
|
||||
*/
|
||||
public void onReceivedTitle(GeckoView view, GeckoView.Browser browser, String title);
|
||||
|
||||
|
||||
/**
|
||||
* A link element was discovered in the content or updated after the content
|
||||
* loaded that specifies a favicon.
|
||||
|
@ -19,7 +19,7 @@ public class GeckoViewContent implements GeckoView.ContentDelegate {
|
||||
* A Browser has finished loading content from the network.
|
||||
* @param view The GeckoView that initiated the callback.
|
||||
* @param browser The Browser that was loading the content.
|
||||
* @param success Whether the page loaded successfully or an error occured.
|
||||
* @param success Whether the page loaded successfully or an error occurred.
|
||||
*/
|
||||
@Override
|
||||
public void onPageStop(GeckoView view, GeckoView.Browser browser, boolean success) {}
|
||||
|
@ -39,7 +39,7 @@ import java.util.Map;
|
||||
* addon code can be compiled against the android.jar provided in the Android
|
||||
* SDK, rather than having to be compiled against Fennec source code.
|
||||
*
|
||||
* The Handler.Callback instances provided (as described above) are inovked with
|
||||
* The Handler.Callback instances provided (as described above) are invoked with
|
||||
* Message objects when the corresponding events are dispatched. The Bundle
|
||||
* object attached to the Message will contain the "primitive" values from the
|
||||
* JSON of the event. ("primitive" includes bool/int/long/double/String). If
|
||||
|
@ -240,7 +240,7 @@ class MediaPlayerManager implements NativeEventListener,
|
||||
MediaRouteSelector selectorBuilder = new MediaRouteSelector.Builder()
|
||||
.addControlCategory(MediaControlIntent.CATEGORY_LIVE_VIDEO)
|
||||
.addControlCategory(MediaControlIntent.CATEGORY_REMOTE_PLAYBACK)
|
||||
.addControlCategory(CastMediaControlIntent.categoryForCast(ChromeCast.MIRROR_RECIEVER_APP_ID))
|
||||
.addControlCategory(CastMediaControlIntent.categoryForCast(ChromeCast.MIRROR_RECEIVER_APP_ID))
|
||||
.build();
|
||||
mediaRouter.addCallback(selectorBuilder, callback, MediaRouter.CALLBACK_FLAG_REQUEST_DISCOVERY);
|
||||
}
|
||||
|
@ -224,7 +224,7 @@ public final class SharedPreferencesHelper
|
||||
msg.put("profileName", this.profileName);
|
||||
msg.put("key", key);
|
||||
|
||||
// Truly, this is awful, but the API impedence is strong: there
|
||||
// Truly, this is awful, but the API impedance is strong: there
|
||||
// is no way to get a single untyped value from a
|
||||
// SharedPreferences instance.
|
||||
msg.put("value", sharedPreferences.getAll().get(key));
|
||||
|
@ -52,8 +52,8 @@ class TextSelection extends Layer implements GeckoEventListener {
|
||||
|
||||
private TextSelectionActionModeCallback mCallback;
|
||||
|
||||
// These timers are used to avoid flicker caused by selection handles showing/hiding quickly. For isntance
|
||||
// when moving between single handle caret mode and two handle selection mode.
|
||||
// These timers are used to avoid flicker caused by selection handles showing/hiding quickly.
|
||||
// For instance when moving between single handle caret mode and two handle selection mode.
|
||||
private final Timer mActionModeTimer = new Timer("actionMode");
|
||||
private class ActionModeTimerTask extends TimerTask {
|
||||
@Override
|
||||
|
@ -43,7 +43,7 @@ public class Rotate3DAnimation extends Animation {
|
||||
/**
|
||||
* Creates a new 3D rotation on the Y axis. The rotation is defined by its
|
||||
* start angle and its end angle. Both angles are in degrees. The rotation
|
||||
* is performed around a center point on the 2D space, definied by a pair
|
||||
* is performed around a center point on the 2D space, defined by a pair
|
||||
* of X and Y coordinates, called centerX and centerY. When the animation
|
||||
* starts, a translation on the Z axis (depth) is performed. The length
|
||||
* of the translation can be specified, as well as whether the translation
|
||||
|
@ -113,7 +113,7 @@ public class FxAccountUtils {
|
||||
try {
|
||||
return NativeCrypto.pbkdf2SHA256(passwordUTF8, S, NUMBER_OF_QUICK_STRETCH_ROUNDS, 32);
|
||||
} catch (final LinkageError e) {
|
||||
// This will throw UnsatisifiedLinkError (missing mozglue) the first time it is called, and
|
||||
// This will throw UnsatisfiedLinkError (missing mozglue) the first time it is called, and
|
||||
// ClassNotDefFoundError, for the uninitialized NativeCrypto class, each subsequent time this
|
||||
// is called; LinkageError is their common ancestor.
|
||||
Logger.warn(LOG_TAG, "Got throwable stretching password using native pbkdf2SHA256 " +
|
||||
|
@ -108,7 +108,7 @@ public class HealthReportBroadcastService extends BackgroundService {
|
||||
|
||||
// The same intent can be handled by multiple methods so do not short-circuit evaluate.
|
||||
boolean handled = attemptHandleIntentForUpload(intent);
|
||||
handled = attemptHandleIntentForPrune(intent) ? true : handled;
|
||||
handled = attemptHandleIntentForPrune(intent) || handled;
|
||||
|
||||
if (!handled) {
|
||||
Logger.warn(LOG_TAG, "Unhandled intent with action " + intent.getAction() + ".");
|
||||
|
@ -202,7 +202,7 @@ public interface HealthReportStorage {
|
||||
* version.
|
||||
*
|
||||
* @param measurement
|
||||
* a measurement name, such as "org.mozila.appInfo.appInfo".
|
||||
* a measurement name, such as "org.mozilla.appInfo.appInfo".
|
||||
* @param version
|
||||
* a version number, such as '3'.
|
||||
* @param fields
|
||||
|
@ -41,7 +41,7 @@ public class PrunePolicy {
|
||||
try {
|
||||
try {
|
||||
boolean pruned = attemptPruneBySize(time);
|
||||
pruned = attemptExpiration(time) ? true : pruned;
|
||||
pruned = attemptExpiration(time) || pruned;
|
||||
// We only need to cleanup after a large pruning.
|
||||
if (pruned) {
|
||||
attemptStorageCleanup(time);
|
||||
|
@ -305,7 +305,7 @@ final class BrowserDatabaseHelper extends SQLiteOpenHelper {
|
||||
// History with and without bookmark.
|
||||
" SELECT " + qualifyColumn(TABLE_BOOKMARKS, Bookmarks._ID) + " AS " + Combined.BOOKMARK_ID + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.URL) + " AS " + Combined.URL + ", " +
|
||||
// Prioritze bookmark titles over history titles, since the user may have
|
||||
// Prioritize bookmark titles over history titles, since the user may have
|
||||
// customized the title for a bookmark.
|
||||
"COALESCE(" + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.TITLE) + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.TITLE) +")" + " AS " + Combined.TITLE + ", " +
|
||||
@ -360,7 +360,7 @@ final class BrowserDatabaseHelper extends SQLiteOpenHelper {
|
||||
// History with and without bookmark.
|
||||
" SELECT " + qualifyColumn(TABLE_BOOKMARKS, Bookmarks._ID) + " AS " + Combined.BOOKMARK_ID + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.URL) + " AS " + Combined.URL + ", " +
|
||||
// Prioritze bookmark titles over history titles, since the user may have
|
||||
// Prioritize bookmark titles over history titles, since the user may have
|
||||
// customized the title for a bookmark.
|
||||
"COALESCE(" + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.TITLE) + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.TITLE) +")" + " AS " + Combined.TITLE + ", " +
|
||||
@ -419,7 +419,7 @@ final class BrowserDatabaseHelper extends SQLiteOpenHelper {
|
||||
" SELECT " + "CASE " + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.IS_DELETED) + " WHEN 0 THEN " +
|
||||
qualifyColumn(TABLE_BOOKMARKS, Bookmarks._ID) + " ELSE NULL END AS " + Combined.BOOKMARK_ID + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.URL) + " AS " + Combined.URL + ", " +
|
||||
// Prioritze bookmark titles over history titles, since the user may have
|
||||
// Prioritize bookmark titles over history titles, since the user may have
|
||||
// customized the title for a bookmark.
|
||||
"COALESCE(" + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.TITLE) + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.TITLE) +")" + " AS " + Combined.TITLE + ", " +
|
||||
@ -478,7 +478,7 @@ final class BrowserDatabaseHelper extends SQLiteOpenHelper {
|
||||
" SELECT " + "CASE " + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.IS_DELETED) + " WHEN 0 THEN " +
|
||||
qualifyColumn(TABLE_BOOKMARKS, Bookmarks._ID) + " ELSE NULL END AS " + Combined.BOOKMARK_ID + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.URL) + " AS " + Combined.URL + ", " +
|
||||
// Prioritze bookmark titles over history titles, since the user may have
|
||||
// Prioritize bookmark titles over history titles, since the user may have
|
||||
// customized the title for a bookmark.
|
||||
"COALESCE(" + qualifyColumn(TABLE_BOOKMARKS, Bookmarks.TITLE) + ", " +
|
||||
qualifyColumn(TABLE_HISTORY, History.TITLE) +")" + " AS " + Combined.TITLE + ", " +
|
||||
|
@ -66,7 +66,7 @@ public class TopSitesCursorWrapper implements Cursor {
|
||||
// The cursor for the pinned sites query
|
||||
private final Cursor pinnedCursor;
|
||||
|
||||
// The cursor for the sugested sites query
|
||||
// The cursor for the suggested sites query
|
||||
private final Cursor suggestedCursor;
|
||||
|
||||
// Associates pinned sites and their respective positions
|
||||
|
@ -22,7 +22,7 @@ The question, then, is when to do so.
|
||||
Locale events
|
||||
=============
|
||||
|
||||
One might imagine that we need only set the locale when our Application is instantiated, and when a new locale is set. Alas, that's not the case: whenever there's a configuration change (*e.g.*, screen rotation), when a new activity is started, and at other apparently random times, Android will supply our activities with a configuration that's been reset to the sytem locale.
|
||||
One might imagine that we need only set the locale when our Application is instantiated, and when a new locale is set. Alas, that's not the case: whenever there's a configuration change (*e.g.*, screen rotation), when a new activity is started, and at other apparently random times, Android will supply our activities with a configuration that's been reset to the system locale.
|
||||
|
||||
For this reason, each starting activity must ask ``BrowserLocaleManager`` to fix its locale.
|
||||
|
||||
|
@ -141,7 +141,7 @@ public class FxAccountConfirmAccountActivity extends FxAccountAbstractActivity i
|
||||
case None:
|
||||
default:
|
||||
// We're not in the right place! Redirect to status.
|
||||
Logger.warn(LOG_TAG, "No need to verifiy Firefox Account that needs action " + neededAction.toString() +
|
||||
Logger.warn(LOG_TAG, "No need to verify Firefox Account that needs action " + neededAction.toString() +
|
||||
" (in state " + state.getStateLabel() + ").");
|
||||
setResult(RESULT_CANCELED);
|
||||
this.redirectToActivity(FxAccountStatusActivity.class);
|
||||
|
@ -676,7 +676,7 @@ public class FxAccountStatusFragment
|
||||
}
|
||||
|
||||
/**
|
||||
* Iterate through debug buttons, adding a special deubg preference click
|
||||
* Iterate through debug buttons, adding a special debug preference click
|
||||
* listener to each of them.
|
||||
*/
|
||||
protected void connectDebugButtons() {
|
||||
|
@ -96,7 +96,7 @@ public class AndroidFxAccount {
|
||||
* {@link AccountPickler#pickle}, and is identical to calling it directly.
|
||||
* <p>
|
||||
* Note that pickling is different from bundling, which involves operations on a
|
||||
* {@link android.os.Bundle Bundle} object of miscellaenous data associated with the account.
|
||||
* {@link android.os.Bundle Bundle} object of miscellaneous data associated with the account.
|
||||
* See {@link #persistBundle} and {@link #unbundle} for more.
|
||||
*/
|
||||
public void pickle(final String filename) {
|
||||
|
@ -184,8 +184,8 @@ public class GLController {
|
||||
|
||||
// Only try to create the compositor if we have a valid surface and gecko is up. When these
|
||||
// two conditions are satisfied, we can be relatively sure that the compositor creation will
|
||||
// happen without needing to block anyhwere. Do it with a sync gecko event so that the
|
||||
// android doesn't have a chance to destroy our surface in between.
|
||||
// happen without needing to block anywhere. Do it with a synchronous Gecko event so that the
|
||||
// Android doesn't have a chance to destroy our surface in between.
|
||||
if (GeckoThread.checkLaunchState(GeckoThread.LaunchState.GeckoRunning)) {
|
||||
GeckoAppShell.sendEventToGeckoSync(GeckoEvent.createCompositorCreateEvent(mWidth, mHeight));
|
||||
}
|
||||
@ -208,7 +208,7 @@ public class GLController {
|
||||
|
||||
// This join() should not be necessary, but makes this code a bit easier to think about.
|
||||
// The EGLPreloadingThread should long be done by now, and even if it's not,
|
||||
// it shouldn't be a problem to be initalizing EGL from two different threads.
|
||||
// it shouldn't be a problem to be initializing EGL from two different threads.
|
||||
// Still, having this join() here means that we don't have to wonder about what
|
||||
// kind of caveats might exist with EGL initialization reentrancy on various drivers.
|
||||
try {
|
||||
|
@ -81,8 +81,8 @@ class GeckoLayerClient implements LayerView.Listener, PanZoomTarget
|
||||
* Specifically:
|
||||
* 1) reading mViewportMetrics from any thread is fine without synchronization
|
||||
* 2) writing to mViewportMetrics requires synchronizing on the layer controller object
|
||||
* 3) whenver reading multiple fields from mViewportMetrics without synchronization (i.e. in
|
||||
* case 1 above) you should always frist grab a local copy of the reference, and then use
|
||||
* 3) whenever reading multiple fields from mViewportMetrics without synchronization (i.e. in
|
||||
* case 1 above) you should always first grab a local copy of the reference, and then use
|
||||
* that because mViewportMetrics might get reassigned in between reading the different
|
||||
* fields. */
|
||||
private volatile ImmutableViewportMetrics mViewportMetrics;
|
||||
@ -651,7 +651,7 @@ class GeckoLayerClient implements LayerView.Listener, PanZoomTarget
|
||||
* on every frame, it needs to be ultra-fast.
|
||||
* It avoids taking any locks or allocating any objects. We keep around a
|
||||
* mCurrentViewTransform so we don't need to allocate a new ViewTransform
|
||||
* everytime we're called. NOTE: we might be able to return a ImmutableViewportMetrics
|
||||
* every time we're called. NOTE: we might be able to return a ImmutableViewportMetrics
|
||||
* which would avoid the copy into mCurrentViewTransform.
|
||||
*/
|
||||
@WrapElementForJNI(allowMultithread = true)
|
||||
|
@ -396,7 +396,7 @@ class JavaPanZoomController
|
||||
mSubscroller.cancel();
|
||||
if (waitingForTouchListeners && (event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_DOWN) {
|
||||
// this is the first touch point going down, so we enter the pending state
|
||||
// seting the state will kill any animations in progress, possibly leaving
|
||||
// setting the state will kill any animations in progress, possibly leaving
|
||||
// the page in overscroll
|
||||
setState(PanZoomState.WAITING_LISTENERS);
|
||||
}
|
||||
@ -1198,7 +1198,7 @@ class JavaPanZoomController
|
||||
mLastZoomFocus.set(detector.getFocusX(), detector.getFocusY());
|
||||
ImmutableViewportMetrics target = getMetrics().scaleTo(zoomFactor, mLastZoomFocus);
|
||||
|
||||
// If overscroll is diabled, prevent zooming outside the normal document pans.
|
||||
// If overscroll is disabled, prevent zooming outside the normal document pans.
|
||||
if (mX.getOverScrollMode() == View.OVER_SCROLL_NEVER || mY.getOverScrollMode() == View.OVER_SCROLL_NEVER) {
|
||||
target = getValidViewportMetrics(target);
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public class LayerMarginsAnimator {
|
||||
/* The distance that has been scrolled since either the first touch event,
|
||||
* or since the margins were last fully hidden */
|
||||
private final PointF mTouchTravelDistance;
|
||||
/* The ID of the prefs listener for the show-marginss threshold */
|
||||
/* The ID of the prefs listener for the show-margins threshold */
|
||||
private Integer mPrefObserverId;
|
||||
|
||||
public LayerMarginsAnimator(GeckoLayerClient aTarget, LayerView aView) {
|
||||
|
@ -334,7 +334,7 @@ public class BrowserSearch extends HomeFragment
|
||||
public void onActivityCreated(Bundle savedInstanceState) {
|
||||
super.onActivityCreated(savedInstanceState);
|
||||
|
||||
// Intialize the search adapter
|
||||
// Initialize the search adapter
|
||||
mAdapter = new SearchAdapter(getActivity());
|
||||
mList.setAdapter(mAdapter);
|
||||
|
||||
|
@ -1281,7 +1281,7 @@ public final class HomeConfig {
|
||||
|
||||
installed = true;
|
||||
|
||||
// Add an event to the queue if a new panel is sucessfully installed.
|
||||
// Add an event to the queue if a new panel is successfully installed.
|
||||
mEventQueue.add(GeckoEvent.createBroadcastEvent("HomePanels:Installed", panelConfig.getId()));
|
||||
}
|
||||
|
||||
@ -1317,7 +1317,7 @@ public final class HomeConfig {
|
||||
findNewDefault();
|
||||
}
|
||||
|
||||
// Add an event to the queue if a panel is succesfully uninstalled.
|
||||
// Add an event to the queue if a panel is successfully uninstalled.
|
||||
mEventQueue.add(GeckoEvent.createBroadcastEvent("HomePanels:Uninstalled", panelId));
|
||||
|
||||
mHasChanged = true;
|
||||
|
@ -89,7 +89,7 @@ class PanelViewAdapter extends CursorAdapter {
|
||||
}
|
||||
|
||||
private boolean isShowingBack() {
|
||||
return (filterManager != null ? filterManager.canGoBack() : false);
|
||||
return filterManager != null && filterManager.canGoBack();
|
||||
}
|
||||
|
||||
private final Cursor getCursor(int position) {
|
||||
|
@ -235,7 +235,7 @@ public class RemoteTabsExpandableListFragment extends HomeFragment implements Re
|
||||
// we can add/remove it at will.
|
||||
mList.addFooterView(mFooterView, null, true);
|
||||
|
||||
// Intialize adapter
|
||||
// Initialize adapter
|
||||
mAdapter = new RemoteTabsExpandableListAdapter(R.layout.home_remote_tabs_group, R.layout.home_remote_tabs_child, null);
|
||||
mList.setAdapter(mAdapter);
|
||||
|
||||
|
@ -251,7 +251,7 @@ public class TwoLinePageRow extends LinearLayout
|
||||
mFavicon.clearImage();
|
||||
Favicons.cancelFaviconLoad(mLoadFaviconJobId);
|
||||
|
||||
// Displayed RecentTabsPanel urls may refer to pages openned in readermode, so we
|
||||
// Displayed RecentTabsPanel URLs may refer to pages opened in reader mode, so we
|
||||
// remove the about:reader prefix to ensure the Favicon loads properly.
|
||||
final String pageURL = AboutPages.isAboutReader(url) ?
|
||||
ReaderModeUtils.getUrlFromAboutReader(url) : url;
|
||||
|
@ -542,7 +542,7 @@ just addresses the organization to follow, e.g. "This site is run by " -->
|
||||
|
||||
<!ENTITY colon ":">
|
||||
|
||||
<!-- These are only used for accessiblity for the done and overflow-menu buttons in the actionbar.
|
||||
<!-- These are only used for accessibility for the done and overflow-menu buttons in the actionbar.
|
||||
They are never shown to users -->
|
||||
<!ENTITY actionbar_menu "Menu">
|
||||
<!ENTITY actionbar_done "Done">
|
||||
|
@ -8,13 +8,10 @@ package org.mozilla.gecko.overlays.service;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import org.mozilla.gecko.Assert;
|
||||
import org.mozilla.gecko.overlays.OverlayConstants;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.AddBookmark;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.AddToReadingList;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.SendTab;
|
||||
@ -27,7 +24,6 @@ import java.util.Map;
|
||||
|
||||
import static org.mozilla.gecko.overlays.OverlayConstants.ACTION_PREPARE_SHARE;
|
||||
import static org.mozilla.gecko.overlays.OverlayConstants.ACTION_SHARE;
|
||||
import static org.mozilla.gecko.overlays.OverlayConstants.EXTRA_SHARE_METHOD;
|
||||
|
||||
/**
|
||||
* A service to receive requests from overlays to perform actions.
|
||||
@ -120,7 +116,7 @@ public class OverlayActionService extends Service {
|
||||
switch (result) {
|
||||
case SUCCESS:
|
||||
// \o/
|
||||
OverlayToastHelper.showSuccessToast(getApplicationContext(), shareMethod.getSuccessMesssage());
|
||||
OverlayToastHelper.showSuccessToast(getApplicationContext(), shareMethod.getSuccessMessage());
|
||||
break;
|
||||
case TRANSIENT_FAILURE:
|
||||
// An OnClickListener to do this share again.
|
||||
|
@ -25,7 +25,7 @@ public class AddBookmark extends ShareMethod {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSuccessMesssage() {
|
||||
public String getSuccessMessage() {
|
||||
return context.getResources().getString(R.string.bookmark_added);
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,7 @@ public class AddToReadingList extends ShareMethod {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSuccessMesssage() {
|
||||
public String getSuccessMessage() {
|
||||
return context.getResources().getString(R.string.reading_list_added);
|
||||
}
|
||||
|
||||
|
@ -58,7 +58,7 @@ public class SendTab extends ShareMethod {
|
||||
public static final String EXTRA_CLIENT_RECORDS = "RECORDS";
|
||||
|
||||
// The intent we should dispatch when the button for this ShareMethod is tapped, instead of
|
||||
// taking the normal action (eg. "Set up sync!")
|
||||
// taking the normal action (e.g., "Set up Sync!")
|
||||
public static final String OVERRIDE_INTENT = "OVERRIDE_INTENT";
|
||||
|
||||
private Set<String> validGUIDs;
|
||||
@ -289,7 +289,7 @@ public class SendTab extends ShareMethod {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSuccessMesssage() {
|
||||
public String getSuccessMessage() {
|
||||
return context.getResources().getString(R.string.sync_text_tab_sent);
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,7 @@ public abstract class ShareMethod {
|
||||
*/
|
||||
public abstract Result handle(ShareData shareData);
|
||||
|
||||
public abstract String getSuccessMesssage();
|
||||
public abstract String getSuccessMessage();
|
||||
public abstract String getFailureMessage();
|
||||
|
||||
/**
|
||||
|
@ -42,7 +42,7 @@ public class OverlayDialogButton extends LinearLayout {
|
||||
private Drawable disabledIcon;
|
||||
|
||||
// Click listeners used when enabled/disabled. Currently, disabledOnClickListener is set
|
||||
// intenally to something that causes the icon to pulse.
|
||||
// internally to something that causes the icon to pulse.
|
||||
private OnClickListener enabledOnClickListener;
|
||||
private OnClickListener disabledOnClickListener;
|
||||
|
||||
|
@ -4,22 +4,24 @@
|
||||
|
||||
package org.mozilla.gecko.overlays.ui;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.TextView;
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.Assert;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.ParcelableClientRecord;
|
||||
import org.mozilla.gecko.overlays.ui.SendTabList.State;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import static org.mozilla.gecko.overlays.ui.SendTabList.*;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class SendTabDeviceListArrayAdapter extends ArrayAdapter<ParcelableClientRecord> {
|
||||
@SuppressWarnings("unused")
|
||||
private static final String LOGTAG = "GeckoSendTabAdapter";
|
||||
|
||||
private State currentState;
|
||||
|
@ -4,25 +4,25 @@
|
||||
|
||||
package org.mozilla.gecko.overlays.ui;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
import org.mozilla.gecko.Assert;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.ParcelableClientRecord;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static org.mozilla.gecko.overlays.ui.SendTabList.State.LIST;
|
||||
import static org.mozilla.gecko.overlays.ui.SendTabList.State.LOADING;
|
||||
import static org.mozilla.gecko.overlays.ui.SendTabList.State.NONE;
|
||||
import static org.mozilla.gecko.overlays.ui.SendTabList.State.SHOW_DEVICES;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.mozilla.gecko.Assert;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.overlays.service.sharemethods.ParcelableClientRecord;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MotionEvent;
|
||||
import android.widget.ListAdapter;
|
||||
import android.widget.ListView;
|
||||
|
||||
/**
|
||||
* The SendTab button has a few different states depending on the available devices (and whether
|
||||
* we've loaded them yet...)
|
||||
@ -44,7 +44,8 @@ import static org.mozilla.gecko.overlays.ui.SendTabList.State.SHOW_DEVICES;
|
||||
* devices.
|
||||
*/
|
||||
public class SendTabList extends ListView {
|
||||
private static final String LOGTAG = "SendTabList";
|
||||
@SuppressWarnings("unused")
|
||||
private static final String LOGTAG = "GeckoSendTabList";
|
||||
|
||||
// The maximum number of target devices to show in the main list. Further devices are available
|
||||
// from a secondary menu.
|
||||
@ -107,14 +108,12 @@ public class SendTabList extends ListView {
|
||||
}
|
||||
}
|
||||
|
||||
public void setSyncClients(ParcelableClientRecord[] clients) {
|
||||
if (clients == null) {
|
||||
clients = new ParcelableClientRecord[0];
|
||||
}
|
||||
public void setSyncClients(final ParcelableClientRecord[] c) {
|
||||
final ParcelableClientRecord[] clients = c == null ? new ParcelableClientRecord[0] : c;
|
||||
|
||||
int size = clients.length;
|
||||
if (size == 0) {
|
||||
// Just show a button to set up sync (or whatever).
|
||||
// Just show a button to set up Sync (or whatever).
|
||||
switchState(NONE);
|
||||
return;
|
||||
}
|
||||
@ -122,12 +121,12 @@ public class SendTabList extends ListView {
|
||||
clientListAdapter.setClientRecordList(Arrays.asList(clients));
|
||||
|
||||
if (size <= MAXIMUM_INLINE_ELEMENTS) {
|
||||
// Show the list of devices inline.
|
||||
// Show the list of devices in-line.
|
||||
switchState(LIST);
|
||||
return;
|
||||
}
|
||||
|
||||
// Just show a button to launch the list of devices to choose one from.
|
||||
// Just show a button to launch the list of devices to choose from.
|
||||
switchState(SHOW_DEVICES);
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,6 @@ import org.mozilla.gecko.GeckoAppShell;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.widget.GeckoActionProvider;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@ -117,7 +116,7 @@ public class IntentChooserPrompt {
|
||||
|
||||
// Add any intents from the provider.
|
||||
final PackageManager packageManager = context.getPackageManager();
|
||||
final ArrayList<ResolveInfo> infos = provider.getSortedActivites();
|
||||
final ArrayList<ResolveInfo> infos = provider.getSortedActivities();
|
||||
|
||||
for (final ResolveInfo info : infos) {
|
||||
items.add(getItemForResolveInfo(info, packageManager, provider.getIntent()));
|
||||
|
@ -376,9 +376,9 @@ public class Prompt implements OnClickListener, OnCancelListener, OnItemClickLis
|
||||
*
|
||||
* @param builder
|
||||
* the alert builder currently building this dialog.
|
||||
* @return
|
||||
* @return
|
||||
* return true if the inputs were added successfully. This may fail
|
||||
* if the requested input is compatible with this Android verison
|
||||
* if the requested input is compatible with this Android version.
|
||||
*/
|
||||
private boolean addInputs(AlertDialog.Builder builder) {
|
||||
int length = mInputs == null ? 0 : mInputs.length;
|
||||
@ -388,7 +388,7 @@ public class Prompt implements OnClickListener, OnCancelListener, OnItemClickLis
|
||||
|
||||
try {
|
||||
View root = null;
|
||||
boolean scrollable = false; // If any of the innuts are scrollable, we won't wrap this in a ScrollView
|
||||
boolean scrollable = false; // If any of the inputs are scrollable, we won't wrap this in a ScrollView
|
||||
|
||||
if (length == 1) {
|
||||
root = wrapInput(mInputs[0]);
|
||||
|
@ -371,7 +371,7 @@ public class ConfigurationMigrator {
|
||||
upgrade0to1(context, accountManager, account, product, username, serverURL, profile);
|
||||
} else if (currentVersion == 1 && desiredVersion == 0) {
|
||||
Logger.info(LOG_TAG, "Upgrading from version 0 to version 1.");
|
||||
upgrade0to1(context, accountManager, account, product, username, serverURL, profile);
|
||||
downgrade1to0(context, accountManager, account, product, username, serverURL, profile);
|
||||
} else {
|
||||
Logger.warn(LOG_TAG, "Don't know how to migrate from version " + currentVersion + " to " + desiredVersion + ".");
|
||||
}
|
||||
|
@ -114,7 +114,7 @@ public class TabsLayoutItemView extends LinearLayout
|
||||
mThumbnail.setImageDrawable(thumbnail);
|
||||
}
|
||||
|
||||
public void setCloseVisibile(boolean visible) {
|
||||
public void setCloseVisible(boolean visible) {
|
||||
mCloseButton.setVisibility(visible ? View.VISIBLE : View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ class TabsListLayout extends TwoWayView
|
||||
public void onMovedToScrapHeap(View view) {
|
||||
TabsLayoutItemView item = (TabsLayoutItemView) view;
|
||||
item.setThumbnail(null);
|
||||
item.setCloseVisibile(true);
|
||||
item.setCloseVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -397,7 +397,7 @@ class TabsListLayout extends TwoWayView
|
||||
@Override
|
||||
public void onPropertyAnimationEnd() {
|
||||
TabsLayoutItemView tab = (TabsLayoutItemView) view;
|
||||
tab.setCloseVisibile(true);
|
||||
tab.setCloseVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
@ -582,7 +582,7 @@ class TabsListLayout extends TwoWayView
|
||||
mSwiping = true;
|
||||
TabsListLayout.this.requestDisallowInterceptTouchEvent(true);
|
||||
|
||||
((TabsLayoutItemView) mSwipeView).setCloseVisibile(false);
|
||||
((TabsLayoutItemView) mSwipeView).setCloseVisible(false);
|
||||
|
||||
// Stops listview from highlighting the touched item
|
||||
// in the list when swiping.
|
||||
|
@ -17,7 +17,7 @@ abstract class ContentContextMenuTest extends PixelTest {
|
||||
DisplayMetrics dm = new DisplayMetrics();
|
||||
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
|
||||
|
||||
// The web content we are trying to open the context menu for should be positioned at the top of the page, at least 60px heigh and aligned to the middle
|
||||
// The web content we are trying to open the context menu for should be positioned at the top of the page, at least 60px high and aligned to the middle
|
||||
float top = mDriver.getGeckoTop() + 30 * dm.density;
|
||||
float left = mDriver.getGeckoLeft() + mDriver.getGeckoWidth() / 2;
|
||||
|
||||
|
@ -93,7 +93,7 @@ public class GeckoViewComponent extends BaseComponent {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether an InputConnection is avaiable.
|
||||
* Returns whether an InputConnection is available.
|
||||
* An InputConnection is available when text input is being directed to the
|
||||
* GeckoView, and a text field (input, textarea, contentEditable, etc.) is
|
||||
* currently focused inside the GeckoView.
|
||||
|
@ -18,7 +18,7 @@ public final class AssertionHelper {
|
||||
|
||||
private static Assert sAsserter;
|
||||
|
||||
private AssertionHelper() { /* To disallow instantation. */ }
|
||||
private AssertionHelper() { /* To disallow instantiation. */ }
|
||||
|
||||
protected static void init(final UITestContext context) {
|
||||
sAsserter = context.getAsserter();
|
||||
|
@ -332,7 +332,7 @@ public class testBrowserProvider extends ContentProviderTest {
|
||||
} catch (OperationApplicationException ex) {
|
||||
seenException = true;
|
||||
}
|
||||
mAsserter.is(seenException, false, "Batch updating succeded");
|
||||
mAsserter.is(seenException, false, "Batch updating succeeded");
|
||||
mOperations.clear();
|
||||
|
||||
// Delete all visits
|
||||
|
@ -16,7 +16,7 @@ import android.database.Cursor;
|
||||
|
||||
/**
|
||||
* Tests that local tabs are filtered prior to upload.
|
||||
* - create a set of tabs and perists them through TabsAccessor.
|
||||
* - create a set of tabs and persists them through TabsAccessor.
|
||||
* - verifies that tabs are filtered by querying.
|
||||
*/
|
||||
public class testFilterOpenTab extends ContentProviderTest {
|
||||
|
@ -61,7 +61,7 @@ public class testHistory extends AboutHomeTest {
|
||||
mSolo.clickOnView(mFirstChild);
|
||||
|
||||
// The first item here (since it was just visited) should be a "Switch to tab" item
|
||||
// i.e. don't expect a DOMCOntentLoaded event
|
||||
// i.e. don't expect a DOMContentLoaded event
|
||||
verifyPageTitle(StringHelper.ROBOCOP_BLANK_PAGE_03_URL);
|
||||
verifyUrl(url3);
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ public class testShareLink extends AboutHomeTest {
|
||||
waitForText("Share via");
|
||||
}
|
||||
|
||||
// Get list of current avaliable share activities and verify them
|
||||
// Get list of current available share activities and verify them
|
||||
shareOptions = getShareOptions();
|
||||
ArrayList<String> displayedOptions = getShareOptionsList();
|
||||
for (String option:shareOptions) {
|
||||
@ -149,7 +149,7 @@ public class testShareLink extends AboutHomeTest {
|
||||
/**
|
||||
* Adding a wait for the page title to make sure the Awesomebar will be dismissed
|
||||
* Because of Bug 712370 the Awesomescreen will be dismissed when the Share Menu is closed
|
||||
* so there is no need for handeling this different depending on where the share menu was invoced from
|
||||
* so there is no need for handling this different depending on where the share menu was invoked from
|
||||
* TODO: Look more into why the delay is needed here now and it was working before
|
||||
*/
|
||||
waitForText(urlTitle);
|
||||
|
@ -20,12 +20,12 @@ public class testTitleBar extends PixelTest {
|
||||
inputAndLoadUrl(blank1);
|
||||
verifyPageTitle(title);
|
||||
|
||||
// Verifing the full URL is displayed in the URL Bar
|
||||
// Ensure the full URL is displayed in the URL Bar
|
||||
selectOption(StringHelper.SHOW_PAGE_ADDRESS_LABEL);
|
||||
inputAndLoadUrl(blank1);
|
||||
verifyUrl(blank1);
|
||||
|
||||
// Verifing the title is displayed in the URL Bar
|
||||
// Ensure the title is displayed in the URL Bar
|
||||
selectOption(StringHelper.SHOW_PAGE_TITLE_LABEL);
|
||||
inputAndLoadUrl(blank1);
|
||||
verifyPageTitle(title);
|
||||
|
@ -70,7 +70,7 @@ public class testVkbOverlap extends PixelTest {
|
||||
// account for borders and such of the text input which might still be out of view.
|
||||
int newCount = countGreenPixels(painted);
|
||||
|
||||
// if zooming is allowed, the number of green pixels visible should have increased substatially
|
||||
// if zooming is allowed, the number of green pixels visible should have increased substantially
|
||||
if (shouldZoom) {
|
||||
mAsserter.ok(newCount > greenPixelCount * 1.5, "testVkbOverlap", "Found " + newCount + " green pixels after tapping; expected " + greenPixelCount);
|
||||
} else {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user