| LEFT | RIGHT | 
|---|
| 1 /* | 1 /* | 
| 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 2  * This file is part of Adblock Plus <https://adblockplus.org/>, | 
| 3  * Copyright (C) 2006-2016 Eyeo GmbH | 3  * Copyright (C) 2006-2016 Eyeo GmbH | 
| 4  * | 4  * | 
| 5  * Adblock Plus is free software: you can redistribute it and/or modify | 5  * Adblock Plus is free software: you can redistribute it and/or modify | 
| 6  * it under the terms of the GNU General Public License version 3 as | 6  * it under the terms of the GNU General Public License version 3 as | 
| 7  * published by the Free Software Foundation. | 7  * published by the Free Software Foundation. | 
| 8  * | 8  * | 
| 9  * Adblock Plus is distributed in the hope that it will be useful, | 9  * Adblock Plus is distributed in the hope that it will be useful, | 
| 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 12  * GNU General Public License for more details. | 12  * GNU General Public License for more details. | 
| 13  * | 13  * | 
| 14  * You should have received a copy of the GNU General Public License | 14  * You should have received a copy of the GNU General Public License | 
| 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 15  * along with Adblock Plus.  If not, see <http://www.gnu.org/licenses/>. | 
| 16  */ | 16  */ | 
| 17 | 17 | 
| 18 package org.adblockplus.libadblockplus.tests; | 18 package org.adblockplus.libadblockplus.tests; | 
| 19 | 19 | 
| 20 import org.adblockplus.libadblockplus.AdblockPlusException; | 20 import org.adblockplus.libadblockplus.AdblockPlusException; | 
| 21 | 21 | 
| 22 import org.junit.Test; | 22 import org.junit.Test; | 
| 23 | 23 | 
| 24 public class GlobalJsObjectTest extends BaseJsTest { | 24 public class GlobalJsObjectTest extends BaseJsTest | 
|  | 25 { | 
|  | 26   @Test | 
|  | 27   public void testSetTimeout() throws InterruptedException | 
|  | 28   { | 
|  | 29     jsEngine.evaluate("setTimeout(function() {foo = 'bar';}, 100)"); | 
|  | 30     assertTrue(jsEngine.evaluate("this.foo").isUndefined()); | 
|  | 31     Thread.sleep(200); | 
|  | 32     assertEquals("bar", jsEngine.evaluate("this.foo").asString()); | 
|  | 33   } | 
| 25 | 34 | 
| 26     @Test | 35   @Test | 
| 27     public void testSetTimeout() throws InterruptedException { | 36   public void testSetTimeoutWithArgs() throws InterruptedException | 
| 28         jsEngine.evaluate("setTimeout(function() {foo = 'bar';}, 100)"); | 37   { | 
| 29         assertTrue(jsEngine.evaluate("this.foo").isUndefined()); | 38     jsEngine.evaluate("setTimeout(function(s) {foo = s;}, 100, 'foobar')"); | 
| 30         Thread.sleep(200); | 39     assertTrue(jsEngine.evaluate("this.foo").isUndefined()); | 
| 31         assertEquals("bar", jsEngine.evaluate("this.foo").asString()); | 40     Thread.sleep(200); | 
|  | 41     assertEquals("foobar", jsEngine.evaluate("this.foo").asString()); | 
|  | 42   } | 
|  | 43 | 
|  | 44   @Test | 
|  | 45   public void testSetTimeoutWithInvalidArgs() | 
|  | 46   { | 
|  | 47     try | 
|  | 48     { | 
|  | 49       jsEngine.evaluate("setTimeout()"); | 
|  | 50       fail(); | 
|  | 51     } | 
|  | 52     catch (AdblockPlusException e) | 
|  | 53     { | 
|  | 54       // ignored | 
| 32     } | 55     } | 
| 33 | 56 | 
| 34     @Test | 57     try | 
| 35     public void testSetTimeoutWithArgs() throws InterruptedException { | 58     { | 
| 36         jsEngine.evaluate("setTimeout(function(s) {foo = s;}, 100, 'foobar')"); | 59       jsEngine.evaluate("setTimeout('', 1)"); | 
| 37         assertTrue(jsEngine.evaluate("this.foo").isUndefined()); | 60       fail(); | 
| 38         Thread.sleep(200); |  | 
| 39         assertEquals("foobar", jsEngine.evaluate("this.foo").asString()); |  | 
| 40     } | 61     } | 
|  | 62     catch (AdblockPlusException e) | 
|  | 63     { | 
|  | 64       // ignored | 
|  | 65     } | 
|  | 66   } | 
| 41 | 67 | 
| 42     @Test | 68   @Test | 
| 43     public void testSetTimeoutWithInvalidArgs() { | 69   public void testSetMultipleTimeouts() throws InterruptedException | 
| 44         try { | 70   { | 
| 45             jsEngine.evaluate("setTimeout()"); | 71     jsEngine.evaluate("foo = []"); | 
| 46             fail(); | 72     jsEngine.evaluate("setTimeout(function(s) {foo.push('1');}, 100)"); | 
| 47         } catch (AdblockPlusException e) { | 73     jsEngine.evaluate("setTimeout(function(s) {foo.push('2');}, 150)"); | 
| 48             // ignored | 74     Thread.sleep(200); | 
| 49         } | 75     assertEquals("1,2", jsEngine.evaluate("this.foo").asString()); | 
| 50 | 76   } | 
| 51         try { |  | 
| 52             jsEngine.evaluate("setTimeout('', 1)"); |  | 
| 53             fail(); |  | 
| 54         } catch (AdblockPlusException e) { |  | 
| 55             // ignored |  | 
| 56         } |  | 
| 57     } |  | 
| 58 |  | 
| 59     @Test |  | 
| 60     public void testSetMultipleTimeouts() throws InterruptedException { |  | 
| 61         jsEngine.evaluate("foo = []"); |  | 
| 62         jsEngine.evaluate("setTimeout(function(s) {foo.push('1');}, 100)"); |  | 
| 63         jsEngine.evaluate("setTimeout(function(s) {foo.push('2');}, 150)"); |  | 
| 64         Thread.sleep(200); |  | 
| 65         assertEquals("1,2", jsEngine.evaluate("this.foo").asString()); |  | 
| 66     } |  | 
| 67 |  | 
| 68 } | 77 } | 
| LEFT | RIGHT | 
|---|