зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1105556 - Add a hidden preference that is checked in debug mode to determine whether the main LoadInfo() constructor should assert that the ContentPolicyType is not TYPE_DOCUMENT.
Set the preference in xpcshell tests that create TYPE_DOCUMENT loads in javascript and hence end up using the main constructor. r=sicking, ckerschb
This commit is contained in:
Родитель
9209781614
Коммит
9c0a7ac154
|
@ -11,6 +11,14 @@ var Cu = Components.utils;
|
|||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var prefs = Cc["@mozilla.org/preferences-service;1"].
|
||||
getService(Ci.nsIPrefBranch);
|
||||
|
||||
// Since this test creates a TYPE_DOCUMENT channel via javascript, it will
|
||||
// end up using the wrong LoadInfo constructor. Setting this pref will disable
|
||||
// the ContentPolicyType assertion in the constructor.
|
||||
prefs.setBoolPref("network.loadinfo.skip_type_assertion", true);
|
||||
|
||||
var NS_ERROR_INVALID_ARG = Components.results.NS_ERROR_INVALID_ARG;
|
||||
|
||||
function do_check_throws(f, result, stack)
|
||||
|
|
|
@ -1,10 +1,19 @@
|
|||
var Cu = Components.utils;
|
||||
var Ci = Components.interfaces;
|
||||
var Cc = Components.classes;
|
||||
|
||||
Cu.import("resource://testing-common/httpd.js");
|
||||
Cu.import("resource://gre/modules/NetUtil.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
var prefs = Cc["@mozilla.org/preferences-service;1"].
|
||||
getService(Ci.nsIPrefBranch);
|
||||
|
||||
// Since this test creates a TYPE_DOCUMENT channel via javascript, it will
|
||||
// end up using the wrong LoadInfo constructor. Setting this pref will disable
|
||||
// the ContentPolicyType assertion in the constructor.
|
||||
prefs.setBoolPref("network.loadinfo.skip_type_assertion", true);
|
||||
|
||||
XPCOMUtils.defineLazyGetter(this, "URL", function() {
|
||||
return "http://localhost:" + httpserver.identity.primaryPort;
|
||||
});
|
||||
|
|
|
@ -60,9 +60,19 @@ LoadInfo::LoadInfo(nsIPrincipal* aLoadingPrincipal,
|
|||
{
|
||||
MOZ_ASSERT(mLoadingPrincipal);
|
||||
MOZ_ASSERT(mTriggeringPrincipal);
|
||||
|
||||
#ifdef DEBUG
|
||||
// TYPE_DOCUMENT loads initiated by javascript tests will go through
|
||||
// nsIOService and use the wrong constructor. Don't enforce the
|
||||
// !TYPE_DOCUMENT check in those cases
|
||||
bool skipContentTypeCheck = false;
|
||||
skipContentTypeCheck = Preferences::GetBool("network.loadinfo.skip_type_assertion");
|
||||
#endif
|
||||
|
||||
// This constructor shouldn't be used for TYPE_DOCUMENT loads that don't
|
||||
// have a loadingPrincipal
|
||||
MOZ_ASSERT(mInternalContentPolicyType != nsIContentPolicy::TYPE_DOCUMENT);
|
||||
MOZ_ASSERT(skipContentTypeCheck ||
|
||||
mInternalContentPolicyType != nsIContentPolicy::TYPE_DOCUMENT);
|
||||
|
||||
// TODO(bug 1259873): Above, we initialize mIsThirdPartyContext to false meaning
|
||||
// that consumers of LoadInfo that don't pass a context or pass a context from
|
||||
|
|
|
@ -11,6 +11,11 @@ Cu.import("resource://testing-common/httpd.js");
|
|||
var prefs = Cc["@mozilla.org/preferences-service;1"].
|
||||
getService(Ci.nsIPrefBranch);
|
||||
|
||||
// Since this test creates a TYPE_DOCUMENT channel via javascript, it will
|
||||
// end up using the wrong LoadInfo constructor. Setting this pref will disable
|
||||
// the ContentPolicyType assertion in the constructor.
|
||||
prefs.setBoolPref("network.loadinfo.skip_type_assertion", true);
|
||||
|
||||
function authHandler(metadata, response) {
|
||||
// btoa("guest:guest"), but that function is not available here
|
||||
var expectedHeader = "Basic Z3Vlc3Q6Z3Vlc3Q=";
|
||||
|
|
Загрузка…
Ссылка в новой задаче