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

Side by Side Diff: chrome/browser/extensions/bookmark_app_helper_unittest.cc

Issue 667053007: Use manifest for streamlined hosted app creation for title and URL. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git/+/master
Patch Set: Fix memory leak in manifest_manager_host Created 6 years, 2 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 unified diff | Download patch
OLDNEW
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.h" 8 #include "chrome/browser/extensions/extension_service.h"
9 #include "chrome/browser/extensions/extension_service_test_base.h" 9 #include "chrome/browser/extensions/extension_service_test_base.h"
10 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" 10 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h"
11 #include "chrome/test/base/testing_profile.h" 11 #include "chrome/test/base/testing_profile.h"
12 #include "content/public/browser/render_process_host.h" 12 #include "content/public/browser/render_process_host.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "content/public/test/web_contents_tester.h" 14 #include "content/public/test/web_contents_tester.h"
15 #include "extensions/browser/extension_registry.h" 15 #include "extensions/browser/extension_registry.h"
16 #include "extensions/common/constants.h" 16 #include "extensions/common/constants.h"
17 #include "extensions/common/extension_icon_set.h" 17 #include "extensions/common/extension_icon_set.h"
18 #include "extensions/common/manifest_handlers/icons_handler.h" 18 #include "extensions/common/manifest_handlers/icons_handler.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "third_party/skia/include/core/SkBitmap.h" 20 #include "third_party/skia/include/core/SkBitmap.h"
21 #include "ui/gfx/skia_util.h" 21 #include "ui/gfx/skia_util.h"
22 22
23 namespace { 23 namespace {
24 24
25 const char kAppUrl[] = "http://www.chromium.org"; 25 const char kAppUrl[] = "http://www.chromium.org";
26 const char kAlternativeAppUrl[] = "http://www.notchromium.org";
26 const char kAppTitle[] = "Test title"; 27 const char kAppTitle[] = "Test title";
28 const char kAppShortName[] = "Test short name";
27 const char kAlternativeAppTitle[] = "Different test title"; 29 const char kAlternativeAppTitle[] = "Different test title";
28 const char kAppDescription[] = "Test description"; 30 const char kAppDescription[] = "Test description";
29 31
30 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY; 32 const int kIconSizeTiny = extension_misc::EXTENSION_ICON_BITTY;
31 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL; 33 const int kIconSizeSmall = extension_misc::EXTENSION_ICON_SMALL;
32 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM; 34 const int kIconSizeMedium = extension_misc::EXTENSION_ICON_MEDIUM;
33 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE; 35 const int kIconSizeLarge = extension_misc::EXTENSION_ICON_LARGE;
34 36
35 class BookmarkAppHelperTest : public testing::Test { 37 class BookmarkAppHelperTest : public testing::Test {
36 public: 38 public:
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 content::WebContents* contents) 124 content::WebContents* contents)
123 : BookmarkAppHelper(service, web_app_info, contents) {} 125 : BookmarkAppHelper(service, web_app_info, contents) {}
124 126
125 virtual ~TestBookmarkAppHelper() {} 127 virtual ~TestBookmarkAppHelper() {}
126 128
127 void CreationComplete(const extensions::Extension* extension, 129 void CreationComplete(const extensions::Extension* extension,
128 const WebApplicationInfo& web_app_info) { 130 const WebApplicationInfo& web_app_info) {
129 extension_ = extension; 131 extension_ = extension;
130 } 132 }
131 133
134 void CompleteGetManifest(const content::Manifest& manifest) {
135 BookmarkAppHelper::OnDidGetManifest(manifest);
136 }
137
132 void CompleteIconDownload( 138 void CompleteIconDownload(
133 bool success, 139 bool success,
134 const std::map<GURL, std::vector<SkBitmap> >& bitmaps) { 140 const std::map<GURL, std::vector<SkBitmap> >& bitmaps) {
135 BookmarkAppHelper::OnIconsDownloaded(success, bitmaps); 141 BookmarkAppHelper::OnIconsDownloaded(success, bitmaps);
136 } 142 }
137 143
138 const Extension* extension() { return extension_; } 144 const Extension* extension() { return extension_; }
139 145
140 private: 146 private:
141 const Extension* extension_; 147 const Extension* extension_;
(...skipping 26 matching lines...) Expand all
168 EXPECT_EQ(1u, service_->extensions()->size()); 174 EXPECT_EQ(1u, service_->extensions()->size());
169 EXPECT_TRUE(extension->from_bookmark()); 175 EXPECT_TRUE(extension->from_bookmark());
170 EXPECT_EQ(kAppTitle, extension->name()); 176 EXPECT_EQ(kAppTitle, extension->name());
171 EXPECT_EQ(kAppDescription, extension->description()); 177 EXPECT_EQ(kAppDescription, extension->description());
172 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension)); 178 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
173 EXPECT_FALSE( 179 EXPECT_FALSE(
174 IconsInfo::GetIconResource( 180 IconsInfo::GetIconResource(
175 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty()); 181 extension, kIconSizeSmall, ExtensionIconSet::MATCH_EXACTLY).empty());
176 } 182 }
177 183
184 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppWithManifest) {
185 WebApplicationInfo web_app_info;
186
187 scoped_ptr<content::WebContents> contents(
188 content::WebContentsTester::CreateTestWebContents(profile_.get(), NULL));
189 TestBookmarkAppHelper helper(service_, web_app_info, contents.get());
190 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete,
191 base::Unretained(&helper)));
192
193 content::Manifest manifest;
194 manifest.start_url = GURL(kAppUrl);
195 manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
196 helper.CompleteGetManifest(manifest);
197
198 std::map<GURL, std::vector<SkBitmap> > icon_map;
199 helper.CompleteIconDownload(true, icon_map);
200
201 base::RunLoop().RunUntilIdle();
202 EXPECT_TRUE(helper.extension());
203 const Extension* extension =
204 service_->GetInstalledExtension(helper.extension()->id());
205 EXPECT_TRUE(extension);
206 EXPECT_EQ(1u, service_->extensions()->size());
207 EXPECT_TRUE(extension->from_bookmark());
208 EXPECT_EQ(kAppTitle, extension->name());
209 EXPECT_EQ(GURL(kAppUrl), AppLaunchInfo::GetLaunchWebURL(extension));
210 }
211
178 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) { 212 TEST_F(BookmarkAppHelperExtensionServiceTest, CreateBookmarkAppNoContents) {
179 WebApplicationInfo web_app_info; 213 WebApplicationInfo web_app_info;
180 web_app_info.app_url = GURL(kAppUrl); 214 web_app_info.app_url = GURL(kAppUrl);
181 web_app_info.title = base::UTF8ToUTF16(kAppTitle); 215 web_app_info.title = base::UTF8ToUTF16(kAppTitle);
182 web_app_info.description = base::UTF8ToUTF16(kAppDescription); 216 web_app_info.description = base::UTF8ToUTF16(kAppDescription);
183 web_app_info.icons.push_back( 217 web_app_info.icons.push_back(
184 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED)); 218 CreateIconInfoWithBitmap(kIconSizeTiny, SK_ColorRED));
185 219
186 TestBookmarkAppHelper helper(service_, web_app_info, NULL); 220 TestBookmarkAppHelper helper(service_, web_app_info, NULL);
187 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete, 221 helper.Create(base::Bind(&TestBookmarkAppHelper::CreationComplete,
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 EXPECT_EQ(1u, registry()->enabled_extensions().size()); 313 EXPECT_EQ(1u, registry()->enabled_extensions().size());
280 base::RunLoop run_loop; 314 base::RunLoop run_loop;
281 extensions::GetWebApplicationInfoFromApp( 315 extensions::GetWebApplicationInfoFromApp(
282 profile_.get(), 316 profile_.get(),
283 service_->extensions()->begin()->get(), 317 service_->extensions()->begin()->get(),
284 base::Bind( 318 base::Bind(
285 &ValidateWebApplicationInfo, run_loop.QuitClosure(), web_app_info)); 319 &ValidateWebApplicationInfo, run_loop.QuitClosure(), web_app_info));
286 run_loop.Run(); 320 run_loop.Run();
287 } 321 }
288 322
323 TEST_F(BookmarkAppHelperTest, UpdateWebAppInfoFromManifest) {
324 WebApplicationInfo web_app_info;
325 web_app_info.title = base::UTF8ToUTF16(kAlternativeAppTitle);
326 web_app_info.app_url = GURL(kAlternativeAppUrl);
327
328 content::Manifest manifest;
329 manifest.start_url = GURL(kAppUrl);
330 manifest.short_name = base::NullableString16(base::UTF8ToUTF16(kAppShortName),
331 false);
332
333 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info);
334 EXPECT_EQ(base::UTF8ToUTF16(kAppShortName), web_app_info.title);
335 EXPECT_EQ(GURL(kAppUrl), web_app_info.app_url);
336
337 // Test that |manifest.name| takes priority over |manifest.short_name|
338 manifest.name = base::NullableString16(base::UTF8ToUTF16(kAppTitle), false);
339 BookmarkAppHelper::UpdateWebAppInfoFromManifest(manifest, &web_app_info);
340 EXPECT_EQ(base::UTF8ToUTF16(kAppTitle), web_app_info.title);
341 }
342
289 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) { 343 TEST_F(BookmarkAppHelperTest, ConstrainBitmapsToSizes) {
290 std::set<int> desired_sizes; 344 std::set<int> desired_sizes;
291 desired_sizes.insert(16); 345 desired_sizes.insert(16);
292 desired_sizes.insert(32); 346 desired_sizes.insert(32);
293 desired_sizes.insert(128); 347 desired_sizes.insert(128);
294 desired_sizes.insert(256); 348 desired_sizes.insert(256);
295 349
296 { 350 {
297 std::vector<SkBitmap> bitmaps; 351 std::vector<SkBitmap> bitmaps;
298 bitmaps.push_back(CreateSquareBitmapWithColor(16, SK_ColorRED)); 352 bitmaps.push_back(CreateSquareBitmapWithColor(16, SK_ColorRED));
(...skipping 27 matching lines...) Expand all
326 } 380 }
327 381
328 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) { 382 TEST_F(BookmarkAppHelperTest, IsValidBookmarkAppUrl) {
329 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org"))); 383 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("https://www.chromium.org")));
330 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path"))); 384 EXPECT_TRUE(IsValidBookmarkAppUrl(GURL("http://www.chromium.org/path")));
331 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org"))); 385 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("ftp://www.chromium.org")));
332 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags"))); 386 EXPECT_FALSE(IsValidBookmarkAppUrl(GURL("chrome://flags")));
333 } 387 }
334 388
335 } // namespace extensions 389 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/bookmark_app_helper.cc ('k') | chrome/browser/extensions/tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698