зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1188062 - Unship Request.context; r=baku
This commit is contained in:
Родитель
e6798f2427
Коммит
aeacbc159a
|
@ -14,6 +14,7 @@
|
||||||
#include "mozilla/dom/Fetch.h"
|
#include "mozilla/dom/Fetch.h"
|
||||||
#include "mozilla/dom/Promise.h"
|
#include "mozilla/dom/Promise.h"
|
||||||
#include "mozilla/dom/URL.h"
|
#include "mozilla/dom/URL.h"
|
||||||
|
#include "mozilla/dom/WorkerPrivate.h"
|
||||||
#include "mozilla/dom/workers/bindings/URL.h"
|
#include "mozilla/dom/workers/bindings/URL.h"
|
||||||
|
|
||||||
#include "WorkerPrivate.h"
|
#include "WorkerPrivate.h"
|
||||||
|
@ -42,6 +43,25 @@ Request::~Request()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
bool
|
||||||
|
Request::RequestContextEnabled(JSContext* aCx, JSObject* aObj)
|
||||||
|
{
|
||||||
|
if (NS_IsMainThread()) {
|
||||||
|
return Preferences::GetBool("dom.requestcontext.enabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
using namespace workers;
|
||||||
|
|
||||||
|
// Otherwise, check the pref via the WorkerPrivate
|
||||||
|
WorkerPrivate* workerPrivate = GetWorkerPrivateFromContext(aCx);
|
||||||
|
if (!workerPrivate) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return workerPrivate->RequestContextEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
already_AddRefed<InternalRequest>
|
already_AddRefed<InternalRequest>
|
||||||
Request::GetInternalRequest()
|
Request::GetInternalRequest()
|
||||||
{
|
{
|
||||||
|
|
|
@ -34,6 +34,9 @@ class Request final : public nsISupports
|
||||||
public:
|
public:
|
||||||
Request(nsIGlobalObject* aOwner, InternalRequest* aRequest);
|
Request(nsIGlobalObject* aOwner, InternalRequest* aRequest);
|
||||||
|
|
||||||
|
static bool
|
||||||
|
RequestContextEnabled(JSContext* aCx, JSObject* aObj);
|
||||||
|
|
||||||
JSObject*
|
JSObject*
|
||||||
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
|
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,7 +2,8 @@ function testScript(script) {
|
||||||
function setupPrefs() {
|
function setupPrefs() {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
SpecialPowers.pushPrefEnv({
|
SpecialPowers.pushPrefEnv({
|
||||||
"set": [["dom.serviceWorkers.enabled", true],
|
"set": [["dom.requestcontext.enabled", true],
|
||||||
|
["dom.serviceWorkers.enabled", true],
|
||||||
["dom.serviceWorkers.testing.enabled", true],
|
["dom.serviceWorkers.testing.enabled", true],
|
||||||
["dom.serviceWorkers.exemptFromPerDomainMax", true]]
|
["dom.serviceWorkers.exemptFromPerDomainMax", true]]
|
||||||
}, resolve);
|
}, resolve);
|
||||||
|
|
|
@ -35,6 +35,7 @@ skip-if = e10s || buildapp == 'b2g' # Bug 1093357 for e10s, bug 1137683 for b2g
|
||||||
[test_formdataparsing_sw_reroute.html]
|
[test_formdataparsing_sw_reroute.html]
|
||||||
skip-if = buildapp == 'b2g' # Bug 1137683
|
skip-if = buildapp == 'b2g' # Bug 1137683
|
||||||
[test_request.html]
|
[test_request.html]
|
||||||
|
[test_request_context.html]
|
||||||
[test_request_sw_reroute.html]
|
[test_request_sw_reroute.html]
|
||||||
skip-if = buildapp == 'b2g' # Bug 1137683
|
skip-if = buildapp == 'b2g' # Bug 1137683
|
||||||
[test_response.html]
|
[test_response.html]
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<!--
|
||||||
|
Any copyright is dedicated to the Public Domain.
|
||||||
|
http://creativecommons.org/publicdomain/zero/1.0/
|
||||||
|
-->
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Make sure that Request.context is not exposed by default</title>
|
||||||
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||||
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<script>
|
||||||
|
var req = new Request("");
|
||||||
|
ok(!("context" in req), "Request.context should not be exposed by default");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
|
@ -17,6 +17,7 @@ interface Request {
|
||||||
readonly attribute USVString url;
|
readonly attribute USVString url;
|
||||||
[SameObject] readonly attribute Headers headers;
|
[SameObject] readonly attribute Headers headers;
|
||||||
|
|
||||||
|
[Func="mozilla::dom::Request::RequestContextEnabled"]
|
||||||
readonly attribute RequestContext context;
|
readonly attribute RequestContext context;
|
||||||
readonly attribute DOMString referrer;
|
readonly attribute DOMString referrer;
|
||||||
readonly attribute RequestMode mode;
|
readonly attribute RequestMode mode;
|
||||||
|
@ -41,6 +42,8 @@ dictionary RequestInit {
|
||||||
RequestCache cache;
|
RequestCache cache;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Gecko currently does not ship RequestContext, so please don't use it in IDL
|
||||||
|
// that is exposed to script.
|
||||||
enum RequestContext {
|
enum RequestContext {
|
||||||
"audio", "beacon", "cspreport", "download", "embed", "eventsource", "favicon", "fetch",
|
"audio", "beacon", "cspreport", "download", "embed", "eventsource", "favicon", "fetch",
|
||||||
"font", "form", "frame", "hyperlink", "iframe", "image", "imageset", "import",
|
"font", "form", "frame", "hyperlink", "iframe", "image", "imageset", "import",
|
||||||
|
|
|
@ -167,6 +167,7 @@ static_assert(MAX_WORKERS_PER_DOMAIN >= 1,
|
||||||
#define PREF_INTERCEPTION_ENABLED "dom.serviceWorkers.interception.enabled"
|
#define PREF_INTERCEPTION_ENABLED "dom.serviceWorkers.interception.enabled"
|
||||||
#define PREF_INTERCEPTION_OPAQUE_ENABLED "dom.serviceWorkers.interception.opaque.enabled"
|
#define PREF_INTERCEPTION_OPAQUE_ENABLED "dom.serviceWorkers.interception.opaque.enabled"
|
||||||
#define PREF_PUSH_ENABLED "dom.push.enabled"
|
#define PREF_PUSH_ENABLED "dom.push.enabled"
|
||||||
|
#define PREF_REQUESTCONTEXT_ENABLED "dom.requestcontext.enabled"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -1954,6 +1955,10 @@ RuntimeService::Init()
|
||||||
WorkerPrefChanged,
|
WorkerPrefChanged,
|
||||||
PREF_PUSH_ENABLED,
|
PREF_PUSH_ENABLED,
|
||||||
reinterpret_cast<void *>(WORKERPREF_PUSH))) ||
|
reinterpret_cast<void *>(WORKERPREF_PUSH))) ||
|
||||||
|
NS_FAILED(Preferences::RegisterCallbackAndCall(
|
||||||
|
WorkerPrefChanged,
|
||||||
|
PREF_REQUESTCONTEXT_ENABLED,
|
||||||
|
reinterpret_cast<void *>(WORKERPREF_REQUESTCONTEXT))) ||
|
||||||
NS_FAILED(Preferences::RegisterCallback(LoadRuntimeOptions,
|
NS_FAILED(Preferences::RegisterCallback(LoadRuntimeOptions,
|
||||||
PREF_JS_OPTIONS_PREFIX,
|
PREF_JS_OPTIONS_PREFIX,
|
||||||
nullptr)) ||
|
nullptr)) ||
|
||||||
|
@ -2185,6 +2190,10 @@ RuntimeService::Cleanup()
|
||||||
WorkerPrefChanged,
|
WorkerPrefChanged,
|
||||||
PREF_PUSH_ENABLED,
|
PREF_PUSH_ENABLED,
|
||||||
reinterpret_cast<void *>(WORKERPREF_PUSH))) ||
|
reinterpret_cast<void *>(WORKERPREF_PUSH))) ||
|
||||||
|
NS_FAILED(Preferences::UnregisterCallback(
|
||||||
|
WorkerPrefChanged,
|
||||||
|
PREF_REQUESTCONTEXT_ENABLED,
|
||||||
|
reinterpret_cast<void *>(WORKERPREF_REQUESTCONTEXT))) ||
|
||||||
#if DUMP_CONTROLLED_BY_PREF
|
#if DUMP_CONTROLLED_BY_PREF
|
||||||
NS_FAILED(Preferences::UnregisterCallback(
|
NS_FAILED(Preferences::UnregisterCallback(
|
||||||
WorkerPrefChanged,
|
WorkerPrefChanged,
|
||||||
|
@ -2735,6 +2744,7 @@ RuntimeService::WorkerPrefChanged(const char* aPrefName, void* aClosure)
|
||||||
case WORKERPREF_SERVICEWORKERS:
|
case WORKERPREF_SERVICEWORKERS:
|
||||||
case WORKERPREF_SERVICEWORKERS_TESTING:
|
case WORKERPREF_SERVICEWORKERS_TESTING:
|
||||||
case WORKERPREF_PUSH:
|
case WORKERPREF_PUSH:
|
||||||
|
case WORKERPREF_REQUESTCONTEXT:
|
||||||
sDefaultPreferences[key] = Preferences::GetBool(aPrefName, false);
|
sDefaultPreferences[key] = Preferences::GetBool(aPrefName, false);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -1335,6 +1335,13 @@ public:
|
||||||
return mPreferences[WORKERPREF_PUSH];
|
return mPreferences[WORKERPREF_PUSH];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
RequestContextEnabled() const
|
||||||
|
{
|
||||||
|
AssertIsOnWorkerThread();
|
||||||
|
return mPreferences[WORKERPREF_REQUESTCONTEXT];
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
OnLine() const
|
OnLine() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -207,6 +207,7 @@ enum WorkerPreference
|
||||||
WORKERPREF_INTERCEPTION_OPAQUE_ENABLED, // dom.serviceWorkers.interception.opaque.enabled
|
WORKERPREF_INTERCEPTION_OPAQUE_ENABLED, // dom.serviceWorkers.interception.opaque.enabled
|
||||||
WORKERPREF_PERFORMANCE_LOGGING_ENABLED, // dom.performance.enable_user_timing_logging
|
WORKERPREF_PERFORMANCE_LOGGING_ENABLED, // dom.performance.enable_user_timing_logging
|
||||||
WORKERPREF_PUSH, // dom.push.enabled
|
WORKERPREF_PUSH, // dom.push.enabled
|
||||||
|
WORKERPREF_REQUESTCONTEXT, // dom.requestcontext.enabled
|
||||||
WORKERPREF_COUNT
|
WORKERPREF_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -68,6 +68,7 @@ onload = function() {
|
||||||
["dom.caches.enabled", true],
|
["dom.caches.enabled", true],
|
||||||
["dom.image.picture.enabled", true],
|
["dom.image.picture.enabled", true],
|
||||||
["dom.image.srcset.enabled", true],
|
["dom.image.srcset.enabled", true],
|
||||||
|
["dom.requestcontext.enabled", true],
|
||||||
["dom.serviceWorkers.exemptFromPerDomainMax", true],
|
["dom.serviceWorkers.exemptFromPerDomainMax", true],
|
||||||
["dom.serviceWorkers.interception.enabled", true],
|
["dom.serviceWorkers.interception.enabled", true],
|
||||||
["dom.serviceWorkers.enabled", true],
|
["dom.serviceWorkers.enabled", true],
|
||||||
|
|
|
@ -5055,3 +5055,6 @@ pref("memory.report_concurrency", 10);
|
||||||
pref("media.useAudioChannelService", true);
|
pref("media.useAudioChannelService", true);
|
||||||
// Add Mozilla AudioChannel APIs.
|
// Add Mozilla AudioChannel APIs.
|
||||||
pref("media.useAudioChannelAPI", false);
|
pref("media.useAudioChannelAPI", false);
|
||||||
|
|
||||||
|
// Expose Request.context. Currently disabled since the spec is in flux.
|
||||||
|
pref("dom.requestcontext.enabled", false);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче