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

Unified Diff: chrome/browser/android/webapk/webapk_installer_unittest.cc

Issue 2184913005: Add calls to the server to request WebAPK updates. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: WebAPK no longer owns a ManifestUpgradeDetector and rebase on "worker thread" CL. Created 4 years, 4 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/webapk/webapk_installer_unittest.cc
diff --git a/chrome/browser/android/webapk/webapk_installer_unittest.cc b/chrome/browser/android/webapk/webapk_installer_unittest.cc
index fee301cd2009653f8a663699455201ce05c0ec9c..6052531b50b4c3c9587f43f3717c5b17b4829222 100644
--- a/chrome/browser/android/webapk/webapk_installer_unittest.cc
+++ b/chrome/browser/android/webapk/webapk_installer_unittest.cc
@@ -36,7 +36,10 @@ const base::FilePath::CharType kTestDataDir[] =
FILE_PATH_LITERAL("chrome/test/data");
// URL of mock WebAPK server.
-const std::string kServerUrl = "/webapkserver";
+const std::string kServerUrl = "/webapkserver/";
+
+// The response format type expected from the WebAPK server.
+const std::string kWebApkServerUrlResponseType = "?alt=proto";
// URL of file to download from the WebAPK server. We use a random file in the
// test data directory.
@@ -46,14 +49,22 @@ const std::string kDownloadUrl = "/simple.html";
const std::string kDownloadedWebApkPackageName = "party.unicode";
// WebApkInstaller subclass where
-// WebApkInstaller::StartDownloadedWebApkInstall() is stubbed out.
+// WebApkInstaller::StartInstallingDownloadedWebApk() is stubbed out.
pkotwicz 2016/08/11 22:02:45 Nit: "WebApkInstaller::StartInstallingDownloadedWe
Xi Han 2016/08/15 21:38:45 Done.
+// WebApkInstaller::StartUpdateUsingDownloadedWebApk() is stubbed out.
class TestWebApkInstaller : public WebApkInstaller {
public:
TestWebApkInstaller(const ShortcutInfo& shortcut_info,
const SkBitmap& shortcut_icon)
: WebApkInstaller(shortcut_info, shortcut_icon) {}
- bool StartDownloadedWebApkInstall(
+ bool StartInstallingDownloadedWebApk(
+ JNIEnv* env,
+ const base::android::ScopedJavaLocalRef<jstring>& file_path,
+ const base::android::ScopedJavaLocalRef<jstring>& package_name) override {
+ return true;
+ }
+
+ bool StartUpdateUsingDownloadedWebApk(
JNIEnv* env,
const base::android::ScopedJavaLocalRef<jstring>& file_path,
const base::android::ScopedJavaLocalRef<jstring>& package_name) override {
@@ -72,18 +83,41 @@ class WebApkInstallerRunner {
base::ThreadTaskRunnerHandle::Get())) {}
~WebApkInstallerRunner() {}
- void Run() {
- ShortcutInfo info(GURL::EmptyGURL());
+ void RunCreateWebApk() {
+ WebApkInstaller* installer = createWebApkInstaller();
- // WebApkInstaller owns itself.
- WebApkInstaller* installer = new TestWebApkInstaller(info, SkBitmap());
-
- installer->SetTimeoutMs(100);
installer->InstallAsyncWithURLRequestContextGetter(
url_request_context_getter_.get(),
base::Bind(&WebApkInstallerRunner::OnCompleted,
base::Unretained(this)));
+ setupCallback();
+ }
+
+ void RunUpdateWebApk() {
pkotwicz 2016/08/11 22:02:44 Nit: "int webapk_version" -> "const int kWebApkVer
Xi Han 2016/08/15 21:38:45 Done.
+ int webapk_version = 1;
+
+ // WebApkInstaller owns itself.
+ WebApkInstaller* installer = createWebApkInstaller();
+
+ installer->UpdateAsyncWithURLRequestContextGetter(
+ url_request_context_getter_.get(),
+ base::Bind(&WebApkInstallerRunner::OnCompleted, base::Unretained(this)),
+ kDownloadedWebApkPackageName, webapk_version);
+
+ setupCallback();
+ }
+
+ WebApkInstaller* createWebApkInstaller() {
pkotwicz 2016/08/11 22:02:44 Functions start with uppercase in C++
Xi Han 2016/08/15 21:38:45 Done.
+ ShortcutInfo info(GURL::EmptyGURL());
+
+ // WebApkInstaller owns itself.
+ WebApkInstaller* installer = new TestWebApkInstaller(info, SkBitmap());
+ installer->SetTimeoutMs(100);
+ return installer;
+ }
+
+ void setupCallback() {
pkotwicz 2016/08/11 22:02:45 I think that Run() would be a more appropriate nam
Xi Han 2016/08/15 21:38:45 Done.
base::RunLoop run_loop;
on_completed_callback_ = run_loop.QuitClosure();
run_loop.Run();
@@ -140,9 +174,8 @@ class WebApkInstallerTest : public ::testing::Test {
void SetUp() override {
test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir));
- test_server_.RegisterRequestHandler(
- base::Bind(&WebApkInstallerTest::HandleCreateWebApkRequest,
- base::Unretained(this)));
+ test_server_.RegisterRequestHandler(base::Bind(
+ &WebApkInstallerTest::HandleWebApkRequest, base::Unretained(this)));
ASSERT_TRUE(test_server_.Start());
SetDefaults();
@@ -173,13 +206,23 @@ class WebApkInstallerTest : public ::testing::Test {
base::Bind(&BuildValidWebApkResponse, download_url));
}
- std::unique_ptr<net::test_server::HttpResponse> HandleCreateWebApkRequest(
+ std::unique_ptr<net::test_server::HttpResponse> HandleWebApkRequest(
const net::test_server::HttpRequest& request) {
- return (request.relative_url == kServerUrl)
+ return (request.relative_url == GetServerUrlForCreateWebApk() ||
+ request.relative_url == GetServerUrlForUpdateWebApk())
? webapk_response_builder_.Run()
: std::unique_ptr<net::test_server::HttpResponse>();
}
+ std::string GetServerUrlForCreateWebApk() {
pkotwicz 2016/08/11 22:02:44 Nit: This should be a const function
Xi Han 2016/08/15 21:38:45 Done.
+ return kServerUrl + kWebApkServerUrlResponseType;
+ }
+
+ std::string GetServerUrlForUpdateWebApk() {
pkotwicz 2016/08/11 22:02:44 Nit: This should be a const function
Xi Han 2016/08/15 21:38:45 Done.
+ return kServerUrl + kDownloadedWebApkPackageName + "/" +
+ kWebApkServerUrlResponseType;
+ }
+
content::TestBrowserThreadBundle thread_bundle_;
net::EmbeddedTestServer test_server_;
@@ -192,7 +235,7 @@ class WebApkInstallerTest : public ::testing::Test {
// Test installation succeeding.
TEST_F(WebApkInstallerTest, Success) {
WebApkInstallerRunner runner;
- runner.Run();
+ runner.RunCreateWebApk();
EXPECT_TRUE(runner.success());
}
@@ -202,7 +245,7 @@ TEST_F(WebApkInstallerTest, CreateWebApkRequestTimesOut) {
SetWebApkServerUrl(server_url);
WebApkInstallerRunner runner;
- runner.Run();
+ runner.RunCreateWebApk();
EXPECT_FALSE(runner.success());
}
@@ -212,7 +255,7 @@ TEST_F(WebApkInstallerTest, WebApkDownloadTimesOut) {
SetWebApkResponseBuilder(base::Bind(&BuildValidWebApkResponse, download_url));
WebApkInstallerRunner runner;
- runner.Run();
+ runner.RunCreateWebApk();
EXPECT_FALSE(runner.success());
}
@@ -222,7 +265,7 @@ TEST_F(WebApkInstallerTest, WebApkDownloadFails) {
SetWebApkResponseBuilder(base::Bind(&BuildValidWebApkResponse, download_url));
WebApkInstallerRunner runner;
- runner.Run();
+ runner.RunCreateWebApk();
EXPECT_FALSE(runner.success());
}
@@ -246,6 +289,13 @@ TEST_F(WebApkInstallerTest, UnparsableCreateWebApkResponse) {
SetWebApkResponseBuilder(base::Bind(&BuildUnparsableWebApkResponse));
WebApkInstallerRunner runner;
- runner.Run();
+ runner.RunCreateWebApk();
EXPECT_FALSE(runner.success());
}
+
+// Test update succeeding.
+TEST_F(WebApkInstallerTest, UpdateSuccess) {
+ WebApkInstallerRunner runner;
+ runner.RunUpdateWebApk();
+ EXPECT_TRUE(runner.success());
+}
pkotwicz 2016/08/11 22:02:45 Thanks for adding the test!
Xi Han 2016/08/15 21:38:45 The tests are well written, so it is not difficult

Powered by Google App Engine
This is Rietveld 408576698