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

Unified Diff: chrome/browser/android/shortcut_helper.cc

Issue 1845233002: Store standalone web app data in WebappDataStorage as well as the homescreen intent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@notification-deep-linking
Patch Set: Improve comments Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/android/shortcut_helper.cc
diff --git a/chrome/browser/android/shortcut_helper.cc b/chrome/browser/android/shortcut_helper.cc
index e52f96ec34b5178272419523e5df9895b9093365..1f1849b3c50b8fa9debad4ad9714adcb83349ef2 100644
--- a/chrome/browser/android/shortcut_helper.cc
+++ b/chrome/browser/android/shortcut_helper.cc
@@ -10,6 +10,8 @@
#include "base/android/jni_android.h"
#include "base/android/jni_array.h"
#include "base/android/jni_string.h"
+#include "base/bind.h"
+#include "base/callback.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/manifest/manifest_icon_downloader.h"
@@ -62,7 +64,8 @@ void GetHomescreenIconAndSplashImageSizes() {
void ShortcutHelper::AddShortcutInBackgroundWithSkBitmap(
const ShortcutInfo& info,
const std::string& webapp_id,
- const SkBitmap& icon_bitmap) {
+ const SkBitmap& icon_bitmap,
+ const base::Closure& splash_image_callback) {
DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
// Send the data to the Java side to create the shortcut.
@@ -81,6 +84,9 @@ void ShortcutHelper::AddShortcutInBackgroundWithSkBitmap(
if (icon_bitmap.getSize())
java_bitmap = gfx::ConvertToJavaBitmap(&icon_bitmap);
+ uintptr_t callback_pointer = reinterpret_cast<uintptr_t>(
gone 2016/04/01 23:44:48 Don't we know whether the callback will be used at
dominickn 2016/04/04 07:26:24 That's a good point. This cleans up the mess here
+ new base::Closure(splash_image_callback));
+
Java_ShortcutHelper_addShortcut(
env,
base::android::GetApplicationContext(),
@@ -95,7 +101,8 @@ void ShortcutHelper::AddShortcutInBackgroundWithSkBitmap(
info.source,
info.theme_color,
info.background_color,
- info.is_icon_generated);
+ info.is_icon_generated,
+ callback_pointer);
}
int ShortcutHelper::GetIdealHomescreenIconSizeInDp() {
@@ -128,20 +135,18 @@ void ShortcutHelper::FetchSplashScreenImage(
const GURL& image_url,
const int ideal_splash_image_size_in_dp,
const int minimum_splash_image_size_in_dp,
- const std::string& webapp_id,
- const std::string& webapp_scope) {
+ const std::string& webapp_id) {
// This is a fire and forget task. It is not vital for the splash screen image
// to be downloaded so if the downloader returns false there is no fallback.
ManifestIconDownloader::Download(
web_contents, image_url, ideal_splash_image_size_in_dp,
minimum_splash_image_size_in_dp,
- base::Bind(&ShortcutHelper::StoreWebappData, webapp_id, webapp_scope));
+ base::Bind(&ShortcutHelper::StoreWebappSplashImage, webapp_id));
}
// static
-void ShortcutHelper::StoreWebappData(
+void ShortcutHelper::StoreWebappSplashImage(
const std::string& webapp_id,
- const std::string& webapp_url,
const SkBitmap& splash_image) {
if (splash_image.drawsNothing())
return;
@@ -149,16 +154,13 @@ void ShortcutHelper::StoreWebappData(
JNIEnv* env = base::android::AttachCurrentThread();
ScopedJavaLocalRef<jstring> java_webapp_id =
base::android::ConvertUTF8ToJavaString(env, webapp_id);
- ScopedJavaLocalRef<jstring> java_webapp_url =
- base::android::ConvertUTF8ToJavaString(env, webapp_url);
ScopedJavaLocalRef<jobject> java_splash_image =
gfx::ConvertToJavaBitmap(&splash_image);
- Java_ShortcutHelper_storeWebappData(
+ Java_ShortcutHelper_storeWebappSplashImage(
env,
base::android::GetApplicationContext(),
java_webapp_id.obj(),
- java_webapp_url.obj(),
java_splash_image.obj());
}
@@ -202,6 +204,20 @@ SkBitmap ShortcutHelper::FinalizeLauncherIcon(const SkBitmap& bitmap,
return gfx::CreateSkBitmapFromJavaBitmap(gfx::JavaBitmap(result.obj()));
}
+// Callback used by Java when the shortcut has been created. If the shortcut
+// was for a webapp capable site, run the splashscreen_callback.
+void OnWebappDataStored(JNIEnv* env,
+ const JavaParamRef<jclass>& clazz,
+ jlong jsplash_image_callback,
+ jboolean jwebapp_capable) {
+ base::Closure* splash_image_callback =
+ reinterpret_cast<base::Closure*>(jsplash_image_callback);
+ if (jwebapp_capable)
+ splash_image_callback->Run();
+
+ delete splash_image_callback;
+}
+
bool ShortcutHelper::RegisterShortcutHelper(JNIEnv* env) {
return RegisterNativesImpl(env);
}

Powered by Google App Engine
This is Rietveld 408576698