| Index: test/Notification.cpp | 
| =================================================================== | 
| --- a/test/Notification.cpp | 
| +++ b/test/Notification.cpp | 
| @@ -10,16 +10,18 @@ | 
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| * GNU General Public License for more details. | 
| * | 
| * You should have received a copy of the GNU General Public License | 
| * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| */ | 
| +#include <iostream> | 
| +#include <AdblockPlus/DefaultLogSystem.h> | 
| 
 
sergei
2017/09/12 13:34:09
These headers are still not required.
 
hub
2017/09/12 15:51:10
Done.
 
 | 
| #include "BaseJsTest.h" | 
| using namespace AdblockPlus; | 
| namespace | 
| { | 
| class NotificationTest : public BaseJsTest | 
| { | 
| @@ -75,64 +77,68 @@ | 
| ServerResponse serverResponse; | 
| serverResponse.status = IWebRequest::NS_OK; | 
| serverResponse.responseStatus = 200; | 
| serverResponse.responseText = responseText; | 
| getCallback(serverResponse); | 
| } | 
| }; | 
| - | 
| // To run this test one needs to set INITIAL_DELAY to about 2000 msec | 
| // in notification.js. | 
| class NotificationMockWebRequestTest : public BaseJsTest | 
| { | 
| protected: | 
| - bool isNotificationCallbackCalled; | 
| + AdblockPlus::Sync sync; | 
| void SetUp() | 
| { | 
| - isNotificationCallbackCalled = false; | 
| const char* responseJsonText = "{" | 
| "\"notifications\": [{" | 
| "\"id\": \"some id\"," | 
| "\"type\": \"information\"," | 
| "\"message\": {" | 
| "\"en-US\": \"message\"" | 
| "}," | 
| "\"title\": \"Title\"" | 
| "}]" | 
| "}"; | 
| - ThrowingPlatformCreationParameters platformParams; | 
| - platformParams.fileSystem.reset(new LazyFileSystem()); | 
| + LazyFileSystem* fileSystem; | 
| + AdblockPlus::Platform::CreationParameters platformParams; | 
| + platformParams.logSystem.reset(new ThrowingLogSystem()); | 
| 
 
sergei
2017/09/12 13:34:09
These two lines can be replaced by original `Throw
 
hub
2017/09/12 15:51:10
Done.
 
 | 
| + platformParams.timer.reset(new ManualTimer()); | 
| + platformParams.fileSystem.reset(fileSystem = new LazyFileSystem()); | 
| platformParams.webRequest.reset(new MockWebRequest(responseJsonText)); | 
| platform.reset(new Platform(std::move(platformParams))); | 
| + CreateFilterEngine(*fileSystem, *platform); | 
| auto& filterEngine = platform->GetFilterEngine(); | 
| filterEngine.SetShowNotificationCallback( | 
| [this](Notification&& notification) { | 
| - isNotificationCallbackCalled = true; | 
| + sync.Set(); | 
| EXPECT_EQ(NotificationType::NOTIFICATION_TYPE_INFORMATION, notification.GetType()); | 
| EXPECT_EQ("Title", notification.GetTexts().title); | 
| EXPECT_EQ("message", notification.GetTexts().message); | 
| notification.MarkAsShown(); | 
| }); | 
| } | 
| }; | 
| } | 
| TEST_F(NotificationTest, NoNotifications) | 
| { | 
| EXPECT_FALSE(PeekNotification()); | 
| } | 
| -TEST_F(NotificationMockWebRequestTest, DISABLED_SingleNotification) | 
| +TEST_F(NotificationMockWebRequestTest, SingleNotification) | 
| { | 
| - AdblockPlus::Sleep(5000/*msec*/); // it's a hack | 
| - EXPECT_TRUE(isNotificationCallbackCalled); | 
| + auto& filterEngine = platform->GetFilterEngine(); | 
| + static_cast<ManualTimer&>(platform->GetTimer()).runPending(); | 
| + filterEngine.ShowNextNotification(); | 
| + EXPECT_TRUE(sync.WaitFor(std::chrono::seconds(4))); | 
| } | 
| TEST_F(NotificationTest, AddNotification) | 
| { | 
| AddNotification("{" | 
| "type: 'critical'," | 
| "title: 'testTitle'," | 
| "message: 'testMessage'," |