Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/base/IdleRequest.cpp
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
3
/* This Source Code Form is subject to the terms of the Mozilla Public
4
 * License, v. 2.0. If a copy of the MPL was not distributed with this
5
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7
#include "IdleRequest.h"
8
9
#include "mozilla/TimeStamp.h"
10
#include "mozilla/dom/IdleDeadline.h"
11
#include "mozilla/dom/PerformanceTiming.h"
12
#include "mozilla/dom/TimeoutManager.h"
13
#include "mozilla/dom/WindowBinding.h"
14
#include "nsComponentManagerUtils.h"
15
#include "nsGlobalWindow.h"
16
#include "nsISupportsPrimitives.h"
17
#include "nsPIDOMWindow.h"
18
19
namespace mozilla {
20
namespace dom {
21
22
IdleRequest::IdleRequest(IdleRequestCallback* aCallback, uint32_t aHandle)
23
  : mCallback(aCallback)
24
  , mHandle(aHandle)
25
  , mTimeoutHandle(Nothing())
26
0
{
27
0
  MOZ_DIAGNOSTIC_ASSERT(mCallback);
28
0
}
29
30
IdleRequest::~IdleRequest()
31
0
{
32
0
}
33
34
NS_IMPL_CYCLE_COLLECTION_CLASS(IdleRequest)
35
36
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(IdleRequest)
37
0
  NS_IMPL_CYCLE_COLLECTION_UNLINK(mCallback)
38
0
  if (tmp->isInList()) {
39
0
    tmp->remove();
40
0
  }
41
0
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
42
43
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(IdleRequest)
44
0
  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCallback)
45
0
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
46
47
NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(IdleRequest, AddRef)
48
NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(IdleRequest, Release)
49
50
void
51
IdleRequest::SetTimeoutHandle(int32_t aHandle)
52
0
{
53
0
  mTimeoutHandle = Some(aHandle);
54
0
}
55
56
uint32_t
57
IdleRequest::GetTimeoutHandle() const
58
0
{
59
0
  MOZ_DIAGNOSTIC_ASSERT(mTimeoutHandle.isSome());
60
0
  return mTimeoutHandle.value();
61
0
}
62
63
nsresult
64
IdleRequest::IdleRun(nsPIDOMWindowInner* aWindow,
65
                     DOMHighResTimeStamp aDeadline,
66
                     bool aDidTimeout)
67
0
{
68
0
  MOZ_ASSERT(NS_IsMainThread());
69
0
  MOZ_DIAGNOSTIC_ASSERT(mCallback);
70
0
71
0
  ErrorResult error;
72
0
  RefPtr<IdleDeadline> deadline =
73
0
    new IdleDeadline(aWindow, aDidTimeout, aDeadline);
74
0
  mCallback->Call(*deadline, error, "requestIdleCallback handler");
75
0
76
0
  mCallback = nullptr;
77
0
  error.SuppressException();
78
0
  return error.StealNSResult();
79
0
}
80
81
} // namespace dom
82
} // namespace mozilla