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

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

Issue 2441203002: Add field trial for the WebAPK server URL (Closed)
Patch Set: ABCD Created 4 years, 1 month 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>
dominickn 2016/10/27 00:36:26 Nit: #include <map>
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
11 #include "base/android/field_trial_list.h"
11 #include "base/android/scoped_java_ref.h" 12 #include "base/android/scoped_java_ref.h"
12 #include "base/bind.h" 13 #include "base/bind.h"
13 #include "base/callback_forward.h" 14 #include "base/callback_forward.h"
14 #include "base/command_line.h" 15 #include "base/feature_list.h"
15 #include "base/files/file_path.h" 16 #include "base/files/file_path.h"
17 #include "base/memory/ptr_util.h"
16 #include "base/memory/ref_counted.h" 18 #include "base/memory/ref_counted.h"
17 #include "base/run_loop.h" 19 #include "base/run_loop.h"
18 #include "base/single_thread_task_runner.h" 20 #include "base/single_thread_task_runner.h"
21 #include "base/test/scoped_feature_list.h"
19 #include "base/threading/thread_task_runner_handle.h" 22 #include "base/threading/thread_task_runner_handle.h"
23 #include "chrome/browser/android/chrome_feature_list.h"
20 #include "chrome/browser/android/shortcut_info.h" 24 #include "chrome/browser/android/shortcut_info.h"
21 #include "chrome/browser/android/webapk/webapk.pb.h" 25 #include "chrome/browser/android/webapk/webapk.pb.h"
22 #include "chrome/common/chrome_switches.h" 26 #include "chrome/common/chrome_switches.h"
27 #include "components/variations/variations_associated_data.h"
23 #include "content/public/browser/browser_thread.h" 28 #include "content/public/browser/browser_thread.h"
24 #include "content/public/test/test_browser_thread_bundle.h" 29 #include "content/public/test/test_browser_thread_bundle.h"
25 #include "net/test/embedded_test_server/embedded_test_server.h" 30 #include "net/test/embedded_test_server/embedded_test_server.h"
26 #include "net/test/embedded_test_server/http_request.h" 31 #include "net/test/embedded_test_server/http_request.h"
27 #include "net/test/embedded_test_server/http_response.h" 32 #include "net/test/embedded_test_server/http_response.h"
28 #include "net/url_request/url_request_test_util.h" 33 #include "net/url_request/url_request_test_util.h"
29 #include "testing/gtest/include/gtest/gtest.h" 34 #include "testing/gtest/include/gtest/gtest.h"
30 #include "third_party/skia/include/core/SkBitmap.h" 35 #include "third_party/skia/include/core/SkBitmap.h"
31 #include "url/gurl.h" 36 #include "url/gurl.h"
32 37
33 namespace { 38 namespace {
34 39
35 const base::FilePath::CharType kTestDataDir[] = 40 const base::FilePath::CharType kTestDataDir[] =
36 FILE_PATH_LITERAL("chrome/test/data"); 41 FILE_PATH_LITERAL("chrome/test/data");
37 42
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
38 // URL of mock WebAPK server. 47 // URL of mock WebAPK server.
39 const char* kServerUrl = "/webapkserver/"; 48 const char* kServerUrl = "/webapkserver/";
40 49
41 // Icon URL from Web Manifest. We use a random file in the test data directory. 50 // Icon URL from Web Manifest. We use a random file in the test data directory.
42 // Since WebApkInstaller does not try to decode the file as an image it is OK 51 // Since WebApkInstaller does not try to decode the file as an image it is OK
43 // that the file is not an image. 52 // that the file is not an image.
44 const char* kIconUrl = "/simple.html"; 53 const char* kIconUrl = "/simple.html";
45 54
46 // URL of file to download from the WebAPK server. We use a random file in the 55 // URL of file to download from the WebAPK server. We use a random file in the
47 // test data directory. 56 // test data directory.
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 186
178 } // anonymous namespace 187 } // anonymous namespace
179 188
180 class WebApkInstallerTest : public ::testing::Test { 189 class WebApkInstallerTest : public ::testing::Test {
181 public: 190 public:
182 typedef base::Callback<std::unique_ptr<net::test_server::HttpResponse>(void)> 191 typedef base::Callback<std::unique_ptr<net::test_server::HttpResponse>(void)>
183 WebApkResponseBuilder; 192 WebApkResponseBuilder;
184 193
185 WebApkInstallerTest() 194 WebApkInstallerTest()
186 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} 195 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {}
187 ~WebApkInstallerTest() override {} 196 ~WebApkInstallerTest() override {
197 variations::testing::ClearAllVariationParams();
198 }
188 199
189 void SetUp() override { 200 void SetUp() override {
190 test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir)); 201 test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir));
191 test_server_.RegisterRequestHandler( 202 test_server_.RegisterRequestHandler(
192 base::Bind(&WebApkInstallerTest::HandleWebApkRequest, 203 base::Bind(&WebApkInstallerTest::HandleWebApkRequest,
193 base::Unretained(this))); 204 base::Unretained(this)));
194 ASSERT_TRUE(test_server_.Start()); 205 ASSERT_TRUE(test_server_.Start());
195 206
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
196 SetDefaults(); 217 SetDefaults();
197 } 218 }
198 219
199 // Sets the Web Manifest's icon URL. 220 // Sets the Web Manifest's icon URL.
200 void SetIconUrl(const GURL& icon_url) { icon_url_ = icon_url; } 221 void SetIconUrl(const GURL& icon_url) { icon_url_ = icon_url; }
201 222
202 // Sets the URL to send the webapk::CreateWebApkRequest to. WebApkInstaller 223 // Sets the URL to send the webapk::CreateWebApkRequest to. WebApkInstaller
203 // should fail if the URL is not |kServerUrl|. 224 // should fail if the URL is not |kServerUrl|.
204 void SetWebApkServerUrl(const GURL& server_url) { 225 void SetWebApkServerUrl(const GURL& server_url) {
205 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 226 variations::testing::ClearAllVariationParams();
206 switches::kWebApkServerUrl, server_url.spec()); 227 std::map<std::string, std::string> params;
228 params["ServerUrl"] = server_url.spec();
229 ASSERT_TRUE(variations::AssociateVariationParams(kFieldTrialName,
230 kFieldTrialGroup, params));
207 } 231 }
208 232
209 // Sets the function that should be used to build the response to the 233 // Sets the function that should be used to build the response to the
210 // WebAPK creation request. 234 // WebAPK creation request.
211 void SetWebApkResponseBuilder(const WebApkResponseBuilder& builder) { 235 void SetWebApkResponseBuilder(const WebApkResponseBuilder& builder) {
212 webapk_response_builder_ = builder; 236 webapk_response_builder_ = builder;
213 } 237 }
214 238
215 std::unique_ptr<WebApkInstallerRunner> CreateWebApkInstallerRunner() { 239 std::unique_ptr<WebApkInstallerRunner> CreateWebApkInstallerRunner() {
216 return std::unique_ptr<WebApkInstallerRunner>( 240 return std::unique_ptr<WebApkInstallerRunner>(
(...skipping 17 matching lines...) Expand all
234 std::unique_ptr<net::test_server::HttpResponse> HandleWebApkRequest( 258 std::unique_ptr<net::test_server::HttpResponse> HandleWebApkRequest(
235 const net::test_server::HttpRequest& request) { 259 const net::test_server::HttpRequest& request) {
236 return (request.relative_url == kServerUrl) 260 return (request.relative_url == kServerUrl)
237 ? webapk_response_builder_.Run() 261 ? webapk_response_builder_.Run()
238 : std::unique_ptr<net::test_server::HttpResponse>(); 262 : std::unique_ptr<net::test_server::HttpResponse>();
239 } 263 }
240 264
241 content::TestBrowserThreadBundle thread_bundle_; 265 content::TestBrowserThreadBundle thread_bundle_;
242 net::EmbeddedTestServer test_server_; 266 net::EmbeddedTestServer test_server_;
243 267
268 std::unique_ptr<base::FieldTrialList> field_trial_list_;
269 base::test::ScopedFeatureList scoped_feature_list_;
270
244 // Web Manifest's icon URL. 271 // Web Manifest's icon URL.
245 GURL icon_url_; 272 GURL icon_url_;
246 273
247 // Builds response to the WebAPK creation request. 274 // Builds response to the WebAPK creation request.
248 WebApkResponseBuilder webapk_response_builder_; 275 WebApkResponseBuilder webapk_response_builder_;
249 276
250 DISALLOW_COPY_AND_ASSIGN(WebApkInstallerTest); 277 DISALLOW_COPY_AND_ASSIGN(WebApkInstallerTest);
251 }; 278 };
252 279
253 // Test installation succeeding. 280 // Test installation succeeding.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 runner->RunInstallWebApk(); 349 runner->RunInstallWebApk();
323 EXPECT_FALSE(runner->success()); 350 EXPECT_FALSE(runner->success());
324 } 351 }
325 352
326 // Test update succeeding. 353 // Test update succeeding.
327 TEST_F(WebApkInstallerTest, UpdateSuccess) { 354 TEST_F(WebApkInstallerTest, UpdateSuccess) {
328 std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner(); 355 std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
329 runner->RunUpdateWebApk(); 356 runner->RunUpdateWebApk();
330 EXPECT_TRUE(runner->success()); 357 EXPECT_TRUE(runner->success());
331 } 358 }
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