mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1178508 ServiceWorker scripts should never be intercepted. r=baku (1dc29c560) - Bug 1169044 - Patch 4 - Set referrer on intercepted request. r=jdm (e400d51bb) - Bug 1169044 - Patch 5 - build fixes. a=bustage (ff54ccc97) - Bug 1158319 Cache should throw SecurityError if the principal is incorrect. r=ehsan (28713b9cf) - Bug 1160147 Improve Cache API WorkerFeature shutdown handling. r=baku (79ab46685) - Bug 1160227 Improve Cache API warnings. r=ehsan (0adda61ee) - Bug 1160138 P1 Update CacheStorage and Cache webidl to latest spec. r=ehsan (68025abcf) - Bug 1160138 P2 Add a [ChromeConstructor] to CacheStorage to support devtools. r=ehsan (8d3ea55b8) - Bug 1160138 P3 Test Cache chrome-only Constructor. r=ehsan (46d89d039) - Bug 1173467 P1 Modify CacheStorage to reject with SecurityErr instead of throwing on creation. r=ehsan (db32dffbf) - Bug 1140145 - Update web-platform-tests expected data to revision 9a2c04e06cb4e63b13b803722d345d085bf0debf, a=testonly (eb5c31e15) - Bug 1142501 - Disable webvtt/rendering/cues-with-video/processing-model/basic.html on Linux due to extremely frequent timeouts. No review. (8c197e60a) - Bug 1135107 - Enable pointer events for pointer events tests, a=testonly (03d19a853) - partial bug 1135107 - Update web-platform-tests expected data, rs=Ms2ger (794895f17) - Bug 1153521 - Update web-platform-tests expected data to revision 7311aa630534282885b9add15b1c30b2b59316dd, a=testonly (44a86bbb9) - Bug 1162594 - create build_resources.json even if psutil fails; r=ahal (44a1d1780)
This commit is contained in:
Vendored
+58
-28
@@ -229,7 +229,10 @@ already_AddRefed<Promise>
|
||||
Cache::Match(const RequestOrUSVString& aRequest,
|
||||
const CacheQueryOptions& aOptions, ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<InternalRequest> ir = ToInternalRequest(aRequest, IgnoreBody, aRv);
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
@@ -253,7 +256,10 @@ already_AddRefed<Promise>
|
||||
Cache::MatchAll(const Optional<RequestOrUSVString>& aRequest,
|
||||
const CacheQueryOptions& aOptions, ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CacheQueryParams params;
|
||||
ToCacheQueryParams(params, aOptions);
|
||||
@@ -280,6 +286,11 @@ already_AddRefed<Promise>
|
||||
Cache::Add(JSContext* aContext, const RequestOrUSVString& aRequest,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!IsValidPutRequestMethod(aRequest, aRv)) {
|
||||
return nullptr;
|
||||
}
|
||||
@@ -290,13 +301,13 @@ Cache::Add(JSContext* aContext, const RequestOrUSVString& aRequest,
|
||||
nsTArray<nsRefPtr<Request>> requestList(1);
|
||||
nsRefPtr<Request> request = Request::Constructor(global, aRequest,
|
||||
RequestInit(), aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsAutoString url;
|
||||
request->GetUrl(url);
|
||||
if (!IsValidPutRequestURL(url, aRv)) {
|
||||
if (NS_WARN_IF(!IsValidPutRequestURL(url, aRv))) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -309,6 +320,11 @@ Cache::AddAll(JSContext* aContext,
|
||||
const Sequence<OwningRequestOrUSVString>& aRequestList,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
GlobalObject global(aContext, mGlobal->GetGlobalJSObject());
|
||||
MOZ_ASSERT(!global.Failed());
|
||||
|
||||
@@ -318,7 +334,8 @@ Cache::AddAll(JSContext* aContext,
|
||||
|
||||
if (aRequestList[i].IsRequest()) {
|
||||
requestOrString.SetAsRequest() = aRequestList[i].GetAsRequest();
|
||||
if (!IsValidPutRequestMethod(requestOrString.GetAsRequest(), aRv)) {
|
||||
if (NS_WARN_IF(!IsValidPutRequestMethod(requestOrString.GetAsRequest(),
|
||||
aRv))) {
|
||||
return nullptr;
|
||||
}
|
||||
} else {
|
||||
@@ -329,13 +346,13 @@ Cache::AddAll(JSContext* aContext,
|
||||
|
||||
nsRefPtr<Request> request = Request::Constructor(global, requestOrString,
|
||||
RequestInit(), aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsAutoString url;
|
||||
request->GetUrl(url);
|
||||
if (!IsValidPutRequestURL(url, aRv)) {
|
||||
if (NS_WARN_IF(!IsValidPutRequestURL(url, aRv))) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -349,14 +366,17 @@ already_AddRefed<Promise>
|
||||
Cache::Put(const RequestOrUSVString& aRequest, Response& aResponse,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (!IsValidPutRequestMethod(aRequest, aRv)) {
|
||||
if (NS_WARN_IF(!IsValidPutRequestMethod(aRequest, aRv))) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<InternalRequest> ir = ToInternalRequest(aRequest, ReadBody, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -364,7 +384,7 @@ Cache::Put(const RequestOrUSVString& aRequest, Response& aResponse,
|
||||
|
||||
args.Add(ir, ReadBody, TypeErrorOnInvalidScheme,
|
||||
aResponse, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -375,10 +395,13 @@ already_AddRefed<Promise>
|
||||
Cache::Delete(const RequestOrUSVString& aRequest,
|
||||
const CacheQueryOptions& aOptions, ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<InternalRequest> ir = ToInternalRequest(aRequest, IgnoreBody, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -388,7 +411,7 @@ Cache::Delete(const RequestOrUSVString& aRequest,
|
||||
AutoChildOpArgs args(this, CacheDeleteArgs(CacheRequest(), params));
|
||||
|
||||
args.Add(ir, IgnoreBody, IgnoreInvalidScheme, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -399,7 +422,10 @@ already_AddRefed<Promise>
|
||||
Cache::Keys(const Optional<RequestOrUSVString>& aRequest,
|
||||
const CacheQueryOptions& aOptions, ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
CacheQueryParams params;
|
||||
ToCacheQueryParams(params, aOptions);
|
||||
@@ -409,12 +435,12 @@ Cache::Keys(const Optional<RequestOrUSVString>& aRequest,
|
||||
if (aRequest.WasPassed()) {
|
||||
nsRefPtr<InternalRequest> ir = ToInternalRequest(aRequest.Value(),
|
||||
IgnoreBody, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
args.Add(ir, IgnoreBody, IgnoreInvalidScheme, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
@@ -493,9 +519,9 @@ Cache::~Cache()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(Cache);
|
||||
if (mActor) {
|
||||
mActor->StartDestroy();
|
||||
// DestroyInternal() is called synchronously by StartDestroy(). So we
|
||||
// should have already cleared the mActor.
|
||||
mActor->StartDestroyFromListener();
|
||||
// DestroyInternal() is called synchronously by StartDestroyFromListener().
|
||||
// So we should have already cleared the mActor.
|
||||
MOZ_ASSERT(!mActor);
|
||||
}
|
||||
}
|
||||
@@ -504,11 +530,11 @@ already_AddRefed<Promise>
|
||||
Cache::ExecuteOp(AutoChildOpArgs& aOpArgs, ErrorResult& aRv)
|
||||
{
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
mActor->ExecuteOp(mGlobal, promise, aOpArgs.SendAsOpArgs());
|
||||
mActor->ExecuteOp(mGlobal, promise, this, aOpArgs.SendAsOpArgs());
|
||||
return promise.forget();
|
||||
}
|
||||
|
||||
@@ -521,7 +547,7 @@ Cache::AddAll(const GlobalObject& aGlobal,
|
||||
// If there is no work to do, then resolve immediately
|
||||
if (aRequestList.IsEmpty()) {
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -541,7 +567,7 @@ Cache::AddAll(const GlobalObject& aGlobal,
|
||||
requestOrString.SetAsRequest() = aRequestList[i];
|
||||
nsRefPtr<Promise> fetch = FetchRequest(mGlobal, requestOrString,
|
||||
RequestInit(), aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -549,7 +575,7 @@ Cache::AddAll(const GlobalObject& aGlobal,
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -557,7 +583,7 @@ Cache::AddAll(const GlobalObject& aGlobal,
|
||||
Move(aRequestList), promise);
|
||||
|
||||
nsRefPtr<Promise> fetchPromise = Promise::All(aGlobal, fetchList, aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
fetchPromise->AppendNativeHandler(handler);
|
||||
@@ -570,15 +596,19 @@ Cache::PutAll(const nsTArray<nsRefPtr<Request>>& aRequestList,
|
||||
const nsTArray<nsRefPtr<Response>>& aResponseList,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
MOZ_ASSERT(mActor);
|
||||
MOZ_ASSERT(aRequestList.Length() == aResponseList.Length());
|
||||
|
||||
if (NS_WARN_IF(!mActor)) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
AutoChildOpArgs args(this, CachePutAllArgs());
|
||||
|
||||
for (uint32_t i = 0; i < aRequestList.Length(); ++i) {
|
||||
nsRefPtr<InternalRequest> ir = aRequestList[i]->GetInternalRequest();
|
||||
args.Add(ir, ReadBody, TypeErrorOnInvalidScheme, *aResponseList[i], aRv);
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+29
-12
@@ -33,6 +33,7 @@ DeallocPCacheChild(PCacheChild* aActor)
|
||||
CacheChild::CacheChild()
|
||||
: mListener(nullptr)
|
||||
, mNumChildActors(0)
|
||||
, mDelayedDestroy(false)
|
||||
{
|
||||
MOZ_COUNT_CTOR(cache::CacheChild);
|
||||
}
|
||||
@@ -64,11 +65,11 @@ CacheChild::ClearListener()
|
||||
|
||||
void
|
||||
CacheChild::ExecuteOp(nsIGlobalObject* aGlobal, Promise* aPromise,
|
||||
const CacheOpArgs& aArgs)
|
||||
nsISupports* aParent, const CacheOpArgs& aArgs)
|
||||
{
|
||||
mNumChildActors += 1;
|
||||
MOZ_ALWAYS_TRUE(SendPCacheOpConstructor(
|
||||
new CacheOpChild(GetFeature(), aGlobal, aPromise), aArgs));
|
||||
new CacheOpChild(GetFeature(), aGlobal, aParent, aPromise), aArgs));
|
||||
}
|
||||
|
||||
CachePushStreamChild*
|
||||
@@ -81,9 +82,33 @@ CacheChild::CreatePushStream(nsIAsyncInputStream* aStream)
|
||||
return static_cast<CachePushStreamChild*>(actor);
|
||||
}
|
||||
|
||||
void
|
||||
CacheChild::StartDestroyFromListener()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheChild);
|
||||
|
||||
// The listener should be held alive by any async operations, so if it
|
||||
// is going away then there must not be any child actors. This in turn
|
||||
// ensures that StartDestroy() will not trigger the delayed path.
|
||||
MOZ_ASSERT(!mNumChildActors);
|
||||
|
||||
StartDestroy();
|
||||
}
|
||||
|
||||
void
|
||||
CacheChild::StartDestroy()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheChild);
|
||||
|
||||
// If we have outstanding child actors, then don't destroy ourself yet.
|
||||
// The child actors should be short lived and we should allow them to complete
|
||||
// if possible. NoteDeletedActor() will call back into this Shutdown()
|
||||
// method when the last child actor is gone.
|
||||
if (mNumChildActors) {
|
||||
mDelayedDestroy = true;
|
||||
return;
|
||||
}
|
||||
|
||||
nsRefPtr<Cache> listener = mListener;
|
||||
|
||||
// StartDestroy() can get called from either Cache or the Feature.
|
||||
@@ -98,14 +123,6 @@ CacheChild::StartDestroy()
|
||||
// Cache listener should call ClearListener() in DestroyInternal()
|
||||
MOZ_ASSERT(!mListener);
|
||||
|
||||
// If we have outstanding child actors, then don't destroy ourself yet.
|
||||
// The child actors should be short lived and we should allow them to complete
|
||||
// if possible. SendTeardown() will be called when the count drops to zero
|
||||
// in NoteDeletedActor().
|
||||
if (mNumChildActors) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Start actor destruction from parent process
|
||||
unused << SendTeardown();
|
||||
}
|
||||
@@ -158,8 +175,8 @@ void
|
||||
CacheChild::NoteDeletedActor()
|
||||
{
|
||||
mNumChildActors -= 1;
|
||||
if (!mNumChildActors && !mListener) {
|
||||
unused << SendTeardown();
|
||||
if (!mNumChildActors && mDelayedDestroy) {
|
||||
StartDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+12
-9
@@ -33,25 +33,27 @@ public:
|
||||
|
||||
void SetListener(Cache* aListener);
|
||||
|
||||
// Must be called by the associated Cache listener in its ActorDestroy()
|
||||
// method. Also, Cache must Send__delete__() the actor in its destructor to
|
||||
// trigger ActorDestroy() if it has not been called yet.
|
||||
// Must be called by the associated Cache listener in its DestroyInternal()
|
||||
// method. Also, Cache must call StartDestroyFromListener() on the actor in
|
||||
// its destructor to trigger ActorDestroy() if it has not been called yet.
|
||||
void ClearListener();
|
||||
|
||||
void
|
||||
ExecuteOp(nsIGlobalObject* aGlobal, Promise* aPromise,
|
||||
const CacheOpArgs& aArgs);
|
||||
nsISupports* aParent, const CacheOpArgs& aArgs);
|
||||
|
||||
CachePushStreamChild*
|
||||
CreatePushStream(nsIAsyncInputStream* aStream);
|
||||
|
||||
// ActorChild methods
|
||||
|
||||
// Synchronously call ActorDestroy on our Cache listener and then start the
|
||||
// actor destruction asynchronously from the parent-side.
|
||||
virtual void StartDestroy() override;
|
||||
// Our parent Listener object has gone out of scope and is being destroyed.
|
||||
void StartDestroyFromListener();
|
||||
|
||||
private:
|
||||
// ActorChild methods
|
||||
|
||||
// Feature is trying to destroy due to worker shutdown.
|
||||
virtual void StartDestroy() override;
|
||||
|
||||
// PCacheChild methods
|
||||
virtual void
|
||||
ActorDestroy(ActorDestroyReason aReason) override;
|
||||
@@ -77,6 +79,7 @@ private:
|
||||
// destroyed.
|
||||
Cache* MOZ_NON_OWNING_REF mListener;
|
||||
uint32_t mNumChildActors;
|
||||
bool mDelayedDestroy;
|
||||
|
||||
NS_DECL_OWNINGTHREAD
|
||||
};
|
||||
|
||||
Vendored
+4
-2
@@ -57,11 +57,13 @@ AddFeatureToStreamChild(const CacheRequest& aRequest, Feature* aFeature)
|
||||
} // namespace
|
||||
|
||||
CacheOpChild::CacheOpChild(Feature* aFeature, nsIGlobalObject* aGlobal,
|
||||
Promise* aPromise)
|
||||
nsISupports* aParent, Promise* aPromise)
|
||||
: mGlobal(aGlobal)
|
||||
, mParent(aParent)
|
||||
, mPromise(aPromise)
|
||||
{
|
||||
MOZ_ASSERT(mGlobal);
|
||||
MOZ_ASSERT(mParent);
|
||||
MOZ_ASSERT(mPromise);
|
||||
|
||||
MOZ_ASSERT_IF(!NS_IsMainThread(), aFeature);
|
||||
@@ -95,7 +97,7 @@ CacheOpChild::Recv__delete__(const ErrorResult& aRv,
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheOpChild);
|
||||
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
MOZ_ASSERT(aResult.type() == CacheOpResult::Tvoid_t);
|
||||
// TODO: Remove this const_cast (bug 1152078).
|
||||
// It is safe for now since this ErrorResult is handed off to us by IPDL
|
||||
|
||||
Vendored
+5
-1
@@ -31,7 +31,8 @@ class CacheOpChild final : public PCacheOpChild
|
||||
private:
|
||||
// This class must be constructed by CacheChild or CacheStorageChild using
|
||||
// their ExecuteOp() factory method.
|
||||
CacheOpChild(Feature* aFeature, nsIGlobalObject* aGlobal, Promise* aPromise);
|
||||
CacheOpChild(Feature* aFeature, nsIGlobalObject* aGlobal,
|
||||
nsISupports* aParent, Promise* aPromise);
|
||||
~CacheOpChild();
|
||||
|
||||
// PCacheOpChild methods
|
||||
@@ -68,6 +69,9 @@ private:
|
||||
HandleRequestList(const nsTArray<CacheRequest>& aRequestList);
|
||||
|
||||
nsCOMPtr<nsIGlobalObject> mGlobal;
|
||||
// Hold the parent Cache or CacheStorage object alive until this async
|
||||
// operation completes.
|
||||
nsCOMPtr<nsISupports> mParent;
|
||||
RefPtr<Promise> mPromise;
|
||||
|
||||
NS_DECL_OWNINGTHREAD
|
||||
|
||||
Vendored
+1
-1
@@ -164,7 +164,7 @@ CacheOpParent::OnOpComplete(ErrorResult&& aRv, const CacheOpResult& aResult,
|
||||
|
||||
// Never send an op-specific result if we have an error. Instead, send
|
||||
// void_t() to ensure that we don't leak actors on the child side.
|
||||
if (aRv.Failed()) {
|
||||
if (NS_WARN_IF(aRv.Failed())) {
|
||||
unused << Send__delete__(this, aRv, void_t());
|
||||
aRv.SuppressException(); // We serialiazed it, as best we could.
|
||||
return;
|
||||
|
||||
Vendored
+3
-2
@@ -118,8 +118,9 @@ CachePushStreamChild::Start()
|
||||
void
|
||||
CachePushStreamChild::StartDestroy()
|
||||
{
|
||||
// called if we are running on a Worker and the thread gets shutdown
|
||||
OnEnd(NS_ERROR_ABORT);
|
||||
// The worker has signaled its shutting down, but continue streaming. The
|
||||
// Cache is now designed to hold the worker open until all async operations
|
||||
// complete.
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
Vendored
+65
-32
@@ -70,6 +70,7 @@ CacheStorage::CreateOnMainThread(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
MOZ_ASSERT(aPrincipal);
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
|
||||
bool nullPrincipal;
|
||||
nsresult rv = aPrincipal->GetIsNullPrincipal(&nullPrincipal);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
@@ -79,8 +80,8 @@ CacheStorage::CreateOnMainThread(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
|
||||
if (nullPrincipal) {
|
||||
NS_WARNING("CacheStorage not supported on null principal.");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
nsRefPtr<CacheStorage> ref = new CacheStorage(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return ref.forget();
|
||||
}
|
||||
|
||||
// An unknown appId means that this principal was created for the codebase
|
||||
@@ -91,8 +92,8 @@ CacheStorage::CreateOnMainThread(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
aPrincipal->GetUnknownAppId(&unknownAppId);
|
||||
if (unknownAppId) {
|
||||
NS_WARNING("CacheStorage not supported on principal with unknown appId.");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
nsRefPtr<CacheStorage> ref = new CacheStorage(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return ref.forget();
|
||||
}
|
||||
|
||||
PrincipalInfo principalInfo;
|
||||
@@ -126,16 +127,16 @@ CacheStorage::CreateOnWorker(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
const PrincipalInfo& principalInfo = aWorkerPrivate->GetPrincipalInfo();
|
||||
if (principalInfo.type() == PrincipalInfo::TNullPrincipalInfo) {
|
||||
NS_WARNING("CacheStorage not supported on null principal.");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
nsRefPtr<CacheStorage> ref = new CacheStorage(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return ref.forget();
|
||||
}
|
||||
|
||||
if (principalInfo.type() == PrincipalInfo::TContentPrincipalInfo &&
|
||||
principalInfo.get_ContentPrincipalInfo().appId() ==
|
||||
nsIScriptSecurityManager::UNKNOWN_APP_ID) {
|
||||
NS_WARNING("CacheStorage not supported on principal with unknown appId.");
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
nsRefPtr<CacheStorage> ref = new CacheStorage(NS_ERROR_DOM_SECURITY_ERR);
|
||||
return ref.forget();
|
||||
}
|
||||
|
||||
nsRefPtr<CacheStorage> ref = new CacheStorage(aNamespace, aGlobal,
|
||||
@@ -150,7 +151,7 @@ CacheStorage::CacheStorage(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
, mPrincipalInfo(MakeUnique<PrincipalInfo>(aPrincipalInfo))
|
||||
, mFeature(aFeature)
|
||||
, mActor(nullptr)
|
||||
, mFailedActor(false)
|
||||
, mStatus(NS_OK)
|
||||
{
|
||||
MOZ_ASSERT(mGlobal);
|
||||
|
||||
@@ -166,19 +167,27 @@ CacheStorage::CacheStorage(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
// wait for the async ActorCreated() callback.
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
bool ok = BackgroundChild::GetOrCreateForCurrentThread(this);
|
||||
if (!ok) {
|
||||
if (NS_WARN_IF(!ok)) {
|
||||
ActorFailed();
|
||||
}
|
||||
}
|
||||
|
||||
CacheStorage::CacheStorage(nsresult aFailureResult)
|
||||
: mNamespace(INVALID_NAMESPACE)
|
||||
, mActor(nullptr)
|
||||
, mStatus(aFailureResult)
|
||||
{
|
||||
MOZ_ASSERT(NS_FAILED(mStatus));
|
||||
}
|
||||
|
||||
already_AddRefed<Promise>
|
||||
CacheStorage::Match(const RequestOrUSVString& aRequest,
|
||||
const CacheQueryOptions& aOptions, ErrorResult& aRv)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
|
||||
if (mFailedActor) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
if (NS_WARN_IF(NS_FAILED(mStatus))) {
|
||||
aRv.Throw(mStatus);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -189,7 +198,7 @@ CacheStorage::Match(const RequestOrUSVString& aRequest,
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -212,13 +221,13 @@ CacheStorage::Has(const nsAString& aKey, ErrorResult& aRv)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
|
||||
if (mFailedActor) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
if (NS_WARN_IF(NS_FAILED(mStatus))) {
|
||||
aRv.Throw(mStatus);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -237,13 +246,13 @@ CacheStorage::Open(const nsAString& aKey, ErrorResult& aRv)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
|
||||
if (mFailedActor) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
if (NS_WARN_IF(NS_FAILED(mStatus))) {
|
||||
aRv.Throw(mStatus);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -262,13 +271,13 @@ CacheStorage::Delete(const nsAString& aKey, ErrorResult& aRv)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
|
||||
if (mFailedActor) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
if (NS_WARN_IF(NS_FAILED(mStatus))) {
|
||||
aRv.Throw(mStatus);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -287,13 +296,13 @@ CacheStorage::Keys(ErrorResult& aRv)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
|
||||
if (mFailedActor) {
|
||||
aRv.Throw(NS_ERROR_UNEXPECTED);
|
||||
if (NS_WARN_IF(NS_FAILED(mStatus))) {
|
||||
aRv.Throw(mStatus);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsRefPtr<Promise> promise = Promise::Create(mGlobal, aRv);
|
||||
if (!promise) {
|
||||
if (NS_WARN_IF(!promise)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -314,6 +323,30 @@ CacheStorage::PrefEnabled(JSContext* aCx, JSObject* aObj)
|
||||
return Cache::PrefEnabled(aCx, aObj);
|
||||
}
|
||||
|
||||
// static
|
||||
already_AddRefed<CacheStorage>
|
||||
CacheStorage::Constructor(const GlobalObject& aGlobal,
|
||||
CacheStorageNamespace aNamespace,
|
||||
nsIPrincipal* aPrincipal, ErrorResult& aRv)
|
||||
{
|
||||
if (NS_WARN_IF(!NS_IsMainThread())) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// TODO: remove Namespace in favor of CacheStorageNamespace
|
||||
static_assert(DEFAULT_NAMESPACE == (uint32_t)CacheStorageNamespace::Content,
|
||||
"Default namespace should match webidl Content enum");
|
||||
static_assert(CHROME_ONLY_NAMESPACE == (uint32_t)CacheStorageNamespace::Chrome,
|
||||
"Chrome namespace should match webidl Chrome enum");
|
||||
static_assert(NUMBER_OF_NAMESPACES == (uint32_t)CacheStorageNamespace::EndGuard_,
|
||||
"Number of namespace should match webidl endguard enum");
|
||||
|
||||
Namespace ns = static_cast<Namespace>(aNamespace);
|
||||
nsCOMPtr<nsIGlobalObject> global = do_QueryInterface(aGlobal.GetAsSupports());
|
||||
return CreateOnMainThread(ns, global, aPrincipal, aRv);
|
||||
}
|
||||
|
||||
nsISupports*
|
||||
CacheStorage::GetParentObject() const
|
||||
{
|
||||
@@ -362,9 +395,9 @@ void
|
||||
CacheStorage::ActorFailed()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
MOZ_ASSERT(!mFailedActor);
|
||||
MOZ_ASSERT(!NS_FAILED(mStatus));
|
||||
|
||||
mFailedActor = true;
|
||||
mStatus = NS_ERROR_UNEXPECTED;
|
||||
mFeature = nullptr;
|
||||
|
||||
for (uint32_t i = 0; i < mPendingRequests.Length(); ++i) {
|
||||
@@ -413,9 +446,9 @@ CacheStorage::~CacheStorage()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorage);
|
||||
if (mActor) {
|
||||
mActor->StartDestroy();
|
||||
// DestroyInternal() is called synchronously by StartDestroy(). So we
|
||||
// should have already cleared the mActor.
|
||||
mActor->StartDestroyFromListener();
|
||||
// DestroyInternal() is called synchronously by StartDestroyFromListener().
|
||||
// So we should have already cleared the mActor.
|
||||
MOZ_ASSERT(!mActor);
|
||||
}
|
||||
}
|
||||
@@ -434,11 +467,11 @@ CacheStorage::MaybeRunPendingRequests()
|
||||
if (entry->mRequest) {
|
||||
args.Add(entry->mRequest, IgnoreBody, IgnoreInvalidScheme, rv);
|
||||
}
|
||||
if (rv.Failed()) {
|
||||
if (NS_WARN_IF(rv.Failed())) {
|
||||
entry->mPromise->MaybeReject(rv);
|
||||
continue;
|
||||
}
|
||||
mActor->ExecuteOp(mGlobal, entry->mPromise, args.SendAsOpArgs());
|
||||
mActor->ExecuteOp(mGlobal, entry->mPromise, this, args.SendAsOpArgs());
|
||||
}
|
||||
mPendingRequests.Clear();
|
||||
}
|
||||
|
||||
Vendored
+8
-2
@@ -7,7 +7,6 @@
|
||||
#ifndef mozilla_dom_cache_CacheStorage_h
|
||||
#define mozilla_dom_cache_CacheStorage_h
|
||||
|
||||
#include "mozilla/dom/CacheBinding.h"
|
||||
#include "mozilla/dom/cache/Types.h"
|
||||
#include "mozilla/dom/cache/TypeUtils.h"
|
||||
#include "nsAutoPtr.h"
|
||||
@@ -29,6 +28,7 @@ namespace ipc {
|
||||
|
||||
namespace dom {
|
||||
|
||||
enum class CacheStorageNamespace : uint32_t;
|
||||
class Promise;
|
||||
|
||||
namespace workers {
|
||||
@@ -64,6 +64,11 @@ public:
|
||||
already_AddRefed<Promise> Delete(const nsAString& aKey, ErrorResult& aRv);
|
||||
already_AddRefed<Promise> Keys(ErrorResult& aRv);
|
||||
|
||||
// chrome-only webidl interface methods
|
||||
static already_AddRefed<CacheStorage>
|
||||
Constructor(const GlobalObject& aGlobal, CacheStorageNamespace aNamespace,
|
||||
nsIPrincipal* aPrincipal, ErrorResult& aRv);
|
||||
|
||||
// binding methods
|
||||
static bool PrefEnabled(JSContext* aCx, JSObject* aObj);
|
||||
|
||||
@@ -89,6 +94,7 @@ public:
|
||||
private:
|
||||
CacheStorage(Namespace aNamespace, nsIGlobalObject* aGlobal,
|
||||
const mozilla::ipc::PrincipalInfo& aPrincipalInfo, Feature* aFeature);
|
||||
explicit CacheStorage(nsresult aFailureResult);
|
||||
~CacheStorage();
|
||||
|
||||
void MaybeRunPendingRequests();
|
||||
@@ -104,7 +110,7 @@ private:
|
||||
struct Entry;
|
||||
nsTArray<nsAutoPtr<Entry>> mPendingRequests;
|
||||
|
||||
bool mFailedActor;
|
||||
nsresult mStatus;
|
||||
|
||||
public:
|
||||
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
||||
|
||||
Vendored
+27
-12
@@ -25,6 +25,7 @@ DeallocPCacheStorageChild(PCacheStorageChild* aActor)
|
||||
CacheStorageChild::CacheStorageChild(CacheStorage* aListener, Feature* aFeature)
|
||||
: mListener(aListener)
|
||||
, mNumChildActors(0)
|
||||
, mDelayedDestroy(false)
|
||||
{
|
||||
MOZ_COUNT_CTOR(cache::CacheStorageChild);
|
||||
MOZ_ASSERT(mListener);
|
||||
@@ -49,11 +50,24 @@ CacheStorageChild::ClearListener()
|
||||
|
||||
void
|
||||
CacheStorageChild::ExecuteOp(nsIGlobalObject* aGlobal, Promise* aPromise,
|
||||
const CacheOpArgs& aArgs)
|
||||
nsISupports* aParent, const CacheOpArgs& aArgs)
|
||||
{
|
||||
mNumChildActors += 1;
|
||||
unused << SendPCacheOpConstructor(
|
||||
new CacheOpChild(GetFeature(), aGlobal, aPromise), aArgs);
|
||||
new CacheOpChild(GetFeature(), aGlobal, aParent, aPromise), aArgs);
|
||||
}
|
||||
|
||||
void
|
||||
CacheStorageChild::StartDestroyFromListener()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorageChild);
|
||||
|
||||
// The listener should be held alive by any async operations, so if it
|
||||
// is going away then there must not be any child actors. This in turn
|
||||
// ensures that StartDestroy() will not trigger the delayed path.
|
||||
MOZ_ASSERT(!mNumChildActors);
|
||||
|
||||
StartDestroy();
|
||||
}
|
||||
|
||||
void
|
||||
@@ -61,6 +75,15 @@ CacheStorageChild::StartDestroy()
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(CacheStorageChild);
|
||||
|
||||
// If we have outstanding child actors, then don't destroy ourself yet.
|
||||
// The child actors should be short lived and we should allow them to complete
|
||||
// if possible. NoteDeletedActor() will call back into this Shutdown()
|
||||
// method when the last child actor is gone.
|
||||
if (mNumChildActors) {
|
||||
mDelayedDestroy = true;
|
||||
return;
|
||||
}
|
||||
|
||||
nsRefPtr<CacheStorage> listener = mListener;
|
||||
|
||||
// StartDestroy() can get called from either CacheStorage or the Feature.
|
||||
@@ -75,14 +98,6 @@ CacheStorageChild::StartDestroy()
|
||||
// CacheStorage listener should call ClearListener() in DestroyInternal()
|
||||
MOZ_ASSERT(!mListener);
|
||||
|
||||
// If we have outstanding child actors, then don't destroy ourself yet.
|
||||
// The child actors should be short lived and we should allow them to complete
|
||||
// if possible. SendTeardown() will be called when the count drops to zero
|
||||
// in NoteDeletedActor().
|
||||
if (mNumChildActors) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Start actor destruction from parent process
|
||||
unused << SendTeardown();
|
||||
}
|
||||
@@ -121,8 +136,8 @@ CacheStorageChild::NoteDeletedActor()
|
||||
{
|
||||
MOZ_ASSERT(mNumChildActors);
|
||||
mNumChildActors -= 1;
|
||||
if (!mNumChildActors && !mListener) {
|
||||
unused << SendTeardown();
|
||||
if (!mNumChildActors && mDelayedDestroy) {
|
||||
StartDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Vendored
+12
-9
@@ -33,22 +33,24 @@ public:
|
||||
~CacheStorageChild();
|
||||
|
||||
// Must be called by the associated CacheStorage listener in its
|
||||
// ActorDestroy() method. Also, CacheStorage must call SendDestroy() on the
|
||||
// actor in its destructor to trigger ActorDestroy() if it has not been
|
||||
// called yet.
|
||||
// DestroyInternal() method. Also, CacheStorage must call
|
||||
// SendDestroyFromListener() on the actor in its destructor to trigger
|
||||
// ActorDestroy() if it has not been called yet.
|
||||
void ClearListener();
|
||||
|
||||
void
|
||||
ExecuteOp(nsIGlobalObject* aGlobal, Promise* aPromise,
|
||||
const CacheOpArgs& aArgs);
|
||||
nsISupports* aParent, const CacheOpArgs& aArgs);
|
||||
|
||||
// ActorChild methods
|
||||
|
||||
// Synchronously call ActorDestroy on our CacheStorage listener and then start
|
||||
// the actor destruction asynchronously from the parent-side.
|
||||
virtual void StartDestroy() override;
|
||||
// Our parent Listener object has gone out of scope and is being destroyed.
|
||||
void StartDestroyFromListener();
|
||||
|
||||
private:
|
||||
// ActorChild methods
|
||||
|
||||
// Feature is trying to destroy due to worker shutdown.
|
||||
virtual void StartDestroy() override;
|
||||
|
||||
// PCacheStorageChild methods
|
||||
virtual void ActorDestroy(ActorDestroyReason aReason) override;
|
||||
|
||||
@@ -67,6 +69,7 @@ private:
|
||||
// destroyed.
|
||||
CacheStorage* MOZ_NON_OWNING_REF mListener;
|
||||
uint32_t mNumChildActors;
|
||||
bool mDelayedDestroy;
|
||||
|
||||
NS_DECL_OWNINGTHREAD
|
||||
};
|
||||
|
||||
Vendored
+1
-1
@@ -100,7 +100,7 @@ CacheStorageParent::RecvPCacheOpConstructor(PCacheOpParent* aActor,
|
||||
return true;
|
||||
}
|
||||
|
||||
if (NS_FAILED(mVerifiedStatus)) {
|
||||
if (NS_WARN_IF(NS_FAILED(mVerifiedStatus))) {
|
||||
unused << CacheOpParent::Send__delete__(actor, ErrorResult(mVerifiedStatus),
|
||||
void_t());
|
||||
return true;
|
||||
|
||||
Vendored
+2
-2
@@ -13,7 +13,7 @@ namespace mozilla {
|
||||
namespace dom {
|
||||
namespace cache {
|
||||
|
||||
using mozilla::dom::workers::Running;
|
||||
using mozilla::dom::workers::Canceling;
|
||||
using mozilla::dom::workers::Status;
|
||||
using mozilla::dom::workers::WorkerPrivate;
|
||||
|
||||
@@ -73,7 +73,7 @@ Feature::Notify(JSContext* aCx, Status aStatus)
|
||||
{
|
||||
NS_ASSERT_OWNINGTHREAD(Feature);
|
||||
|
||||
if (aStatus <= Running || mNotified) {
|
||||
if (aStatus < Canceling || mNotified) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Vendored
+3
-3
@@ -1755,7 +1755,7 @@ Manager::ExecuteCacheOp(Listener* aListener, CacheId aCacheId,
|
||||
MOZ_ASSERT(aListener);
|
||||
MOZ_ASSERT(aOpArgs.type() != CacheOpArgs::TCachePutAllArgs);
|
||||
|
||||
if (mState == Closing) {
|
||||
if (NS_WARN_IF(mState == Closing)) {
|
||||
aListener->OnOpComplete(ErrorResult(NS_ERROR_FAILURE), void_t());
|
||||
return;
|
||||
}
|
||||
@@ -1799,7 +1799,7 @@ Manager::ExecuteStorageOp(Listener* aListener, Namespace aNamespace,
|
||||
NS_ASSERT_OWNINGTHREAD(Manager);
|
||||
MOZ_ASSERT(aListener);
|
||||
|
||||
if (mState == Closing) {
|
||||
if (NS_WARN_IF(mState == Closing)) {
|
||||
aListener->OnOpComplete(ErrorResult(NS_ERROR_FAILURE), void_t());
|
||||
return;
|
||||
}
|
||||
@@ -1848,7 +1848,7 @@ Manager::ExecutePutAll(Listener* aListener, CacheId aCacheId,
|
||||
NS_ASSERT_OWNINGTHREAD(Manager);
|
||||
MOZ_ASSERT(aListener);
|
||||
|
||||
if (mState == Closing) {
|
||||
if (NS_WARN_IF(mState == Closing)) {
|
||||
aListener->OnOpComplete(ErrorResult(NS_ERROR_FAILURE), CachePutAllResult());
|
||||
return;
|
||||
}
|
||||
|
||||
Vendored
+4
@@ -94,3 +94,7 @@ FINAL_LIBRARY = 'xul'
|
||||
MOCHITEST_MANIFESTS += [
|
||||
'test/mochitest/mochitest.ini',
|
||||
]
|
||||
|
||||
MOCHITEST_CHROME_MANIFESTS += [
|
||||
'test/mochitest/chrome.ini',
|
||||
]
|
||||
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
[test_chrome_constructor.html]
|
||||
@@ -0,0 +1,43 @@
|
||||
<!-- Any copyright is dedicated to the Public Domain.
|
||||
- http://creativecommons.org/publicdomain/zero/1.0/ -->
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<head>
|
||||
<title>Validate Interfaces Exposed to Workers</title>
|
||||
<script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
||||
</head>
|
||||
<body>
|
||||
<script class="testbody" type="text/javascript">
|
||||
var Cu = Components.utils;
|
||||
Cu.import('resource://gre/modules/Services.jsm');
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
// attach to a different origin's CacheStorage
|
||||
var url = 'http://example.com/';
|
||||
var uri = Services.io.newURI(url, null, null);
|
||||
var principal = Services.scriptSecurityManager.getNoAppCodebasePrincipal(uri);
|
||||
var storage = new CacheStorage('content', principal);
|
||||
|
||||
// verify we can use the other origin's CacheStorage as normal
|
||||
var req = new Request('http://example.com/index.html');
|
||||
var res = new Response('hello world');
|
||||
var cache;
|
||||
storage.open('foo').then(function(c) {
|
||||
cache = c;
|
||||
ok(cache, 'storage should create cache');
|
||||
return cache.put(req, res.clone());
|
||||
}).then(function() {
|
||||
return cache.match(req);
|
||||
}).then(function(foundResponse) {
|
||||
return Promise.all([res.text(), foundResponse.text()]);
|
||||
}).then(function(results) {
|
||||
is(results[0], results[1], 'cache should contain response');
|
||||
return storage.delete('foo');
|
||||
}).then(function(deleted) {
|
||||
ok(deleted, 'storage should delete cache');
|
||||
SimpleTest.finish();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,3 +1,19 @@
|
||||
onfetch = function(e) {
|
||||
if (e.request.url.indexOf("Referer") >= 0) {
|
||||
// Silently rewrite the referrer so the referrer test passes since the
|
||||
// document/worker isn't aware of this service worker.
|
||||
var url = e.request.url.substring(0, e.request.url.indexOf('?'));
|
||||
url += '?headers=' + ({ 'Referer': self.location.href }).toSource();
|
||||
|
||||
e.respondWith(fetch(url, {
|
||||
method: e.request.method,
|
||||
headers: e.request.headers,
|
||||
body: e.request.body,
|
||||
mode: e.request.mode,
|
||||
credentials: e.request.credentials,
|
||||
cache: e.request.cache,
|
||||
}));
|
||||
return;
|
||||
}
|
||||
e.respondWith(fetch(e.request));
|
||||
};
|
||||
|
||||
+22
-22
@@ -13,32 +13,32 @@
|
||||
[Exposed=(Window,Worker),
|
||||
Func="mozilla::dom::cache::Cache::PrefEnabled"]
|
||||
interface Cache {
|
||||
[Throws]
|
||||
Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
[Throws]
|
||||
Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
[Throws]
|
||||
Promise<void> add(RequestInfo request);
|
||||
[Throws]
|
||||
Promise<void> addAll(sequence<RequestInfo> requests);
|
||||
[Throws]
|
||||
Promise<void> put(RequestInfo request, Response response);
|
||||
[Throws]
|
||||
Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
|
||||
[Throws]
|
||||
Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
[NewObject]
|
||||
Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
[NewObject]
|
||||
Promise<sequence<Response>> matchAll(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
[NewObject]
|
||||
Promise<void> add(RequestInfo request);
|
||||
[NewObject]
|
||||
Promise<void> addAll(sequence<RequestInfo> requests);
|
||||
[NewObject]
|
||||
Promise<void> put(RequestInfo request, Response response);
|
||||
[NewObject]
|
||||
Promise<boolean> delete(RequestInfo request, optional CacheQueryOptions options);
|
||||
[NewObject]
|
||||
Promise<sequence<Request>> keys(optional RequestInfo request, optional CacheQueryOptions options);
|
||||
};
|
||||
|
||||
dictionary CacheQueryOptions {
|
||||
boolean ignoreSearch = false;
|
||||
boolean ignoreMethod = false;
|
||||
boolean ignoreVary = false;
|
||||
DOMString cacheName;
|
||||
boolean ignoreSearch = false;
|
||||
boolean ignoreMethod = false;
|
||||
boolean ignoreVary = false;
|
||||
DOMString cacheName;
|
||||
};
|
||||
|
||||
dictionary CacheBatchOperation {
|
||||
DOMString type;
|
||||
Request request;
|
||||
Response response;
|
||||
CacheQueryOptions options;
|
||||
DOMString type;
|
||||
Request request;
|
||||
Response response;
|
||||
CacheQueryOptions options;
|
||||
};
|
||||
|
||||
@@ -10,17 +10,25 @@
|
||||
|
||||
// https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#cache-storage
|
||||
|
||||
interface Principal;
|
||||
|
||||
[Exposed=(Window,Worker),
|
||||
ChromeConstructor(CacheStorageNamespace namespace, Principal principal),
|
||||
Func="mozilla::dom::cache::CacheStorage::PrefEnabled"]
|
||||
interface CacheStorage {
|
||||
[Throws]
|
||||
Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
[Throws]
|
||||
Promise<boolean> has(DOMString cacheName);
|
||||
[Throws]
|
||||
Promise<Cache> open(DOMString cacheName);
|
||||
[Throws]
|
||||
Promise<boolean> delete(DOMString cacheName);
|
||||
[Throws]
|
||||
Promise<sequence<DOMString>> keys();
|
||||
[NewObject]
|
||||
Promise<Response> match(RequestInfo request, optional CacheQueryOptions options);
|
||||
[NewObject]
|
||||
Promise<boolean> has(DOMString cacheName);
|
||||
[NewObject]
|
||||
Promise<Cache> open(DOMString cacheName);
|
||||
[NewObject]
|
||||
Promise<boolean> delete(DOMString cacheName);
|
||||
[NewObject]
|
||||
Promise<sequence<DOMString>> keys();
|
||||
};
|
||||
|
||||
// chrome-only, gecko specific extension
|
||||
enum CacheStorageNamespace {
|
||||
"content", "chrome"
|
||||
};
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "nsIContentPolicy.h"
|
||||
#include "nsIContentSecurityPolicy.h"
|
||||
#include "nsIHttpChannel.h"
|
||||
#include "nsIHttpChannelInternal.h"
|
||||
#include "nsIInputStreamPump.h"
|
||||
#include "nsIIOService.h"
|
||||
#include "nsIProtocolHandler.h"
|
||||
@@ -860,6 +861,16 @@ private:
|
||||
return rv;
|
||||
}
|
||||
|
||||
// If we are loading a script for a ServiceWorker then we must not
|
||||
// try to intercept it. If the interception matches the current
|
||||
// ServiceWorker's scope then we could deadlock the load.
|
||||
if (mWorkerPrivate->IsServiceWorker()) {
|
||||
nsCOMPtr<nsIHttpChannelInternal> internal = do_QueryInterface(channel);
|
||||
if (internal) {
|
||||
internal->ForceNoIntercept();
|
||||
}
|
||||
}
|
||||
|
||||
if (loadInfo.mCacheStatus != ScriptLoadInfo::ToBeCached) {
|
||||
rv = channel->AsyncOpen(loader, indexSupports);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
@@ -1097,7 +1108,7 @@ private:
|
||||
mWorkerPrivate->SetBaseURI(finalURI);
|
||||
}
|
||||
|
||||
nsIPrincipal* principal = mWorkerPrivate->GetPrincipal();
|
||||
DebugOnly<nsIPrincipal*> principal = mWorkerPrivate->GetPrincipal();
|
||||
MOZ_ASSERT(principal);
|
||||
nsILoadGroup* loadGroup = mWorkerPrivate->GetLoadGroup();
|
||||
MOZ_ASSERT(loadGroup);
|
||||
|
||||
@@ -3184,6 +3184,7 @@ class FetchEventRunnable : public WorkerRunnable
|
||||
RequestCredentials mRequestCredentials;
|
||||
nsContentPolicyType mContentPolicyType;
|
||||
nsCOMPtr<nsIInputStream> mUploadStream;
|
||||
nsCString mReferrer;
|
||||
public:
|
||||
FetchEventRunnable(WorkerPrivate* aWorkerPrivate,
|
||||
nsMainThreadPtrHandle<nsIInterceptedChannel>& aChannel,
|
||||
@@ -3200,6 +3201,7 @@ public:
|
||||
// send credentials to same-origin websites unless explicitly forbidden.
|
||||
, mRequestCredentials(RequestCredentials::Same_origin)
|
||||
, mContentPolicyType(nsIContentPolicy::TYPE_INVALID)
|
||||
, mReferrer(kFETCH_CLIENT_REFERRER_STR)
|
||||
{
|
||||
MOZ_ASSERT(aWorkerPrivate);
|
||||
}
|
||||
@@ -3239,6 +3241,15 @@ public:
|
||||
|
||||
mContentPolicyType = loadInfo->InternalContentPolicyType();
|
||||
|
||||
nsCOMPtr<nsIURI> referrerURI;
|
||||
rv = NS_GetReferrerFromChannel(channel, getter_AddRefs(referrerURI));
|
||||
// We can't bail on failure since certain non-http channels like JAR
|
||||
// channels are intercepted but don't have referrers.
|
||||
if (NS_SUCCEEDED(rv) && referrerURI) {
|
||||
rv = referrerURI->GetSpec(mReferrer);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIHttpChannel> httpChannel = do_QueryInterface(channel);
|
||||
if (httpChannel) {
|
||||
rv = httpChannel->GetRequestMethod(mMethod);
|
||||
@@ -3368,6 +3379,7 @@ private:
|
||||
internalReq->SetCreatedByFetchEvent();
|
||||
|
||||
internalReq->SetBody(mUploadStream);
|
||||
internalReq->SetReferrer(NS_ConvertUTF8toUTF16(mReferrer));
|
||||
|
||||
request->SetContentPolicyType(mContentPolicyType);
|
||||
|
||||
|
||||
@@ -7,17 +7,47 @@ import sys
|
||||
import time
|
||||
import warnings
|
||||
|
||||
# psutil will raise NotImplementedError if the platform is not supported.
|
||||
try:
|
||||
import psutil
|
||||
except Exception:
|
||||
psutil = None
|
||||
|
||||
from collections import (
|
||||
OrderedDict,
|
||||
namedtuple,
|
||||
)
|
||||
|
||||
class PsutilStub(object):
|
||||
def __init__(self):
|
||||
self.sswap = namedtuple('sswap', ['total', 'used', 'free', 'percent', 'sin',
|
||||
'sout'])
|
||||
self.sdiskio = namedtuple('sdiskio', ['read_count', 'write_count',
|
||||
'read_bytes', 'write_bytes',
|
||||
'read_time', 'write_time'])
|
||||
self.pcputimes = namedtuple('pcputimes', ['user', 'system'])
|
||||
self.svmem = namedtuple(
|
||||
'svmem', ['total', 'available', 'percent', 'used', 'free',
|
||||
'active', 'inactive', 'buffers', 'cached'])
|
||||
|
||||
def cpu_percent(self, a, b):
|
||||
return [0]
|
||||
def cpu_times(self, percpu):
|
||||
if percpu:
|
||||
return [self.pcputimes(0, 0)]
|
||||
else:
|
||||
return self.pcputimes(0, 0)
|
||||
def disk_io_counters(self):
|
||||
return self.sdiskio(0, 0, 0, 0, 0, 0)
|
||||
def swap_memory(self):
|
||||
return self.sswap(0, 0, 0, 0, 0, 0)
|
||||
def virtual_memory(self):
|
||||
return self.svmem(0, 0, 0, 0, 0, 0, 0, 0, 0)
|
||||
|
||||
# psutil will raise NotImplementedError if the platform is not supported.
|
||||
try:
|
||||
import psutil
|
||||
except Exception:
|
||||
try:
|
||||
# The PsutilStub should get us time intervals, at least
|
||||
psutil = PsutilStub()
|
||||
except Exception:
|
||||
psutil = None
|
||||
|
||||
from contextlib import contextmanager
|
||||
|
||||
def get_disk_io_counters():
|
||||
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
[canvas_complexshapes_arcto_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/building-paths/canvas_complexshapes_arcto_001-ref.htm
|
||||
expected: FAIL
|
||||
|
||||
+5
-7
@@ -1,10 +1,8 @@
|
||||
[canvas_complexshapes_beziercurveto_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/building-paths/canvas_complexshapes_beziercurveto_001-ref.htm
|
||||
expected:
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): PASS
|
||||
FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
[canvas_compositing_globalcompositeoperation_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/compositing/canvas_compositing_globalcompositeoperation_001-ref.htm
|
||||
expected: FAIL
|
||||
|
||||
-5
@@ -7,9 +7,4 @@
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
-5
@@ -7,9 +7,4 @@
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
-5
@@ -7,9 +7,4 @@
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
+1
-5
@@ -2,10 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.interpolate.overlap]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.cone.behind]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.cone.beside]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
[2d.gradient.radial.cone.front.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.cone.front]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.cone.shape2]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
[2d.gradient.radial.cone.top.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.cone.top]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.equal]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
[2d.gradient.radial.inside2.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.inside2]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
[2d.gradient.radial.inside3.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.inside3]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
[2d.gradient.radial.outside1.html]
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.outside1]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
+1
-2
@@ -3,6 +3,5 @@
|
||||
[Canvas test: 2d.gradient.radial.outside3]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.touch1]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.gradient.radial.touch3]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
[2d.line.cap.closed.html]
|
||||
type: testharness
|
||||
[Line caps are not drawn at the corners of an unclosed rectangle]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
[2d.line.join.parallel.html]
|
||||
type: testharness
|
||||
[Line joins are drawn at 180-degree joins]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
[canvas_linestyles_linecap_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/line-styles/canvas_linestyles_linecap_001-ref.htm
|
||||
expected: FAIL
|
||||
|
||||
+4
-10
@@ -2,14 +2,8 @@
|
||||
type: testharness
|
||||
[arc() with lineWidth > 2*radius is drawn sensibly]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
type: testharness
|
||||
[arc() from 0 to pi does not draw anything in the wrong half]
|
||||
expected:
|
||||
if (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
@@ -2,14 +2,8 @@
|
||||
type: testharness
|
||||
[arc() from 0 to -pi/2 does not draw anything in the wrong quadrant]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
+1
-2
@@ -3,6 +3,5 @@
|
||||
[arcTo() curves in the right kind of shape]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
|
||||
+1
-2
@@ -3,6 +3,5 @@
|
||||
[arcTo() curves in the right kind of shape]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[If there is no subpath, the first control point is added (and nothing is drawn up to it)]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[If there is no subpath, the first control point is added]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
+2
-16
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.path.rect.selfintersect]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.path.rect.zero.3]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,20 +2,6 @@
|
||||
type: testharness
|
||||
[Canvas test: 2d.path.rect.zero.6]
|
||||
expected:
|
||||
if not debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): PASS
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
type: testharness
|
||||
[Zero-length line segments from arcTo and arc are removed before stroking]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
+6
-3
@@ -2,7 +2,10 @@
|
||||
type: testharness
|
||||
[Zero-length line segments from closed paths are removed before stroking]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
+6
-3
@@ -2,7 +2,10 @@
|
||||
type: testharness
|
||||
[Zero-length line segments from quadraticCurveTo and bezierCurveTo are removed before stroking]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
type: testharness
|
||||
[Zero-length line segments from lineTo are removed before stroking]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
type: testharness
|
||||
[Zero-length line segments from rect and strokeRect are removed before stroking]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): PASS
|
||||
FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "mac") and (version == "OS X 10.10.2") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,10 +2,6 @@
|
||||
type: testharness
|
||||
[Stroke line widths are scaled by the current transformation matrix]
|
||||
expected:
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if not debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): FAIL
|
||||
|
||||
|
||||
@@ -2,8 +2,6 @@
|
||||
type: testharness
|
||||
[Shadows are drawn if shadowBlur is set]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
|
||||
@@ -2,7 +2,5 @@
|
||||
type: testharness
|
||||
[Shadows are drawn if shadowOffsetX is set]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -2,7 +2,5 @@
|
||||
type: testharness
|
||||
[Shadows are drawn if shadowOffsetY is set]
|
||||
expected:
|
||||
if (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
if not debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): FAIL
|
||||
if (os == "mac"): FAIL
|
||||
if os == "mac": FAIL
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
[canvas_state_restore_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/the-canvas-state/canvas_state_restore_001-ref.htm
|
||||
expected: FAIL
|
||||
|
||||
-2
@@ -1,5 +1,3 @@
|
||||
[canvas_transformations_scale_001.htm]
|
||||
type: reftest
|
||||
reftype: ==
|
||||
refurl: /2dcontext/transformations/canvas_transformations_scale_001-ref.htm
|
||||
expected: FAIL
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
[EventObject.after.dispatchEvent.html]
|
||||
type: testharness
|
||||
[Test Description: As the final step of the event dispatch, the implementation must reset the event object\'s default-action-prevention state. ]
|
||||
[Test Description: As the final step of the event dispatch, the implementation must reset the event object's default-action-prevention state. ]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
[EventObject.after.dispatchEvent.html]
|
||||
type: testharness
|
||||
[Test Description: As the final step of the event dispatch, the implementation must reset the event object\'s default-action-prevention state. ]
|
||||
[Test Description: As the final step of the event dispatch, the implementation must reset the event object's default-action-prevention state. ]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
[dispatchEvent.DISPATCH_REQUEST_ERR.html]
|
||||
type: testharness
|
||||
[Test Description: dispatchEvent() raises DISPATCH_REQUEST_ERR EventException if the Event object is already being dispatched.]
|
||||
expected: FAIL
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
[dispatchEvent.NOT_SUPPORTED_ERR.html]
|
||||
type: testharness
|
||||
[Test Description: dispatchEvent - DOMException NOT_SUPPORTED_ERR raises if the Event object has not been created using DocumentEvent.createEvent().]
|
||||
expected: FAIL
|
||||
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
[dispatchEvent.UNSPECIFIED_EVENT_TYPE_ERR.html]
|
||||
type: testharness
|
||||
[Test Description: dispatchEvent - EventException UNSPECIFIED_EVENT_TYPE_ERR raises if the Event.type was not specified by initializing the event before dispatchEvent was called.]
|
||||
expected: FAIL
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
[Blob interface object]
|
||||
expected: FAIL
|
||||
|
||||
[no-argument Blob constructor without \'new\']
|
||||
[no-argument Blob constructor without 'new']
|
||||
expected: FAIL
|
||||
|
||||
[A plain object should be treated as a sequence for the blobParts argument.]
|
||||
@@ -15,7 +15,7 @@
|
||||
[The length getter should be invoked and any exceptions should be propagated.]
|
||||
expected: FAIL
|
||||
|
||||
[A platform object that supports indexed properties should be treated as a sequence for the blobParts argument (overwritten \'length\'.)]
|
||||
[A platform object that supports indexed properties should be treated as a sequence for the blobParts argument (overwritten 'length'.)]
|
||||
expected: FAIL
|
||||
|
||||
[ToUint32 should be applied to the length and any exceptions should be propagated.]
|
||||
@@ -42,7 +42,7 @@
|
||||
[Passing a platform array object as the blobParts array should work (MessagePort[\]).]
|
||||
expected: FAIL
|
||||
|
||||
[The \'endings\' property should be ignored.]
|
||||
[The 'endings' property should be ignored.]
|
||||
expected: FAIL
|
||||
|
||||
[Passing object "/regex/" (index 4) for options should use the defaults.]
|
||||
@@ -51,7 +51,7 @@
|
||||
[Passing object "/regex/" (index 4) for options should use the defaults (with newlines).]
|
||||
expected: FAIL
|
||||
|
||||
[Newlines should not change when endings is \'native\'.]
|
||||
[Newlines should not change when endings is 'native'.]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "A"]
|
||||
@@ -60,22 +60,22 @@
|
||||
[Blob with type "TEXT/HTML"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "\xc3\xa5"]
|
||||
[Blob with type "å"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "\xf0\x90\x91\xbe"]
|
||||
[Blob with type "𐑾"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "\\timage/gif\\t"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "image/gif;\x7f"]
|
||||
[Blob with type "image/gif;"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "\xc4\xb0mage/gif"]
|
||||
[Blob with type "İmage/gif"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "\xc4\xb1mage/gif"]
|
||||
[Blob with type "ımage/gif"]
|
||||
expected: FAIL
|
||||
|
||||
[Blob with type "image/gif\\0"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[Blob-slice.html]
|
||||
type: testharness
|
||||
[Invalid contentType ("\xc3\xbf")]
|
||||
[Invalid contentType ("ÿ")]
|
||||
expected: FAIL
|
||||
|
||||
[Invalid contentType ("te(xt/plain")]
|
||||
@@ -66,7 +66,7 @@
|
||||
[Invalid contentType ("te\\x1fxt/plain")]
|
||||
expected: FAIL
|
||||
|
||||
[Invalid contentType ("te\x7fxt/plain")]
|
||||
[Invalid contentType ("text/plain")]
|
||||
expected: FAIL
|
||||
|
||||
[Valid contentType ("TEXT/PLAIN")]
|
||||
|
||||
@@ -3,163 +3,20 @@
|
||||
[URL interface: operation createFor(Blob)]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: operation close()]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[File interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[File interface: attribute lastModifiedDate]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x99f5c4f0 (native @ 0x99fcc6a0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x99f5c4f0 (native @ 0x99fcc6a0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x7f7a0a9ac320 (native @ 0x7f7a0abfe7c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x7f7a0a9ac320 (native @ 0x7f7a0abfe7c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x12b21f560 (native @ 0x128d64c40)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x12b21f560 (native @ 0x128d64c40)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x1289ea740 (native @ 0x125765800)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x1289ea740 (native @ 0x125765800)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x123a75a60 (native @ 0x11d2b3700)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x123a75a60 (native @ 0x11d2b3700)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x139eadc0 (native @ 0x1391e3e0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x139eadc0 (native @ 0x1391e3e0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0xd397e20 (native @ 0xe560600)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0xd397e20 (native @ 0xe560600)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x14192400 (native @ 0x141ff7c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x14192400 (native @ 0x141ff7c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x9973a190 (native @ 0x985a2d80)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x9973a190 (native @ 0x985a2d80)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x7fd912b41040 (native @ 0x7fd91858bf40)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x7fd912b41040 (native @ 0x7fd91858bf40)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x122d33620 (native @ 0x12211ef40)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x122d33620 (native @ 0x12211ef40)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x1401c38c0 (native @ 0x141f18d00)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x1401c38c0 (native @ 0x141f18d00)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x135030260 (native @ 0x129fe72c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x135030260 (native @ 0x129fe72c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x123c94f0 (native @ 0xf8778c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x123c94f0 (native @ 0xf8778c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x190ec670 (native @ 0x12b8fce0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x190ec670 (native @ 0x12b8fce0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0xc4085e0 (native @ 0xc5012c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0xc4085e0 (native @ 0xc5012c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0xa046fd60 (native @ 0xa14d5700)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0xa046fd60 (native @ 0xa14d5700)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x7f72c92fe2c0 (native @ 0x7f72ced2a0c0)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x7f72c92fe2c0 (native @ 0x7f72ced2a0c0)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x11d70bee0 (native @ 0x120a3c440)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x11d70bee0 (native @ 0x120a3c440)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x12c0947c0 (native @ 0x12c4f6d40)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x12c0947c0 (native @ 0x12c4f6d40)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of [object Blob @ 0x125881260 (native @ 0x11603ca40)\]]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: [object Blob @ 0x125881260 (native @ 0x11603ca40)\] must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of new Blob(["TEST"\])]
|
||||
expected:
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
|
||||
[Blob interface: new Blob(["TEST"\]) must inherit property "close" with the proper type (3)]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: attribute isClosed]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: operation close()]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: new Blob(["TEST"\]) must inherit property "isClosed" with the proper type (2)]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: new Blob(["TEST"\]) must inherit property "close" with the proper type (4)]
|
||||
expected: FAIL
|
||||
|
||||
[Stringification of new File(["myFileBits"\], "myFileName")]
|
||||
expected:
|
||||
if debug and (os == "mac") and (version == "OS X 10.9") and (processor == "x86_64") and (bits == 64): FAIL
|
||||
[File interface object length]
|
||||
expected: FAIL
|
||||
|
||||
[Blob interface: new File(["myFileBits"\], "myFileName") must inherit property "isClosed" with the proper type (2)]
|
||||
expected: FAIL
|
||||
@@ -176,7 +33,7 @@
|
||||
[FileReaderSync interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[FileReaderSync interface: existence and properties of interface prototype object\'s "constructor" property]
|
||||
[FileReaderSync interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[FileReaderSync interface: operation readAsArrayBuffer(Blob)]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[url_createobjecturl_blob.html]
|
||||
type: testharness
|
||||
[Check if the Blob URI starts with \'blob\' using createFor()]
|
||||
[Check if the Blob URI starts with 'blob' using createFor()]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
[idbcursor_delete_index4.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBCursor.delete() - index - throw InvalidStateError caused by object store been deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
[idbcursor_delete_index5.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
[IDBCursor.delete() - index - throw InvalidStateError when the cursor is being iterated]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbcursor_delete_objectstore4.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBCursor.delete() - object store - throw InvalidStateError caused by object store been deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
[idbcursor_delete_objectstore5.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
[IDBCursor.delete() - object store - throw InvalidStateError when the cursor is being iterated]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbcursor_update_index4.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBCursor.update() - index - attempt to modify a record when object store been deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[idbcursor_update_index5.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbcursor_update_objectstore5.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBCursor.update() - object store - attempt to modify a record when object store been deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[idbcursor_update_objectstore6.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): TIMEOUT
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,7 +0,0 @@
|
||||
[idbfactory_open12.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
@@ -1,6 +0,0 @@
|
||||
[idbfactory_open2.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbindex_get6.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBIndex.get() - throw InvalidStateError when the index is deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[idbindex_get7.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbindex_getKey6.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBIndex.getKey() - throw InvalidStateError when the index is deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
[idbindex_getKey7.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbindex_openCursor.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBIndex.openCursor() - throw InvalidStateError when the index is deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[idbindex_openCursor2.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbindex_openKeyCursor2.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[IDBIndex.openKeyCursor() - throw InvalidStateError when the index is deleted]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[idbindex_openKeyCursor3.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
@@ -1,11 +1,5 @@
|
||||
[idbobjectstore_deleted.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "linux") and (version == "Ubuntu 12.04") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "mac") and (version == "OS X 10.6.8") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86_64") and (bits == 64): CRASH
|
||||
[Attempting to use deleted IDBObjectStore]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
[idbobjectstore_get.htm]
|
||||
type: testharness
|
||||
expected:
|
||||
if debug and (os == "win") and (version == "6.2.9200") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "5.1.2600") and (processor == "x86") and (bits == 32): CRASH
|
||||
if debug and (os == "win") and (version == "6.1.7601") and (processor == "x86") and (bits == 32): CRASH
|
||||
+1
-1
@@ -12,7 +12,7 @@
|
||||
[IDBCursorWithValue interface: existence and properties of interface prototype object]
|
||||
expected: FAIL
|
||||
|
||||
[IDBCursorWithValue interface: existence and properties of interface prototype object\'s "constructor" property]
|
||||
[IDBCursorWithValue interface: existence and properties of interface prototype object's "constructor" property]
|
||||
expected: FAIL
|
||||
|
||||
[IDBCursorWithValue interface: attribute value]
|
||||
@@ -1,5 +1,17 @@
|
||||
[data-uri.htm]
|
||||
type: testharness
|
||||
[XHR method GET with charset text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/plain (base64)]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/html]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/html;charset=UTF-8]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset image/png]
|
||||
expected: FAIL
|
||||
|
||||
@@ -18,15 +30,3 @@
|
||||
[XHR method UNICORN with charset text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/plain]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/plain (base64)]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/html]
|
||||
expected: FAIL
|
||||
|
||||
[XHR method GET with charset text/html;charset=UTF-8]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
[getresponseheader-chunked-trailer.htm]
|
||||
type: testharness
|
||||
[XMLHttpRequest: getResponseHeader() and HTTP trailer]
|
||||
expected: FAIL
|
||||
|
||||
@@ -1,68 +1,5 @@
|
||||
[interfaces.html]
|
||||
type: testharness
|
||||
[XMLHttpRequest interface: operation open(ByteString,DOMString,boolean,DOMString,DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[XMLHttpRequest interface: calling open(ByteString,DOMString,boolean,DOMString,DOMString) on new XMLHttpRequest() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[XMLHttpRequest interface: new XMLHttpRequest() must inherit property "statusText" with the proper type (16)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation delete(DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation get(DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation getAll(DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation has(DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation set(DOMString,Blob,DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: operation set(DOMString,DOMString)]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling delete(DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling get(DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling getAll(DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling has(DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling set(DOMString,Blob,DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling set(DOMString,DOMString) on new FormData() with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling delete(DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling get(DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling getAll(DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling has(DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling set(DOMString,Blob,DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[FormData interface: calling set(DOMString,DOMString) on new FormData(form) with too few arguments must throw TypeError]
|
||||
expected: FAIL
|
||||
|
||||
[XMLHttpRequest interface: operation open(ByteString,USVString,boolean,USVString,USVString)]
|
||||
expected: FAIL
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user