| Index: chrome/browser/android/shortcut_helper.cc
|
| diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc
|
| index 00ccdb87411e72814c04f9307df1a01e9be38688..2a2f2a3fb7fac4514323465c91a5e16aa8706157 100644
|
| --- a/chrome/browser/android/shortcut_helper.cc
|
| +++ b/chrome/browser/android/shortcut_helper.cc
|
| @@ -23,6 +23,7 @@
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/browser/web_contents_observer.h"
|
| #include "content/public/common/frame_navigate_params.h"
|
| +#include "content/public/common/manifest.h"
|
| #include "jni/ShortcutHelper_jni.h"
|
| #include "ui/gfx/android/java_bitmap.h"
|
| #include "ui/gfx/codec/png_codec.h"
|
| @@ -46,7 +47,8 @@ ShortcutHelper::ShortcutHelper(JNIEnv* env,
|
| : WebContentsObserver(web_contents),
|
| java_ref_(env, obj),
|
| url_(web_contents->GetURL()),
|
| - web_app_capable_(WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED) {
|
| + web_app_capable_(WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED),
|
| + weak_ptr_factory_(this) {
|
| }
|
|
|
| void ShortcutHelper::Initialize() {
|
| @@ -71,6 +73,25 @@ void ShortcutHelper::OnDidGetWebApplicationInfo(
|
| title_ = web_app_info.title.empty() ? web_contents()->GetTitle()
|
| : web_app_info.title;
|
|
|
| + web_contents()->GetManifest(base::Bind(&ShortcutHelper::OnDidGetManifest,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| +}
|
| +
|
| +void ShortcutHelper::OnDidGetManifest(const content::Manifest& manifest) {
|
| + // Set the title based on the manifest value, if any.
|
| + if (!manifest.short_name.is_null())
|
| + title_ = manifest.short_name.string();
|
| + else if (!manifest.name.is_null())
|
| + title_ = manifest.name.string();
|
| +
|
| + // Set the url based on the manifest value, if any.
|
| + if (manifest.start_url.is_valid())
|
| + url_ = manifest.start_url;
|
| +
|
| + // The ShortcutHelper is now able to notify its Java counterpart that it is
|
| + // initialized. OnInitialized method is not conceptually part of getting the
|
| + // manifest data but it happens that the initialization is finalized when
|
| + // these data are available.
|
| JNIEnv* env = base::android::AttachCurrentThread();
|
| ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env);
|
| ScopedJavaLocalRef<jstring> j_title =
|
|
|