Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: test/UpdateCheck.cpp

Issue 29508569: Issue 5450 - don't expose std::shared_ptr<JsEngine> (Closed) Base URL: https://github.com/adblockplus/libadblockplus.git
Patch Set: Created Aug. 7, 2017, 8:39 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/Prefs.cpp ('k') | test/WebRequest.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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-2017 eyeo GmbH 3 * Copyright (C) 2006-2017 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
(...skipping 13 matching lines...) Expand all
24 namespace 24 namespace
25 { 25 {
26 typedef std::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr; 26 typedef std::shared_ptr<AdblockPlus::FilterEngine> FilterEnginePtr;
27 27
28 void FindAndReplace(std::string& source, const std::string& find, const std::s tring& replace) 28 void FindAndReplace(std::string& source, const std::string& find, const std::s tring& replace)
29 { 29 {
30 for (size_t pos = 0; (pos = source.find(find), pos) != std::string::npos; po s += replace.size()) 30 for (size_t pos = 0; (pos = source.find(find), pos) != std::string::npos; po s += replace.size())
31 source.replace(pos, find.size(), replace); 31 source.replace(pos, find.size(), replace);
32 } 32 }
33 33
34 class UpdateCheckTest : public ::testing::Test 34 class UpdateCheckTest : public BaseJsTest
35 { 35 {
36 protected: 36 protected:
37 AdblockPlus::AppInfo appInfo; 37 AdblockPlus::AppInfo appInfo;
38 AdblockPlus::ServerResponse webRequestResponse; 38 AdblockPlus::ServerResponse webRequestResponse;
39 DelayedWebRequest::SharedTasks webRequestTasks; 39 DelayedWebRequest::SharedTasks webRequestTasks;
40 DelayedTimer::SharedTasks timerTasks; 40 DelayedTimer::SharedTasks timerTasks;
41 std::unique_ptr<Platform> platform;
42 FilterEnginePtr filterEngine; 41 FilterEnginePtr filterEngine;
43 42
44 bool eventCallbackCalled; 43 bool eventCallbackCalled;
45 AdblockPlus::JsValueList eventCallbackParams; 44 AdblockPlus::JsValueList eventCallbackParams;
46 bool updateCallbackCalled; 45 bool updateCallbackCalled;
47 std::string updateError; 46 std::string updateError;
48 47
49 void SetUp() 48 void SetUp()
50 { 49 {
51 eventCallbackCalled = false; 50 eventCallbackCalled = false;
52 updateCallbackCalled = false; 51 updateCallbackCalled = false;
53 } 52 }
54 53
55 void CreateFilterEngine() 54 void CreateFilterEngine()
56 { 55 {
57 LazyFileSystem* fileSystem; 56 LazyFileSystem* fileSystem;
58 ThrowingPlatformCreationParameters platformParams; 57 ThrowingPlatformCreationParameters platformParams;
59 platformParams.logSystem.reset(new LazyLogSystem()); 58 platformParams.logSystem.reset(new LazyLogSystem());
60 platformParams.timer = DelayedTimer::New(timerTasks); 59 platformParams.timer = DelayedTimer::New(timerTasks);
61 platformParams.fileSystem.reset(fileSystem = new LazyFileSystem()); 60 platformParams.fileSystem.reset(fileSystem = new LazyFileSystem());
62 platformParams.webRequest = DelayedWebRequest::New(webRequestTasks); 61 platformParams.webRequest = DelayedWebRequest::New(webRequestTasks);
63 platform.reset(new Platform(std::move(platformParams))); 62 platform.reset(new Platform(std::move(platformParams)));
64 platform->SetUpJsEngine(appInfo); 63 platform->SetUpJsEngine(appInfo);
65 platform->GetJsEngine()->SetEventCallback("updateAvailable", [this](JsValu eList&& params) 64 GetJsEngine().SetEventCallback("updateAvailable", [this](JsValueList&& par ams)
66 { 65 {
67 eventCallbackCalled = true; 66 eventCallbackCalled = true;
68 eventCallbackParams = std::move(params); 67 eventCallbackParams = std::move(params);
69 }); 68 });
70 69
71 filterEngine = ::CreateFilterEngine(*fileSystem, *platform); 70 filterEngine = ::CreateFilterEngine(*fileSystem, *platform);
72 } 71 }
73 72
74 // Returns a URL or the empty string if there is no such request. 73 // Returns a URL or the empty string if there is no such request.
75 std::string ProcessPendingUpdateWebRequest() 74 std::string ProcessPendingUpdateWebRequest()
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 CreateFilterEngine(); 113 CreateFilterEngine();
115 ForceUpdateCheck(); 114 ForceUpdateCheck();
116 115
117 auto requestUrl = ProcessPendingUpdateWebRequest(); 116 auto requestUrl = ProcessPendingUpdateWebRequest();
118 117
119 ASSERT_FALSE(eventCallbackCalled); 118 ASSERT_FALSE(eventCallbackCalled);
120 ASSERT_TRUE(updateCallbackCalled); 119 ASSERT_TRUE(updateCallbackCalled);
121 ASSERT_FALSE(updateError.empty()); 120 ASSERT_FALSE(updateError.empty());
122 121
123 std::string expectedUrl(filterEngine->GetPref("update_url_release").AsString() ); 122 std::string expectedUrl(filterEngine->GetPref("update_url_release").AsString() );
124 std::string platform = filterEngine->GetJsEngine()->Evaluate("require('info'). platform").AsString(); 123 std::string platform = GetJsEngine().Evaluate("require('info').platform").AsSt ring();
125 std::string platformVersion = filterEngine->GetJsEngine()->Evaluate("require(' info').platformVersion").AsString(); 124 std::string platformVersion = GetJsEngine().Evaluate("require('info').platform Version").AsString();
126 125
127 FindAndReplace(expectedUrl, "%NAME%", appInfo.name); 126 FindAndReplace(expectedUrl, "%NAME%", appInfo.name);
128 FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update 127 FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update
129 expectedUrl += "&addonName=" + appInfo.name + 128 expectedUrl += "&addonName=" + appInfo.name +
130 "&addonVersion=" + appInfo.version + 129 "&addonVersion=" + appInfo.version +
131 "&application=" + appInfo.application + 130 "&application=" + appInfo.application +
132 "&applicationVersion=" + appInfo.applicationVersion + 131 "&applicationVersion=" + appInfo.applicationVersion +
133 "&platform=" + platform + 132 "&platform=" + platform +
134 "&platformVersion=" + platformVersion + 133 "&platformVersion=" + platformVersion +
135 "&lastVersion=0&downloadCount=0"; 134 "&lastVersion=0&downloadCount=0";
(...skipping 17 matching lines...) Expand all
153 152
154 auto requestUrl = ProcessPendingUpdateWebRequest(); 153 auto requestUrl = ProcessPendingUpdateWebRequest();
155 154
156 ASSERT_TRUE(eventCallbackCalled); 155 ASSERT_TRUE(eventCallbackCalled);
157 ASSERT_EQ(1u, eventCallbackParams.size()); 156 ASSERT_EQ(1u, eventCallbackParams.size());
158 ASSERT_EQ("https://foo.bar/", eventCallbackParams[0].AsString()); 157 ASSERT_EQ("https://foo.bar/", eventCallbackParams[0].AsString());
159 ASSERT_TRUE(updateCallbackCalled); 158 ASSERT_TRUE(updateCallbackCalled);
160 ASSERT_TRUE(updateError.empty()); 159 ASSERT_TRUE(updateError.empty());
161 160
162 std::string expectedUrl(filterEngine->GetPref("update_url_devbuild").AsString( )); 161 std::string expectedUrl(filterEngine->GetPref("update_url_devbuild").AsString( ));
163 std::string platform = filterEngine->GetJsEngine()->Evaluate("require('info'). platform").AsString(); 162 std::string platform = GetJsEngine().Evaluate("require('info').platform").AsSt ring();
164 std::string platformVersion = filterEngine->GetJsEngine()->Evaluate("require(' info').platformVersion").AsString(); 163 std::string platformVersion = GetJsEngine().Evaluate("require('info').platform Version").AsString();
165 164
166 FindAndReplace(expectedUrl, "%NAME%", appInfo.name); 165 FindAndReplace(expectedUrl, "%NAME%", appInfo.name);
167 FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update 166 FindAndReplace(expectedUrl, "%TYPE%", "1"); // manual update
168 expectedUrl += "&addonName=" + appInfo.name + 167 expectedUrl += "&addonName=" + appInfo.name +
169 "&addonVersion=" + appInfo.version + 168 "&addonVersion=" + appInfo.version +
170 "&application=" + appInfo.application + 169 "&application=" + appInfo.application +
171 "&applicationVersion=" + appInfo.applicationVersion + 170 "&applicationVersion=" + appInfo.applicationVersion +
172 "&platform=" + platform + 171 "&platform=" + platform +
173 "&platformVersion=" + platformVersion + 172 "&platformVersion=" + platformVersion +
174 "&lastVersion=0&downloadCount=0"; 173 "&lastVersion=0&downloadCount=0";
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 300
302 // ensure that the was the corresponding request 301 // ensure that the was the corresponding request
303 EXPECT_FALSE(ProcessPendingUpdateWebRequest().empty()); 302 EXPECT_FALSE(ProcessPendingUpdateWebRequest().empty());
304 303
305 EXPECT_FALSE(eventCallbackCalled); 304 EXPECT_FALSE(eventCallbackCalled);
306 EXPECT_EQ(1, timesCalled); 305 EXPECT_EQ(1, timesCalled);
307 306
308 // previous handler is not restored 307 // previous handler is not restored
309 EXPECT_FALSE(eventCallbackCalled); 308 EXPECT_FALSE(eventCallbackCalled);
310 } 309 }
OLDNEW
« no previous file with comments | « test/Prefs.cpp ('k') | test/WebRequest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld