mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Merge mozilla-central to autoland
This commit is contained in:
commit
e43399c28e
@ -73,9 +73,6 @@ var whitelist = [
|
||||
{file: "chrome://devtools/content/inspector/markup/markup.xhtml",
|
||||
isFromDevTools: true},
|
||||
|
||||
// Kept for add-on compatibility, should be removed in bug 851471.
|
||||
{file: "chrome://mozapps/skin/downloads/downloadIcon.png"},
|
||||
|
||||
// SpiderMonkey parser API, currently unused in browser/ and toolkit/
|
||||
{file: "resource://gre/modules/reflect.jsm"},
|
||||
|
||||
|
@ -222,7 +222,6 @@
|
||||
@RESPATH@/components/dom_workers.xpt
|
||||
@RESPATH@/components/dom_xul.xpt
|
||||
@RESPATH@/components/dom_presentation.xpt
|
||||
@RESPATH@/components/downloads.xpt
|
||||
@RESPATH@/components/editor.xpt
|
||||
@RESPATH@/components/enterprisepolicies.xpt
|
||||
@RESPATH@/components/extensions.xpt
|
||||
|
@ -8498,6 +8498,7 @@ GetSurfaceDataImpl(mozilla::gfx::DataSourceSurface* aSurface,
|
||||
mozilla::CheckedInt32 requiredBytes =
|
||||
mozilla::CheckedInt32(map.mStride) * mozilla::CheckedInt32(size.height);
|
||||
if (!requiredBytes.isValid()) {
|
||||
aSurface->Unmap();
|
||||
return GetSurfaceDataContext::NullValue();
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "nsILineInputStream.h"
|
||||
#include "nsPIDOMWindow.h"
|
||||
#include "mozilla/EventStateManager.h"
|
||||
#include "mozilla/MozPromise.h"
|
||||
#include "mozilla/Telemetry.h"
|
||||
#include "mozilla/Types.h"
|
||||
#include "mozilla/PeerIdentity.h"
|
||||
@ -156,7 +157,6 @@ typedef media::Pledge<bool, dom::MediaStreamError*> PledgeVoid;
|
||||
struct DeviceState {
|
||||
DeviceState(const RefPtr<MediaDevice>& aDevice, bool aOffWhileDisabled)
|
||||
: mOffWhileDisabled(aOffWhileDisabled)
|
||||
, mDisableTimer(new MediaTimer())
|
||||
, mDevice(aDevice)
|
||||
{
|
||||
MOZ_ASSERT(mDevice);
|
||||
@ -168,11 +168,15 @@ struct DeviceState {
|
||||
|
||||
// true if mDevice is currently enabled, i.e., turned on and capturing.
|
||||
// MainThread only.
|
||||
bool mDeviceEnabled = true;
|
||||
bool mDeviceEnabled = false;
|
||||
|
||||
// true if the application has currently enabled mDevice.
|
||||
// MainThread only.
|
||||
bool mTrackEnabled = true;
|
||||
bool mTrackEnabled = false;
|
||||
|
||||
// Time when the application last enabled mDevice.
|
||||
// MainThread only.
|
||||
TimeStamp mTrackEnabledTime;
|
||||
|
||||
// true if an operation to Start() or Stop() mDevice has been dispatched to
|
||||
// the media thread and is not finished yet.
|
||||
@ -188,7 +192,7 @@ struct DeviceState {
|
||||
// disabled. When the timer fires we initiate Stop()ing mDevice.
|
||||
// If set we allow dynamically stopping and starting mDevice.
|
||||
// Any thread.
|
||||
const RefPtr<MediaTimer> mDisableTimer;
|
||||
const RefPtr<MediaTimer> mDisableTimer = new MediaTimer();
|
||||
|
||||
// The underlying device we keep state for. Always non-null.
|
||||
// Threadsafe access, but see method declarations for individual constraints.
|
||||
@ -239,6 +243,8 @@ FromCaptureState(CaptureState aState)
|
||||
*/
|
||||
class SourceListener : public SupportsWeakPtr<SourceListener> {
|
||||
public:
|
||||
typedef MozPromise<bool /* aIgnored */, RefPtr<MediaMgrError>, true> InitPromise;
|
||||
|
||||
MOZ_DECLARE_WEAKREFERENCE_TYPENAME(SourceListener)
|
||||
NS_INLINE_DECL_THREADSAFE_REFCOUNTING_WITH_MAIN_THREAD_DESTRUCTION(SourceListener)
|
||||
|
||||
@ -256,6 +262,11 @@ public:
|
||||
MediaDevice* aAudioDevice,
|
||||
MediaDevice* aVideoDevice);
|
||||
|
||||
/**
|
||||
* Posts a task to initialize and start all associated devices.
|
||||
*/
|
||||
RefPtr<InitPromise> InitializeAsync();
|
||||
|
||||
/**
|
||||
* Stops all live tracks, finishes the associated MediaStream and cleans up.
|
||||
*/
|
||||
@ -1374,89 +1385,32 @@ public:
|
||||
// because that can take a while.
|
||||
// Pass ownership of domStream through the lambda to the nested chrome
|
||||
// notification lambda to ensure it's kept alive until that lambda runs or is discarded.
|
||||
RefPtr<GetUserMediaStreamRunnable> self = this;
|
||||
MediaManager::PostTask(NewTaskFrom([self, domStream, callback]() mutable {
|
||||
MOZ_ASSERT(MediaManager::IsInMediaThread());
|
||||
RefPtr<SourceMediaStream> source =
|
||||
self->mSourceListener->GetSourceStream();
|
||||
|
||||
RefPtr<MediaMgrError> error = nullptr;
|
||||
if (self->mAudioDevice) {
|
||||
nsresult rv = self->mAudioDevice->SetTrack(source,
|
||||
kAudioTrack,
|
||||
self->mSourceListener->GetPrincipalHandle());
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = self->mAudioDevice->Start();
|
||||
} else {
|
||||
nsString log;
|
||||
if (rv == NS_ERROR_NOT_AVAILABLE) {
|
||||
log.AssignASCII("Concurrent mic process limit.");
|
||||
error = new MediaMgrError(NS_LITERAL_STRING("NotReadableError"), log);
|
||||
} else {
|
||||
log.AssignASCII("Starting audio failed");
|
||||
error = new MediaMgrError(NS_LITERAL_STRING("InternalError"), log);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!error && self->mVideoDevice) {
|
||||
nsresult rv = self->mVideoDevice->SetTrack(source,
|
||||
kVideoTrack,
|
||||
self->mSourceListener->GetPrincipalHandle());
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = self->mVideoDevice->Start();
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
nsString log;
|
||||
log.AssignASCII("Starting video failed");
|
||||
error = new MediaMgrError(NS_LITERAL_STRING("InternalError"), log);
|
||||
}
|
||||
}
|
||||
|
||||
if (error) {
|
||||
// Dispatch the error callback on main thread.
|
||||
NS_DispatchToMainThread(MakeAndAddRef<ErrorCallbackRunnable>(
|
||||
self->mOnFailure, *error, self->mWindowID));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Start() queued the tracks to be added synchronously to avoid races
|
||||
source->FinishAddTracks();
|
||||
|
||||
source->AdvanceKnownTracksTime(STREAM_TIME_MAX);
|
||||
|
||||
LOG(("started all sources"));
|
||||
|
||||
// onTracksAvailableCallback must be added to domStream on the main thread.
|
||||
uint64_t windowID = self->mWindowID;
|
||||
NS_DispatchToMainThread(NS_NewRunnableFunction("MediaManager::NotifyChromeOfStart",
|
||||
[source, domStream, callback, windowID]() mutable {
|
||||
source->SetPullEnabled(true);
|
||||
|
||||
MediaManager* manager = MediaManager::GetIfExists();
|
||||
if (!manager) {
|
||||
return;
|
||||
}
|
||||
|
||||
nsGlobalWindowInner* window =
|
||||
nsGlobalWindowInner::GetInnerWindowWithId(windowID);
|
||||
if (!window) {
|
||||
MOZ_ASSERT_UNREACHABLE("Should have window");
|
||||
return;
|
||||
}
|
||||
|
||||
mSourceListener->InitializeAsync()->Then(
|
||||
GetMainThreadSerialEventTarget(), __func__,
|
||||
[manager = mManager, domStream, callback,
|
||||
windowListener = mWindowListener]()
|
||||
{
|
||||
// Initiating and starting devices succeeded.
|
||||
// onTracksAvailableCallback must be added to domStream on main thread.
|
||||
domStream->OnTracksAvailable(callback->release());
|
||||
windowListener->ChromeAffectingStateChanged();
|
||||
manager->SendPendingGUMRequest();
|
||||
},[manager = mManager, windowID = mWindowID,
|
||||
onFailure = Move(mOnFailure)](const RefPtr<MediaMgrError>& error)
|
||||
{
|
||||
// Initiating and starting devices failed.
|
||||
|
||||
nsresult rv = MediaManager::NotifyRecordingStatusChange(window->AsInner());
|
||||
if (NS_FAILED(rv)) {
|
||||
MOZ_ASSERT_UNREACHABLE("Should be able to notify chrome");
|
||||
// Only run if the window is still active for our window listener.
|
||||
if (!(manager->IsWindowStillActive(windowID))) {
|
||||
return;
|
||||
}
|
||||
|
||||
manager->SendPendingGUMRequest();
|
||||
}));
|
||||
return NS_OK;
|
||||
}));
|
||||
// This is safe since we're on main-thread, and the windowlist can only
|
||||
// be invalidated from the main-thread (see OnNavigation)
|
||||
if (auto* window = nsGlobalWindowInner::GetInnerWindowWithId(windowID)) {
|
||||
auto streamError = MakeRefPtr<MediaStreamError>(window->AsInner(), *error);
|
||||
onFailure->OnError(streamError);
|
||||
}
|
||||
});
|
||||
|
||||
if (!IsPincipalInfoPrivate(mPrincipalInfo)) {
|
||||
// Call GetPrincipalKey again, this time w/persist = true, to promote
|
||||
@ -2149,6 +2103,20 @@ MediaManager::PostTask(already_AddRefed<Runnable> task)
|
||||
Get()->mMediaThread->message_loop()->PostTask(Move(task));
|
||||
}
|
||||
|
||||
template<typename MozPromiseType, typename FunctionType>
|
||||
/* static */ RefPtr<MozPromiseType>
|
||||
MediaManager::PostTask(const char* aName, FunctionType&& aFunction)
|
||||
{
|
||||
MozPromiseHolder<MozPromiseType> holder;
|
||||
RefPtr<MozPromiseType> promise = holder.Ensure(aName);
|
||||
MediaManager::PostTask(NS_NewRunnableFunction(aName,
|
||||
[h = Move(holder), func = Forward<FunctionType>(aFunction)]() mutable
|
||||
{
|
||||
func(h);
|
||||
}));
|
||||
return promise;
|
||||
}
|
||||
|
||||
/* static */ nsresult
|
||||
MediaManager::NotifyRecordingStatusChange(nsPIDOMWindowInner* aWindow)
|
||||
{
|
||||
@ -3824,6 +3792,110 @@ SourceListener::Activate(SourceMediaStream* aStream,
|
||||
mStream->AddListener(mStreamListener);
|
||||
}
|
||||
|
||||
RefPtr<SourceListener::InitPromise>
|
||||
SourceListener::InitializeAsync()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread(), "Only call on main thread");
|
||||
MOZ_DIAGNOSTIC_ASSERT(!mStopped);
|
||||
|
||||
RefPtr<InitPromise> init = MediaManager::PostTask<InitPromise>(__func__,
|
||||
[ stream = mStream
|
||||
, principal = GetPrincipalHandle()
|
||||
, audioDevice = mAudioDeviceState ? mAudioDeviceState->mDevice : nullptr
|
||||
, videoDevice = mVideoDeviceState ? mVideoDeviceState->mDevice : nullptr
|
||||
](MozPromiseHolder<InitPromise>& aHolder)
|
||||
{
|
||||
if (audioDevice) {
|
||||
nsresult rv = audioDevice->SetTrack(stream, kAudioTrack, principal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = audioDevice->Start();
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
nsString log;
|
||||
if (rv == NS_ERROR_NOT_AVAILABLE) {
|
||||
log.AssignASCII("Concurrent mic process limit.");
|
||||
aHolder.Reject(MakeRefPtr<MediaMgrError>(
|
||||
NS_LITERAL_STRING("NotReadableError"), log), __func__);
|
||||
return;
|
||||
}
|
||||
log.AssignASCII("Starting audio failed");
|
||||
aHolder.Reject(MakeRefPtr<MediaMgrError>(
|
||||
NS_LITERAL_STRING("InternalError"), log), __func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (videoDevice) {
|
||||
nsresult rv = videoDevice->SetTrack(stream, kVideoTrack, principal);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
rv = videoDevice->Start();
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
if (audioDevice) {
|
||||
if (NS_WARN_IF(NS_FAILED(audioDevice->Stop()))) {
|
||||
MOZ_ASSERT_UNREACHABLE("Stopping audio failed");
|
||||
}
|
||||
}
|
||||
nsString log;
|
||||
log.AssignASCII("Starting video failed");
|
||||
aHolder.Reject(MakeRefPtr<MediaMgrError>(NS_LITERAL_STRING("InternalError"), log), __func__);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Start() queued the tracks to be added synchronously to avoid races
|
||||
stream->FinishAddTracks();
|
||||
stream->AdvanceKnownTracksTime(STREAM_TIME_MAX);
|
||||
LOG(("started all sources"));
|
||||
|
||||
aHolder.Resolve(true, __func__);
|
||||
});
|
||||
|
||||
return init->Then(GetMainThreadSerialEventTarget(), __func__,
|
||||
[self = RefPtr<SourceListener>(this), this]()
|
||||
{
|
||||
if (mStopped) {
|
||||
// We were shut down during the async init
|
||||
return InitPromise::CreateAndResolve(true, __func__);
|
||||
}
|
||||
|
||||
mStream->SetPullEnabled(true);
|
||||
|
||||
for (DeviceState* state : {mAudioDeviceState.get(),
|
||||
mVideoDeviceState.get()}) {
|
||||
if (!state) {
|
||||
continue;
|
||||
}
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mTrackEnabled);
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mDeviceEnabled);
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mStopped);
|
||||
|
||||
state->mDeviceEnabled = true;
|
||||
state->mTrackEnabled = true;
|
||||
state->mTrackEnabledTime = TimeStamp::Now();
|
||||
}
|
||||
return InitPromise::CreateAndResolve(true, __func__);
|
||||
}, [self = RefPtr<SourceListener>(this), this](RefPtr<MediaMgrError>&& aResult)
|
||||
{
|
||||
if (mStopped) {
|
||||
return InitPromise::CreateAndReject(Move(aResult), __func__);
|
||||
}
|
||||
|
||||
for (DeviceState* state : {mAudioDeviceState.get(),
|
||||
mVideoDeviceState.get()}) {
|
||||
if (!state) {
|
||||
continue;
|
||||
}
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mTrackEnabled);
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mDeviceEnabled);
|
||||
MOZ_DIAGNOSTIC_ASSERT(!state->mStopped);
|
||||
|
||||
state->mStopped = true;
|
||||
}
|
||||
return InitPromise::CreateAndReject(Move(aResult), __func__);
|
||||
});
|
||||
}
|
||||
|
||||
void
|
||||
SourceListener::Stop()
|
||||
{
|
||||
@ -3956,7 +4028,6 @@ SourceListener::SetEnabledFor(TrackID aTrackID, bool aEnable)
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (state.mOperationInProgress) {
|
||||
// If a timer is in progress, it needs to be canceled now so the next
|
||||
// DisableTrack() gets a fresh start. Canceling will trigger another
|
||||
@ -3977,20 +4048,26 @@ SourceListener::SetEnabledFor(TrackID aTrackID, bool aEnable)
|
||||
RefPtr<MediaTimerPromise> timerPromise;
|
||||
if (aEnable) {
|
||||
timerPromise = MediaTimerPromise::CreateAndResolve(true, __func__);
|
||||
state.mTrackEnabledTime = TimeStamp::Now();
|
||||
} else {
|
||||
const TimeDuration offDelay = TimeDuration::FromMilliseconds(
|
||||
const TimeDuration maxDelay = TimeDuration::FromMilliseconds(
|
||||
Preferences::GetUint(
|
||||
aTrackID == kAudioTrack
|
||||
? "media.getusermedia.microphone.off_while_disabled.delay_ms"
|
||||
: "media.getusermedia.camera.off_while_disabled.delay_ms",
|
||||
3000));
|
||||
timerPromise = state.mDisableTimer->WaitFor(offDelay, __func__);
|
||||
const TimeDuration durationEnabled =
|
||||
TimeStamp::Now() - state.mTrackEnabledTime;
|
||||
const TimeDuration delay =
|
||||
TimeDuration::Max(TimeDuration::FromMilliseconds(0),
|
||||
maxDelay - durationEnabled);
|
||||
timerPromise = state.mDisableTimer->WaitFor(delay, __func__);
|
||||
}
|
||||
|
||||
typedef MozPromise<nsresult, bool, /* IsExclusive = */ true> DeviceOperationPromise;
|
||||
RefPtr<SourceListener> self = this;
|
||||
timerPromise->Then(GetMainThreadSerialEventTarget(), __func__,
|
||||
[self, this, &state, aTrackID, aEnable](bool aDummy) mutable {
|
||||
[self, this, &state, aTrackID, aEnable]() mutable {
|
||||
MOZ_ASSERT(state.mDeviceEnabled != aEnable,
|
||||
"Device operation hasn't started");
|
||||
MOZ_ASSERT(state.mOperationInProgress,
|
||||
@ -4014,15 +4091,12 @@ SourceListener::SetEnabledFor(TrackID aTrackID, bool aEnable)
|
||||
return DeviceOperationPromise::CreateAndResolve(NS_OK, __func__);
|
||||
}
|
||||
|
||||
RefPtr<DeviceOperationPromise::Private> promise =
|
||||
new DeviceOperationPromise::Private(__func__);
|
||||
MediaManager::PostTask(NewTaskFrom([self, device = state.mDevice,
|
||||
aEnable, promise]() mutable {
|
||||
promise->Resolve(aEnable ? device->Start() : device->Stop(), __func__);
|
||||
}));
|
||||
RefPtr<DeviceOperationPromise> result = promise.get();
|
||||
return result;
|
||||
}, [](bool aDummy) {
|
||||
return MediaManager::PostTask<DeviceOperationPromise>(__func__,
|
||||
[self, device = state.mDevice, aEnable]
|
||||
(MozPromiseHolder<DeviceOperationPromise>& h) {
|
||||
h.Resolve(aEnable ? device->Start() : device->Stop(), __func__);
|
||||
});
|
||||
}, []() {
|
||||
// Timer was canceled by us. We signal this with NS_ERROR_ABORT.
|
||||
return DeviceOperationPromise::CreateAndResolve(NS_ERROR_ABORT, __func__);
|
||||
})->Then(GetMainThreadSerialEventTarget(), __func__,
|
||||
@ -4082,7 +4156,7 @@ SourceListener::SetEnabledFor(TrackID aTrackID, bool aEnable)
|
||||
} else {
|
||||
SetEnabledFor(aTrackID, false);
|
||||
}
|
||||
}, [](bool aDummy) {
|
||||
}, []() {
|
||||
MOZ_ASSERT_UNREACHABLE("Unexpected and unhandled reject");
|
||||
});
|
||||
}
|
||||
|
@ -142,6 +142,18 @@ public:
|
||||
static MediaManager* GetIfExists();
|
||||
static void StartupInit();
|
||||
static void PostTask(already_AddRefed<Runnable> task);
|
||||
|
||||
/**
|
||||
* Posts an async operation to the media manager thread.
|
||||
* FunctionType must be a function that takes a `MozPromiseHolder&`.
|
||||
*
|
||||
* The returned promise is resolved or rejected by aFunction on the media
|
||||
* manager thread.
|
||||
*/
|
||||
template<typename MozPromiseType, typename FunctionType>
|
||||
static RefPtr<MozPromiseType>
|
||||
PostTask(const char* aName, FunctionType&& aFunction);
|
||||
|
||||
#ifdef DEBUG
|
||||
static bool IsInMediaThread();
|
||||
#endif
|
||||
|
@ -237,6 +237,10 @@ MediaEngineDefaultVideoSource::Stop(const RefPtr<const AllocationHandle>& aHandl
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
if (mState == kStopped || mState == kAllocated) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mState == kStarted);
|
||||
MOZ_ASSERT(mTimer);
|
||||
MOZ_ASSERT(mStream);
|
||||
@ -350,7 +354,7 @@ MediaEngineDefaultVideoSource::Pull(const RefPtr<const AllocationHandle>& aHandl
|
||||
StreamTime delta = aDesiredTime - aStream->GetEndOfAppendedData(aTrackID);
|
||||
if (delta > 0) {
|
||||
// nullptr images are allowed
|
||||
IntSize size(image ? mOpts.mWidth : 0, image ? mOpts.mHeight : 0);
|
||||
IntSize size(mOpts.mWidth, mOpts.mHeight);
|
||||
segment.AppendFrame(image.forget(), delta, size, aPrincipalHandle);
|
||||
// This can fail if either a) we haven't added the track yet, or b)
|
||||
// we've removed or finished the track.
|
||||
@ -495,8 +499,11 @@ MediaEngineDefaultAudioSource::Stop(const RefPtr<const AllocationHandle>& aHandl
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
MOZ_ASSERT(mState == kStarted);
|
||||
if (mState == kStopped || mState == kAllocated) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mState == kStarted);
|
||||
|
||||
MutexAutoLock lock(mMutex);
|
||||
mState = kStopped;
|
||||
|
@ -324,6 +324,10 @@ MediaEngineRemoteVideoSource::Stop(const RefPtr<const AllocationHandle>& aHandle
|
||||
LOG((__PRETTY_FUNCTION__));
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
if (mState == kStopped || mState == kAllocated) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mState == kStarted);
|
||||
|
||||
if (camera::GetChildAndCall(&camera::CamerasChild::StopCapture,
|
||||
|
@ -171,6 +171,9 @@ public:
|
||||
*
|
||||
* If this was the last AllocationHandle that had been started,
|
||||
* the underlying device will be stopped.
|
||||
*
|
||||
* Double-stopping a given allocation handle is allowed and will return NS_OK.
|
||||
* This is necessary sometimes during shutdown.
|
||||
*/
|
||||
virtual nsresult Stop(const RefPtr<const AllocationHandle>& aHandle) = 0;
|
||||
|
||||
|
@ -402,6 +402,11 @@ nsresult
|
||||
MediaEngineTabVideoSource::Stop(const RefPtr<const AllocationHandle>& aHandle)
|
||||
{
|
||||
AssertIsOnOwningThread();
|
||||
|
||||
if (mState == kStopped || mState == kAllocated) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mState == kStarted);
|
||||
|
||||
// If mBlackedoutWindow is true, we may be running
|
||||
|
@ -552,9 +552,11 @@ SharedMemoryBasic::Create(size_t size)
|
||||
VM_PROT_DEFAULT,
|
||||
&mPort,
|
||||
MACH_PORT_NULL);
|
||||
if (kr != KERN_SUCCESS) {
|
||||
if (kr != KERN_SUCCESS || memoryObjectSize < round_page(size)) {
|
||||
LOG_ERROR("Failed to make memory entry (%zu bytes). %s (%x)\n",
|
||||
size, mach_error_string(kr), kr);
|
||||
CloseHandle();
|
||||
mach_vm_deallocate(mach_task_self(), address, round_page(size));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
47
mfbt/Maybe.h
47
mfbt/Maybe.h
@ -12,8 +12,10 @@
|
||||
#include "mozilla/Alignment.h"
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/MemoryChecking.h"
|
||||
#include "mozilla/Move.h"
|
||||
#include "mozilla/OperatorNewExtensions.h"
|
||||
#include "mozilla/Poison.h"
|
||||
#include "mozilla/TypeTraits.h"
|
||||
|
||||
#include <new> // for placement new
|
||||
@ -24,6 +26,27 @@ namespace mozilla {
|
||||
|
||||
struct Nothing { };
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<typename T>
|
||||
struct MaybePoisoner
|
||||
{
|
||||
static const size_t N = sizeof(T);
|
||||
|
||||
static void poison(void* aPtr)
|
||||
{
|
||||
#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
|
||||
// Avoid MOZ_ASSERT in mozWritePoison.
|
||||
if (N >= sizeof(uintptr_t)) {
|
||||
mozWritePoison(aPtr, N);
|
||||
}
|
||||
#endif
|
||||
MOZ_MAKE_MEM_UNDEFINED(aPtr, N);
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
/*
|
||||
* Maybe is a container class which contains either zero or one elements. It
|
||||
* serves two roles. It can represent values which are *semantically* optional,
|
||||
@ -93,19 +116,32 @@ class MOZ_NON_PARAM MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS Maybe
|
||||
void* data() { return mStorage; }
|
||||
const void* data() const { return mStorage; }
|
||||
|
||||
void poisonData()
|
||||
{
|
||||
detail::MaybePoisoner<T>::poison(data());
|
||||
}
|
||||
|
||||
public:
|
||||
using ValueType = T;
|
||||
|
||||
Maybe() : mIsSome(false) { }
|
||||
Maybe() : mIsSome(false)
|
||||
{
|
||||
poisonData();
|
||||
}
|
||||
~Maybe() { reset(); }
|
||||
|
||||
MOZ_IMPLICIT Maybe(Nothing) : mIsSome(false) { }
|
||||
MOZ_IMPLICIT Maybe(Nothing) : mIsSome(false)
|
||||
{
|
||||
poisonData();
|
||||
}
|
||||
|
||||
Maybe(const Maybe& aOther)
|
||||
: mIsSome(false)
|
||||
{
|
||||
if (aOther.mIsSome) {
|
||||
emplace(*aOther);
|
||||
} else {
|
||||
poisonData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,6 +157,8 @@ public:
|
||||
{
|
||||
if (aOther.isSome()) {
|
||||
emplace(*aOther);
|
||||
} else {
|
||||
poisonData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -130,6 +168,8 @@ public:
|
||||
if (aOther.mIsSome) {
|
||||
emplace(Move(*aOther));
|
||||
aOther.reset();
|
||||
} else {
|
||||
poisonData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -146,6 +186,8 @@ public:
|
||||
if (aOther.isSome()) {
|
||||
emplace(Move(*aOther));
|
||||
aOther.reset();
|
||||
} else {
|
||||
poisonData();
|
||||
}
|
||||
}
|
||||
|
||||
@ -445,6 +487,7 @@ public:
|
||||
if (isSome()) {
|
||||
ref().T::~T();
|
||||
mIsSome = false;
|
||||
poisonData();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "mozilla/Types.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
MOZ_BEGIN_EXTERN_C
|
||||
|
||||
@ -39,11 +40,10 @@ inline void mozWritePoison(void* aPtr, size_t aSize)
|
||||
{
|
||||
const uintptr_t POISON = mozPoisonValue();
|
||||
char* p = (char*)aPtr;
|
||||
char* limit = p + aSize;
|
||||
MOZ_ASSERT((uintptr_t)aPtr % sizeof(uintptr_t) == 0, "bad alignment");
|
||||
char* limit = p + (aSize & ~(sizeof(uintptr_t) - 1));
|
||||
MOZ_ASSERT(aSize >= sizeof(uintptr_t), "poisoning this object has no effect");
|
||||
for (; p < limit; p += sizeof(uintptr_t)) {
|
||||
*((uintptr_t*)p) = POISON;
|
||||
memcpy(p, &POISON, sizeof(POISON));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,7 +147,6 @@
|
||||
@BINPATH@/components/dom_xhr.xpt
|
||||
@BINPATH@/components/dom_xul.xpt
|
||||
@BINPATH@/components/dom_presentation.xpt
|
||||
@BINPATH@/components/downloads.xpt
|
||||
@BINPATH@/components/editor.xpt
|
||||
@BINPATH@/components/extensions.xpt
|
||||
@BINPATH@/components/exthandler.xpt
|
||||
|
@ -1163,4 +1163,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528817024300000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1528833482766000);
|
||||
|
@ -43,6 +43,7 @@
|
||||
4loc.us: could not connect to host
|
||||
4web-hosting.com: could not connect to host
|
||||
5000yz.com: could not connect to host
|
||||
517vpn.cn: could not connect to host
|
||||
525.info: could not connect to host
|
||||
52kb1.com: could not connect to host
|
||||
52neptune.com: could not connect to host
|
||||
@ -299,7 +300,9 @@ bjtxl.cn: could not connect to host
|
||||
black-khat.com: could not connect to host
|
||||
blackberrycentral.com: could not connect to host
|
||||
blackdragoninc.org: could not connect to host
|
||||
blackhelicopters.net: could not connect to host
|
||||
blackscreen.me: could not connect to host
|
||||
blankersfamily.com: could not connect to host
|
||||
blantik.net: could not connect to host
|
||||
blazeit.io: could not connect to host
|
||||
blessedearth.com.au: could not connect to host
|
||||
@ -373,6 +376,7 @@ byteshift.ca: could not connect to host
|
||||
cafechesscourt.com: could not connect to host
|
||||
cafesg.net: could not connect to host
|
||||
caipai.fm: could not connect to host
|
||||
cal.goip.de: could not connect to host
|
||||
calculatoaresecondhand.xyz: could not connect to host
|
||||
callabs.net: could not connect to host
|
||||
calleveryday.com: could not connect to host
|
||||
@ -417,8 +421,6 @@ channellife.asia: could not connect to host
|
||||
chaouby.com: could not connect to host
|
||||
charge.co: could not connect to host
|
||||
charmyadesara.com: could not connect to host
|
||||
chatbelgie.eu: could not connect to host
|
||||
chatnederland.eu: could not connect to host
|
||||
cheah.xyz: could not connect to host
|
||||
cheesefusion.com: could not connect to host
|
||||
chez-janine.de: could not connect to host
|
||||
@ -449,7 +451,6 @@ clintonbloodworth.com: could not connect to host
|
||||
cloudberlin.goip.de: could not connect to host
|
||||
cloudbleed.info: could not connect to host
|
||||
cloudimproved.com: could not connect to host
|
||||
cloudimprovedtest.com: could not connect to host
|
||||
cloudwarez.xyz: could not connect to host
|
||||
clownish.co.il: could not connect to host
|
||||
clycat.ru: could not connect to host
|
||||
@ -469,13 +470,13 @@ codeloop.pw: could not connect to host
|
||||
codenlife.xyz: could not connect to host
|
||||
codeofhonor.tech: could not connect to host
|
||||
codercross.com: could not connect to host
|
||||
codercy.com: could not connect to host
|
||||
coderhangout.com: could not connect to host
|
||||
codewiz.xyz: could not connect to host
|
||||
cogumelosmagicos.org: could not connect to host
|
||||
colarelli.ch: could not connect to host
|
||||
colleencornez.com: could not connect to host
|
||||
collins.kg: could not connect to host
|
||||
colo-tech.com: could not connect to host
|
||||
coloppe.com: could not connect to host
|
||||
com-in.de: could not connect to host
|
||||
com.cc: could not connect to host
|
||||
@ -524,6 +525,8 @@ cuni-rec.com: could not connect to host
|
||||
cuonic.com: could not connect to host
|
||||
curacao-license.com: could not connect to host
|
||||
customfilmworks.com: could not connect to host
|
||||
customizeyourshower.com: could not connect to host
|
||||
customizeyoursink.com: could not connect to host
|
||||
cybbh.space: could not connect to host
|
||||
cyber-computer.club: could not connect to host
|
||||
cyberpeace.nl: could not connect to host
|
||||
@ -619,6 +622,7 @@ distinctivephotography.com.au: could not connect to host
|
||||
ditch.ch: could not connect to host
|
||||
diwei.vip: could not connect to host
|
||||
dixmag.com: could not connect to host
|
||||
diz.in.ua: could not connect to host
|
||||
djul.net: could not connect to host
|
||||
dlouwrink.nl: could not connect to host
|
||||
dlyl888.com: could not connect to host
|
||||
@ -688,7 +692,6 @@ eccux.com: could not connect to host
|
||||
economy.st: could not connect to host
|
||||
ectora.com: could not connect to host
|
||||
edgecustomersportal.com: could not connect to host
|
||||
edp-collaborative.com: could not connect to host
|
||||
educatoys.com.br: could not connect to host
|
||||
eductf.org: could not connect to host
|
||||
eduif.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116" data: no]
|
||||
@ -841,6 +844,7 @@ freesounding.ru: could not connect to host
|
||||
freshcode.nl: could not connect to host
|
||||
frickenate.com: could not connect to host
|
||||
friedhelm-wolf.de: could not connect to host
|
||||
friller.com.au: could not connect to host
|
||||
frolov.net: could not connect to host
|
||||
fromlemaytoz.com: could not connect to host
|
||||
frosty-gaming.xyz: could not connect to host
|
||||
@ -867,6 +871,7 @@ g1jeu.com: could not connect to host
|
||||
gaasuper6.com: could not connect to host
|
||||
gabriele-kluge.de: could not connect to host
|
||||
gafachi.com: could not connect to host
|
||||
galactic-crew.org: could not connect to host
|
||||
galgoafegao.com.br: could not connect to host
|
||||
galgoingles.com.br: could not connect to host
|
||||
gam3rs.de: could not connect to host
|
||||
@ -919,7 +924,6 @@ ggss.cf: could not connect to host
|
||||
gh16.com.ar: could not connect to host
|
||||
ghaglund.se: could not connect to host
|
||||
gifzilla.net: could not connect to host
|
||||
gigawattz.com: could not connect to host
|
||||
gina-architektur.design: could not connect to host
|
||||
girlsforum.com: could not connect to host
|
||||
git.co: could not connect to host
|
||||
@ -977,6 +981,7 @@ halta.info: could not connect to host
|
||||
hamking.tk: could not connect to host
|
||||
hammer-schnaps.com: could not connect to host
|
||||
hamu.blue: could not connect to host
|
||||
happyagain.se: could not connect to host
|
||||
happytiger.eu: could not connect to host
|
||||
hapsfordmill.co.uk: could not connect to host
|
||||
hapvm.com: could not connect to host
|
||||
@ -1002,6 +1007,7 @@ heavenlysmokenc.com: could not connect to host
|
||||
heikorichter.name: could not connect to host
|
||||
heisenberg.co: could not connect to host
|
||||
hejsupport.se: could not connect to host
|
||||
helioanodyne.eu: could not connect to host
|
||||
hellofilters.com: could not connect to host
|
||||
hellomouse.tk: could not connect to host
|
||||
helpantiaging.com: could not connect to host
|
||||
@ -1033,6 +1039,7 @@ holidayincotswolds.co.uk: could not connect to host
|
||||
homesfordinner.ca: could not connect to host
|
||||
homoglyph.net: could not connect to host
|
||||
hondenoppasfraneker.nl: could not connect to host
|
||||
honeybeard.co.uk: could not connect to host
|
||||
honeytracks.com: could not connect to host
|
||||
hoodoo.io: could not connect to host
|
||||
hoodoo.tech: could not connect to host
|
||||
@ -1149,7 +1156,6 @@ ivfmeds.com: could not connect to host
|
||||
ivyshop.com.br: could not connect to host
|
||||
ivystech.com: could not connect to host
|
||||
iwex.swiss: could not connect to host
|
||||
ixio.cz: could not connect to host
|
||||
j-navi.com: could not connect to host
|
||||
j0ng.xyz: could not connect to host
|
||||
jaimechanaga.com: could not connect to host
|
||||
@ -1174,7 +1180,6 @@ jean-remy.ch: could not connect to host
|
||||
jecho.cn: could not connect to host
|
||||
jeffersonregan.org: could not connect to host
|
||||
jens.hk: could not connect to host
|
||||
jerrypau.ca: could not connect to host
|
||||
jessevictors.com: could not connect to host
|
||||
jhburton.co.uk: could not connect to host
|
||||
jiangzm.com: could not connect to host
|
||||
@ -1183,7 +1188,6 @@ jiaqiang.vip: could not connect to host
|
||||
jimmycn.com: could not connect to host
|
||||
jmb.lc: could not connect to host
|
||||
jmoreau.ddns.net: could not connect to host
|
||||
jmpb.hu: could not connect to host
|
||||
jmvbmx.ch: could not connect to host
|
||||
jobmedic.com: could not connect to host
|
||||
joecod.es: could not connect to host
|
||||
@ -1207,12 +1211,13 @@ justinharrison.ca: could not connect to host
|
||||
justzz.xyz: could not connect to host
|
||||
juventusmania1897.com: could not connect to host
|
||||
k33k00.com: could not connect to host
|
||||
kabus.org: could not connect to host
|
||||
kaika-facilitymanagement.de: could not connect to host
|
||||
kainz.be: could not connect to host
|
||||
kalender.goip.de: could not connect to host
|
||||
kaloix.de: could not connect to host
|
||||
kamalame.co: could not connect to host
|
||||
kamitech.ch: could not connect to host
|
||||
kandalife.com: could not connect to host
|
||||
kanganer.com: could not connect to host
|
||||
kangzaber.com: could not connect to host
|
||||
kanr.in: could not connect to host
|
||||
@ -1223,6 +1228,7 @@ kat.al: could not connect to host
|
||||
kawaiiku.com: could not connect to host
|
||||
kawaiiku.de: could not connect to host
|
||||
kaydan.io: could not connect to host
|
||||
kb3.net: could not connect to host
|
||||
kearney.io: could not connect to host
|
||||
keepflow.io: could not connect to host
|
||||
kellyandantony.com: could not connect to host
|
||||
@ -1304,6 +1310,9 @@ lbarrios.es: could not connect to host
|
||||
lbrls.tk: could not connect to host
|
||||
lclarkpdx.com: could not connect to host
|
||||
lcti.biz: could not connect to host
|
||||
le-dev.de: could not connect to host
|
||||
le-h.de: could not connect to host
|
||||
le-hosting.de: could not connect to host
|
||||
leadbox.cz: could not connect to host
|
||||
leaderoftheresistance.com: could not connect to host
|
||||
leaderoftheresistance.net: could not connect to host
|
||||
@ -1331,9 +1340,10 @@ lheinrich.org: could not connect to host
|
||||
lhsj28.com: could not connect to host
|
||||
lhsj68.com: could not connect to host
|
||||
lhsj78.com: could not connect to host
|
||||
lianye1.cc: could not connect to host
|
||||
lianye2.cc: could not connect to host
|
||||
lianye3.cc: could not connect to host
|
||||
lianye5.cc: could not connect to host
|
||||
lianye6.cc: could not connect to host
|
||||
liaozheqi.cn: could not connect to host
|
||||
libertas-tech.com: could not connect to host
|
||||
libscode.com: could not connect to host
|
||||
@ -1366,13 +1376,13 @@ logicchen.com: could not connect to host
|
||||
logimagine.com: could not connect to host
|
||||
loket.nl: could not connect to host
|
||||
loli.net: could not connect to host
|
||||
lookyman.net: could not connect to host
|
||||
loony.info: could not connect to host
|
||||
loopower.com: could not connect to host
|
||||
loothole.com: could not connect to host
|
||||
loqyu.co: could not connect to host
|
||||
losebellyfat.pro: could not connect to host
|
||||
love4taylor.eu.org: could not connect to host
|
||||
love4taylor.me: could not connect to host
|
||||
loveandloyalty.se: could not connect to host
|
||||
lowt.us: could not connect to host
|
||||
loyaltech.ch: could not connect to host
|
||||
@ -1400,12 +1410,10 @@ maartenterpstra.xyz: could not connect to host
|
||||
madeintucson.org: could not connect to host
|
||||
madnetwork.org: could not connect to host
|
||||
madusecurity.com: could not connect to host
|
||||
magicball.co: could not connect to host
|
||||
magnacumlaude.co: could not connect to host
|
||||
mahansexcavating.com: could not connect to host
|
||||
maik-mahlow.de: could not connect to host
|
||||
mailon.ga: could not connect to host
|
||||
majkassab.com: could not connect to host
|
||||
makeit-so.de: could not connect to host
|
||||
makeuplove.nl: could not connect to host
|
||||
malamutedoalasca.com.br: could not connect to host
|
||||
@ -1420,6 +1428,7 @@ mardelcupon.com: could not connect to host
|
||||
mare92.cz: could not connect to host
|
||||
mariusschulte.de: could not connect to host
|
||||
mark-armstrong-gaming.com: could not connect to host
|
||||
marketgot.com: could not connect to host
|
||||
marketingdesignu.cz: could not connect to host
|
||||
markllego.com: could not connect to host
|
||||
marko-fenster24.de: could not connect to host
|
||||
@ -1480,7 +1489,6 @@ michaelkuchta.me: could not connect to host
|
||||
michaelsulzer.com: could not connect to host
|
||||
michaelsulzer.eu: could not connect to host
|
||||
michasfahrschule.com: could not connect to host
|
||||
michel.pt: could not connect to host
|
||||
microblading.pe: could not connect to host
|
||||
microlinks.org: could not connect to host
|
||||
mieterschutzkartei.de: could not connect to host
|
||||
@ -1530,7 +1538,6 @@ morz.org: could not connect to host
|
||||
mosaique-lachenaie.fr: could not connect to host
|
||||
moskva.guide: could not connect to host
|
||||
motezazer.fr: could not connect to host
|
||||
motherboard.services: could not connect to host
|
||||
motocyklovedily.cz: could not connect to host
|
||||
motomorgen.com: could not connect to host
|
||||
motorbiketourhanoi.com: could not connect to host
|
||||
@ -1538,7 +1545,6 @@ mountainadventureseminars.com: could not connect to host
|
||||
moving-pixtures.de: could not connect to host
|
||||
mowalls.net: could not connect to host
|
||||
mozzilla.cz: could not connect to host
|
||||
mpodraza.pl: could not connect to host
|
||||
mpserver12.org: could not connect to host
|
||||
mrafrohead.com: could not connect to host
|
||||
mremallin.ca: could not connect to host
|
||||
@ -1594,8 +1600,6 @@ net4visions.at: could not connect to host
|
||||
netbuzz.ru: could not connect to host
|
||||
netica.fr: could not connect to host
|
||||
netscaler.expert: could not connect to host
|
||||
netwarc.eu: could not connect to host
|
||||
netwarc.nl: could not connect to host
|
||||
nevadafiber.net: could not connect to host
|
||||
newcityinfo.info: could not connect to host
|
||||
newfacialbeautycream.com: could not connect to host
|
||||
@ -1611,13 +1615,13 @@ nienfun.com: could not connect to host
|
||||
nikksno.io: could not connect to host
|
||||
nikobradshaw.com: could not connect to host
|
||||
nikolasbradshaw.com: could not connect to host
|
||||
ninofink.com: could not connect to host
|
||||
ninux.ch: could not connect to host
|
||||
niouininon.eu: could not connect to host
|
||||
nirada.info: could not connect to host
|
||||
nishikino-maki.com: could not connect to host
|
||||
niva.synology.me: could not connect to host
|
||||
nkadvertising.online: could not connect to host
|
||||
nodefoo.com: could not connect to host
|
||||
nodelab-it.de: could not connect to host
|
||||
nodeselect.com: could not connect to host
|
||||
noelblog.ga: could not connect to host
|
||||
@ -1671,7 +1675,6 @@ opinion8td.com: could not connect to host
|
||||
opinionipannolini.it: could not connect to host
|
||||
orangekey.tk: could not connect to host
|
||||
oricejoc.com: could not connect to host
|
||||
osacrypt.studio: could not connect to host
|
||||
oscarmashauri.com: could not connect to host
|
||||
oscsdp.cz: could not connect to host
|
||||
oshell.me: could not connect to host
|
||||
@ -1719,10 +1722,8 @@ peirong.me: could not connect to host
|
||||
pemagrid.org: could not connect to host
|
||||
pengisatelier.net: could not connect to host
|
||||
pepper.dog: could not connect to host
|
||||
perrone.co: could not connect to host
|
||||
persjrp.ca: could not connect to host
|
||||
persoform.ch: could not connect to host
|
||||
pervacio.hu: could not connect to host
|
||||
petlife.od.ua: could not connect to host
|
||||
peuf.shop: could not connect to host
|
||||
peykezamin.ir: could not connect to host
|
||||
@ -1758,7 +1759,6 @@ pixelgliders.de: could not connect to host
|
||||
plaasprodukte.com: could not connect to host
|
||||
planbox.info: could not connect to host
|
||||
planningexcellence.com.au: could not connect to host
|
||||
play.cash: could not connect to host
|
||||
playsharp.com: could not connect to host
|
||||
please-deny.me: could not connect to host
|
||||
plussizereviews.com: could not connect to host
|
||||
@ -1894,6 +1894,7 @@ richardb.me: could not connect to host
|
||||
richeza.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116" data: no]
|
||||
righteousendeavour.com: could not connect to host
|
||||
riversideauto.net: could not connect to host
|
||||
riverstyxgame.com: could not connect to host
|
||||
roave.com: could not connect to host
|
||||
robi-net.it: could not connect to host
|
||||
robicue.com: could not connect to host
|
||||
@ -1923,7 +1924,6 @@ ruhr3.de: could not connect to host
|
||||
ruja.dk: could not connect to host
|
||||
runcarina.com: could not connect to host
|
||||
rundumcolumn.xyz: could not connect to host
|
||||
rushball.net: could not connect to host
|
||||
ruurdboomsma.nl: could not connect to host
|
||||
rzegroup.com: could not connect to host
|
||||
s0923.com: could not connect to host
|
||||
@ -2054,7 +2054,6 @@ slytech.ch: could not connect to host
|
||||
smallchat.nl: could not connect to host
|
||||
smartbiz.vn: could not connect to host
|
||||
smarthouse.de: could not connect to host
|
||||
smartmessages.net: could not connect to host
|
||||
smith.is: could not connect to host
|
||||
sml.lc: could not connect to host
|
||||
smuhelper.cn: could not connect to host
|
||||
@ -2187,6 +2186,7 @@ team-pancake.eu: could not connect to host
|
||||
tearoy.faith: could not connect to host
|
||||
tebieer.com: could not connect to host
|
||||
techask.it: could not connect to host
|
||||
techcultivation.de: could not connect to host
|
||||
techiehall.com: could not connect to host
|
||||
techpit.us: could not connect to host
|
||||
techshift.se: could not connect to host
|
||||
@ -2210,6 +2210,7 @@ the-gist.io: could not connect to host
|
||||
thebte.com: could not connect to host
|
||||
thedailyupvote.com: could not connect to host
|
||||
theeducationchannel.info: could not connect to host
|
||||
theevergreen.me: could not connect to host
|
||||
thefox.co: could not connect to host
|
||||
thefrk.xyz: could not connect to host
|
||||
thelostyankee.com: could not connect to host
|
||||
@ -2252,7 +2253,6 @@ tollsjekk.no: could not connect to host
|
||||
tomharling.co.uk: could not connect to host
|
||||
tomm.yt: could not connect to host
|
||||
tomo.gr: could not connect to host
|
||||
toms.ovh: could not connect to host
|
||||
top10mountainbikes.info: could not connect to host
|
||||
topanlage.de: could not connect to host
|
||||
topdetoxcleanse.com: could not connect to host
|
||||
@ -2281,6 +2281,7 @@ treker.us: could not connect to host
|
||||
triageo.com.au: could not connect to host
|
||||
tristanfarkas.one: could not connect to host
|
||||
trumanlibrary.org: could not connect to host
|
||||
truthmessages.pw: could not connect to host
|
||||
tryfm.net: could not connect to host
|
||||
trynowrinkleseyeserum.com: could not connect to host
|
||||
tryti.me: could not connect to host
|
||||
@ -2309,12 +2310,12 @@ tylerharcourt.ca: could not connect to host
|
||||
tylerharcourt.com: could not connect to host
|
||||
tylerharcourt.net: could not connect to host
|
||||
tylerharcourt.org: could not connect to host
|
||||
tysox.de: could not connect to host
|
||||
tysye.ca: could not connect to host
|
||||
tzwe.com: could not connect to host
|
||||
ubi.gg: could not connect to host
|
||||
ubicv.com: could not connect to host
|
||||
uborcare.com: could not connect to host
|
||||
ubtce.com: could not connect to host
|
||||
udo-luetkemeier.de: could not connect to host
|
||||
ueba1085.jp: could not connect to host
|
||||
ueu.me: could not connect to host
|
||||
@ -2487,6 +2488,7 @@ xeonlab.com: could not connect to host
|
||||
xeonlab.de: could not connect to host
|
||||
xia100.xyz: could not connect to host
|
||||
xianguocy.com: could not connect to host
|
||||
xiaoyu.net: could not connect to host
|
||||
xing.ml: could not connect to host
|
||||
xiqi.us: could not connect to host
|
||||
xlboo.com: could not connect to host
|
||||
@ -2634,7 +2636,6 @@ zzw.ca: could not connect to host
|
||||
188betwarriors.co.uk: could not connect to host
|
||||
188trafalgar.ca: did not receive HSTS header
|
||||
195gm.com: could not connect to host
|
||||
1972969867.rsc.cdn77.org: did not receive HSTS header
|
||||
1a-jva.de: could not connect to host
|
||||
1atic.com: could not connect to host
|
||||
1co-jp.net: did not receive HSTS header
|
||||
@ -2674,7 +2675,7 @@ zzw.ca: could not connect to host
|
||||
32ph.com: could not connect to host
|
||||
33836.com: did not receive HSTS header
|
||||
33drugstore.com: did not receive HSTS header
|
||||
341.mg: did not receive HSTS header
|
||||
341.mg: could not connect to host
|
||||
3555aa.com: could not connect to host
|
||||
35792.de: could not connect to host
|
||||
360gradus.com: did not receive HSTS header
|
||||
@ -2926,7 +2927,6 @@ akselimedia.fi: did not receive HSTS header
|
||||
akstudentsfirst.org: could not connect to host
|
||||
aktivist.in: did not receive HSTS header
|
||||
al-shami.net: could not connect to host
|
||||
aladdin.ie: did not receive HSTS header
|
||||
alair.cn: did not receive HSTS header
|
||||
alanlee.net: could not connect to host
|
||||
alanrickmanflipstable.com: could not connect to host
|
||||
@ -3139,7 +3139,6 @@ appsbystudio.co.uk: did not receive HSTS header
|
||||
appsdash.io: could not connect to host
|
||||
appuro.com: did not receive HSTS header
|
||||
aquariumaccessories.shop: did not receive HSTS header
|
||||
aquaundine.net: did not receive HSTS header
|
||||
aquilalab.com: could not connect to host
|
||||
arabdigitalexpression.org: did not receive HSTS header
|
||||
aradulconteaza.ro: could not connect to host
|
||||
@ -3258,7 +3257,7 @@ aurora-terraria.org: did not receive HSTS header
|
||||
auroratownshipfd.org: could not connect to host
|
||||
aurugs.com: did not receive HSTS header
|
||||
auskunftsbegehren.at: did not receive HSTS header
|
||||
auslandsjahr-usa.de: could not connect to host
|
||||
auslandsjahr-usa.de: did not receive HSTS header
|
||||
ausnah.me: could not connect to host
|
||||
ausoptic.com.au: max-age too low: 2592000
|
||||
aussiecable.org: did not receive HSTS header
|
||||
@ -3322,7 +3321,6 @@ b-space.de: did not receive HSTS header
|
||||
b2bpromoteit.com: did not receive HSTS header
|
||||
b3orion.com: max-age too low: 0
|
||||
b8a.me: could not connect to host
|
||||
babursahvizeofisi.com: did not receive HSTS header
|
||||
baby-click.de: could not connect to host
|
||||
babybee.ie: could not connect to host
|
||||
babybic.hu: did not receive HSTS header
|
||||
@ -3541,7 +3539,7 @@ bimbo.com.ar: max-age too low: 86400
|
||||
bimbobakeriesusa.com: max-age too low: 86400
|
||||
binaryfigments.com: max-age too low: 86400
|
||||
binderapp.net: could not connect to host
|
||||
bingcheung.org: did not receive HSTS header
|
||||
bingcheung.org: could not connect to host
|
||||
bioespuna.eu: did not receive HSTS header
|
||||
biofam.ru: did not receive HSTS header
|
||||
bioknowme.com: did not receive HSTS header
|
||||
@ -3684,6 +3682,7 @@ boxlitepackaging.com: did not receive HSTS header
|
||||
boyan.in: could not connect to host
|
||||
boyfriendhusband.men: did not receive HSTS header
|
||||
bp-wahl.at: did not receive HSTS header
|
||||
bqr.ch: did not receive HSTS header
|
||||
bqtoolbox.com: could not connect to host
|
||||
bragasoft.com.br: did not receive HSTS header
|
||||
braineet.com: did not receive HSTS header
|
||||
@ -4173,6 +4172,7 @@ codepoet.de: did not receive HSTS header
|
||||
codepx.com: did not receive HSTS header
|
||||
codewiththepros.org: could not connect to host
|
||||
codigosddd.com.br: did not receive HSTS header
|
||||
coding.net: did not receive HSTS header
|
||||
coffeeetc.co.uk: max-age too low: 7889238
|
||||
coffeestrategies.com: max-age too low: 5184000
|
||||
cogniflex.com: did not receive HSTS header
|
||||
@ -4298,7 +4298,6 @@ covenantbank.net: could not connect to host
|
||||
coverdat.com: did not receive HSTS header
|
||||
coverduck.ru: could not connect to host
|
||||
cpuvinf.eu.org: could not connect to host
|
||||
cracker.in.th: max-age too low: 2592000
|
||||
cracking.org: did not receive HSTS header
|
||||
crackingking.com: did not receive HSTS header
|
||||
craftbeerbarn.co.uk: could not connect to host
|
||||
@ -4831,7 +4830,6 @@ dunea.nl: did not receive HSTS header
|
||||
duole30.com: did not receive HSTS header
|
||||
duongpho.com: did not receive HSTS header
|
||||
duskopy.top: could not connect to host
|
||||
dutchessuganda.com: did not receive HSTS header
|
||||
dutchrank.com: did not receive HSTS header
|
||||
duuu.ch: could not connect to host
|
||||
duyao.de: max-age too low: 86400
|
||||
@ -4944,10 +4942,9 @@ ehito.ovh: could not connect to host
|
||||
ehrenamt-skpfcw.de: could not connect to host
|
||||
eicfood.com: could not connect to host
|
||||
eidolonhost.com: did not receive HSTS header
|
||||
eifelindex.de: did not receive HSTS header
|
||||
eifelindex.de: could not connect to host
|
||||
eigo.work: could not connect to host
|
||||
eimanavicius.lt: did not receive HSTS header
|
||||
ejusu.com: did not receive HSTS header
|
||||
ekbanden.nl: could not connect to host
|
||||
eksik.com: could not connect to host
|
||||
el-soul.com: did not receive HSTS header
|
||||
@ -5713,6 +5710,7 @@ gizzo.sk: could not connect to host
|
||||
glasslikes.com: did not receive HSTS header
|
||||
glbg.eu: did not receive HSTS header
|
||||
glentakahashi.com: could not connect to host
|
||||
glittersjabloon.nl: did not receive HSTS header
|
||||
glitzmirror.com: could not connect to host
|
||||
global-adult-webcams.com: did not receive HSTS header
|
||||
globalado.com: could not connect to host
|
||||
@ -6443,6 +6441,7 @@ iostips.ru: could not connect to host
|
||||
ip-life.net: did not receive HSTS header
|
||||
ip6.im: did not receive HSTS header
|
||||
ipbill.org.uk: could not connect to host
|
||||
ipfp.pl: did not receive HSTS header
|
||||
iplife.cn: could not connect to host
|
||||
ipmimagazine.com: did not receive HSTS header
|
||||
iprice.co.id: did not receive HSTS header
|
||||
@ -6668,7 +6667,6 @@ jimmycai.org: could not connect to host
|
||||
jingyuesi.com: could not connect to host
|
||||
jinmaguoji.com: could not connect to host
|
||||
jinshavip.com: could not connect to host
|
||||
jiosongs.com: did not receive HSTS header
|
||||
jira.com: did not receive HSTS header
|
||||
jirav.io: could not connect to host
|
||||
jisaku-homepage.com: did not receive HSTS header
|
||||
@ -6817,7 +6815,6 @@ karaoketonight.com: could not connect to host
|
||||
karloskontana.tk: could not connect to host
|
||||
karting34.com: did not receive HSTS header
|
||||
kashdash.ca: could not connect to host
|
||||
kasilag.me: did not receive HSTS header
|
||||
katalogakci.cz: did not receive HSTS header
|
||||
katiaetdavid.fr: could not connect to host
|
||||
katoju.co.jp: could not connect to host
|
||||
@ -6873,8 +6870,7 @@ kid-dachau.de: did not receive HSTS header
|
||||
kidkat.cn: could not connect to host
|
||||
kiel-media.de: did not receive HSTS header
|
||||
kienlen.org: did not receive HSTS header
|
||||
kieranjones.uk: did not receive HSTS header
|
||||
kill-paff.com: did not receive HSTS header
|
||||
kill-paff.com: could not connect to host
|
||||
kimana.pe: could not connect to host
|
||||
kimberg.co.uk: did not receive HSTS header
|
||||
kimberlybeautysoapcompany.com: did not receive HSTS header
|
||||
@ -7006,7 +7002,7 @@ ksfh-mail.de: could not connect to host
|
||||
kstan.me: could not connect to host
|
||||
ksukelife.com: did not receive HSTS header
|
||||
kswriter.com: could not connect to host
|
||||
kteen.info: could not connect to host
|
||||
kteen.info: did not receive HSTS header
|
||||
kuba.guide: could not connect to host
|
||||
kucom.it: could not connect to host
|
||||
kudo.co.id: did not receive HSTS header
|
||||
@ -7086,7 +7082,6 @@ langendries.eu: could not connect to host
|
||||
langhun.me: did not receive HSTS header
|
||||
laniakean.com: could not connect to host
|
||||
lansinoh.co.uk: did not receive HSTS header
|
||||
lanternhealth.org: did not receive HSTS header
|
||||
lanzainc.xyz: did not receive HSTS header
|
||||
laobox.fr: could not connect to host
|
||||
laplaceduvillage.net: could not connect to host
|
||||
@ -7425,6 +7420,7 @@ madesoftware.com.br: could not connect to host
|
||||
madesurveying.co.uk: max-age too low: 0
|
||||
mafamane.com: could not connect to host
|
||||
mafiareturns.com: max-age too low: 2592000
|
||||
magentaize.net: did not receive HSTS header
|
||||
magenx.com: did not receive HSTS header
|
||||
magia360.com: did not receive HSTS header
|
||||
magneticanvil.com: did not receive HSTS header
|
||||
@ -7613,7 +7609,7 @@ mclab.su: max-age too low: 2592000
|
||||
mclist.it: could not connect to host
|
||||
mcmillansedationdentistry.com: did not receive HSTS header
|
||||
mcooperlaw.com: did not receive HSTS header
|
||||
mcuexchange.com: could not connect to host
|
||||
mcuexchange.com: did not receive HSTS header
|
||||
mdfnet.se: did not receive HSTS header
|
||||
mdscomp.net: did not receive HSTS header
|
||||
meadowfenfarm.com: could not connect to host
|
||||
@ -7628,6 +7624,7 @@ mediafinancelab.org: did not receive HSTS header
|
||||
mediamag.am: max-age too low: 0
|
||||
mediawikicn.org: could not connect to host
|
||||
medienservice-fritz.de: did not receive HSTS header
|
||||
medifab.online: did not receive HSTS header
|
||||
medirich.co: could not connect to host
|
||||
meditek-dv.ru: could not connect to host
|
||||
mediterenopmaandag.nl: did not receive HSTS header
|
||||
@ -7716,6 +7713,7 @@ michaelscrivo.com: did not receive HSTS header
|
||||
michaelwaite.org: could not connect to host
|
||||
michal-kral.cz: could not connect to host
|
||||
michalborka.cz: could not connect to host
|
||||
michel.pt: did not receive HSTS header
|
||||
michelledonelan.co.uk: did not receive HSTS header
|
||||
michiganmetalartwork.com: max-age too low: 7889238
|
||||
miconware.de: could not connect to host
|
||||
@ -8534,6 +8532,7 @@ ottospora.nl: could not connect to host
|
||||
ourbank.com: max-age too low: 2592000
|
||||
outdooradventures.pro: did not receive HSTS header
|
||||
outdoorproducts.com: did not receive HSTS header
|
||||
outlines.xyz: did not receive HSTS header
|
||||
outreachbuddy.com: could not connect to host
|
||||
outsider.im: could not connect to host
|
||||
outurnate.com: did not receive HSTS header
|
||||
@ -8653,7 +8652,6 @@ pavelkahouseforcisco.com: did not receive HSTS header
|
||||
paxdei.com.br: could not connect to host
|
||||
paxwinkel.nl: did not receive HSTS header
|
||||
pay.gigahost.dk: did not receive HSTS header
|
||||
payboy.biz: did not receive HSTS header
|
||||
payclixpayments.com: did not receive HSTS header
|
||||
payfreez.com: could not connect to host
|
||||
payload.tech: did not receive HSTS header
|
||||
@ -9200,7 +9198,7 @@ redar.xyz: could not connect to host
|
||||
reddit.com: did not receive HSTS header
|
||||
rede.ca: did not receive HSTS header
|
||||
redeemingbeautyminerals.com: max-age too low: 0
|
||||
redhorsemountainranch.com: could not connect to host
|
||||
redhorsemountainranch.com: did not receive HSTS header
|
||||
redicabo.de: could not connect to host
|
||||
redirectman.com: did not receive HSTS header
|
||||
redlatam.org: could not connect to host
|
||||
@ -10035,7 +10033,6 @@ spititout.it: could not connect to host
|
||||
spittersberger.recipes: did not receive HSTS header
|
||||
spokonline.com: could not connect to host
|
||||
sponsortobias.com: could not connect to host
|
||||
sport-socken.net: did not receive HSTS header
|
||||
sportchirp-internal.azurewebsites.net: did not receive HSTS header
|
||||
sporthit.ru: did not receive HSTS header
|
||||
sportifik.com: did not receive HSTS header
|
||||
@ -10139,7 +10136,6 @@ stoick.me: could not connect to host
|
||||
stole-my.bike: could not connect to host
|
||||
stole-my.tv: could not connect to host
|
||||
stonecutterscommunity.com: could not connect to host
|
||||
stopbreakupnow.org: did not receive HSTS header
|
||||
stopwoodfin.org: could not connect to host
|
||||
storbritannien.guide: could not connect to host
|
||||
store-host.com: did not receive HSTS header
|
||||
@ -10482,7 +10478,6 @@ thecloudrevolution.net: did not receive HSTS header
|
||||
theclubjersey.com: did not receive HSTS header
|
||||
thecodeninja.net: did not receive HSTS header
|
||||
thecoffeehouse.xyz: could not connect to host
|
||||
thedreamtravelgroup.co.uk: did not receive HSTS header
|
||||
thedrinks.co: did not receive HSTS header
|
||||
thedrop.pw: did not receive HSTS header
|
||||
thedystance.com: could not connect to host
|
||||
@ -10490,6 +10485,7 @@ theelitebuzz.com: did not receive HSTS header
|
||||
theemasphere.com: did not receive HSTS header
|
||||
theendofzion.com: did not receive HSTS header
|
||||
theescapistswiki.com: could not connect to host
|
||||
theeyeopener.com: did not receive HSTS header
|
||||
thefarbeyond.com: could not connect to host
|
||||
theflowerbasketonline.com: could not connect to host
|
||||
thefootballanalyst.com: did not receive HSTS header
|
||||
@ -10503,7 +10499,7 @@ thegoldregister.co.uk: could not connect to host
|
||||
thegreenpark.co.uk: did not receive HSTS header
|
||||
thegreenvpn.com: did not receive HSTS header
|
||||
thehiddenbay.eu: could not connect to host
|
||||
thehiddenbay.me: max-age too low: 0
|
||||
thehiddenbay.me: could not connect to host
|
||||
thehiddenbay.net: max-age too low: 0
|
||||
thehighersideclothing.com: did not receive HSTS header
|
||||
thehistory.me: could not connect to host
|
||||
@ -10598,7 +10594,7 @@ tikutiku.pl: could not connect to host
|
||||
tildebot.com: could not connect to host
|
||||
tilient.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 116" data: no]
|
||||
tilikum.io: did not receive HSTS header
|
||||
tilkah.com.au: did not receive HSTS header
|
||||
tilkah.com.au: could not connect to host
|
||||
tillcraft.com: could not connect to host
|
||||
timbeilby.com: could not connect to host
|
||||
timbuktutimber.com: did not receive HSTS header
|
||||
@ -10639,6 +10635,7 @@ tkappertjedemetamorfose.nl: could not connect to host
|
||||
tkarstens.de: did not receive HSTS header
|
||||
tkjg.fi: did not receive HSTS header
|
||||
tkonstantopoulos.tk: could not connect to host
|
||||
tlach.cz: did not receive HSTS header
|
||||
tlcdn.net: could not connect to host
|
||||
tlo.hosting: could not connect to host
|
||||
tlo.link: could not connect to host
|
||||
@ -10677,6 +10674,7 @@ tokobungadipadangflorist.com: did not receive HSTS header
|
||||
tokoone.com: did not receive HSTS header
|
||||
tokotamz.net: could not connect to host
|
||||
tokotimbangandigitalmurah.web.id: did not receive HSTS header
|
||||
tokototech.com: did not receive HSTS header
|
||||
tokoyo.biz: could not connect to host
|
||||
tollmanz.com: did not receive HSTS header
|
||||
tolud.com: could not connect to host
|
||||
@ -10740,7 +10738,6 @@ tracker-gps.ch: could not connect to host
|
||||
trackingstream.com: did not receive HSTS header
|
||||
tracktivity.com.au: could not connect to host
|
||||
trade-smart.ru: could not connect to host
|
||||
tradingbhavishya.com: did not receive HSTS header
|
||||
tradingcentre.com.au: did not receive HSTS header
|
||||
tradinghope.com: could not connect to host
|
||||
traditional-knowledge.tk: did not receive HSTS header
|
||||
@ -10953,7 +10950,6 @@ unikitty-on-tour.com: could not connect to host
|
||||
unionstationapp.com: could not connect to host
|
||||
unison.com: did not receive HSTS header
|
||||
unisyssecurity.com: did not receive HSTS header
|
||||
uniteasia.org: did not receive HSTS header
|
||||
unitlabs.net: could not connect to host
|
||||
unitrade-425.co.za: did not receive HSTS header
|
||||
university4industry.com: did not receive HSTS header
|
||||
@ -11189,6 +11185,7 @@ voicesuk.co.uk: did not receive HSTS header
|
||||
voidserv.net: could not connect to host
|
||||
volbyzive.cz: did not receive HSTS header
|
||||
volcrado.com: did not receive HSTS header
|
||||
voliere-info.nl: did not receive HSTS header
|
||||
volkden.com: could not connect to host
|
||||
voltotc.com: did not receive HSTS header
|
||||
vonavy-cukor.sk: could not connect to host
|
||||
@ -11276,6 +11273,7 @@ waterforlife.net.au: did not receive HSTS header
|
||||
waterpoint.com.br: could not connect to host
|
||||
watersportmarkt.net: did not receive HSTS header
|
||||
watsonhall.uk: could not connect to host
|
||||
wattechweb.com: did not receive HSTS header
|
||||
wavefloatrooms.com: did not receive HSTS header
|
||||
wavefrontsystemstech.com: could not connect to host
|
||||
waylee.net: did not receive HSTS header
|
||||
@ -11517,7 +11515,7 @@ www-8003.com: did not receive HSTS header
|
||||
www-88599.com: did not receive HSTS header
|
||||
www-9995.com: did not receive HSTS header
|
||||
www-djbet.com: did not receive HSTS header
|
||||
www-jinshavip.com: did not receive HSTS header
|
||||
www-jinshavip.com: could not connect to host
|
||||
www.cueup.com: could not connect to host
|
||||
www.cyveillance.com: did not receive HSTS header
|
||||
www.developer.mydigipass.com: could not connect to host
|
||||
|
@ -8,7 +8,7 @@
|
||||
/*****************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1531236210688000);
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1531252670136000);
|
||||
%%
|
||||
0-1.party, 1
|
||||
0.me.uk, 1
|
||||
@ -213,6 +213,7 @@ const PRTime gPreloadListExpirationTime = INT64_C(1531236210688000);
|
||||
19216811.online, 1
|
||||
192168ll.repair, 1
|
||||
1921958389.rsc.cdn77.org, 1
|
||||
1972969867.rsc.cdn77.org, 1
|
||||
1981612088.rsc.cdn77.org, 1
|
||||
19hundert84.de, 1
|
||||
1a-diamantscheiben.de, 1
|
||||
@ -1373,6 +1374,7 @@ akvorrat.at, 1
|
||||
al-f.net, 1
|
||||
al3xpro.com, 1
|
||||
alaboard.com, 1
|
||||
aladdin.ie, 1
|
||||
aladdinschools.appspot.com, 1
|
||||
alainbaechlerphotography.ch, 1
|
||||
alainmargot.ch, 1
|
||||
@ -2284,6 +2286,7 @@ aquarium-supplement.net, 1
|
||||
aquaron.com, 1
|
||||
aquaselect.eu, 1
|
||||
aquatechnologygroup.com, 1
|
||||
aquaundine.net, 1
|
||||
aquavitaedayspa.com.au, 1
|
||||
aquila.co.uk, 1
|
||||
aquilaguild.com, 0
|
||||
@ -3130,6 +3133,7 @@ babarkata.com, 1
|
||||
babeleo.com, 1
|
||||
babelfisch.eu, 1
|
||||
babettelandmesser.de, 1
|
||||
babursahvizeofisi.com, 1
|
||||
baby-digne.com, 1
|
||||
babyboom.pl, 1
|
||||
babycamapp.com, 1
|
||||
@ -4814,7 +4818,6 @@ bpo.ovh, 1
|
||||
bpol-forum.de, 1
|
||||
bqcp.net, 1
|
||||
bqp.io, 1
|
||||
bqr.ch, 1
|
||||
br.search.yahoo.com, 0
|
||||
br3in.nl, 0
|
||||
braams.nl, 1
|
||||
@ -6473,7 +6476,7 @@ cirugiasplasticas.com.mx, 1
|
||||
cirujanooral.com, 1
|
||||
cirurgicagervasio.com.br, 1
|
||||
cirurgicalucena.com.br, 1
|
||||
ciscodude.net, 0
|
||||
ciscodude.net, 1
|
||||
cisoaid.com, 1
|
||||
ciss.ltd, 1
|
||||
cisy.me, 1
|
||||
@ -6861,7 +6864,6 @@ codific.com, 1
|
||||
codific.eu, 1
|
||||
coding-minds.com, 1
|
||||
coding.lv, 1
|
||||
coding.net, 1
|
||||
codingforspeed.com, 1
|
||||
codingfromhell.net, 1
|
||||
codingrobots.com, 1
|
||||
@ -7391,6 +7393,7 @@ cqchome.com, 1
|
||||
cqn.ch, 1
|
||||
cr.search.yahoo.com, 0
|
||||
crackcat.de, 1
|
||||
cracker.in.th, 1
|
||||
crackle.io, 1
|
||||
crackorsquad.in, 1
|
||||
crackpfer.de, 1
|
||||
@ -9642,6 +9645,7 @@ dustygroove.com, 1
|
||||
dustyspokesbnb.ca, 1
|
||||
dutch.desi, 1
|
||||
dutch1.nl, 1
|
||||
dutchessuganda.com, 1
|
||||
dutchrank.nl, 1
|
||||
dutchwanderers.nl, 1
|
||||
dutchweballiance.nl, 1
|
||||
@ -10086,6 +10090,7 @@ ejdv-anmeldung.de, 1
|
||||
ejeff.org, 1
|
||||
ejgconsultancy.co.uk, 1
|
||||
ejuicelab.co.uk, 1
|
||||
ejusu.com, 1
|
||||
ek-networks.de, 1
|
||||
ek.network, 1
|
||||
ekaigotenshoku.com, 1
|
||||
@ -13330,7 +13335,6 @@ glenshere.com, 1
|
||||
glidingshop.cz, 1
|
||||
glidingshop.de, 1
|
||||
glidingshop.eu, 1
|
||||
glittersjabloon.nl, 1
|
||||
glloq.org, 1
|
||||
glob-coin.com, 1
|
||||
global-lights.ma, 1
|
||||
@ -16142,7 +16146,6 @@ ipcareers.net, 1
|
||||
ipcfg.me, 1
|
||||
ipconsulting.se, 1
|
||||
ipfirebox.de, 1
|
||||
ipfp.pl, 1
|
||||
ipfs.ink, 1
|
||||
ipfs.io, 1
|
||||
iphonechina.net, 1
|
||||
@ -16895,6 +16898,7 @@ jino-jossy.appspot.com, 1
|
||||
jinshuju.net, 1
|
||||
jintaiyang123.org, 1
|
||||
jiogo.com, 1
|
||||
jiosongs.com, 1
|
||||
jirav.com, 1
|
||||
jiripudil.cz, 1
|
||||
jiveiaktivno.bg, 1
|
||||
@ -17549,6 +17553,7 @@ kasadara.com, 1
|
||||
kasei.im, 1
|
||||
kashis.com.au, 1
|
||||
kashmirobserver.net, 1
|
||||
kasilag.me, 0
|
||||
kasko.io, 1
|
||||
kasnoffskinclinic.com, 1
|
||||
kassa.at, 1
|
||||
@ -17817,6 +17822,7 @@ kiekin.org, 1
|
||||
kiekko.pro, 1
|
||||
kiel-kind.de, 1
|
||||
kielderweather.org.uk, 1
|
||||
kieranjones.uk, 1
|
||||
kieranweightman.me, 1
|
||||
kiesuwkerstkaart.nl, 1
|
||||
kievradio.com, 1
|
||||
@ -18620,6 +18626,7 @@ lanroamer.de, 1
|
||||
lansechensilu.com, 1
|
||||
lanseyujie.com, 0
|
||||
lanternalauth.com, 1
|
||||
lanternhealth.org, 1
|
||||
lantian.pub, 1
|
||||
lanturtle.com, 1
|
||||
lanuovariviera.it, 1
|
||||
@ -19561,7 +19568,7 @@ logopedistalanni.it, 1
|
||||
logophiliapress.com, 1
|
||||
logopoeia.com, 1
|
||||
logostock.jp, 1
|
||||
logue.be, 0
|
||||
logue.be, 1
|
||||
logze.nl, 1
|
||||
lohanaflores.com.br, 1
|
||||
loichot.ch, 1
|
||||
@ -20046,7 +20053,6 @@ magdic.eu, 1
|
||||
magebankin.com, 1
|
||||
magenbrot.net, 0
|
||||
magenda.sk, 1
|
||||
magentaize.net, 1
|
||||
magentapinkinteriors.co.uk, 1
|
||||
magi-cake.com, 1
|
||||
magi.systems, 1
|
||||
@ -20796,7 +20802,6 @@ medicinia.com.br, 1
|
||||
medicinskavranje.edu.rs, 1
|
||||
medicocompetente.it, 1
|
||||
medicoresponde.com.br, 1
|
||||
medifab.online, 1
|
||||
medifi.com, 1
|
||||
medinside.ch, 1
|
||||
medinside.li, 1
|
||||
@ -21135,7 +21140,6 @@ michalvasicek.cz, 1
|
||||
michalwiglasz.cz, 1
|
||||
michasfahrschule.com, 1
|
||||
michel-wein.de, 1
|
||||
michel.pt, 1
|
||||
michiganunionoptout.com, 1
|
||||
michmexguides.com.mx, 1
|
||||
michu.pl, 1
|
||||
@ -21864,7 +21868,7 @@ mplusm.eu, 1
|
||||
mpn.poker, 1
|
||||
mpnpokertour.com, 1
|
||||
mpodraza.pl, 1
|
||||
mpreserver.com, 0
|
||||
mpreserver.com, 1
|
||||
mprsco.eu, 1
|
||||
mpserver12.org, 1
|
||||
mpsgarage.com.au, 1
|
||||
@ -22842,7 +22846,7 @@ netsight.org, 1
|
||||
netsigna.de, 1
|
||||
netsite.dk, 1
|
||||
netsoins.org, 1
|
||||
netsparker.com, 0
|
||||
netsparker.com, 1
|
||||
netsparker.com.tr, 1
|
||||
netsystems.pro, 1
|
||||
nettamente.com, 1
|
||||
@ -24177,7 +24181,6 @@ outetc.com, 1
|
||||
outgress.com, 1
|
||||
outka.xyz, 1
|
||||
outline.ski, 1
|
||||
outlines.xyz, 1
|
||||
outlookonthedesktop.com, 1
|
||||
outofcontrol.ca, 1
|
||||
outpostinfo.com, 1
|
||||
@ -24645,6 +24648,7 @@ pawsr.us, 1
|
||||
pay.gov, 1
|
||||
pay.ubuntu.com, 1
|
||||
pay8522.com, 1
|
||||
payboy.biz, 1
|
||||
payboy.rocks, 1
|
||||
paybro.eu, 1
|
||||
payfazz.com, 1
|
||||
@ -30149,6 +30153,7 @@ spornkuller.de, 1
|
||||
sport-in-sundern.de, 1
|
||||
sport-potreby.cz, 1
|
||||
sport-potreby.sk, 1
|
||||
sport-socken.net, 1
|
||||
sport247.bet, 1
|
||||
sporter.com, 1
|
||||
sportflash.info, 1
|
||||
@ -30603,6 +30608,7 @@ stonewuu.com, 1
|
||||
stony.com, 1
|
||||
stonystratford.org, 1
|
||||
stopakwardhandshakes.org, 1
|
||||
stopbreakupnow.org, 1
|
||||
stopbullying.gov, 1
|
||||
stopfraud.gov, 1
|
||||
stopthethyroidmadness.com, 1
|
||||
@ -31816,6 +31822,7 @@ thedisc.nl, 1
|
||||
thediscovine.com, 1
|
||||
thedocumentrefinery.com, 1
|
||||
thedominatorsclan.com, 1
|
||||
thedreamtravelgroup.co.uk, 1
|
||||
thedronechart.com, 1
|
||||
thedrunkencabbage.com, 1
|
||||
thedutchmarketers.com, 1
|
||||
@ -31825,7 +31832,6 @@ theeducationdirectory.org, 1
|
||||
theepankar.com, 1
|
||||
theevergreen.me, 1
|
||||
theexpatriate.de, 1
|
||||
theeyeopener.com, 1
|
||||
thefanimatrix.net, 1
|
||||
thefasterweb.com, 1
|
||||
thefbstalker.com, 1
|
||||
@ -32329,7 +32335,6 @@ tkn.tokyo, 1
|
||||
tkts.cl, 1
|
||||
tkusano.jp, 1
|
||||
tkw01536.de, 1
|
||||
tlach.cz, 1
|
||||
tlca.org, 1
|
||||
tlcnet.info, 1
|
||||
tlehseasyads.com, 1
|
||||
@ -32450,7 +32455,6 @@ tokky.eu, 1
|
||||
tokobungadijambi.com, 1
|
||||
tokobungadilampung.com, 1
|
||||
tokoindo.top, 1
|
||||
tokototech.com, 1
|
||||
tokugai.com, 1
|
||||
tokumei.co, 1
|
||||
tokyo-onkyo.jp, 1
|
||||
@ -32760,6 +32764,7 @@ traderjoe-cloud.de, 1
|
||||
tradietrove.com.au, 1
|
||||
tradinews.com, 1
|
||||
tradinews.fr, 1
|
||||
tradingbhavishya.com, 1
|
||||
tradingrooms.com, 0
|
||||
traditionsvivantesenimages.ch, 1
|
||||
tradiz.org, 1
|
||||
@ -33457,6 +33462,7 @@ unirenter.ru, 1
|
||||
unit7jazz.com, 1
|
||||
unit7jazz.org, 1
|
||||
unite-ka.de, 1
|
||||
uniteasia.org, 1
|
||||
united-schools.net, 1
|
||||
united.com, 0
|
||||
unitedadmins.com, 1
|
||||
@ -34287,7 +34293,6 @@ volcain.io, 1
|
||||
volcanconcretos.com, 1
|
||||
volga.us, 1
|
||||
volgavibes.ru, 0
|
||||
voliere-info.nl, 0
|
||||
volker-gropp.de, 1
|
||||
volkergropp.de, 1
|
||||
volkerwesselstransfer.nl, 1
|
||||
@ -34319,7 +34324,7 @@ vorodevops.com, 1
|
||||
vos-fleurs.ch, 1
|
||||
vos-fleurs.com, 1
|
||||
vosgym.jp, 1
|
||||
voshod.org, 1
|
||||
voshod.org, 0
|
||||
vosjesweb.nl, 1
|
||||
vosky.fr, 1
|
||||
vosn.de, 1
|
||||
@ -34568,7 +34573,6 @@ watertrails.io, 1
|
||||
waterworkscondos.com, 1
|
||||
watoo.tech, 1
|
||||
watsonwork.me, 1
|
||||
wattechweb.com, 1
|
||||
wave-ola.es, 1
|
||||
wave.is, 1
|
||||
wavesboardshop.com, 1
|
||||
|
@ -25,13 +25,13 @@ job-defaults:
|
||||
scopes:
|
||||
by-project:
|
||||
mozilla-beta:
|
||||
- project:releng:bouncer:action:submission
|
||||
- project:releng:bouncer:action:aliases
|
||||
- project:releng:bouncer:server:production
|
||||
mozilla-release:
|
||||
- project:releng:bouncer:action:submission
|
||||
- project:releng:bouncer:action:aliases
|
||||
- project:releng:bouncer:server:production
|
||||
default:
|
||||
- project:releng:bouncer:action:submission
|
||||
- project:releng:bouncer:action:aliases
|
||||
- project:releng:bouncer:server:staging
|
||||
run-on-projects: []
|
||||
shipping-phase: ship
|
||||
|
@ -29,7 +29,6 @@ def make_task_worker(config, jobs):
|
||||
job, 'scopes', item_name=job['name'], project=config.params['project']
|
||||
)
|
||||
|
||||
job['scopes'].append('project:releng:bouncer:action:aliases')
|
||||
job['worker']['entries'] = craft_bouncer_entries(config, job)
|
||||
|
||||
del job['bouncer-products']
|
||||
|
@ -20,7 +20,6 @@ FINAL_LIBRARY = 'xul'
|
||||
LOCAL_INCLUDES += [
|
||||
'../../xre',
|
||||
'../alerts',
|
||||
'../downloads',
|
||||
'../feeds',
|
||||
'../find',
|
||||
'../jsdownloads/src',
|
||||
|
@ -21,9 +21,6 @@
|
||||
#define NS_AUTOCOMPLETEMDBRESULT_CONTRACTID \
|
||||
"@mozilla.org/autocomplete/mdb-result;1"
|
||||
|
||||
#define NS_DOWNLOADMANAGER_CONTRACTID \
|
||||
"@mozilla.org/download-manager;1"
|
||||
|
||||
#define NS_DOWNLOADPLATFORM_CONTRACTID \
|
||||
"@mozilla.org/toolkit/download-platform;1"
|
||||
|
||||
@ -117,9 +114,6 @@
|
||||
#define NS_AUTOCOMPLETEMDBRESULT_CID \
|
||||
{ 0x7a6f70b6, 0x2bbd, 0x44b5, { 0x93, 0x4, 0x50, 0x13, 0x52, 0xd4, 0x4a, 0xb5 } }
|
||||
|
||||
#define NS_DOWNLOADMANAGER_CID \
|
||||
{ 0xedb0490e, 0x1dd1, 0x11b2, { 0x83, 0xb8, 0xdb, 0xf8, 0xd8, 0x59, 0x06, 0xa6 } }
|
||||
|
||||
#define NS_DOWNLOADPLATFORM_CID \
|
||||
{ 0x649a14c9, 0xfe5c, 0x48ec, { 0x9c, 0x85, 0x00, 0xca, 0xd9, 0xcc, 0xf3, 0x2e } }
|
||||
|
||||
|
@ -19,7 +19,6 @@
|
||||
#include "mozilla/AlertNotification.h"
|
||||
#include "nsAlertsService.h"
|
||||
|
||||
#include "nsDownloadManager.h"
|
||||
#include "DownloadPlatform.h"
|
||||
#include "rdf.h"
|
||||
|
||||
@ -84,8 +83,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsParentalControlsService)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(AlertNotification)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsAlertsService)
|
||||
|
||||
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsDownloadManager,
|
||||
nsDownloadManager::GetSingleton)
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(DownloadPlatform)
|
||||
|
||||
NS_GENERIC_FACTORY_CONSTRUCTOR(nsTypeAheadFind)
|
||||
@ -144,7 +141,6 @@ NS_DEFINE_NAMED_CID(NS_ALERTSSERVICE_CID);
|
||||
#if !defined(MOZ_DISABLE_PARENTAL_CONTROLS)
|
||||
NS_DEFINE_NAMED_CID(NS_PARENTALCONTROLSSERVICE_CID);
|
||||
#endif
|
||||
NS_DEFINE_NAMED_CID(NS_DOWNLOADMANAGER_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_DOWNLOADPLATFORM_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_FIND_SERVICE_CID);
|
||||
NS_DEFINE_NAMED_CID(NS_TYPEAHEADFIND_CID);
|
||||
@ -180,7 +176,6 @@ static const Module::CIDEntry kToolkitCIDs[] = {
|
||||
#if !defined(MOZ_DISABLE_PARENTAL_CONTROLS)
|
||||
{ &kNS_PARENTALCONTROLSSERVICE_CID, false, nullptr, nsParentalControlsServiceConstructor },
|
||||
#endif
|
||||
{ &kNS_DOWNLOADMANAGER_CID, false, nullptr, nsDownloadManagerConstructor },
|
||||
{ &kNS_DOWNLOADPLATFORM_CID, false, nullptr, DownloadPlatformConstructor },
|
||||
{ &kNS_FIND_SERVICE_CID, false, nullptr, nsFindServiceConstructor },
|
||||
{ &kNS_TYPEAHEADFIND_CID, false, nullptr, nsTypeAheadFindConstructor },
|
||||
@ -218,7 +213,6 @@ static const Module::ContractIDEntry kToolkitContracts[] = {
|
||||
#if !defined(MOZ_DISABLE_PARENTAL_CONTROLS)
|
||||
{ NS_PARENTALCONTROLSSERVICE_CONTRACTID, &kNS_PARENTALCONTROLSSERVICE_CID },
|
||||
#endif
|
||||
{ NS_DOWNLOADMANAGER_CONTRACTID, &kNS_DOWNLOADMANAGER_CID },
|
||||
{ NS_DOWNLOADPLATFORM_CONTRACTID, &kNS_DOWNLOADPLATFORM_CID },
|
||||
{ NS_FIND_SERVICE_CONTRACTID, &kNS_FIND_SERVICE_CID },
|
||||
{ NS_TYPEAHEADFIND_CONTRACTID, &kNS_TYPEAHEADFIND_CID },
|
||||
|
@ -1,25 +0,0 @@
|
||||
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# 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/.
|
||||
|
||||
with Files('*'):
|
||||
BUG_COMPONENT = ('Toolkit', 'Download Manager')
|
||||
|
||||
XPIDL_SOURCES += [
|
||||
'nsIDownload.idl',
|
||||
'nsIDownloadManager.idl',
|
||||
'nsIDownloadManagerUI.idl',
|
||||
'nsIDownloadProgressListener.idl',
|
||||
]
|
||||
|
||||
XPIDL_MODULE = 'downloads'
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'nsDownloadManager.cpp'
|
||||
]
|
||||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
|
||||
CXXFLAGS += CONFIG['TK_CFLAGS']
|
@ -1,406 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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/. */
|
||||
|
||||
#include "nsIPrefService.h"
|
||||
#include "nsIPropertyBag2.h"
|
||||
#include "nsCExternalHandlerService.h"
|
||||
#include "nsDirectoryServiceDefs.h"
|
||||
#include "nsDownloadManager.h"
|
||||
|
||||
#include "mozilla/Services.h"
|
||||
|
||||
using namespace mozilla;
|
||||
|
||||
#define DOWNLOAD_MANAGER_BUNDLE "chrome://mozapps/locale/downloads/downloads.properties"
|
||||
|
||||
#define NS_SYSTEMINFO_CONTRACTID "@mozilla.org/system-info;1"
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// nsDownloadManager
|
||||
|
||||
NS_IMPL_ISUPPORTS(
|
||||
nsDownloadManager
|
||||
, nsIDownloadManager
|
||||
)
|
||||
|
||||
nsDownloadManager *nsDownloadManager::gDownloadManagerService = nullptr;
|
||||
|
||||
already_AddRefed<nsDownloadManager>
|
||||
nsDownloadManager::GetSingleton()
|
||||
{
|
||||
if (gDownloadManagerService) {
|
||||
return do_AddRef(gDownloadManagerService);
|
||||
}
|
||||
|
||||
auto serv = MakeRefPtr<nsDownloadManager>();
|
||||
// Note: This is cleared in the nsDownloadManager constructor.
|
||||
gDownloadManagerService = serv.get();
|
||||
if (NS_SUCCEEDED(serv->Init())) {
|
||||
return serv.forget();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsDownloadManager::~nsDownloadManager()
|
||||
{
|
||||
MOZ_ASSERT(gDownloadManagerService == this);
|
||||
gDownloadManagerService = nullptr;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsDownloadManager::Init()
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIStringBundleService> bundleService =
|
||||
mozilla::services::GetStringBundleService();
|
||||
if (!bundleService)
|
||||
return NS_ERROR_FAILURE;
|
||||
|
||||
rv = bundleService->CreateBundle(DOWNLOAD_MANAGER_BUNDLE,
|
||||
getter_AddRefs(mBundle));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// nsIDownloadManager
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetActivePrivateDownloadCount(int32_t* aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetActiveDownloadCount(int32_t *aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetActiveDownloads(nsISimpleEnumerator **aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetActivePrivateDownloads(nsISimpleEnumerator **aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
/**
|
||||
* For platforms where helper apps use the downloads directory (i.e. mobile),
|
||||
* this should be kept in sync with nsExternalHelperAppService.cpp
|
||||
*/
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetDefaultDownloadsDirectory(nsIFile **aResult)
|
||||
{
|
||||
nsCOMPtr<nsIFile> downloadDir;
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIProperties> dirService =
|
||||
do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// OSX 10.4:
|
||||
// Desktop
|
||||
// OSX 10.5:
|
||||
// User download directory
|
||||
// Vista:
|
||||
// Downloads
|
||||
// XP/2K:
|
||||
// My Documents/Downloads
|
||||
// Linux:
|
||||
// XDG user dir spec, with a fallback to Home/Downloads
|
||||
|
||||
nsAutoString folderName;
|
||||
mBundle->GetStringFromName("downloadsFolder", folderName);
|
||||
|
||||
#if defined (XP_MACOSX)
|
||||
rv = dirService->Get(NS_OSX_DEFAULT_DOWNLOAD_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
#elif defined(XP_WIN)
|
||||
rv = dirService->Get(NS_WIN_DEFAULT_DOWNLOAD_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Check the os version
|
||||
nsCOMPtr<nsIPropertyBag2> infoService =
|
||||
do_GetService(NS_SYSTEMINFO_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
int32_t version;
|
||||
NS_NAMED_LITERAL_STRING(osVersion, "version");
|
||||
rv = infoService->GetPropertyAsInt32(osVersion, &version);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (version < 6) { // XP/2K
|
||||
// First get "My Documents"
|
||||
rv = dirService->Get(NS_WIN_PERSONAL_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = downloadDir->Append(folderName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// This could be the first time we are creating the downloads folder in My
|
||||
// Documents, so make sure it exists.
|
||||
bool exists;
|
||||
rv = downloadDir->Exists(&exists);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!exists) {
|
||||
rv = downloadDir->Create(nsIFile::DIRECTORY_TYPE, 0755);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
#elif defined(XP_UNIX)
|
||||
#if defined(MOZ_WIDGET_ANDROID)
|
||||
// Android doesn't have a $HOME directory, and by default we only have
|
||||
// write access to /data/data/org.mozilla.{$APP} and /sdcard
|
||||
char* downloadDirPath = getenv("DOWNLOADS_DIRECTORY");
|
||||
if (downloadDirPath) {
|
||||
rv = NS_NewNativeLocalFile(nsDependentCString(downloadDirPath),
|
||||
true, getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
else {
|
||||
rv = NS_ERROR_FAILURE;
|
||||
}
|
||||
#else
|
||||
rv = dirService->Get(NS_UNIX_DEFAULT_DOWNLOAD_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
// fallback to Home/Downloads
|
||||
if (NS_FAILED(rv)) {
|
||||
rv = dirService->Get(NS_UNIX_HOME_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = downloadDir->Append(folderName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
rv = dirService->Get(NS_OS_HOME_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = downloadDir->Append(folderName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
#endif
|
||||
|
||||
downloadDir.forget(aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
#define NS_BRANCH_DOWNLOAD "browser.download."
|
||||
#define NS_PREF_FOLDERLIST "folderList"
|
||||
#define NS_PREF_DIR "dir"
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetUserDownloadsDirectory(nsIFile **aResult)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIProperties> dirService =
|
||||
do_GetService(NS_DIRECTORY_SERVICE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIPrefService> prefService =
|
||||
do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefBranch;
|
||||
rv = prefService->GetBranch(NS_BRANCH_DOWNLOAD,
|
||||
getter_AddRefs(prefBranch));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
int32_t val;
|
||||
rv = prefBranch->GetIntPref(NS_PREF_FOLDERLIST,
|
||||
&val);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
switch(val) {
|
||||
case 0: // Desktop
|
||||
{
|
||||
nsCOMPtr<nsIFile> downloadDir;
|
||||
rv = dirService->Get(NS_OS_DESKTOP_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(downloadDir));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
downloadDir.forget(aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
break;
|
||||
case 1: // Downloads
|
||||
return GetDefaultDownloadsDirectory(aResult);
|
||||
case 2: // Custom
|
||||
{
|
||||
nsCOMPtr<nsIFile> customDirectory;
|
||||
prefBranch->GetComplexValue(NS_PREF_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
getter_AddRefs(customDirectory));
|
||||
if (customDirectory) {
|
||||
bool exists = false;
|
||||
(void)customDirectory->Exists(&exists);
|
||||
|
||||
if (!exists) {
|
||||
rv = customDirectory->Create(nsIFile::DIRECTORY_TYPE, 0755);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
customDirectory.forget(aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Create failed, so it still doesn't exist. Fall out and get the
|
||||
// default downloads directory.
|
||||
}
|
||||
|
||||
bool writable = false;
|
||||
bool directory = false;
|
||||
(void)customDirectory->IsWritable(&writable);
|
||||
(void)customDirectory->IsDirectory(&directory);
|
||||
|
||||
if (exists && writable && directory) {
|
||||
customDirectory.forget(aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
rv = GetDefaultDownloadsDirectory(aResult);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
(void)prefBranch->SetComplexValue(NS_PREF_DIR,
|
||||
NS_GET_IID(nsIFile),
|
||||
*aResult);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::AddDownload(int16_t aDownloadType,
|
||||
nsIURI *aSource,
|
||||
nsIURI *aTarget,
|
||||
const nsAString& aDisplayName,
|
||||
nsIMIMEInfo *aMIMEInfo,
|
||||
PRTime aStartTime,
|
||||
nsIFile *aTempFile,
|
||||
nsICancelable *aCancelable,
|
||||
bool aIsPrivate,
|
||||
nsIDownload **aDownload)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetDownload(uint32_t aID, nsIDownload **aDownloadItem)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetDownloadByGUID(const nsACString& aGUID,
|
||||
nsIDownloadManagerResult* aCallback)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::CancelDownload(uint32_t aID)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::RetryDownload(uint32_t aID)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::RemoveDownload(uint32_t aID)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::RemoveDownloadsByTimeframe(int64_t aStartTime,
|
||||
int64_t aEndTime)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::CleanUp()
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::CleanUpPrivate()
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetCanCleanUp(bool *aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetCanCleanUpPrivate(bool *aResult)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::PauseDownload(uint32_t aID)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::ResumeDownload(uint32_t aID)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetDBConnection(mozIStorageConnection **aDBConn)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::GetPrivateDBConnection(mozIStorageConnection **aDBConn)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::AddListener(nsIDownloadProgressListener *aListener)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::AddPrivacyAwareListener(nsIDownloadProgressListener *aListener)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDownloadManager::RemoveListener(nsIDownloadProgressListener *aListener)
|
||||
{
|
||||
return NS_ERROR_UNEXPECTED;
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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 downloadmanager___h___
|
||||
#define downloadmanager___h___
|
||||
|
||||
#include "nsIDownloadManager.h"
|
||||
#include "nsIDownloadProgressListener.h"
|
||||
#include "nsIFile.h"
|
||||
#include "nsIStringBundle.h"
|
||||
#include "nsISupportsPrimitives.h"
|
||||
#include "nsString.h"
|
||||
|
||||
class nsDownloadManager final : public nsIDownloadManager
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIDOWNLOADMANAGER
|
||||
|
||||
nsresult Init();
|
||||
|
||||
static already_AddRefed<nsDownloadManager> GetSingleton();
|
||||
|
||||
nsDownloadManager()
|
||||
{
|
||||
}
|
||||
|
||||
protected:
|
||||
virtual ~nsDownloadManager();
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsIStringBundle> mBundle;
|
||||
|
||||
static nsDownloadManager *gDownloadManagerService;
|
||||
};
|
||||
|
||||
#endif
|
@ -1,175 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* 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/. */
|
||||
|
||||
#include "nsITransfer.idl"
|
||||
|
||||
interface nsIURI;
|
||||
interface nsIFile;
|
||||
interface nsIObserver;
|
||||
interface nsICancelable;
|
||||
interface nsIWebProgressListener;
|
||||
interface nsIMIMEInfo;
|
||||
|
||||
/**
|
||||
* Represents a download object.
|
||||
*
|
||||
* @note This object is no longer updated once it enters a completed state.
|
||||
* Completed states are the following:
|
||||
* nsIDownloadManager::DOWNLOAD_FINISHED
|
||||
* nsIDownloadManager::DOWNLOAD_FAILED
|
||||
* nsIDownloadManager::DOWNLOAD_CANCELED
|
||||
* nsIDownloadManager::DOWNLOAD_BLOCKED_PARENTAL
|
||||
* nsIDownloadManager::DOWNLOAD_DIRTY
|
||||
* nsIDownloadManager::DOWNLOAD_BLOCKED_POLICY
|
||||
*/
|
||||
[scriptable, uuid(2258f465-656e-4566-87cb-f791dbaf0322)]
|
||||
interface nsIDownload : nsITransfer {
|
||||
|
||||
/**
|
||||
* The target of a download is always a file on the local file system.
|
||||
*/
|
||||
readonly attribute nsIFile targetFile;
|
||||
|
||||
/**
|
||||
* The percentage of transfer completed.
|
||||
* If the file size is unknown it'll be -1 here.
|
||||
*/
|
||||
readonly attribute long percentComplete;
|
||||
|
||||
/**
|
||||
* The amount of bytes downloaded so far.
|
||||
*/
|
||||
readonly attribute long long amountTransferred;
|
||||
|
||||
/**
|
||||
* The size of file in bytes.
|
||||
* Unknown size is represented by -1.
|
||||
*/
|
||||
readonly attribute long long size;
|
||||
|
||||
/**
|
||||
* The source of the transfer.
|
||||
*/
|
||||
readonly attribute nsIURI source;
|
||||
|
||||
/**
|
||||
* The target of the transfer.
|
||||
*/
|
||||
readonly attribute nsIURI target;
|
||||
|
||||
/**
|
||||
* Object that can be used to cancel the download.
|
||||
* Will be null after the download is finished.
|
||||
*/
|
||||
readonly attribute nsICancelable cancelable;
|
||||
|
||||
/**
|
||||
* The user-readable description of the transfer.
|
||||
*/
|
||||
readonly attribute AString displayName;
|
||||
|
||||
/**
|
||||
* The time a transfer was started.
|
||||
*/
|
||||
readonly attribute long long startTime;
|
||||
|
||||
/**
|
||||
* The speed of the transfer in bytes/sec.
|
||||
*/
|
||||
readonly attribute double speed;
|
||||
|
||||
/**
|
||||
* Optional. If set, it will contain the target's relevant MIME information.
|
||||
* This includes its MIME Type, helper app, and whether that helper should be
|
||||
* executed.
|
||||
*/
|
||||
readonly attribute nsIMIMEInfo MIMEInfo;
|
||||
|
||||
/**
|
||||
* The id of the download that is stored in the database - not globally unique.
|
||||
* For example, a private download and a public one might have identical ids.
|
||||
* Can only be safely used for direct database manipulation in the database that
|
||||
* contains this download. Use the guid property instead for safe, database-agnostic
|
||||
* searching and manipulation.
|
||||
*
|
||||
* @deprecated
|
||||
*/
|
||||
readonly attribute unsigned long id;
|
||||
|
||||
/**
|
||||
* The guid of the download that is stored in the database.
|
||||
* Has the form of twelve alphanumeric characters.
|
||||
*/
|
||||
readonly attribute ACString guid;
|
||||
|
||||
/**
|
||||
* The state of the download.
|
||||
* @see nsIDownloadManager and nsIXPInstallManagerUI
|
||||
*/
|
||||
readonly attribute short state;
|
||||
|
||||
/**
|
||||
* The referrer uri of the download. This is only valid for HTTP downloads,
|
||||
* and can be null.
|
||||
*/
|
||||
readonly attribute nsIURI referrer;
|
||||
|
||||
/**
|
||||
* Indicates if the download can be resumed after being paused or not. This
|
||||
* is only the case if the download is over HTTP/1.1 or FTP and if the
|
||||
* server supports it.
|
||||
*/
|
||||
readonly attribute boolean resumable;
|
||||
|
||||
/**
|
||||
* Indicates if the download was initiated from a context marked as private,
|
||||
* controlling whether it should be stored in a permanent manner or not.
|
||||
*/
|
||||
readonly attribute boolean isPrivate;
|
||||
|
||||
/**
|
||||
* Cancel this download if it's currently in progress.
|
||||
*/
|
||||
void cancel();
|
||||
|
||||
/**
|
||||
* Pause this download if it is in progress.
|
||||
*
|
||||
* @throws NS_ERROR_UNEXPECTED if it cannot be paused.
|
||||
*/
|
||||
void pause();
|
||||
|
||||
/**
|
||||
* Resume this download if it is paused.
|
||||
*
|
||||
* @throws NS_ERROR_UNEXPECTED if it cannot be resumed or is not paused.
|
||||
*/
|
||||
void resume();
|
||||
|
||||
/**
|
||||
* Instruct the download manager to remove this download. Whereas
|
||||
* cancel simply cancels the transfer, but retains information about it,
|
||||
* remove removes all knowledge of it.
|
||||
*
|
||||
* @see nsIDownloadManager.removeDownload for more detail
|
||||
* @throws NS_ERROR_FAILURE if the download is active.
|
||||
*/
|
||||
void remove();
|
||||
|
||||
/**
|
||||
* Instruct the download manager to retry this failed download
|
||||
* @throws NS_ERROR_NOT_AVAILABLE if the download is not known.
|
||||
* @throws NS_ERROR_FAILURE if the download is not in the following states:
|
||||
* nsIDownloadManager::DOWNLOAD_CANCELED
|
||||
* nsIDownloadManager::DOWNLOAD_FAILED
|
||||
*/
|
||||
void retry();
|
||||
};
|
||||
|
||||
%{C++
|
||||
// {b02be33b-d47c-4bd3-afd9-402a942426b0}
|
||||
#define NS_DOWNLOAD_CID \
|
||||
{ 0xb02be33b, 0xd47c, 0x4bd3, { 0xaf, 0xd9, 0x40, 0x2a, 0x94, 0x24, 0x26, 0xb0 } }
|
||||
%}
|
@ -1,358 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* 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/. */
|
||||
|
||||
// Keeps track of ongoing downloads, in the form of nsIDownload's.
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIURI;
|
||||
interface nsIFile;
|
||||
interface nsIDownload;
|
||||
interface nsICancelable;
|
||||
interface nsIMIMEInfo;
|
||||
interface nsIDownloadProgressListener;
|
||||
interface nsISimpleEnumerator;
|
||||
interface mozIStorageConnection;
|
||||
|
||||
[scriptable, function, uuid(0c07ffeb-791b-49f3-ae38-2c331fd55a52)]
|
||||
interface nsIDownloadManagerResult : nsISupports {
|
||||
/**
|
||||
* Process an asynchronous result from getDownloadByGUID.
|
||||
*
|
||||
* @param aStatus The result code of the operation:
|
||||
* * NS_OK: an item was found. No other success values are returned.
|
||||
* * NS_ERROR_NOT_AVAILABLE: no such item was found.
|
||||
* * Other error values are possible, but less well-defined.
|
||||
*/
|
||||
void handleResult(in nsresult aStatus, in nsIDownload aDownload);
|
||||
};
|
||||
|
||||
[scriptable, uuid(b29aac15-7ec4-4ab3-a53b-08f78aed3b34)]
|
||||
interface nsIDownloadManager : nsISupports {
|
||||
/**
|
||||
* Download type for generic file download.
|
||||
*/
|
||||
const short DOWNLOAD_TYPE_DOWNLOAD = 0;
|
||||
|
||||
/**
|
||||
* Download state for uninitialized download object.
|
||||
*/
|
||||
const short DOWNLOAD_NOTSTARTED = -1;
|
||||
|
||||
/**
|
||||
* Download is currently transferring data.
|
||||
*/
|
||||
const short DOWNLOAD_DOWNLOADING = 0;
|
||||
|
||||
/**
|
||||
* Download completed including any processing of the target
|
||||
* file. (completed)
|
||||
*/
|
||||
const short DOWNLOAD_FINISHED = 1;
|
||||
|
||||
/**
|
||||
* Transfer failed due to error. (completed)
|
||||
*/
|
||||
const short DOWNLOAD_FAILED = 2;
|
||||
|
||||
/**
|
||||
* Download was canceled by the user. (completed)
|
||||
*/
|
||||
const short DOWNLOAD_CANCELED = 3;
|
||||
|
||||
/**
|
||||
* Transfer was paused by the user.
|
||||
*/
|
||||
const short DOWNLOAD_PAUSED = 4;
|
||||
|
||||
/**
|
||||
* Download is active but data has not yet been received.
|
||||
*/
|
||||
const short DOWNLOAD_QUEUED = 5;
|
||||
|
||||
/**
|
||||
* Transfer request was blocked by parental controls proxies. (completed)
|
||||
*/
|
||||
const short DOWNLOAD_BLOCKED_PARENTAL = 6;
|
||||
|
||||
/**
|
||||
* Transferred download is being scanned by virus scanners.
|
||||
*/
|
||||
const short DOWNLOAD_SCANNING = 7;
|
||||
|
||||
/**
|
||||
* A virus was detected in the download. The target will most likely
|
||||
* no longer exist. (completed)
|
||||
*/
|
||||
const short DOWNLOAD_DIRTY = 8;
|
||||
|
||||
/**
|
||||
* Win specific: Request was blocked by zone policy settings.
|
||||
* (see bug #416683) (completed)
|
||||
*/
|
||||
const short DOWNLOAD_BLOCKED_POLICY = 9;
|
||||
|
||||
|
||||
/**
|
||||
* Creates an nsIDownload and adds it to be managed by the download manager.
|
||||
*
|
||||
* @param aSource The source URI of the transfer. Must not be null.
|
||||
*
|
||||
* @param aTarget The target URI of the transfer. Must not be null.
|
||||
*
|
||||
* @param aDisplayName The user-readable description of the transfer.
|
||||
* Can be empty.
|
||||
*
|
||||
* @param aMIMEInfo The MIME info associated with the target,
|
||||
* including MIME type and helper app when appropriate.
|
||||
* This parameter is optional.
|
||||
*
|
||||
* @param startTime Time when the download started
|
||||
*
|
||||
* @param aTempFile The location of a temporary file; i.e. a file in which
|
||||
* the received data will be stored, but which is not
|
||||
* equal to the target file. (will be moved to the real
|
||||
* target by the DownloadManager, when the download is
|
||||
* finished). This will be null for all callers except for
|
||||
* nsExternalHelperAppHandler. Addons should generally pass
|
||||
* null for aTempFile. This will be moved to the real target
|
||||
* by the download manager when the download is finished,
|
||||
* and the action indicated by aMIMEInfo will be executed.
|
||||
*
|
||||
* @param aCancelable An object that can be used to abort the download.
|
||||
* Must not be null.
|
||||
*
|
||||
* @param aIsPrivate Used to determine the privacy status of the new download.
|
||||
* If true, the download is stored in a manner that leaves
|
||||
* no permanent trace outside of the current private session.
|
||||
*
|
||||
* @return The newly created download item with the passed-in properties.
|
||||
*
|
||||
* @note This does not actually start a download. If you want to add and
|
||||
* start a download, you need to create an nsIWebBrowserPersist, pass it
|
||||
* as the aCancelable object, call this method, set the progressListener
|
||||
* as the returned download object, then call saveURI.
|
||||
*/
|
||||
nsIDownload addDownload(in short aDownloadType,
|
||||
in nsIURI aSource,
|
||||
in nsIURI aTarget,
|
||||
in AString aDisplayName,
|
||||
in nsIMIMEInfo aMIMEInfo,
|
||||
in PRTime aStartTime,
|
||||
in nsIFile aTempFile,
|
||||
in nsICancelable aCancelable,
|
||||
in boolean aIsPrivate);
|
||||
|
||||
/**
|
||||
* Retrieves a download managed by the download manager. This can be one that
|
||||
* is in progress, or one that has completed in the past and is stored in the
|
||||
* database.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @return The download with the specified ID.
|
||||
* @throws NS_ERROR_NOT_AVAILABLE if the download is not in the database.
|
||||
*/
|
||||
nsIDownload getDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* Retrieves a download managed by the download manager. This can be one that
|
||||
* is in progress, or one that has completed in the past and is stored in the
|
||||
* database. The result of this method is returned via an asynchronous callback,
|
||||
* the parameter of which will be an nsIDownload object, or null if none exists
|
||||
* with the provided GUID.
|
||||
*
|
||||
* @param aGUID The unique GUID of the download.
|
||||
* @param aCallback The callback to invoke with the result of the search.
|
||||
*/
|
||||
void getDownloadByGUID(in ACString aGUID, in nsIDownloadManagerResult aCallback);
|
||||
|
||||
/**
|
||||
* Cancels the download with the specified ID if it's currently in-progress.
|
||||
* This calls cancel(NS_BINDING_ABORTED) on the nsICancelable provided by the
|
||||
* download.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @throws NS_ERROR_FAILURE if the download is not in-progress.
|
||||
*/
|
||||
void cancelDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* Removes the download with the specified id if it's not currently
|
||||
* in-progress. Whereas cancelDownload simply cancels the transfer, but
|
||||
* retains information about it, removeDownload removes all knowledge of it.
|
||||
*
|
||||
* Also notifies observers of the "download-manager-remove-download-guid"
|
||||
* topic with the download guid as the subject to allow any DM consumers to
|
||||
* react to the removal.
|
||||
*
|
||||
* Also may notify observers of the "download-manager-remove-download" topic
|
||||
* with the download id as the subject, if the download removed is public
|
||||
* or if global private browsing mode is in use. This notification is deprecated;
|
||||
* the guid notification should be relied upon instead.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @throws NS_ERROR_FAILURE if the download is active.
|
||||
*/
|
||||
void removeDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* Removes all inactive downloads that were started inclusively within the
|
||||
* specified time frame.
|
||||
*
|
||||
* @param aBeginTime
|
||||
* The start time to remove downloads by in microseconds.
|
||||
* @param aEndTime
|
||||
* The end time to remove downloads by in microseconds.
|
||||
*/
|
||||
void removeDownloadsByTimeframe(in long long aBeginTime,
|
||||
in long long aEndTime);
|
||||
|
||||
/**
|
||||
* Pause the specified download.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @throws NS_ERROR_FAILURE if the download is not in-progress.
|
||||
*/
|
||||
void pauseDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* Resume the specified download.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @throws NS_ERROR_FAILURE if the download is not in-progress.
|
||||
*/
|
||||
void resumeDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* Retries a failed download.
|
||||
*
|
||||
* @param aID The unique ID of the download.
|
||||
* @throws NS_ERROR_NOT_AVAILALE if the download id is not known.
|
||||
* @throws NS_ERROR_FAILURE if the download is not in the following states:
|
||||
* nsIDownloadManager::DOWNLOAD_CANCELED
|
||||
* nsIDownloadManager::DOWNLOAD_FAILED
|
||||
*/
|
||||
void retryDownload(in unsigned long aID);
|
||||
|
||||
/**
|
||||
* The database connection to the downloads database.
|
||||
*/
|
||||
readonly attribute mozIStorageConnection DBConnection;
|
||||
readonly attribute mozIStorageConnection privateDBConnection;
|
||||
|
||||
/**
|
||||
* Whether or not there are downloads that can be cleaned up (removed)
|
||||
* i.e. downloads that have completed, have failed or have been canceled.
|
||||
* In global private browsing mode, this reports the status of the relevant
|
||||
* private or public downloads. In per-window mode, it only reports for
|
||||
* public ones.
|
||||
*/
|
||||
readonly attribute boolean canCleanUp;
|
||||
|
||||
/**
|
||||
* Whether or not there are private downloads that can be cleaned up (removed)
|
||||
* i.e. downloads that have completed, have failed or have been canceled.
|
||||
*/
|
||||
readonly attribute boolean canCleanUpPrivate;
|
||||
|
||||
/**
|
||||
* Removes completed, failed, and canceled downloads from the list.
|
||||
* In global private browsing mode, this operates on the relevant
|
||||
* private or public downloads. In per-window mode, it only operates
|
||||
* on public ones.
|
||||
*
|
||||
* Also notifies observers of the "download-manager-remove-download-gui"
|
||||
* and "download-manager-remove-download" topics with a null subject to
|
||||
* allow any DM consumers to react to the removals.
|
||||
*/
|
||||
void cleanUp();
|
||||
|
||||
/**
|
||||
* Removes completed, failed, and canceled downloads from the list
|
||||
* of private downloads.
|
||||
*
|
||||
* Also notifies observers of the "download-manager-remove-download-gui"
|
||||
* and "download-manager-remove-download" topics with a null subject to
|
||||
* allow any DM consumers to react to the removals.
|
||||
*/
|
||||
void cleanUpPrivate();
|
||||
|
||||
/**
|
||||
* The number of files currently being downloaded.
|
||||
*
|
||||
* In global private browsing mode, this reports the status of the relevant
|
||||
* private or public downloads. In per-window mode, it only reports public
|
||||
* ones.
|
||||
*/
|
||||
readonly attribute long activeDownloadCount;
|
||||
|
||||
/**
|
||||
* The number of private files currently being downloaded.
|
||||
*/
|
||||
readonly attribute long activePrivateDownloadCount;
|
||||
|
||||
/**
|
||||
* An enumeration of active nsIDownloads
|
||||
*
|
||||
* In global private browsing mode, this reports the status of the relevant
|
||||
* private or public downloads. In per-window mode, it only reports public
|
||||
* ones.
|
||||
*/
|
||||
readonly attribute nsISimpleEnumerator activeDownloads;
|
||||
|
||||
/**
|
||||
* An enumeration of active private nsIDownloads
|
||||
*/
|
||||
readonly attribute nsISimpleEnumerator activePrivateDownloads;
|
||||
|
||||
/**
|
||||
* Adds a listener to the download manager. It is expected that this
|
||||
* listener will only access downloads via their deprecated integer id attribute,
|
||||
* and when global private browsing compatibility mode is disabled, this listener
|
||||
* will receive no notifications for downloads marked private.
|
||||
*/
|
||||
void addListener(in nsIDownloadProgressListener aListener);
|
||||
|
||||
/**
|
||||
* Adds a listener to the download manager. This listener must be able to
|
||||
* understand and use the guid attribute of downloads for all interactions
|
||||
* with the download manager.
|
||||
*/
|
||||
void addPrivacyAwareListener(in nsIDownloadProgressListener aListener);
|
||||
|
||||
/**
|
||||
* Removes a listener from the download manager.
|
||||
*/
|
||||
void removeListener(in nsIDownloadProgressListener aListener);
|
||||
|
||||
/**
|
||||
* Returns the platform default downloads directory.
|
||||
*/
|
||||
readonly attribute nsIFile defaultDownloadsDirectory;
|
||||
|
||||
/**
|
||||
* Returns the user configured downloads directory.
|
||||
* The path is dependent on two user configurable prefs
|
||||
* set in preferences:
|
||||
*
|
||||
* browser.download.folderList
|
||||
* Indicates the location users wish to save downloaded
|
||||
* files too.
|
||||
* Values:
|
||||
* 0 - The desktop is the default download location.
|
||||
* 1 - The system's downloads folder is the default download location.
|
||||
* 2 - The default download location is elsewhere as specified in
|
||||
* browser.download.dir. If invalid, userDownloadsDirectory
|
||||
* will fallback on defaultDownloadsDirectory.
|
||||
*
|
||||
* browser.download.dir -
|
||||
* A local path the user may have selected at some point
|
||||
* where downloaded files are saved. The use of which is
|
||||
* enabled when folderList equals 2.
|
||||
*/
|
||||
readonly attribute nsIFile userDownloadsDirectory;
|
||||
};
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
/* 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/. */
|
||||
|
||||
#include "nsISupports.idl"
|
||||
interface nsIInterfaceRequestor;
|
||||
interface nsIDownload;
|
||||
|
||||
[scriptable, uuid(0c76d4cf-0b06-4c1a-9bea-520c7bbdba99)]
|
||||
interface nsIDownloadManagerUI : nsISupports {
|
||||
/**
|
||||
* The reason that should be passed when the user requests to show the
|
||||
* download manager's UI.
|
||||
*/
|
||||
const short REASON_USER_INTERACTED = 0;
|
||||
|
||||
/**
|
||||
* The reason that should be passed to the show method when we are displaying
|
||||
* the UI because a new download is being added to it.
|
||||
*/
|
||||
const short REASON_NEW_DOWNLOAD = 1;
|
||||
|
||||
/**
|
||||
* Shows the Download Manager's UI to the user.
|
||||
*
|
||||
* @param [optional] aWindowContext
|
||||
* The parent window context to show the UI.
|
||||
* @param [optional] aDownload
|
||||
* The download to be preselected upon opening.
|
||||
* @param [optional] aReason
|
||||
* The reason to show the download manager's UI. This defaults to
|
||||
* REASON_USER_INTERACTED, and should be one of the previously listed
|
||||
* constants.
|
||||
* @param [optional] aUsePrivateUI
|
||||
* Pass true as this argument to hint to the implementation that it
|
||||
* should only display private downloads in the UI, if possible.
|
||||
*/
|
||||
void show([optional] in nsIInterfaceRequestor aWindowContext,
|
||||
[optional] in nsIDownload aDownload,
|
||||
[optional] in short aReason,
|
||||
[optional] in boolean aUsePrivateUI);
|
||||
|
||||
/**
|
||||
* Indicates if the UI is visible or not.
|
||||
*/
|
||||
readonly attribute boolean visible;
|
||||
|
||||
/**
|
||||
* Brings attention to the UI if it is already visible
|
||||
*
|
||||
* @throws NS_ERROR_UNEXPECTED if the UI is not visible.
|
||||
*/
|
||||
void getAttention();
|
||||
};
|
||||
|
@ -1,60 +0,0 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||
/* 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/. */
|
||||
|
||||
/* A minimally extended progress listener used by download manager
|
||||
* to update its default UI. This is implemented in nsDownloadProgressListener.js.
|
||||
* See nsIWebProgressListener for documentation, and use its constants. This isn't
|
||||
* too pretty, but the alternative is having this extend nsIWebProgressListener and
|
||||
* adding an |item| attribute, which would mean a separate nsIDownloadProgressListener
|
||||
* for every nsIDownloadItem, which is a waste...
|
||||
*/
|
||||
|
||||
#include "nsISupports.idl"
|
||||
|
||||
interface nsIWebProgress;
|
||||
interface nsIRequest;
|
||||
interface nsIURI;
|
||||
interface nsIDownload;
|
||||
interface nsIDOMDocument;
|
||||
|
||||
[scriptable, uuid(7acb07ea-cac2-4c15-a3ad-23aaa789ed51)]
|
||||
interface nsIDownloadProgressListener : nsISupports {
|
||||
|
||||
/**
|
||||
* document
|
||||
* The document of the download manager frontend.
|
||||
*/
|
||||
|
||||
attribute nsIDOMDocument document;
|
||||
|
||||
/**
|
||||
* Dispatched whenever the state of the download changes.
|
||||
*
|
||||
* @param aState The previous download sate.
|
||||
* @param aDownload The download object.
|
||||
* @see nsIDownloadManager for download states.
|
||||
*/
|
||||
void onDownloadStateChange(in short aState, in nsIDownload aDownload);
|
||||
|
||||
void onStateChange(in nsIWebProgress aWebProgress,
|
||||
in nsIRequest aRequest,
|
||||
in unsigned long aStateFlags,
|
||||
in nsresult aStatus,
|
||||
in nsIDownload aDownload);
|
||||
|
||||
void onProgressChange(in nsIWebProgress aWebProgress,
|
||||
in nsIRequest aRequest,
|
||||
in long long aCurSelfProgress,
|
||||
in long long aMaxSelfProgress,
|
||||
in long long aCurTotalProgress,
|
||||
in long long aMaxTotalProgress,
|
||||
in nsIDownload aDownload);
|
||||
|
||||
void onSecurityChange(in nsIWebProgress aWebProgress,
|
||||
in nsIRequest aRequest,
|
||||
in unsigned long aState,
|
||||
in nsIDownload aDownload);
|
||||
|
||||
};
|
@ -29,7 +29,6 @@ DIRS += [
|
||||
'crashes',
|
||||
'crashmonitor',
|
||||
'diskspacewatcher',
|
||||
'downloads',
|
||||
'enterprisepolicies',
|
||||
'extensions',
|
||||
'filewatcher',
|
||||
|
@ -76,7 +76,6 @@ var initTable = {
|
||||
cpmm: ["@mozilla.org/childprocessmessagemanager;1", "nsIMessageSender"],
|
||||
console: ["@mozilla.org/consoleservice;1", "nsIConsoleService"],
|
||||
cookies: ["@mozilla.org/cookiemanager;1", "nsICookieManager"],
|
||||
downloads: ["@mozilla.org/download-manager;1", "nsIDownloadManager"],
|
||||
droppedLinkHandler: ["@mozilla.org/content/dropped-link-handler;1", "nsIDroppedLinkHandler"],
|
||||
els: ["@mozilla.org/eventlistenerservice;1", "nsIEventListenerService"],
|
||||
eTLD: ["@mozilla.org/network/effective-tld-service;1", "nsIEffectiveTLDService"],
|
||||
|
@ -33,7 +33,6 @@ function run_test() {
|
||||
checkService("dirsvc", Ci.nsIProperties);
|
||||
checkService("DOMRequest", Ci.nsIDOMRequestService);
|
||||
checkService("domStorageManager", Ci.nsIDOMStorageManager);
|
||||
checkService("downloads", Ci.nsIDownloadManager);
|
||||
checkService("droppedLinkHandler", Ci.nsIDroppedLinkHandler);
|
||||
checkService("eTLD", Ci.nsIEffectiveTLDService);
|
||||
checkService("focus", Ci.nsIFocusManager);
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.0 KiB |
@ -4,7 +4,6 @@
|
||||
|
||||
toolkit.jar:
|
||||
#include ../../shared/mozapps.inc.mn
|
||||
skin/classic/mozapps/downloads/downloadIcon.png (downloads/downloadIcon.png)
|
||||
* skin/classic/mozapps/extensions/extensions.css (extensions/extensions.css)
|
||||
* skin/classic/mozapps/extensions/newaddon.css (extensions/newaddon.css)
|
||||
skin/classic/mozapps/extensions/heart.png (extensions/heart.png)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB |
@ -5,7 +5,6 @@
|
||||
toolkit.jar:
|
||||
#include ../../shared/mozapps.inc.mn
|
||||
skin/classic/mozapps/downloads/buttons.png (downloads/buttons.png)
|
||||
skin/classic/mozapps/downloads/downloadIcon.png (downloads/downloadIcon.png)
|
||||
skin/classic/mozapps/downloads/unknownContentType.css (downloads/unknownContentType.css)
|
||||
skin/classic/mozapps/extensions/discover-logo.png (extensions/discover-logo.png)
|
||||
skin/classic/mozapps/extensions/rating-won.png (extensions/rating-won.png)
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.3 KiB |
@ -4,7 +4,6 @@
|
||||
|
||||
toolkit.jar:
|
||||
#include ../../shared/mozapps.inc.mn
|
||||
skin/classic/mozapps/downloads/downloadIcon.png (downloads/downloadIcon.png)
|
||||
* skin/classic/mozapps/extensions/extensions.css (extensions/extensions.css)
|
||||
skin/classic/mozapps/extensions/heart.png (extensions/heart.png)
|
||||
* skin/classic/mozapps/extensions/newaddon.css (extensions/newaddon.css)
|
||||
|
Loading…
Reference in New Issue
Block a user