Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(58)

Side by Side Diff: chrome/browser/android/webapk/webapk_installer_unittest.cc

Issue 2526713002: Specify the WebAPK server URL in Chromium source code (Closed)
Patch Set: Merge branch 'master' into no_finch Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/android/webapk/webapk_installer.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/webapk/webapk_installer.h" 5 #include "chrome/browser/android/webapk/webapk_installer.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
11 #include "base/android/field_trial_list.h"
12 #include "base/android/scoped_java_ref.h" 11 #include "base/android/scoped_java_ref.h"
13 #include "base/bind.h" 12 #include "base/bind.h"
14 #include "base/callback_forward.h" 13 #include "base/callback_forward.h"
15 #include "base/feature_list.h" 14 #include "base/command_line.h"
16 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
17 #include "base/memory/ptr_util.h"
18 #include "base/memory/ref_counted.h" 16 #include "base/memory/ref_counted.h"
19 #include "base/run_loop.h" 17 #include "base/run_loop.h"
20 #include "base/single_thread_task_runner.h" 18 #include "base/single_thread_task_runner.h"
21 #include "base/test/scoped_feature_list.h"
22 #include "base/threading/thread_task_runner_handle.h" 19 #include "base/threading/thread_task_runner_handle.h"
23 #include "chrome/browser/android/chrome_feature_list.h"
24 #include "chrome/browser/android/shortcut_info.h" 20 #include "chrome/browser/android/shortcut_info.h"
25 #include "chrome/browser/android/webapk/webapk.pb.h" 21 #include "chrome/browser/android/webapk/webapk.pb.h"
26 #include "chrome/common/chrome_switches.h" 22 #include "chrome/common/chrome_switches.h"
27 #include "components/variations/variations_associated_data.h"
28 #include "content/public/browser/browser_thread.h" 23 #include "content/public/browser/browser_thread.h"
29 #include "content/public/test/test_browser_thread_bundle.h" 24 #include "content/public/test/test_browser_thread_bundle.h"
30 #include "net/test/embedded_test_server/embedded_test_server.h" 25 #include "net/test/embedded_test_server/embedded_test_server.h"
31 #include "net/test/embedded_test_server/http_request.h" 26 #include "net/test/embedded_test_server/http_request.h"
32 #include "net/test/embedded_test_server/http_response.h" 27 #include "net/test/embedded_test_server/http_response.h"
33 #include "net/url_request/url_request_test_util.h" 28 #include "net/url_request/url_request_test_util.h"
34 #include "testing/gtest/include/gtest/gtest.h" 29 #include "testing/gtest/include/gtest/gtest.h"
35 #include "third_party/skia/include/core/SkBitmap.h" 30 #include "third_party/skia/include/core/SkBitmap.h"
36 #include "url/gurl.h" 31 #include "url/gurl.h"
37 32
38 namespace { 33 namespace {
39 34
40 const base::FilePath::CharType kTestDataDir[] = 35 const base::FilePath::CharType kTestDataDir[] =
41 FILE_PATH_LITERAL("chrome/test/data"); 36 FILE_PATH_LITERAL("chrome/test/data");
42 37
43 // Mock field trial name and field trial group to use for "WebApks" feature.
44 const char kFieldTrialName[] = "MockFieldTrial";
45 const char kFieldTrialGroup[] = "MockFieldTrialGroup";
46
47 // URL of mock WebAPK server. 38 // URL of mock WebAPK server.
48 const char* kServerUrl = "/webapkserver/"; 39 const char* kServerUrl = "/webapkserver/";
49 40
50 // The best icon URL from Web Manifest. We use a random file in the test data 41 // The best icon URL from Web Manifest. We use a random file in the test data
51 // directory. Since WebApkInstaller does not try to decode the file as an image 42 // directory. Since WebApkInstaller does not try to decode the file as an image
52 // it is OK that the file is not an image. 43 // it is OK that the file is not an image.
53 const char* kBestIconUrl = "/simple.html"; 44 const char* kBestIconUrl = "/simple.html";
54 45
55 // URL of file to download from the WebAPK server. We use a random file in the 46 // URL of file to download from the WebAPK server. We use a random file in the
56 // test data directory. 47 // test data directory.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 177
187 } // anonymous namespace 178 } // anonymous namespace
188 179
189 class WebApkInstallerTest : public ::testing::Test { 180 class WebApkInstallerTest : public ::testing::Test {
190 public: 181 public:
191 typedef base::Callback<std::unique_ptr<net::test_server::HttpResponse>(void)> 182 typedef base::Callback<std::unique_ptr<net::test_server::HttpResponse>(void)>
192 WebApkResponseBuilder; 183 WebApkResponseBuilder;
193 184
194 WebApkInstallerTest() 185 WebApkInstallerTest()
195 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} 186 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {}
196 ~WebApkInstallerTest() override { 187 ~WebApkInstallerTest() override {}
197 variations::testing::ClearAllVariationParams();
198 }
199 188
200 void SetUp() override { 189 void SetUp() override {
201 test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir)); 190 test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir));
202 test_server_.RegisterRequestHandler( 191 test_server_.RegisterRequestHandler(
203 base::Bind(&WebApkInstallerTest::HandleWebApkRequest, 192 base::Bind(&WebApkInstallerTest::HandleWebApkRequest,
204 base::Unretained(this))); 193 base::Unretained(this)));
205 ASSERT_TRUE(test_server_.Start()); 194 ASSERT_TRUE(test_server_.Start());
206 195
207 field_trial_list_.reset(new base::FieldTrialList(nullptr));
208 base::FieldTrial* field_trial = base::FieldTrialList::CreateFieldTrial(
209 kFieldTrialName, kFieldTrialGroup);
210 std::unique_ptr<base::FeatureList> feature_list =
211 base::MakeUnique<base::FeatureList>();
212 feature_list->RegisterFieldTrialOverride(
213 chrome::android::kWebApks.name,
214 base::FeatureList::OVERRIDE_ENABLE_FEATURE, field_trial);
215 scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
216
217 SetDefaults(); 196 SetDefaults();
218 } 197 }
219 198
220 // Sets the best Web Manifest's icon URL. 199 // Sets the best Web Manifest's icon URL.
221 void SetBestIconUrl(const GURL& best_icon_url) { 200 void SetBestIconUrl(const GURL& best_icon_url) {
222 best_icon_url_ = best_icon_url; 201 best_icon_url_ = best_icon_url;
223 } 202 }
224 203
225 // Sets the URL to send the webapk::CreateWebApkRequest to. WebApkInstaller 204 // Sets the URL to send the webapk::CreateWebApkRequest to. WebApkInstaller
226 // should fail if the URL is not |kServerUrl|. 205 // should fail if the URL is not |kServerUrl|.
227 void SetWebApkServerUrl(const GURL& server_url) { 206 void SetWebApkServerUrl(const GURL& server_url) {
228 variations::testing::ClearAllVariationParams(); 207 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
229 std::map<std::string, std::string> params; 208 switches::kWebApkServerUrl, server_url.spec());
230 params["ServerUrl"] = server_url.spec();
231 ASSERT_TRUE(variations::AssociateVariationParams(kFieldTrialName,
232 kFieldTrialGroup, params));
233 } 209 }
234 210
235 // Sets the function that should be used to build the response to the 211 // Sets the function that should be used to build the response to the
236 // WebAPK creation request. 212 // WebAPK creation request.
237 void SetWebApkResponseBuilder(const WebApkResponseBuilder& builder) { 213 void SetWebApkResponseBuilder(const WebApkResponseBuilder& builder) {
238 webapk_response_builder_ = builder; 214 webapk_response_builder_ = builder;
239 } 215 }
240 216
241 std::unique_ptr<WebApkInstallerRunner> CreateWebApkInstallerRunner() { 217 std::unique_ptr<WebApkInstallerRunner> CreateWebApkInstallerRunner() {
242 return std::unique_ptr<WebApkInstallerRunner>( 218 return std::unique_ptr<WebApkInstallerRunner>(
(...skipping 17 matching lines...) Expand all
260 std::unique_ptr<net::test_server::HttpResponse> HandleWebApkRequest( 236 std::unique_ptr<net::test_server::HttpResponse> HandleWebApkRequest(
261 const net::test_server::HttpRequest& request) { 237 const net::test_server::HttpRequest& request) {
262 return (request.relative_url == kServerUrl) 238 return (request.relative_url == kServerUrl)
263 ? webapk_response_builder_.Run() 239 ? webapk_response_builder_.Run()
264 : std::unique_ptr<net::test_server::HttpResponse>(); 240 : std::unique_ptr<net::test_server::HttpResponse>();
265 } 241 }
266 242
267 content::TestBrowserThreadBundle thread_bundle_; 243 content::TestBrowserThreadBundle thread_bundle_;
268 net::EmbeddedTestServer test_server_; 244 net::EmbeddedTestServer test_server_;
269 245
270 std::unique_ptr<base::FieldTrialList> field_trial_list_;
271 base::test::ScopedFeatureList scoped_feature_list_;
272
273 // Web Manifest's icon URL. 246 // Web Manifest's icon URL.
274 GURL best_icon_url_; 247 GURL best_icon_url_;
275 248
276 // Builds response to the WebAPK creation request. 249 // Builds response to the WebAPK creation request.
277 WebApkResponseBuilder webapk_response_builder_; 250 WebApkResponseBuilder webapk_response_builder_;
278 251
279 DISALLOW_COPY_AND_ASSIGN(WebApkInstallerTest); 252 DISALLOW_COPY_AND_ASSIGN(WebApkInstallerTest);
280 }; 253 };
281 254
282 // Test installation succeeding. 255 // Test installation succeeding.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 runner->RunInstallWebApk(); 324 runner->RunInstallWebApk();
352 EXPECT_FALSE(runner->success()); 325 EXPECT_FALSE(runner->success());
353 } 326 }
354 327
355 // Test update succeeding. 328 // Test update succeeding.
356 TEST_F(WebApkInstallerTest, UpdateSuccess) { 329 TEST_F(WebApkInstallerTest, UpdateSuccess) {
357 std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner(); 330 std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
358 runner->RunUpdateWebApk(); 331 runner->RunUpdateWebApk();
359 EXPECT_TRUE(runner->success()); 332 EXPECT_TRUE(runner->success());
360 } 333 }
OLDNEW
« no previous file with comments | « chrome/browser/android/webapk/webapk_installer.cc ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698