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..1f023180a05ffb2c5773803c6fc6e935e94ccc69 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" |
@@ -71,6 +72,25 @@ void ShortcutHelper::OnDidGetWebApplicationInfo( |
title_ = web_app_info.title.empty() ? web_contents()->GetTitle() |
: web_app_info.title; |
+ web_contents()->GetManifest(base::Bind(&ShortcutHelper::OnDidGetManifest, |
+ base::Unretained(this))); |
Miguel Garcia
2014/09/17 09:02:42
why base::unretained? wouldn't it be better to use
mlamouri (slow - plz ping)
2014/09/17 10:51:04
Very good point. I wonder if I should introduce a
|
+} |
+ |
+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 = |