Chromium Code Reviews| Index: chrome/browser/android/shortcut_helper.cc |
| diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc |
| index 71f32233dc23e6ed0ca71f39a044c3d11698ea7a..00ccdb87411e72814c04f9307df1a01e9be38688 100644 |
| --- a/chrome/browser/android/shortcut_helper.cc |
| +++ b/chrome/browser/android/shortcut_helper.cc |
| @@ -16,7 +16,9 @@ |
| #include "chrome/browser/android/tab_android.h" |
| #include "chrome/browser/favicon/favicon_service.h" |
| #include "chrome/browser/favicon/favicon_service_factory.h" |
| +#include "chrome/common/chrome_constants.h" |
| #include "chrome/common/render_messages.h" |
| +#include "chrome/common/web_application_info.h" |
| #include "content/public/browser/user_metrics.h" |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_contents_observer.h" |
| @@ -44,38 +46,30 @@ ShortcutHelper::ShortcutHelper(JNIEnv* env, |
| : WebContentsObserver(web_contents), |
| java_ref_(env, obj), |
| url_(web_contents->GetURL()), |
| - shortcut_type_(BOOKMARK) { |
| + web_app_capable_(WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED) { |
| } |
| void ShortcutHelper::Initialize() { |
| // Send a message to the renderer to retrieve information about the page. |
| - Send(new ChromeViewMsg_RetrieveWebappInformation(routing_id(), url_)); |
| + Send(new ChromeViewMsg_GetWebApplicationInfo(routing_id())); |
| } |
| ShortcutHelper::~ShortcutHelper() { |
| } |
| -void ShortcutHelper::OnDidRetrieveWebappInformation( |
| - bool success, |
| - bool is_mobile_webapp_capable, |
| - bool is_apple_mobile_webapp_capable, |
| - const GURL& expected_url) { |
| - // This should silently fail. |
| - if (!success) { |
| - LOG(ERROR) << "Failed to parse webpage."; |
| - } else if (expected_url != url_) { |
| - LOG(ERROR) << "Unexpected URL returned."; |
| - } |
| +void ShortcutHelper::OnDidGetWebApplicationInfo( |
| + const WebApplicationInfo& received_web_app_info) { |
|
palmer
2014/09/15 21:02:44
You should also check the sanity of the GURL (leng
mlamouri (slow - plz ping)
2014/09/16 14:38:22
Hmm, I do not use those. I'm not sure how useful i
|
| + // Sanitize received_web_app_info. |
| + WebApplicationInfo web_app_info = received_web_app_info; |
| + web_app_info.title = |
| + web_app_info.title.substr(0, chrome::kMaxMetaTagAttributeLength); |
| + web_app_info.description = |
| + web_app_info.description.substr(0, chrome::kMaxMetaTagAttributeLength); |
| - if (is_apple_mobile_webapp_capable && !is_mobile_webapp_capable) { |
| - shortcut_type_ = APP_SHORTCUT_APPLE; |
| - } else if (is_apple_mobile_webapp_capable || is_mobile_webapp_capable) { |
| - shortcut_type_ = APP_SHORTCUT; |
| - } else { |
| - shortcut_type_ = BOOKMARK; |
| - } |
| + web_app_capable_ = web_app_info.mobile_capable; |
| - title_ = web_contents()->GetTitle(); |
| + title_ = web_app_info.title.empty() ? web_contents()->GetTitle() |
| + : web_app_info.title; |
| JNIEnv* env = base::android::AttachCurrentThread(); |
| ScopedJavaLocalRef<jobject> j_obj = java_ref_.get(env); |
| @@ -137,7 +131,7 @@ void ShortcutHelper::FinishAddingShortcut( |
| base::Bind(&ShortcutHelper::AddShortcutInBackground, |
| url_, |
| title_, |
| - shortcut_type_, |
| + web_app_capable_, |
| icon_), |
| true); |
| @@ -148,8 +142,8 @@ bool ShortcutHelper::OnMessageReceived(const IPC::Message& message) { |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(ShortcutHelper, message) |
| - IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DidRetrieveWebappInformation, |
| - OnDidRetrieveWebappInformation) |
| + IPC_MESSAGE_HANDLER(ChromeViewHostMsg_DidGetWebApplicationInfo, |
| + OnDidGetWebApplicationInfo) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| @@ -167,7 +161,7 @@ bool ShortcutHelper::RegisterShortcutHelper(JNIEnv* env) { |
| void ShortcutHelper::AddShortcutInBackground( |
| const GURL& url, |
| const base::string16& title, |
| - ShortcutType shortcut_type, |
| + WebApplicationInfo::MobileCapable web_app_capable, |
| const favicon_base::FaviconRawBitmapResult& bitmap_result) { |
| DCHECK(base::WorkerPool::RunsTasksOnCurrentThread()); |
| @@ -195,27 +189,28 @@ void ShortcutHelper::AddShortcutInBackground( |
| if (favicon_bitmap.getSize()) |
| java_bitmap = gfx::ConvertToJavaBitmap(&favicon_bitmap); |
| - Java_ShortcutHelper_addShortcut(env, |
| - base::android::GetApplicationContext(), |
| - java_url.obj(), |
| - java_title.obj(), |
| - java_bitmap.obj(), |
| - r_value, |
| - g_value, |
| - b_value, |
| - shortcut_type != BOOKMARK); |
| + Java_ShortcutHelper_addShortcut( |
| + env, |
| + base::android::GetApplicationContext(), |
| + java_url.obj(), |
| + java_title.obj(), |
| + java_bitmap.obj(), |
| + r_value, |
| + g_value, |
| + b_value, |
| + web_app_capable != WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED); |
| // Record what type of shortcut was added by the user. |
| - switch (shortcut_type) { |
| - case APP_SHORTCUT: |
| + switch (web_app_capable) { |
| + case WebApplicationInfo::MOBILE_CAPABLE: |
| content::RecordAction( |
| base::UserMetricsAction("webapps.AddShortcut.AppShortcut")); |
| break; |
| - case APP_SHORTCUT_APPLE: |
| + case WebApplicationInfo::MOBILE_CAPABLE_APPLE: |
| content::RecordAction( |
| base::UserMetricsAction("webapps.AddShortcut.AppShortcutApple")); |
| break; |
| - case BOOKMARK: |
| + case WebApplicationInfo::MOBILE_CAPABLE_UNSPECIFIED: |
| content::RecordAction( |
| base::UserMetricsAction("webapps.AddShortcut.Bookmark")); |
| break; |