mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
cb3c4dda07
This patch does 2 things: . when SetBodyUsed() is called, the pump for the stream reading is activated. . Just because of the reading of the stream could end up executing JS code, we need to pass the JSContext in the correct state down to SetBodyUsed.
123 lines
3.5 KiB
C++
123 lines
3.5 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_dom_cache_Cache_h
|
|
#define mozilla_dom_cache_Cache_h
|
|
|
|
#include "mozilla/dom/cache/Types.h"
|
|
#include "mozilla/dom/cache/TypeUtils.h"
|
|
#include "nsCOMPtr.h"
|
|
#include "nsISupportsImpl.h"
|
|
#include "nsString.h"
|
|
#include "nsWrapperCache.h"
|
|
|
|
class nsIGlobalObject;
|
|
|
|
namespace mozilla {
|
|
|
|
class ErrorResult;
|
|
|
|
namespace dom {
|
|
|
|
class OwningRequestOrUSVString;
|
|
class Promise;
|
|
struct CacheQueryOptions;
|
|
class RequestOrUSVString;
|
|
class Response;
|
|
template<typename T> class Optional;
|
|
template<typename T> class Sequence;
|
|
enum class CallerType : uint32_t;
|
|
|
|
namespace cache {
|
|
|
|
class AutoChildOpArgs;
|
|
class CacheChild;
|
|
|
|
class Cache final : public nsISupports
|
|
, public nsWrapperCache
|
|
, public TypeUtils
|
|
{
|
|
public:
|
|
Cache(nsIGlobalObject* aGlobal, CacheChild* aActor);
|
|
|
|
// webidl interface methods
|
|
already_AddRefed<Promise>
|
|
Match(JSContext* aCx, const RequestOrUSVString& aRequest,
|
|
const CacheQueryOptions& aOptions, ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
MatchAll(JSContext* aCx, const Optional<RequestOrUSVString>& aRequest,
|
|
const CacheQueryOptions& aOptions, ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
Add(JSContext* aContext, const RequestOrUSVString& aRequest,
|
|
CallerType aCallerType, ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
AddAll(JSContext* aContext,
|
|
const Sequence<OwningRequestOrUSVString>& aRequests,
|
|
CallerType aCallerType, ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
Put(JSContext* aCx, const RequestOrUSVString& aRequest, Response& aResponse,
|
|
ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
Delete(JSContext* aCx, const RequestOrUSVString& aRequest,
|
|
const CacheQueryOptions& aOptions, ErrorResult& aRv);
|
|
already_AddRefed<Promise>
|
|
Keys(JSContext* aCx, const Optional<RequestOrUSVString>& aRequest,
|
|
const CacheQueryOptions& aParams, ErrorResult& aRv);
|
|
|
|
// binding methods
|
|
static bool PrefEnabled(JSContext* aCx, JSObject* aObj);
|
|
|
|
nsISupports* GetParentObject() const;
|
|
virtual JSObject* WrapObject(JSContext* aContext, JS::Handle<JSObject*> aGivenProto) override;
|
|
|
|
// Called when CacheChild actor is being destroyed
|
|
void DestroyInternal(CacheChild* aActor);
|
|
|
|
// TypeUtils methods
|
|
virtual nsIGlobalObject*
|
|
GetGlobalObject() const override;
|
|
|
|
#ifdef DEBUG
|
|
virtual void AssertOwningThread() const override;
|
|
#endif
|
|
|
|
virtual mozilla::ipc::PBackgroundChild*
|
|
GetIPCManager() override;
|
|
|
|
private:
|
|
class FetchHandler;
|
|
|
|
~Cache();
|
|
|
|
// Called when we're destroyed or CCed.
|
|
void DisconnectFromActor();
|
|
|
|
already_AddRefed<Promise>
|
|
ExecuteOp(AutoChildOpArgs& aOpArgs, ErrorResult& aRv);
|
|
|
|
already_AddRefed<Promise>
|
|
AddAll(const GlobalObject& aGlobal, nsTArray<RefPtr<Request>>&& aRequestList,
|
|
CallerType aCallerType, ErrorResult& aRv);
|
|
|
|
already_AddRefed<Promise>
|
|
PutAll(JSContext* aCx, const nsTArray<RefPtr<Request>>& aRequestList,
|
|
const nsTArray<RefPtr<Response>>& aResponseList,
|
|
ErrorResult& aRv);
|
|
|
|
nsCOMPtr<nsIGlobalObject> mGlobal;
|
|
CacheChild* mActor;
|
|
|
|
public:
|
|
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
|
|
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(Cache)
|
|
};
|
|
|
|
} // namespace cache
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_Cache_h
|