Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / bookmark_app_helper_unittest.cc
index b9e75a7..6850826 100644 (file)
@@ -23,7 +23,9 @@
 namespace {
 
 const char kAppUrl[] = "http://www.chromium.org";
+const char kAlternativeAppUrl[] = "http://www.notchromium.org";
 const char kAppTitle[] = "Test title";
+const char kAppShortName[] = "Test short name";
 const char kAlternativeAppTitle[] = "Different test title";
 const char kAppDescription[] = "Test description";
 
@@ -35,7 +37,7 @@ const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE;
 class BookmarkAppHelperTest : public testing::Test {
  public:
   BookmarkAppHelperTest() {}
-  virtual ~BookmarkAppHelperTest() {}
+  ~BookmarkAppHelperTest() override {}
 
  private:
   DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest);
@@ -45,16 +47,16 @@ class BookmarkAppHelperExtensionServiceTest
     : public extensions::ExtensionServiceTestBase {
  public:
   BookmarkAppHelperExtensionServiceTest() {}
-  virtual ~BookmarkAppHelperExtensionServiceTest() {}
+  ~BookmarkAppHelperExtensionServiceTest() override {}
 
-  virtual void SetUp() OVERRIDE {
+  void SetUp() override {
     extensions::ExtensionServiceTestBase::SetUp();
     InitializeEmptyExtensionService();
     service_->Init();
     EXPECT_EQ(0u, service_->extensions()->size());
   }
 
-  virtual void TearDown() OVERRIDE {
+  void TearDown() override {
     ExtensionServiceTestBase::TearDown();
     for (content::RenderProcessHost::iterator i(
              content::RenderProcessHost::AllHostsIterator());
@@ -122,13 +124,17 @@ class TestBookmarkAppHelper : public BookmarkAppHelper {
                         content::WebContents* contents)
       : BookmarkAppHelper(service, web_app_info, contents) {}
 
-  virtual ~TestBookmarkAppHelper() {}
+  ~TestBookmarkAppHelper() override {}
 
   void CreationComplete(const extensions::Extension* extension,
                         const WebApplicationInfo& web_app_info) {
     extension_ = extension;
   }
 
+  void CompleteGetManifest(const content::Manifest& manifest) {
+    BookmarkAppHelper::OnDidGetManifest(manifest);
+  }
+
   void CompleteIconDownload(
       bool success,
       const std::map<GURL, std::vector<SkBitmap> >& bitmaps) {
@@ -175,6 +181,34 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) {
           extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty());
 }
 
+TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppWithManifest) {
+  WebApplicationInfo web_app_info;
+
+  scoped_ptr<content::WebContents> contents(
+      content::WebContentsTester::CreateTestWebContents(profile_.get(), NULL));
+  TestBookmarkAppHelper helper(service_, web_app_info, contents.get());
+  helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete,
+                           base::Unretained(&helper)));
+
+  content::Manifest manifest;
+  manifest.start_url = GURL(kAppUrl);
+  manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
+  helper.CompleteGetManifest(manifest);
+
+  std::map<GURL, std::vector<SkBitmap> > icon_map;
+  helper.CompleteIconDownload(true, icon_map);
+
+  base::RunLoop().RunUntilIdle();
+  EXPECT_TRUE(helper.extension());
+  const Extension* extension =
+      service_->GetInstalledExtension(helper.extension()->id());
+  EXPECT_TRUE(extension);
+  EXPECT_EQ(1u, service_->extensions()->size());
+  EXPECT_TRUE(extension->from_bookmark());
+  EXPECT_EQ(kAppTitle, extension->name());
+  EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
+}
+
 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) {
   WebApplicationInfo web_app_info;
   web_app_info.app_url = GURL(kAppUrl);
@@ -286,6 +320,26 @@ TEST_F(BookmarkAppHelperExtensionServiceTest, GetWebApplicationInfo) {
   run_loop.Run();
 }
 
+TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) {
+  WebApplicationInfo web_app_info;
+  web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle);
+  web_app_info.app_url = GURL(kAlternativeAppUrl);
+
+  content::Manifest manifest;
+  manifest.start_url = GURL(kAppUrl);
+  manifest.short_name = base::NullableString16(base::UTF8ToUTF16(kAppShortName),
+                                               false);
+
+  BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info);
+  EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title);
+  EXPECT_EQ(GURL(kAppUrl), web_app_info.app_url);
+
+  // Test that |manifest.name| takes priority over |manifest.short_name|
+  manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
+  BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info);
+  EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title);
+}
+
 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) {
   std::set<int> desired_sizes;
   desired_sizes.insert(16);