OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. |
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
4 * Copyright (C) 2013 Samsung Electronics. All rights reserved. | 4 * Copyright (C) 2013 Samsung Electronics. All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions are | 7 * modification, are permitted provided that the following conditions are |
8 * met: | 8 * met: |
9 * | 9 * |
10 * * Redistributions of source code must retain the above copyright | 10 * * Redistributions of source code must retain the above copyright |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 int timeout, | 78 int timeout, |
79 const Vector<ScriptValue>& arguments) { | 79 const Vector<ScriptValue>& arguments) { |
80 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 80 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
81 if (!isAllowed(scriptState, executionContext, false)) | 81 if (!isAllowed(scriptState, executionContext, false)) |
82 return 0; | 82 return 0; |
83 if (timeout >= 0 && executionContext->isDocument()) { | 83 if (timeout >= 0 && executionContext->isDocument()) { |
84 // FIXME: Crude hack that attempts to pass idle time to V8. This should | 84 // FIXME: Crude hack that attempts to pass idle time to V8. This should |
85 // be done using the scheduler instead. | 85 // be done using the scheduler instead. |
86 V8GCForContextDispose::instance().notifyIdle(); | 86 V8GCForContextDispose::instance().notifyIdle(); |
87 } | 87 } |
88 ScheduledAction* action = ScheduledAction::create( | 88 ScheduledAction* action = |
89 scriptState, executionContext, handler, arguments); | 89 ScheduledAction::create(scriptState, handler, arguments); |
90 return DOMTimer::install(executionContext, action, timeout, true); | 90 return DOMTimer::install(executionContext, action, timeout, true); |
91 } | 91 } |
92 | 92 |
93 int setTimeout(ScriptState* scriptState, | 93 int setTimeout(ScriptState* scriptState, |
94 EventTarget& eventTarget, | 94 EventTarget& eventTarget, |
95 const String& handler, | 95 const String& handler, |
96 int timeout, | 96 int timeout, |
97 const Vector<ScriptValue>&) { | 97 const Vector<ScriptValue>&) { |
98 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 98 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
99 if (!isAllowed(scriptState, executionContext, true)) | 99 if (!isAllowed(scriptState, executionContext, true)) |
100 return 0; | 100 return 0; |
101 // Don't allow setting timeouts to run empty functions. Was historically a | 101 // Don't allow setting timeouts to run empty functions. Was historically a |
102 // perfomance issue. | 102 // perfomance issue. |
103 if (handler.isEmpty()) | 103 if (handler.isEmpty()) |
104 return 0; | 104 return 0; |
105 if (timeout >= 0 && executionContext->isDocument()) { | 105 if (timeout >= 0 && executionContext->isDocument()) { |
106 // FIXME: Crude hack that attempts to pass idle time to V8. This should | 106 // FIXME: Crude hack that attempts to pass idle time to V8. This should |
107 // be done using the scheduler instead. | 107 // be done using the scheduler instead. |
108 V8GCForContextDispose::instance().notifyIdle(); | 108 V8GCForContextDispose::instance().notifyIdle(); |
109 } | 109 } |
110 ScheduledAction* action = | 110 ScheduledAction* action = ScheduledAction::create(scriptState, handler); |
111 ScheduledAction::create(scriptState, executionContext, handler); | |
112 return DOMTimer::install(executionContext, action, timeout, true); | 111 return DOMTimer::install(executionContext, action, timeout, true); |
113 } | 112 } |
114 | 113 |
115 int setInterval(ScriptState* scriptState, | 114 int setInterval(ScriptState* scriptState, |
116 EventTarget& eventTarget, | 115 EventTarget& eventTarget, |
117 const ScriptValue& handler, | 116 const ScriptValue& handler, |
118 int timeout, | 117 int timeout, |
119 const Vector<ScriptValue>& arguments) { | 118 const Vector<ScriptValue>& arguments) { |
120 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 119 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
121 if (!isAllowed(scriptState, executionContext, false)) | 120 if (!isAllowed(scriptState, executionContext, false)) |
122 return 0; | 121 return 0; |
123 ScheduledAction* action = ScheduledAction::create( | 122 ScheduledAction* action = |
124 scriptState, executionContext, handler, arguments); | 123 ScheduledAction::create(scriptState, handler, arguments); |
125 return DOMTimer::install(executionContext, action, timeout, false); | 124 return DOMTimer::install(executionContext, action, timeout, false); |
126 } | 125 } |
127 | 126 |
128 int setInterval(ScriptState* scriptState, | 127 int setInterval(ScriptState* scriptState, |
129 EventTarget& eventTarget, | 128 EventTarget& eventTarget, |
130 const String& handler, | 129 const String& handler, |
131 int timeout, | 130 int timeout, |
132 const Vector<ScriptValue>&) { | 131 const Vector<ScriptValue>&) { |
133 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 132 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
134 if (!isAllowed(scriptState, executionContext, true)) | 133 if (!isAllowed(scriptState, executionContext, true)) |
135 return 0; | 134 return 0; |
136 // Don't allow setting timeouts to run empty functions. Was historically a | 135 // Don't allow setting timeouts to run empty functions. Was historically a |
137 // perfomance issue. | 136 // perfomance issue. |
138 if (handler.isEmpty()) | 137 if (handler.isEmpty()) |
139 return 0; | 138 return 0; |
140 ScheduledAction* action = | 139 ScheduledAction* action = ScheduledAction::create(scriptState, handler); |
141 ScheduledAction::create(scriptState, executionContext, handler); | |
142 return DOMTimer::install(executionContext, action, timeout, false); | 140 return DOMTimer::install(executionContext, action, timeout, false); |
143 } | 141 } |
144 | 142 |
145 void clearTimeout(EventTarget& eventTarget, int timeoutID) { | 143 void clearTimeout(EventTarget& eventTarget, int timeoutID) { |
146 if (ExecutionContext* context = eventTarget.getExecutionContext()) | 144 if (ExecutionContext* context = eventTarget.getExecutionContext()) |
147 DOMTimer::removeByID(context, timeoutID); | 145 DOMTimer::removeByID(context, timeoutID); |
148 } | 146 } |
149 | 147 |
150 void clearInterval(EventTarget& eventTarget, int timeoutID) { | 148 void clearInterval(EventTarget& eventTarget, int timeoutID) { |
151 if (ExecutionContext* context = eventTarget.getExecutionContext()) | 149 if (ExecutionContext* context = eventTarget.getExecutionContext()) |
152 DOMTimer::removeByID(context, timeoutID); | 150 DOMTimer::removeByID(context, timeoutID); |
153 } | 151 } |
154 | 152 |
155 } // namespace DOMWindowTimers | 153 } // namespace DOMWindowTimers |
156 | 154 |
157 } // namespace blink | 155 } // namespace blink |
OLD | NEW |