OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 18 matching lines...) Expand all Loading... |
29 | 29 |
30 #include "ScriptExecutionContext.h" | 30 #include "ScriptExecutionContext.h" |
31 | 31 |
32 namespace WebCore { | 32 namespace WebCore { |
33 | 33 |
34 SuspendableTimer::SuspendableTimer(ScriptExecutionContext* context) | 34 SuspendableTimer::SuspendableTimer(ScriptExecutionContext* context) |
35 : ActiveDOMObject(context, this) | 35 : ActiveDOMObject(context, this) |
36 , m_nextFireInterval(0) | 36 , m_nextFireInterval(0) |
37 , m_repeatInterval(0) | 37 , m_repeatInterval(0) |
38 #if !ASSERT_DISABLED | 38 #if !ASSERT_DISABLED |
| 39 , m_active(false) |
39 , m_suspended(false) | 40 , m_suspended(false) |
40 #endif | 41 #endif |
41 { | 42 { |
42 } | 43 } |
43 | 44 |
44 SuspendableTimer::~SuspendableTimer() | 45 SuspendableTimer::~SuspendableTimer() |
45 { | 46 { |
46 } | 47 } |
47 | 48 |
48 bool SuspendableTimer::hasPendingActivity() const | 49 bool SuspendableTimer::hasPendingActivity() const |
49 { | 50 { |
50 return isActive(); | 51 return isActive(); |
51 } | 52 } |
52 | 53 |
53 void SuspendableTimer::stop() | 54 void SuspendableTimer::stop() |
54 { | 55 { |
55 TimerBase::stop(); | 56 TimerBase::stop(); |
56 } | 57 } |
57 | 58 |
58 void SuspendableTimer::suspend(ReasonForSuspension) | 59 void SuspendableTimer::suspend(ReasonForSuspension) |
59 { | 60 { |
60 #if !ASSERT_DISABLED | 61 #if !ASSERT_DISABLED |
61 ASSERT(!m_suspended); | 62 ASSERT(!m_suspended); |
62 m_suspended = true; | 63 m_suspended = true; |
63 #endif | 64 #endif |
64 m_nextFireInterval = nextFireInterval(); | 65 m_active = isActive(); |
65 m_repeatInterval = repeatInterval(); | 66 if (m_active) { |
66 TimerBase::stop(); | 67 m_nextFireInterval = nextFireInterval(); |
| 68 m_repeatInterval = repeatInterval(); |
| 69 TimerBase::stop(); |
| 70 } |
67 } | 71 } |
68 | 72 |
69 void SuspendableTimer::resume() | 73 void SuspendableTimer::resume() |
70 { | 74 { |
71 #if !ASSERT_DISABLED | 75 #if !ASSERT_DISABLED |
72 ASSERT(m_suspended); | 76 ASSERT(m_suspended); |
73 m_suspended = false; | 77 m_suspended = false; |
74 #endif | 78 #endif |
75 start(m_nextFireInterval, m_repeatInterval); | 79 if (m_active) |
| 80 start(m_nextFireInterval, m_repeatInterval); |
76 } | 81 } |
77 | 82 |
78 bool SuspendableTimer::canSuspend() const | 83 bool SuspendableTimer::canSuspend() const |
79 { | 84 { |
80 return true; | 85 return true; |
81 } | 86 } |
82 | 87 |
83 } // namespace WebCore | 88 } // namespace WebCore |
OLD | NEW |