Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/browser/android/webapk/webapk_update_manager.h" | |
| 6 | |
| 7 #include <jni.h> | |
| 8 | |
| 9 #include "base/android/jni_string.h" | |
| 10 #include "base/bind.h" | |
| 11 #include "chrome/browser/android/webapk/webapk_installer.h" | |
| 12 #include "chrome/browser/profiles/profile.h" | |
| 13 #include "chrome/browser/profiles/profile_manager.h" | |
| 14 #include "content/public/browser/browser_context.h" | |
| 15 #include "content/public/browser/browser_thread.h" | |
| 16 #include "jni/WebApkUpdateManager_jni.h" | |
| 17 #include "third_party/skia/include/core/SkBitmap.h" | |
| 18 #include "ui/gfx/android/java_bitmap.h" | |
| 19 #include "url/gurl.h" | |
| 20 | |
| 21 namespace { | |
| 22 void UpdateAsyncHelper(content::BrowserContext* browser_context, | |
| 23 const ShortcutInfo& info, | |
| 24 const SkBitmap& icon_bitmap, | |
| 25 const std::string& webapk_package, | |
| 26 int version) { | |
| 27 WebApkInstaller* installer = new WebApkInstaller(info, icon_bitmap); | |
| 28 installer->UpdateAsync(browser_context, | |
| 29 base::Bind(&WebApkUpdateManager::OnBuiltWebApk, | |
| 30 webapk_package), | |
| 31 webapk_package, version); | |
| 32 } | |
| 33 | |
| 34 void GetProfileOnUIThread(const ShortcutInfo& info, | |
| 35 const SkBitmap& icon_bitmap, | |
| 36 const std::string& webapk_package, | |
| 37 int version) { | |
| 38 Profile* profile = ProfileManager::GetLastUsedProfile(); | |
| 39 if (profile == nullptr) { | |
| 40 NOTREACHED() << "Profile not found."; | |
| 41 return; | |
| 42 } | |
| 43 content::BrowserThread::PostTask( | |
| 44 content::BrowserThread::IO, FROM_HERE, | |
| 45 base::Bind(&UpdateAsyncHelper, | |
| 46 static_cast<content::BrowserContext*>(profile), | |
| 47 info, icon_bitmap, webapk_package, version)); | |
| 48 } | |
| 49 } // anonymous namespace | |
| 50 | |
| 51 // static | |
| 52 bool WebApkUpdateManager::Register(JNIEnv* env) { | |
| 53 return RegisterNativesImpl(env); | |
| 54 } | |
| 55 | |
| 56 // static | |
| 57 void WebApkUpdateManager::OnBuiltWebApk(const std::string& webapk_package, | |
| 58 bool success) { | |
| 59 JNIEnv* env = base::android::AttachCurrentThread(); | |
| 60 | |
| 61 if (success) { | |
| 62 LOG(WARNING) | |
| 63 << "Sent request to update WebAPK to server. Seems to have worked."; | |
|
pkotwicz
2016/08/08 18:59:16
Nit: Use DVLOG(1) for the success case.
DVLOG(1)
Xi Han
2016/08/08 21:25:05
That makes sense, we shouldn't log warning for the
| |
| 64 } else { | |
| 65 LOG(WARNING) << "Server request to update WebAPK failed."; | |
| 66 } | |
| 67 | |
| 68 ScopedJavaLocalRef<jstring> java_webapk_package = | |
| 69 base::android::ConvertUTF8ToJavaString(env, webapk_package); | |
| 70 Java_WebApkUpdateManager_onBuiltWebApk( | |
| 71 env, success, java_webapk_package.obj()); | |
| 72 } | |
| 73 | |
| 74 // static JNI method. | |
| 75 static void UpdateAsync( | |
|
pkotwicz
2016/08/08 18:59:16
Nit: I have been trying to follow the ordering of
Xi Han
2016/08/08 21:25:05
Done.
| |
| 76 JNIEnv* env, | |
| 77 const JavaParamRef<jclass>& clazz, | |
| 78 const JavaParamRef<jstring>& java_webapk_package, | |
|
pkotwicz
2016/08/08 18:59:16
Nit: Keep |java_webapk_package| and |java_webapk_v
Xi Han
2016/08/08 21:25:06
Done.
| |
| 79 const JavaParamRef<jstring>& java_url, | |
|
pkotwicz
2016/08/08 18:59:16
Nit: java_url -> java_start_url
Xi Han
2016/08/08 21:25:05
Done.
| |
| 80 const JavaParamRef<jstring>& java_scope, | |
| 81 const JavaParamRef<jstring>& java_name, | |
| 82 const JavaParamRef<jstring>& java_short_name, | |
| 83 jint java_display_mode, | |
| 84 jint java_orientation, | |
| 85 jlong java_theme_color, | |
| 86 jlong java_background_color, | |
| 87 const JavaParamRef<jstring>& java_web_manifest_url, | |
| 88 const JavaParamRef<jstring>& java_icon_url, | |
| 89 const JavaParamRef<jobject>& java_icon_bitmap, | |
| 90 jint java_version) { | |
| 91 GURL url(ConvertJavaStringToUTF8(env, java_url)); | |
| 92 GURL scope(ConvertJavaStringToUTF8(env, java_scope)); | |
| 93 GURL web_manifest_url(ConvertJavaStringToUTF8(env, java_web_manifest_url)); | |
|
pkotwicz
2016/08/08 18:59:16
|web_manifest_url| is unused?
Xi Han
2016/08/08 21:25:05
Good catch, add it to |info|.
| |
| 94 GURL icon_url(ConvertJavaStringToUTF8(env, java_icon_url)); | |
| 95 ShortcutInfo info(url); | |
| 96 info.scope = scope; | |
| 97 info.name = ConvertJavaStringToUTF16(env, java_name); | |
| 98 info.short_name = ConvertJavaStringToUTF16(env, java_short_name); | |
| 99 info.display = (blink::WebDisplayMode) java_display_mode; | |
|
pkotwicz
2016/08/08 18:59:16
Nit: Use static_cast<blink::WebDisplayMode> (Or st
Xi Han
2016/08/08 21:25:06
static_cast<blink::WebDisplayMode> works, updated.
| |
| 100 info.orientation = (blink::WebScreenOrientationLockType) java_orientation; | |
| 101 info.theme_color = (long) java_theme_color; | |
| 102 info.background_color = (long) java_background_color; | |
| 103 info.icon_url = icon_url; | |
| 104 | |
| 105 gfx::JavaBitmap java_bitmap_lock(java_icon_bitmap); | |
| 106 SkBitmap icon_bitmap = gfx::CreateSkBitmapFromJavaBitmap(java_bitmap_lock); | |
| 107 icon_bitmap.setImmutable(); | |
| 108 | |
| 109 std::string webapk_package; | |
| 110 ConvertJavaStringToUTF8(env, java_webapk_package, &webapk_package); | |
| 111 | |
| 112 content::BrowserThread::PostTask( | |
| 113 content::BrowserThread::UI, FROM_HERE, | |
| 114 base::Bind(&GetProfileOnUIThread, | |
| 115 info, icon_bitmap, webapk_package, java_version)); | |
| 116 } | |
| OLD | NEW |