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

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: Nits. 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 3d12a194e5c612a1d2eb4225595ddc0b659ffc4b..2a2a58daae1ee83c54011df1f3e0768c302b58c4 100644
--- a/chrome/browser/android/webapk/webapk_installer_unittest.cc
+++ b/chrome/browser/android/webapk/webapk_installer_unittest.cc
@@ -36,13 +36,16 @@ const base::FilePath::CharType kTestDataDir[] =
FILE_PATH_LITERAL("chrome/test/data");
// URL of mock WebAPK server.
-const char* kServerUrl = "/webapkserver";
+const char* kServerUrl = "/webapkserver/";
// Icon URL from Web Manifest. We use a random file in the test data directory.
// Since WebApkInstaller does not try to decode the file as an image it is OK
// that the file is not an image.
const char* kIconUrl = "/simple.html";
+// The response format type expected from the WebAPK server.
+const char* kWebApkServerUrlResponseType = "?alt=proto";
+
// URL of file to download from the WebAPK server. We use a random file in the
// test data directory.
const char* kDownloadUrl = "/simple.html";
@@ -51,14 +54,22 @@ const char* kDownloadUrl = "/simple.html";
const char* kDownloadedWebApkPackageName = "party.unicode";
// WebApkInstaller subclass where
-// WebApkInstaller::StartDownloadedWebApkInstall() is stubbed out.
+// WebApkInstaller::StartInstallingDownloadedWebApk() and
+// WebApkInstaller::StartUpdateUsingDownloadedWebApk() are 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 {
@@ -69,7 +80,7 @@ class TestWebApkInstaller : public WebApkInstaller {
DISALLOW_COPY_AND_ASSIGN(TestWebApkInstaller);
};
-// Runs the WebApkInstaller installation process and blocks till done.
+// Runs the WebApkInstaller installation process/update and blocks till done.
class WebApkInstallerRunner {
public:
explicit WebApkInstallerRunner(const GURL& icon_url)
@@ -78,21 +89,43 @@ class WebApkInstallerRunner {
icon_url_(icon_url) {}
~WebApkInstallerRunner() {}
- void Run() {
+ void RunInstallWebApk() {
+ WebApkInstaller* installer = CreateWebApkInstaller();
+
+ installer->InstallAsyncWithURLRequestContextGetter(
+ url_request_context_getter_.get(),
+ base::Bind(&WebApkInstallerRunner::OnCompleted,
+ base::Unretained(this)));
+ Run();
+ }
+
+ void RunUpdateWebApk() {
+ const int webapk_version = 1;
+
+ WebApkInstaller* installer = CreateWebApkInstaller();
+
+ installer->UpdateAsyncWithURLRequestContextGetter(
+ url_request_context_getter_.get(),
+ base::Bind(&WebApkInstallerRunner::OnCompleted, base::Unretained(this)),
+ kDownloadedWebApkPackageName,
+ webapk_version);
+
+ Run();
+ }
+
+ WebApkInstaller* CreateWebApkInstaller() {
ShortcutInfo info(GURL::EmptyGURL());
info.icon_url = icon_url_;
// WebApkInstaller owns itself.
WebApkInstaller* installer = new TestWebApkInstaller(info, SkBitmap());
-
installer->SetTimeoutMs(100);
+ return installer;
+ }
+ void Run() {
base::RunLoop run_loop;
on_completed_callback_ = run_loop.QuitClosure();
- installer->InstallAsyncWithURLRequestContextGetter(
- url_request_context_getter_.get(),
- base::Bind(&WebApkInstallerRunner::OnCompleted,
- base::Unretained(this)));
run_loop.Run();
}
@@ -151,7 +184,7 @@ class WebApkInstallerTest : public ::testing::Test {
void SetUp() override {
test_server_.AddDefaultHandlers(base::FilePath(kTestDataDir));
test_server_.RegisterRequestHandler(
- base::Bind(&WebApkInstallerTest::HandleCreateWebApkRequest,
+ base::Bind(&WebApkInstallerTest::HandleWebApkRequest,
base::Unretained(this)));
ASSERT_TRUE(test_server_.Start());
@@ -193,13 +226,27 @@ 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() const {
+ std::string url(kServerUrl);
+ return url.append(kWebApkServerUrlResponseType);
+ }
+
+ std::string GetServerUrlForUpdateWebApk() const {
+ std::string url(kServerUrl);
+ url.append(kDownloadedWebApkPackageName);
+ url.append("/");
+ url.append(kWebApkServerUrlResponseType);
+ return url;
+ }
+
content::TestBrowserThreadBundle thread_bundle_;
net::EmbeddedTestServer test_server_;
@@ -215,7 +262,7 @@ class WebApkInstallerTest : public ::testing::Test {
// Test installation succeeding.
TEST_F(WebApkInstallerTest, Success) {
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_TRUE(runner->success());
}
@@ -227,7 +274,7 @@ TEST_F(WebApkInstallerTest, IconUrlDownloadTimesOut) {
SetIconUrl(icon_url);
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_FALSE(runner->success());
}
@@ -237,7 +284,7 @@ TEST_F(WebApkInstallerTest, CreateWebApkRequestTimesOut) {
SetWebApkServerUrl(server_url);
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_FALSE(runner->success());
}
@@ -247,7 +294,7 @@ TEST_F(WebApkInstallerTest, WebApkDownloadTimesOut) {
SetWebApkResponseBuilder(base::Bind(&BuildValidWebApkResponse, download_url));
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_FALSE(runner->success());
}
@@ -257,7 +304,7 @@ TEST_F(WebApkInstallerTest, WebApkDownloadFails) {
SetWebApkResponseBuilder(base::Bind(&BuildValidWebApkResponse, download_url));
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_FALSE(runner->success());
}
@@ -281,6 +328,13 @@ TEST_F(WebApkInstallerTest, UnparsableCreateWebApkResponse) {
SetWebApkResponseBuilder(base::Bind(&BuildUnparsableWebApkResponse));
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
- runner->Run();
+ runner->RunInstallWebApk();
EXPECT_FALSE(runner->success());
}
+
+// Test update succeeding.
+TEST_F(WebApkInstallerTest, UpdateSuccess) {
+ std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner();
+ runner->RunUpdateWebApk();
+ EXPECT_TRUE(runner->success());
+}
« no previous file with comments | « chrome/browser/android/webapk/webapk_installer.cc ('k') | chrome/browser/android/webapk/webapk_update_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698