| Index: chrome/browser/extensions/bookmark_app_helper.cc
|
| diff --git a/chrome/browser/extensions/bookmark_app_helper.cc b/chrome/browser/extensions/bookmark_app_helper.cc
|
| index cc1c384e6e25a22afea8eccb312d0713814211a2..60a2c6180d0b0d450a31d4bc804ea70749e9b44a 100644
|
| --- a/chrome/browser/extensions/bookmark_app_helper.cc
|
| +++ b/chrome/browser/extensions/bookmark_app_helper.cc
|
| @@ -117,6 +117,22 @@ void OnIconsLoaded(
|
| namespace extensions {
|
|
|
| // static
|
| +void BookmarkAppHelper::UpdateWebAppInfoFromManifest(
|
| + const content::Manifest& manifest,
|
| + WebApplicationInfo* web_app_info) {
|
| + if (!manifest.short_name.is_null())
|
| + web_app_info->title = manifest.short_name.string();
|
| +
|
| + // Give the full length name priority.
|
| + if (!manifest.name.is_null())
|
| + web_app_info->title = manifest.name.string();
|
| +
|
| + // Set the url based on the manifest value, if any.
|
| + if (manifest.start_url.is_valid())
|
| + web_app_info->app_url = manifest.start_url;
|
| +}
|
| +
|
| +// static
|
| std::map<int, SkBitmap> BookmarkAppHelper::ConstrainBitmapsToSizes(
|
| const std::vector<SkBitmap>& bitmaps,
|
| const std::set<int>& sizes) {
|
| @@ -170,7 +186,8 @@ void BookmarkAppHelper::GenerateIcon(std::map<int, SkBitmap>* bitmaps,
|
| BookmarkAppHelper::BookmarkAppHelper(ExtensionService* service,
|
| WebApplicationInfo web_app_info,
|
| content::WebContents* contents)
|
| - : web_app_info_(web_app_info),
|
| + : contents_(contents),
|
| + web_app_info_(web_app_info),
|
| crx_installer_(extensions::CrxInstaller::CreateSilent(service)) {
|
| registrar_.Add(this,
|
| extensions::NOTIFICATION_CRX_INSTALLER_DONE,
|
| @@ -207,10 +224,22 @@ BookmarkAppHelper::~BookmarkAppHelper() {}
|
| void BookmarkAppHelper::Create(const CreateBookmarkAppCallback& callback) {
|
| callback_ = callback;
|
|
|
| - if (favicon_downloader_.get())
|
| - favicon_downloader_->Start();
|
| - else
|
| + if (contents_) {
|
| + contents_->GetManifest(base::Bind(&BookmarkAppHelper::OnDidGetManifest,
|
| + base::Unretained(this)));
|
| + } else {
|
| OnIconsDownloaded(true, std::map<GURL, std::vector<SkBitmap> >());
|
| + }
|
| +}
|
| +
|
| +void BookmarkAppHelper::OnDidGetManifest(const content::Manifest& manifest) {
|
| + if (contents_->IsBeingDestroyed())
|
| + return;
|
| +
|
| + UpdateWebAppInfoFromManifest(manifest, &web_app_info_);
|
| +
|
| + DCHECK(favicon_downloader_.get());
|
| + favicon_downloader_->Start();
|
| }
|
|
|
| void BookmarkAppHelper::OnIconsDownloaded(
|
|
|