diff --git a/browser/app/blocklist.xml b/browser/app/blocklist.xml index ed6a2572f776d2c9101cacb9a51f409847bafd08..8293d32821b086b6153492ca18b225604dbcb45e 100644 --- a/browser/app/blocklist.xml +++ b/browser/app/blocklist.xml @@ -1,5 +1,5 @@ <?xml version="1.0"?> -<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1383954148000"> +<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist" lastupdate="1384551293000"> <emItems> <emItem blockID="i454" id="sqlmoz@facebook.com"> <versionRange minVersion="0" maxVersion="*" severity="3"> @@ -37,6 +37,10 @@ <versionRange minVersion="2.4.6.4" maxVersion="2.4.6.4" severity="1"> </versionRange> </emItem> + <emItem blockID="i484" id="plugin@getwebcake.com"> + <versionRange minVersion="0" maxVersion="*" severity="1"> + </versionRange> + </emItem> <emItem blockID="i433" id="{c95a4e8e-816d-4655-8c79-d736da1adb6d}"> <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> @@ -69,8 +73,8 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> - <emItem blockID="i440" id="{2d069a16-fca1-4e81-81ea-5d5086dcbd0c}"> - <versionRange minVersion="0" maxVersion="*" severity="1"> + <emItem blockID="i486" id="xz123@ya456.com"> + <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> <emItem blockID="i392" id="{EEE6C361-6118-11DC-9C72-001320C79847}"> @@ -169,10 +173,12 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> - <emItem blockID="i443" id="{B40794A0-7477-4335-95C5-8CB9BBC5C4A5}"> + <emItem blockID="i481" id="{B40794A0-7477-4335-95C5-8CB9BBC5C4A5}"> <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> <versionRange minVersion="0" maxVersion="*" severity="3"> + </versionRange> + <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> <emItem blockID="i475" id="{B21F5E31-B8E8-41CD-B74C-168A71A10E49}"> @@ -218,6 +224,10 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> + <emItem blockID="i447" id="{B18B1E5C-4D81-11E1-9C00-AFEB4824019B}"> + <versionRange minVersion="0" maxVersion="*" severity="1"> + </versionRange> + </emItem> <emItem blockID="i466" id="afext@anchorfree.com"> <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> @@ -341,8 +351,8 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> - <emItem blockID="i447" id="{B18B1E5C-4D81-11E1-9C00-AFEB4824019B}"> - <versionRange minVersion="0" maxVersion="*" severity="1"> + <emItem blockID="i479" id="mbrsepone@facebook.com"> + <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> <emItem blockID="i256" id="/^[0-9a-f]+@[0-9a-f]+\.info/"> @@ -353,6 +363,10 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> + <emItem blockID="i440" id="{2d069a16-fca1-4e81-81ea-5d5086dcbd0c}"> + <versionRange minVersion="0" maxVersion="*" severity="1"> + </versionRange> + </emItem> <emItem blockID="i396" id="/@(ft|putlocker|clickmovie|m2k|sharerepo|smarter-?)downloader\.com$/"> <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> @@ -367,6 +381,10 @@ </emItem> <emItem blockID="i44" id="sigma@labs.mozilla"> </emItem> + <emItem blockID="i482" id="brasilescapeeight@facebook.com"> + <versionRange minVersion="0" maxVersion="*" severity="3"> + </versionRange> + </emItem> <emItem blockID="i246" id="support@vide1flash2.com"> <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> @@ -403,6 +421,10 @@ </emItem> <emItem blockID="i7" id="{2224e955-00e9-4613-a844-ce69fccaae91}"> </emItem> + <emItem blockID="i485" id="/^brasilescape.*\@facebook\.com$//"> + <versionRange minVersion="0" maxVersion="*" severity="3"> + </versionRange> + </emItem> <emItem blockID="i52" id="ff-ext@youtube"> <versionRange minVersion="0" maxVersion="*"> </versionRange> @@ -411,8 +433,8 @@ <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> - <emItem blockID="i320" id="torntv@torntv.com"> - <versionRange minVersion="0" maxVersion="*" severity="1"> + <emItem blockID="i483" id="brasilescapefive@facebook.com"> + <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> <emItem blockID="i43" id="supportaccessplugin@gmail.com"> @@ -505,8 +527,10 @@ <versionRange minVersion="0" maxVersion="0.81.43" severity="1"> </versionRange> </emItem> - <emItem blockID="i435" id="pluggets@gmail.com"> + <emItem blockID="i480" id="pluggets@gmail.com"> <versionRange minVersion="0" maxVersion="*" severity="3"> + </versionRange> + <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> <emItem blockID="i67" id="youtube2@youtube2.com"> @@ -658,10 +682,8 @@ <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> </emItem> - <emItem blockID="i61" id="youtube@youtube3.com"> - <versionRange minVersion="0" maxVersion="*"> - </versionRange> - <versionRange minVersion="0" maxVersion="*"> + <emItem blockID="i320" id="torntv@torntv.com"> + <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> <emItem blockID="i196" id="info@wxdownloadmanager.com"> @@ -700,6 +722,12 @@ <versionRange minVersion="0" maxVersion="*" severity="1"> </versionRange> </emItem> + <emItem blockID="i61" id="youtube@youtube3.com"> + <versionRange minVersion="0" maxVersion="*"> + </versionRange> + <versionRange minVersion="0" maxVersion="*"> + </versionRange> + </emItem> <emItem blockID="i372" id="5nc3QHFgcb@r06Ws9gvNNVRfH.com"> <versionRange minVersion="0" maxVersion="*" severity="3"> </versionRange> diff --git a/docshell/base/nsDefaultURIFixup.cpp b/docshell/base/nsDefaultURIFixup.cpp index 3f60f63201911ebef3c5feefd319b217e0db9cec..54bea831fa4ee2a1320b8d4f25374f34a970cd97 100644 --- a/docshell/base/nsDefaultURIFixup.cpp +++ b/docshell/base/nsDefaultURIFixup.cpp @@ -29,6 +29,8 @@ using namespace mozilla; /* Implementation file */ NS_IMPL_ISUPPORTS1(nsDefaultURIFixup, nsIURIFixup) +static bool sFixTypos = true; + nsDefaultURIFixup::nsDefaultURIFixup() { /* member initializers and constructor code */ @@ -214,6 +216,50 @@ nsDefaultURIFixup::CreateFixupURI(const nsACString& aStringURI, uint32_t aFixupF scheme.LowerCaseEqualsLiteral("ftp") || scheme.LowerCaseEqualsLiteral("file")); + // Check if we want to fix up common scheme typos. + rv = Preferences::AddBoolVarCache(&sFixTypos, + "browser.fixup.typo.scheme", + sFixTypos); + MOZ_ASSERT(NS_SUCCEEDED(rv), + "Failed to observe \"browser.fixup.typo.scheme\""); + + // Fix up common scheme typos. + if (sFixTypos && (aFixupFlags & FIXUP_FLAG_FIX_SCHEME_TYPOS)) { + + // Fast-path for common cases. + if (scheme.IsEmpty() || + scheme.LowerCaseEqualsLiteral("http") || + scheme.LowerCaseEqualsLiteral("https") || + scheme.LowerCaseEqualsLiteral("ftp") || + scheme.LowerCaseEqualsLiteral("file")) { + // Do nothing. + } else if (scheme.LowerCaseEqualsLiteral("ttp")) { + // ttp -> http. + uriString.Replace(0, 3, "http"); + scheme.AssignLiteral("http"); + } else if (scheme.LowerCaseEqualsLiteral("ttps")) { + // ttps -> https. + uriString.Replace(0, 4, "https"); + scheme.AssignLiteral("https"); + } else if (scheme.LowerCaseEqualsLiteral("tps")) { + // tps -> https. + uriString.Replace(0, 3, "https"); + scheme.AssignLiteral("https"); + } else if (scheme.LowerCaseEqualsLiteral("ps")) { + // ps -> https. + uriString.Replace(0, 2, "https"); + scheme.AssignLiteral("https"); + } else if (scheme.LowerCaseEqualsLiteral("ile")) { + // ile -> file. + uriString.Replace(0, 3, "file"); + scheme.AssignLiteral("file"); + } else if (scheme.LowerCaseEqualsLiteral("le")) { + // le -> file. + uriString.Replace(0, 2, "file"); + scheme.AssignLiteral("file"); + } + } + // Now we need to check whether "scheme" is something we don't // really know about. nsCOMPtr<nsIProtocolHandler> ourHandler, extHandler; diff --git a/docshell/base/nsIURIFixup.idl b/docshell/base/nsIURIFixup.idl index 57f9ae068254fc6db3a735fb2b51b619744b5e20..f03d94956c225a761685b1c25b3ee9ad99e190d4 100644 --- a/docshell/base/nsIURIFixup.idl +++ b/docshell/base/nsIURIFixup.idl @@ -12,7 +12,7 @@ interface nsIInputStream; /** * Interface implemented by objects capable of fixing up strings into URIs */ -[scriptable, uuid(552a23bb-c1b2-426e-a801-d346c6a98f1d)] +[scriptable, uuid(731877f8-973b-414c-b772-9ca1f3fffb7e)] interface nsIURIFixup : nsISupports { /** No fixup flags. */ @@ -36,6 +36,11 @@ interface nsIURIFixup : nsISupports */ const unsigned long FIXUP_FLAG_USE_UTF8 = 4; + /** + * Fix common scheme typos. + */ + const unsigned long FIXUP_FLAG_FIX_SCHEME_TYPOS = 8; + /** * Converts an internal URI (e.g. a wyciwyg URI) into one which we can * expose to the user, for example on the URL bar. diff --git a/docshell/test/unit/test_nsDefaultURIFixup.js b/docshell/test/unit/test_nsDefaultURIFixup.js new file mode 100644 index 0000000000000000000000000000000000000000..5338b51527c68524bb1dc3d4a5031993bd7a3759 --- /dev/null +++ b/docshell/test/unit/test_nsDefaultURIFixup.js @@ -0,0 +1,93 @@ +let urifixup = Cc["@mozilla.org/docshell/urifixup;1"]. + getService(Ci.nsIURIFixup); +let prefs = Cc["@mozilla.org/preferences-service;1"]. + getService(Ci.nsIPrefBranch); + +let pref = "browser.fixup.typo.scheme"; + +let data = [ + { + // ttp -> http. + wrong: 'ttp://www.example.com/', + fixed: 'http://www.example.com/', + }, + { + // ttps -> https. + wrong: 'ttps://www.example.com/', + fixed: 'https://www.example.com/', + }, + { + // tps -> https. + wrong: 'tps://www.example.com/', + fixed: 'https://www.example.com/', + }, + { + // ps -> https. + wrong: 'ps://www.example.com/', + fixed: 'https://www.example.com/', + }, + { + // ile -> file. + wrong: 'ile:///this/is/a/test.html', + fixed: 'file:///this/is/a/test.html', + }, + { + // le -> file. + wrong: 'le:///this/is/a/test.html', + fixed: 'file:///this/is/a/test.html', + }, + { + // Valid should not be changed. + wrong: 'https://example.com/this/is/a/test.html', + fixed: 'https://example.com/this/is/a/test.html', + }, + { + // Unmatched should not be changed. + wrong: 'whatever://this/is/a/test.html', + fixed: 'whatever://this/is/a/test.html', + }, +]; + +let len = data.length; + +function run_test() { + run_next_test(); +} + +// Make sure we fix what needs fixing when there is no pref set. +add_task(function test_unset_pref_fixes_typos() { + prefs.clearUserPref(pref); + for (let i = 0; i < len; ++i) { + let item = data[i]; + let result = + urifixup.createFixupURI(item.wrong, + urifixup.FIXUP_FLAG_FIX_SCHEME_TYPOS).spec; + do_check_eq(result, item.fixed); + } +}); + +// Make sure we don't do anything when the pref is explicitly +// set to false. +add_task(function test_false_pref_keeps_typos() { + prefs.setBoolPref(pref, false); + for (let i = 0; i < len; ++i) { + let item = data[i]; + let result = + urifixup.createFixupURI(item.wrong, + urifixup.FIXUP_FLAG_FIX_SCHEME_TYPOS).spec; + do_check_eq(result, item.wrong); + } +}); + +// Finally, make sure we still fix what needs fixing if the pref is +// explicitly set to true. +add_task(function test_true_pref_fixes_typos() { + prefs.setBoolPref(pref, true); + for (let i = 0; i < len; ++i) { + let item = data[i]; + let result = + urifixup.createFixupURI(item.wrong, + urifixup.FIXUP_FLAG_FIX_SCHEME_TYPOS).spec; + do_check_eq(result, item.fixed); + } +}); diff --git a/docshell/test/unit/xpcshell.ini b/docshell/test/unit/xpcshell.ini index 5b737a3d7bfabdea5b5399f434e020fbf4c6ac7b..85874a3cb31a190e71d1fab8a33177d15a3284fa 100644 --- a/docshell/test/unit/xpcshell.ini +++ b/docshell/test/unit/xpcshell.ini @@ -4,6 +4,7 @@ tail = [test_bug414201_jfif.js] [test_bug442584.js] +[test_nsDefaultURIFixup.js] [test_nsIDownloadHistory.js] [test_pb_notification.js] # Bug 751575: unrelated JS changes cause timeouts on random platforms diff --git a/modules/libpref/src/init/all.js b/modules/libpref/src/init/all.js index b03d842925cf499bf9f80eeb85ffc2ea0eeea644..59ac731eca79cce2aab81a28d6203e2f8fb5ddc1 100644 --- a/modules/libpref/src/init/all.js +++ b/modules/libpref/src/init/all.js @@ -969,6 +969,14 @@ pref("network.protocol-handler.external.disks", false); pref("network.protocol-handler.external.afp", false); pref("network.protocol-handler.external.moz-icon", false); +// Don't allow external protocol handlers for common typos +pref("network.protocol-handler.external.ttp", false); // http +pref("network.protocol-handler.external.ttps", false); // https +pref("network.protocol-handler.external.tps", false); // https +pref("network.protocol-handler.external.ps", false); // https +pref("network.protocol-handler.external.ile", false); // file +pref("network.protocol-handler.external.le", false); // file + // An exposed protocol handler is one that can be used in all contexts. A // non-exposed protocol handler is one that can only be used internally by the // application. For example, a non-exposed protocol would not be loaded by the diff --git a/testing/mozbase/mozrunner/mozrunner/local.py b/testing/mozbase/mozrunner/mozrunner/local.py index 3f7981a72a6ef62a559405f9ba25e52fd4a4ef4b..d5c11d7f93f9e9e7ff537026c6f1d0e736b9a2c4 100644 --- a/testing/mozbase/mozrunner/mozrunner/local.py +++ b/testing/mozbase/mozrunner/mozrunner/local.py @@ -307,7 +307,7 @@ class CLI(MozProfileCLI): parser.add_option('--debugger', dest='debugger', help="run under a debugger, e.g. gdb or valgrind") parser.add_option('--debugger-args', dest='debugger_args', - action='append', default=None, + action='store', help="arguments to the debugger") parser.add_option('--interactive', dest='interactive', action='store_true', @@ -363,9 +363,11 @@ class CLI(MozProfileCLI): (debugger_arguments, interactive) """ debug_args = self.options.debugger_args + if debug_args is not None: + debug_args = debug_args.split() interactive = self.options.interactive if self.options.debugger: - debug_args, interactive = debugger_arguments(self.options.debugger) + debug_args, interactive = debugger_arguments(self.options.debugger, debug_args, interactive) return debug_args, interactive def start(self, runner): diff --git a/testing/mozbase/mozrunner/mozrunner/remote.py b/testing/mozbase/mozrunner/mozrunner/remote.py index 135b9834c1f4ff21cce192b5cc415fa831b080a1..f57b5e40a028724074b591791e4d86272bfdf7b6 100644 --- a/testing/mozbase/mozrunner/mozrunner/remote.py +++ b/testing/mozbase/mozrunner/mozrunner/remote.py @@ -199,7 +199,7 @@ class B2GRunner(RemoteRunner): msg = "%s with no output" % msg self.log.testFail(msg % (self.last_test, timeout)) - self.dm.killProcess("/system/b2g/b2g", sig=signal.SIGABRT) + self.dm.killProcess('/system/b2g/b2g', sig=signal.SIGABRT) self.check_for_crashes() def _reboot_device(self): diff --git a/testing/mozbase/mozrunner/mozrunner/runner.py b/testing/mozbase/mozrunner/mozrunner/runner.py index 706365eabc10ba08064d0543e2d690ef5fc56e09..aa2626222f847cd1a913548207d9c8d1fb40079b 100755 --- a/testing/mozbase/mozrunner/mozrunner/runner.py +++ b/testing/mozbase/mozrunner/mozrunner/runner.py @@ -122,16 +122,6 @@ class Runner(object): traceback.print_exc() return crashed - def check_for_crashes(self, dump_directory, test_name=None): - crashed = False - try: - crashed = mozcrash.check_for_crashes(dump_directory, - self.symbols_path, - test_name=test_name) - except: - traceback.print_exc() - return crashed - def cleanup(self): """ Cleanup all runner state diff --git a/testing/mozbase/mozrunner/setup.py b/testing/mozbase/mozrunner/setup.py index d08900ea18dd02ac20a5ff2701790d8144c0e9cd..9ce14ab7db0e3117a20bdf3009dcbdbb9478eb5a 100644 --- a/testing/mozbase/mozrunner/setup.py +++ b/testing/mozbase/mozrunner/setup.py @@ -6,7 +6,7 @@ import sys from setuptools import setup PACKAGE_NAME = "mozrunner" -PACKAGE_VERSION = '5.26' +PACKAGE_VERSION = '5.27' desc = """Reliable start/stop/configuration of Mozilla Applications (Firefox, Thunderbird, etc.)"""