mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
40a8c122d3
Introduce these new blocking state values: const unsigned long STATE_COOKIES_BLOCKED_BY_PERMISSION = 0x10000000; const unsigned long STATE_COOKIES_BLOCKED_TRACKER = 0x20000000; const unsigned long STATE_COOKIES_BLOCKED_ALL = 0x40000000; const unsigned long STATE_COOKIES_BLOCKED_FOREIGN = 0x80000000;
104 lines
3.3 KiB
C++
104 lines
3.3 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set sw=2 ts=8 et 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_net_HttpBackgroundChannelParent_h
|
|
#define mozilla_net_HttpBackgroundChannelParent_h
|
|
|
|
#include "mozilla/net/PHttpBackgroundChannelParent.h"
|
|
#include "mozilla/Atomics.h"
|
|
#include "mozilla/Mutex.h"
|
|
#include "nsID.h"
|
|
#include "nsISupportsImpl.h"
|
|
|
|
class nsIEventTarget;
|
|
|
|
namespace mozilla {
|
|
namespace net {
|
|
|
|
class HttpChannelParent;
|
|
|
|
class HttpBackgroundChannelParent final : public PHttpBackgroundChannelParent
|
|
{
|
|
public:
|
|
explicit HttpBackgroundChannelParent();
|
|
|
|
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(HttpBackgroundChannelParent)
|
|
|
|
// Try to find associated HttpChannelParent with the same
|
|
// channel Id.
|
|
nsresult Init(const uint64_t& aChannelId);
|
|
|
|
// Callbacks for BackgroundChannelRegistrar to notify
|
|
// the associated HttpChannelParent is found.
|
|
void LinkToChannel(HttpChannelParent* aChannelParent);
|
|
|
|
// Callbacks for HttpChannelParent to close the background
|
|
// IPC channel.
|
|
void OnChannelClosed();
|
|
|
|
// To send OnStartRequestSend message over background channel.
|
|
bool OnStartRequestSent();
|
|
|
|
// To send OnTransportAndData message over background channel.
|
|
bool OnTransportAndData(const nsresult& aChannelStatus,
|
|
const nsresult& aTransportStatus,
|
|
const uint64_t& aOffset,
|
|
const uint32_t& aCount,
|
|
const nsCString& aData);
|
|
|
|
// To send OnStopRequest message over background channel.
|
|
bool OnStopRequest(const nsresult& aChannelStatus,
|
|
const ResourceTimingStruct& aTiming,
|
|
const nsHttpHeaderArray& aResponseTrailers);
|
|
|
|
// To send OnProgress message over background channel.
|
|
bool OnProgress(const int64_t& aProgress,
|
|
const int64_t& aProgressMax);
|
|
|
|
// To send OnStatus message over background channel.
|
|
bool OnStatus(const nsresult& aStatus);
|
|
|
|
// To send FlushedForDiversion and DivertMessages messages
|
|
// over background channel.
|
|
bool OnDiversion();
|
|
|
|
// To send NotifyTrackingProtectionDisabled message over background channel.
|
|
bool OnNotifyTrackingProtectionDisabled();
|
|
|
|
// To send NotifyTrackingCookieBlocked message over background channel.
|
|
bool OnNotifyTrackingCookieBlocked(uint32_t aRejectedReason);
|
|
|
|
// To send NotifyTrackingResource message over background channel.
|
|
bool OnNotifyTrackingResource(bool aIsThirdParty);
|
|
|
|
// To send SetClassifierMatchedInfo message over background channel.
|
|
bool OnSetClassifierMatchedInfo(const nsACString& aList,
|
|
const nsACString& aProvider,
|
|
const nsACString& aFullHash);
|
|
|
|
protected:
|
|
void ActorDestroy(ActorDestroyReason aWhy) override;
|
|
|
|
private:
|
|
virtual ~HttpBackgroundChannelParent();
|
|
|
|
Atomic<bool> mIPCOpened;
|
|
|
|
// Used to ensure atomicity of mBackgroundThread
|
|
Mutex mBgThreadMutex;
|
|
|
|
nsCOMPtr<nsIEventTarget> mBackgroundThread;
|
|
|
|
// associated HttpChannelParent for generating the channel events
|
|
RefPtr<HttpChannelParent> mChannelParent;
|
|
};
|
|
|
|
} // namespace net
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_net_HttpBackgroundChannelParent_h
|