| Index: test/promises-aplus/lib/global.js
|
| diff --git a/test/cctest/print-extension.cc b/test/promises-aplus/lib/global.js
|
| similarity index 68%
|
| copy from test/cctest/print-extension.cc
|
| copy to test/promises-aplus/lib/global.js
|
| index 9f629195bd7909c1a97760484cea37b600461b98..1466d2063b5be2351b49a021578cd1091992fbee 100644
|
| --- a/test/cctest/print-extension.cc
|
| +++ b/test/promises-aplus/lib/global.js
|
| @@ -25,27 +25,52 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| -#include "print-extension.h"
|
| +var global = this.global || {};
|
| +var setTimeout;
|
| +var clearTimeout;
|
|
|
| -namespace v8 {
|
| -namespace internal {
|
| +(function() {
|
| +var timers = {};
|
| +var currentId = 0;
|
|
|
| -v8::Handle<v8::FunctionTemplate> PrintExtension::GetNativeFunctionTemplate(
|
| - v8::Isolate* isolate,
|
| - v8::Handle<v8::String> str) {
|
| - return v8::FunctionTemplate::New(isolate, PrintExtension::Print);
|
| +function PostMicrotask(fn) {
|
| + var o = {};
|
| + Object.observe(o, function() {
|
| + fn();
|
| + });
|
| + // Change something to enqueue a microtask.
|
| + o.x = 'hello';
|
| }
|
|
|
| -
|
| -void PrintExtension::Print(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| - for (int i = 0; i < args.Length(); i++) {
|
| - if (i != 0) printf(" ");
|
| - v8::HandleScope scope(args.GetIsolate());
|
| - v8::String::Utf8Value str(args[i]);
|
| - if (*str == NULL) return;
|
| - printf("%s", *str);
|
| +setInterval = function(fn, delay) {
|
| + var i = 0;
|
| + var id = currentId++;
|
| + function loop() {
|
| + if (!timers[id]) {
|
| + return;
|
| + }
|
| + if (i++ >= delay) {
|
| + fn();
|
| + }
|
| + PostMicrotask(loop);
|
| }
|
| - printf("\n");
|
| + PostMicrotask(loop);
|
| + timers[id] = true;
|
| + return id;
|
| +}
|
| +
|
| +clearTimeout = function(id) {
|
| + delete timers[id];
|
| +}
|
| +
|
| +clearInterval = clearTimeout;
|
| +
|
| +setTimeout = function(fn, delay) {
|
| + var id = setInterval(function() {
|
| + fn();
|
| + clearInterval(id);
|
| + }, delay);
|
| + return id;
|
| }
|
|
|
| -} } // namespace v8::internal
|
| +}());
|
|
|