| 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 = | 88 ScheduledAction* action = ScheduledAction::create( |
| 89 ScheduledAction::create(scriptState, handler, arguments); | 89 scriptState, executionContext, 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 = ScheduledAction::create(scriptState, handler); | 110 ScheduledAction* action = |
| 111 ScheduledAction::create(scriptState, executionContext, handler); |
| 111 return DOMTimer::install(executionContext, action, timeout, true); | 112 return DOMTimer::install(executionContext, action, timeout, true); |
| 112 } | 113 } |
| 113 | 114 |
| 114 int setInterval(ScriptState* scriptState, | 115 int setInterval(ScriptState* scriptState, |
| 115 EventTarget& eventTarget, | 116 EventTarget& eventTarget, |
| 116 const ScriptValue& handler, | 117 const ScriptValue& handler, |
| 117 int timeout, | 118 int timeout, |
| 118 const Vector<ScriptValue>& arguments) { | 119 const Vector<ScriptValue>& arguments) { |
| 119 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 120 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
| 120 if (!isAllowed(scriptState, executionContext, false)) | 121 if (!isAllowed(scriptState, executionContext, false)) |
| 121 return 0; | 122 return 0; |
| 122 ScheduledAction* action = | 123 ScheduledAction* action = ScheduledAction::create( |
| 123 ScheduledAction::create(scriptState, handler, arguments); | 124 scriptState, executionContext, handler, arguments); |
| 124 return DOMTimer::install(executionContext, action, timeout, false); | 125 return DOMTimer::install(executionContext, action, timeout, false); |
| 125 } | 126 } |
| 126 | 127 |
| 127 int setInterval(ScriptState* scriptState, | 128 int setInterval(ScriptState* scriptState, |
| 128 EventTarget& eventTarget, | 129 EventTarget& eventTarget, |
| 129 const String& handler, | 130 const String& handler, |
| 130 int timeout, | 131 int timeout, |
| 131 const Vector<ScriptValue>&) { | 132 const Vector<ScriptValue>&) { |
| 132 ExecutionContext* executionContext = eventTarget.getExecutionContext(); | 133 ExecutionContext* executionContext = eventTarget.getExecutionContext(); |
| 133 if (!isAllowed(scriptState, executionContext, true)) | 134 if (!isAllowed(scriptState, executionContext, true)) |
| 134 return 0; | 135 return 0; |
| 135 // Don't allow setting timeouts to run empty functions. Was historically a | 136 // Don't allow setting timeouts to run empty functions. Was historically a |
| 136 // perfomance issue. | 137 // perfomance issue. |
| 137 if (handler.isEmpty()) | 138 if (handler.isEmpty()) |
| 138 return 0; | 139 return 0; |
| 139 ScheduledAction* action = ScheduledAction::create(scriptState, handler); | 140 ScheduledAction* action = |
| 141 ScheduledAction::create(scriptState, executionContext, handler); |
| 140 return DOMTimer::install(executionContext, action, timeout, false); | 142 return DOMTimer::install(executionContext, action, timeout, false); |
| 141 } | 143 } |
| 142 | 144 |
| 143 void clearTimeout(EventTarget& eventTarget, int timeoutID) { | 145 void clearTimeout(EventTarget& eventTarget, int timeoutID) { |
| 144 if (ExecutionContext* context = eventTarget.getExecutionContext()) | 146 if (ExecutionContext* context = eventTarget.getExecutionContext()) |
| 145 DOMTimer::removeByID(context, timeoutID); | 147 DOMTimer::removeByID(context, timeoutID); |
| 146 } | 148 } |
| 147 | 149 |
| 148 void clearInterval(EventTarget& eventTarget, int timeoutID) { | 150 void clearInterval(EventTarget& eventTarget, int timeoutID) { |
| 149 if (ExecutionContext* context = eventTarget.getExecutionContext()) | 151 if (ExecutionContext* context = eventTarget.getExecutionContext()) |
| 150 DOMTimer::removeByID(context, timeoutID); | 152 DOMTimer::removeByID(context, timeoutID); |
| 151 } | 153 } |
| 152 | 154 |
| 153 } // namespace DOMWindowTimers | 155 } // namespace DOMWindowTimers |
| 154 | 156 |
| 155 } // namespace blink | 157 } // namespace blink |
| OLD | NEW |