| Index: test/WebRequest.cpp |
| =================================================================== |
| --- a/test/WebRequest.cpp |
| +++ b/test/WebRequest.cpp |
| @@ -17,6 +17,7 @@ |
| #include <sstream> |
| #include "BaseJsTest.h" |
| +#include "JsLatch.h" |
| namespace |
| { |
| @@ -25,8 +26,6 @@ |
| public: |
| AdblockPlus::ServerResponse GET(const std::string& url, const AdblockPlus::HeaderList& requestHeaders) const |
| { |
| - std::this_thread::sleep_for(std::chrono::milliseconds(50)); |
| - |
| AdblockPlus::ServerResponse result; |
| result.status = NS_OK; |
| result.responseStatus = 123; |
| @@ -64,9 +63,9 @@ |
| TEST_F(MockWebRequestTest, SuccessfulRequest) |
| { |
| - jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result;} )"); |
| - ASSERT_TRUE(jsEngine->Evaluate("this.foo")->IsUndefined()); |
| - std::this_thread::sleep_for(std::chrono::milliseconds(200)); |
| + JsTestingLatch latch(engine, "latch"); |
| + jsEngine->Evaluate("_webRequest.GET('http://example.com/', {X: 'Y'}, function(result) {foo = result; latch.Arrive();} )"); |
| + latch.Wait(); |
| ASSERT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| ASSERT_EQ(123, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| ASSERT_EQ("http://example.com/\nX\nY", jsEngine->Evaluate("foo.responseText")->AsString()); |
| @@ -78,11 +77,9 @@ |
| { |
| // This URL should redirect to easylist-downloads.adblockplus.org and we |
| // should get the actual filter list back. |
| - jsEngine->Evaluate("_webRequest.GET('https://easylist-downloads.adblockplus.org/easylist.txt', {}, function(result) {foo = result;} )"); |
| - do |
| - { |
| - std::this_thread::sleep_for(std::chrono::milliseconds(200)); |
| - } while (jsEngine->Evaluate("this.foo")->IsUndefined()); |
| + JsTestingLatch latch(engine, "latch"); |
| + jsEngine->Evaluate("_webRequest.GET('https://easylist-downloads.adblockplus.org/easylist.txt', {}, function(result) {foo = result; latch.Arrive();} )"); |
| + latch.Wait(); |
| ASSERT_EQ("text/plain", jsEngine->Evaluate("foo.responseHeaders['content-type'].substr(0, 10)")->AsString()); |
| ASSERT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("foo.status")->AsInt()); |
| ASSERT_EQ(200, jsEngine->Evaluate("foo.responseStatus")->AsInt()); |
| @@ -94,7 +91,7 @@ |
| TEST_F(DefaultWebRequestTest, XMLHttpRequest) |
| { |
| AdblockPlus::FilterEngine filterEngine(jsEngine); |
| - |
| + JsTestingLatch latch(engine, "latch"); |
| jsEngine->Evaluate("\ |
| var result;\ |
| var request = new XMLHttpRequest();\ |
| @@ -102,13 +99,10 @@ |
| request.setRequestHeader('X', 'Y');\ |
| request.setRequestHeader('X2', 'Y2');\ |
| request.overrideMimeType('text/plain');\ |
| - request.addEventListener('load', function() {result = request.responseText;}, false);\ |
| - request.addEventListener('error', function() {result = 'error';}, false);\ |
| + request.addEventListener('load', function() {result = request.responseText; latch.Arrive();}, false);\ |
| + request.addEventListener('error', function() {result = 'error'; latch.Arrive();}, false);\ |
| request.send(null);"); |
| - do |
| - { |
| - std::this_thread::sleep_for(std::chrono::milliseconds(200)); |
| - } while (jsEngine->Evaluate("result")->IsUndefined()); |
| + latch.Wait(); |
| ASSERT_EQ(AdblockPlus::WebRequest::NS_OK, jsEngine->Evaluate("request.channel.status")->AsInt()); |
| ASSERT_EQ(200, jsEngine->Evaluate("request.status")->AsInt()); |
| ASSERT_EQ("[Adblock Plus ", jsEngine->Evaluate("result.substr(0, 14)")->AsString()); |