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 4d0a2bd798b82f8c87bd1684ee0a40e77bfe5e8f..ea2d74ddd988c0f87a62e645e905b149097c7afa 100644 |
--- a/chrome/browser/android/webapk/webapk_installer_unittest.cc |
+++ b/chrome/browser/android/webapk/webapk_installer_unittest.cc |
@@ -62,14 +62,8 @@ const char* kDownloadedWebApkPackageName = "party.unicode"; |
// WebApkInstaller::InstallOrUpdateWebApkFromGooglePlay() are stubbed out. |
class TestWebApkInstaller : public WebApkInstaller { |
public: |
- TestWebApkInstaller(content::BrowserContext* browser_context, |
- const ShortcutInfo& shortcut_info, |
- const SkBitmap& primary_icon, |
- const SkBitmap& badge_icon) |
- : WebApkInstaller(browser_context, |
- shortcut_info, |
- primary_icon, |
- badge_icon) {} |
+ TestWebApkInstaller(content::BrowserContext* browser_context) |
+ : WebApkInstaller(browser_context) {} |
void InstallOrUpdateWebApk(const std::string& package_name, |
int version, |
@@ -101,45 +95,48 @@ class WebApkInstallerRunner { |
~WebApkInstallerRunner() {} |
void RunInstallWebApk() { |
+ base::RunLoop run_loop; |
+ on_completed_callback_ = run_loop.QuitClosure(); |
+ |
+ ShortcutInfo info(GURL::EmptyGURL()); |
dominickn
2017/06/14 00:14:23
Use GURL() (EmptyGURL() should only be used when y
pkotwicz
2017/06/15 02:25:20
Ok. This has to be
ShortcutInfo info((GURL()));
|
+ info.best_primary_icon_url = best_primary_icon_url_; |
+ info.best_badge_icon_url = best_badge_icon_url_; |
WebApkInstaller::InstallAsyncForTesting( |
- CreateWebApkInstaller(), base::Bind(&WebApkInstallerRunner::OnCompleted, |
- base::Unretained(this))); |
- Run(); |
+ CreateWebApkInstaller(), info, SkBitmap(), SkBitmap(), |
+ base::Bind(&WebApkInstallerRunner::OnCompleted, |
+ base::Unretained(this))); |
+ |
+ run_loop.Run(); |
} |
- void RunUpdateWebApk() { |
- const int kWebApkVersion = 1; |
+ void RunUpdateWebApk(const std::string& serialized_proto) { |
+ base::RunLoop run_loop; |
+ on_completed_callback_ = run_loop.QuitClosure(); |
std::map<std::string, std::string> icon_url_to_murmur2_hash{ |
{best_primary_icon_url_.spec(), "0"}, |
{best_badge_icon_url_.spec(), "0"}}; |
+ std::unique_ptr<std::vector<uint8_t>> serialized_proto_vector( |
+ new std::vector<uint8_t>(serialized_proto.begin(), |
dominickn
2017/06/14 00:14:23
base::MakeUnique
|
+ serialized_proto.end())); |
WebApkInstaller::UpdateAsyncForTesting( |
- CreateWebApkInstaller(), kDownloadedWebApkPackageName, kWebApkVersion, |
- icon_url_to_murmur2_hash, false /* is_manifest_stale */, |
+ CreateWebApkInstaller(), kDownloadedWebApkPackageName, |
+ GURL() /* start_url */, base::string16() /* short_name */, |
+ std::move(serialized_proto_vector), |
base::Bind(&WebApkInstallerRunner::OnCompleted, |
base::Unretained(this))); |
- Run(); |
+ |
+ run_loop.Run(); |
} |
WebApkInstaller* CreateWebApkInstaller() { |
- ShortcutInfo info(GURL::EmptyGURL()); |
- info.best_primary_icon_url = best_primary_icon_url_; |
- info.best_badge_icon_url = best_badge_icon_url_; |
- |
// WebApkInstaller owns itself. |
- WebApkInstaller* installer = |
- new TestWebApkInstaller(browser_context_, info, SkBitmap(), SkBitmap()); |
+ WebApkInstaller* installer = new TestWebApkInstaller(browser_context_); |
installer->SetTimeoutMs(100); |
return installer; |
} |
- void Run() { |
- base::RunLoop run_loop; |
- on_completed_callback_ = run_loop.QuitClosure(); |
- run_loop.Run(); |
- } |
- |
WebApkInstallResult result() { return result_; } |
private: |
@@ -215,8 +212,11 @@ class BuildProtoRunner { |
private: |
// Called when the |webapk_request_| is populated. |
- void OnBuiltWebApkProto(std::unique_ptr<webapk::WebApk> webapk) { |
- webapk_request_ = std::move(webapk); |
+ void OnBuiltWebApkProto( |
+ std::unique_ptr<std::vector<uint8_t>> serialized_proto) { |
+ webapk_request_.reset(new webapk::WebApk); |
dominickn
2017/06/14 00:14:23
base::MakeUnique
|
+ webapk_request_->ParseFromArray(serialized_proto->data(), |
+ serialized_proto->size()); |
on_completed_callback_.Run(); |
} |
@@ -388,7 +388,7 @@ TEST_F(WebApkInstallerTest, UnparsableCreateWebApkResponse) { |
// Test update succeeding. |
TEST_F(WebApkInstallerTest, UpdateSuccess) { |
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner(); |
- runner->RunUpdateWebApk(); |
+ runner->RunUpdateWebApk("non-empty"); |
EXPECT_EQ(WebApkInstallResult::SUCCESS, runner->result()); |
} |
@@ -403,10 +403,17 @@ TEST_F(WebApkInstallerTest, UpdateSuccessWithEmptyDownloadUrlInResponse) { |
SetWebApkResponseBuilder(base::Bind(&BuildValidWebApkResponse, "")); |
std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner(); |
- runner->RunUpdateWebApk(); |
+ runner->RunUpdateWebApk("non-empty"); |
EXPECT_EQ(WebApkInstallResult::SUCCESS, runner->result()); |
} |
+// Test that an update fails if an empty proto is passed to UpdateAsync(). |
+TEST_F(WebApkInstallerTest, UpdateFailsEmptyProto) { |
+ std::unique_ptr<WebApkInstallerRunner> runner = CreateWebApkInstallerRunner(); |
+ runner->RunUpdateWebApk(""); |
+ EXPECT_EQ(WebApkInstallResult::FAILURE, runner->result()); |
+} |
+ |
// When there is no Web Manifest available for a site, an empty |
// |best_primary_icon_url| is used to build a WebApk update request. Tests the |
// request can be built properly. |