| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/extensions/bookmark_app_helper.h" | 5 #include "chrome/browser/extensions/bookmark_app_helper.h" |
| 6 | 6 |
| 7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
| 8 #include "chrome/browser/extensions/extension_service_unittest.h" | 8 #include "chrome/browser/extensions/extension_service_unittest.h" |
| 9 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 9 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
| 11 #include "content/public/browser/render_process_host.h" | |
| 12 #include "content/public/browser/web_contents.h" | |
| 13 #include "content/public/test/web_contents_tester.h" | |
| 14 #include "extensions/browser/extension_registry.h" | 11 #include "extensions/browser/extension_registry.h" |
| 15 #include "extensions/common/constants.h" | 12 #include "extensions/common/constants.h" |
| 16 #include "extensions/common/extension_icon_set.h" | 13 #include "extensions/common/extension_icon_set.h" |
| 17 #include "extensions/common/manifest_handlers/icons_handler.h" | 14 #include "extensions/common/manifest_handlers/icons_handler.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 19 #include "third_party/skia/include/core/SkBitmap.h" | 16 #include "third_party/skia/include/core/SkBitmap.h" |
| 20 #include "ui/gfx/skia_util.h" | 17 #include "ui/gfx/skia_util.h" |
| 21 | 18 |
| 22 namespace { | 19 namespace { |
| 23 | 20 |
| 24 #if !defined(OS_ANDROID) | 21 #if !defined(OS_ANDROID) |
| 25 const char kAppUrl[] = "http://www.chromium.org"; | 22 const char kAppUrl[] = "http://www.chromium.org"; |
| 26 const char kAppTitle[] = "Test title"; | 23 const char kAppTitle[] = "Test title"; |
| 27 const char kAlternativeAppTitle[] = "Different test title"; | 24 const char kAlternativeAppTitle[] = "Different test title"; |
| 28 const char kAppDescription[] = "Test description"; | 25 const char kAppDescription[] = "Test description"; |
| 29 | 26 |
| 30 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; | |
| 31 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; | 27 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; |
| 32 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; | |
| 33 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; | 28 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; |
| 34 #endif | 29 #endif |
| 35 | 30 |
| 36 class BookmarkAppHelperTest : public testing::Test { | 31 class BookmarkAppHelperTest : public testing::Test { |
| 37 public: | 32 public: |
| 38 BookmarkAppHelperTest() {} | 33 BookmarkAppHelperTest() {} |
| 39 virtual ~BookmarkAppHelperTest() {} | 34 virtual ~BookmarkAppHelperTest() {} |
| 40 | 35 |
| 41 private: | 36 private: |
| 42 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); | 37 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperTest); |
| 43 }; | 38 }; |
| 44 | 39 |
| 45 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { | 40 class BookmarkAppHelperExtensionServiceTest : public ExtensionServiceTestBase { |
| 46 public: | 41 public: |
| 47 BookmarkAppHelperExtensionServiceTest() {} | 42 BookmarkAppHelperExtensionServiceTest() {} |
| 48 virtual ~BookmarkAppHelperExtensionServiceTest() {} | 43 virtual ~BookmarkAppHelperExtensionServiceTest() {} |
| 49 | 44 |
| 50 virtual void SetUp() OVERRIDE { | 45 virtual void SetUp() OVERRIDE { |
| 51 ExtensionServiceTestBase::SetUp(); | 46 ExtensionServiceTestBase::SetUp(); |
| 52 InitializeEmptyExtensionService(); | 47 InitializeEmptyExtensionService(); |
| 53 service_->Init(); | 48 service_->Init(); |
| 54 EXPECT_EQ(0u, service_->extensions()->size()); | 49 EXPECT_EQ(0u, service_->extensions()->size()); |
| 55 } | 50 } |
| 56 | 51 |
| 57 virtual void TearDown() OVERRIDE { | |
| 58 ExtensionServiceTestBase::TearDown(); | |
| 59 for (content::RenderProcessHost::iterator i( | |
| 60 content::RenderProcessHost::AllHostsIterator()); | |
| 61 !i.IsAtEnd(); | |
| 62 i.Advance()) { | |
| 63 content::RenderProcessHost* host = i.GetCurrentValue(); | |
| 64 if (Profile::FromBrowserContext(host->GetBrowserContext()) == | |
| 65 profile_.get()) | |
| 66 delete host; | |
| 67 } | |
| 68 } | |
| 69 | |
| 70 private: | 52 private: |
| 71 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); | 53 DISALLOW_COPY_AND_ASSIGN(BookmarkAppHelperExtensionServiceTest); |
| 72 }; | 54 }; |
| 73 | 55 |
| 74 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { | 56 SkBitmap CreateSquareBitmapWithColor(int size, SkColor color) { |
| 75 SkBitmap bitmap; | 57 SkBitmap bitmap; |
| 76 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); | 58 bitmap.setConfig(SkBitmap::kARGB_8888_Config, size, size); |
| 77 bitmap.allocPixels(); | 59 bitmap.allocPixels(); |
| 78 bitmap.eraseColor(color); | 60 bitmap.eraseColor(color); |
| 79 return bitmap; | 61 return bitmap; |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 }; | 129 }; |
| 148 | 130 |
| 149 // Android doesn't support extensions. | 131 // Android doesn't support extensions. |
| 150 #if !defined(OS_ANDROID) | 132 #if !defined(OS_ANDROID) |
| 151 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { | 133 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkApp) { |
| 152 WebApplicationInfo web_app_info; | 134 WebApplicationInfo web_app_info; |
| 153 web_app_info.app_url = GURL(kAppUrl); | 135 web_app_info.app_url = GURL(kAppUrl); |
| 154 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 136 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
| 155 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 137 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
| 156 | 138 |
| 157 scoped_ptr<content::WebContents> contents( | 139 TestBookmarkAppHelper helper(service_, web_app_info, NULL); |
| 158 content::WebContentsTester::CreateTestWebContents(profile_.get(), NULL)); | |
| 159 TestBookmarkAppHelper helper(service_, web_app_info, contents.get()); | |
| 160 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | 140 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, |
| 161 base::Unretained(&helper))); | 141 base::Unretained(&helper))); |
| 162 | 142 |
| 163 std::map<GURL, std::vector<SkBitmap> > icon_map; | 143 std::map<GURL, std::vector<SkBitmap> > icon_map; |
| 164 icon_map[GURL(kAppUrl)].push_back( | 144 icon_map[GURL(kAppUrl)].push_back( |
| 165 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); | 145 CreateSquareBitmapWithColor(kIconSizeSmall, SK_ColorRED)); |
| 166 helper.CompleteIconDownload(true, icon_map); | 146 helper.CompleteIconDownload(true, icon_map); |
| 167 | 147 |
| 168 base::RunLoop().RunUntilIdle(); | 148 base::RunLoop().RunUntilIdle(); |
| 169 EXPECT_TRUE(helper.extension()); | 149 EXPECT_TRUE(helper.extension()); |
| 170 const Extension* extension = | 150 const Extension* extension = |
| 171 service_->GetInstalledExtension(helper.extension()->id()); | 151 service_->GetInstalledExtension(helper.extension()->id()); |
| 172 EXPECT_TRUE(extension); | 152 EXPECT_TRUE(extension); |
| 173 EXPECT_EQ(1u, service_->extensions()->size()); | 153 EXPECT_EQ(1u, service_->extensions()->size()); |
| 174 EXPECT_TRUE(extension->from_bookmark()); | 154 EXPECT_TRUE(extension->from_bookmark()); |
| 175 EXPECT_EQ(kAppTitle, extension->name()); | 155 EXPECT_EQ(kAppTitle, extension->name()); |
| 176 EXPECT_EQ(kAppDescription, extension->description()); | 156 EXPECT_EQ(kAppDescription, extension->description()); |
| 177 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | 157 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); |
| 178 EXPECT_FALSE( | 158 EXPECT_FALSE( |
| 179 IconsInfo::GetIconResource( | 159 IconsInfo::GetIconResource( |
| 180 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | 160 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); |
| 181 } | 161 } |
| 182 | 162 |
| 183 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { | |
| 184 WebApplicationInfo web_app_info; | |
| 185 web_app_info.app_url = GURL(kAppUrl); | |
| 186 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | |
| 187 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | |
| 188 web_app_info.icons.push_back( | |
| 189 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED)); | |
| 190 | |
| 191 TestBookmarkAppHelper helper(service_, web_app_info, NULL); | |
| 192 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, | |
| 193 base::Unretained(&helper))); | |
| 194 | |
| 195 base::RunLoop().RunUntilIdle(); | |
| 196 EXPECT_TRUE(helper.extension()); | |
| 197 const Extension* extension = | |
| 198 service_->GetInstalledExtension(helper.extension()->id()); | |
| 199 EXPECT_TRUE(extension); | |
| 200 EXPECT_EQ(1u, service_->extensions()->size()); | |
| 201 EXPECT_TRUE(extension->from_bookmark()); | |
| 202 EXPECT_EQ(kAppTitle, extension->name()); | |
| 203 EXPECT_EQ(kAppDescription, extension->description()); | |
| 204 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); | |
| 205 EXPECT_FALSE( | |
| 206 IconsInfo::GetIconResource( | |
| 207 extension, kIconSizeTiny, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
| 208 EXPECT_FALSE( | |
| 209 IconsInfo::GetIconResource( | |
| 210 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
| 211 EXPECT_FALSE( | |
| 212 IconsInfo::GetIconResource(extension, | |
| 213 kIconSizeSmall * 2, | |
| 214 ExtensionIconSet::MATCH_EXACTLY).empty()); | |
| 215 EXPECT_FALSE( | |
| 216 IconsInfo::GetIconResource( | |
| 217 extension, kIconSizeMedium, ExtensionIconSet::MATCH_EXACTLY).empty()); | |
| 218 EXPECT_FALSE( | |
| 219 IconsInfo::GetIconResource(extension, | |
| 220 kIconSizeMedium * 2, | |
| 221 ExtensionIconSet::MATCH_EXACTLY).empty()); | |
| 222 } | |
| 223 | |
| 224 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { | 163 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateAndUpdateBookmarkApp) { |
| 225 EXPECT_EQ(0u, registry_->enabled_extensions().size()); | 164 EXPECT_EQ(0u, registry_->enabled_extensions().size()); |
| 226 WebApplicationInfo web_app_info; | 165 WebApplicationInfo web_app_info; |
| 227 web_app_info.app_url = GURL(kAppUrl); | 166 web_app_info.app_url = GURL(kAppUrl); |
| 228 web_app_info.title = base::UTF8ToUTF16(kAppTitle); | 167 web_app_info.title = base::UTF8ToUTF16(kAppTitle); |
| 229 web_app_info.description = base::UTF8ToUTF16(kAppDescription); | 168 web_app_info.description = base::UTF8ToUTF16(kAppDescription); |
| 230 web_app_info.icons.push_back( | 169 web_app_info.icons.push_back( |
| 231 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); | 170 CreateIconInfoWithBitmap(kIconSizeSmall, SK_ColorRED)); |
| 232 | 171 |
| 233 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); | 172 extensions::CreateOrUpdateBookmarkApp(service_, web_app_info); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 } | 271 } |
| 333 | 272 |
| 334 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { | 273 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { |
| 335 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); | 274 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); |
| 336 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); | 275 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); |
| 337 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); | 276 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); |
| 338 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); | 277 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); |
| 339 } | 278 } |
| 340 | 279 |
| 341 } // namespace extensions | 280 } // namespace extensions |
| OLD | NEW |