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 { | |
pkotwicz
2016/08/09 14:35:43
Nit: New line
Xi Han
2016/08/11 19:01:15
Done.
| |
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 DVLOG(1) | |
63 << "Sent request to update WebAPK to server. Seems to have worked."; | |
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( | |
76 JNIEnv* env, | |
77 const JavaParamRef<jclass>& clazz, | |
78 const JavaParamRef<jstring>& java_start_url, | |
79 const JavaParamRef<jstring>& java_scope, | |
80 const JavaParamRef<jstring>& java_name, | |
81 const JavaParamRef<jstring>& java_short_name, | |
82 const JavaParamRef<jstring>& java_icon_url, | |
83 const JavaParamRef<jobject>& java_icon_bitmap, | |
84 jint java_display_mode, | |
85 jint java_orientation, | |
86 jlong java_theme_color, | |
87 jlong java_background_color, | |
88 const JavaParamRef<jstring>& java_web_manifest_url, | |
89 const JavaParamRef<jstring>& java_webapk_package, | |
90 jint java_webapk_version) { | |
91 GURL url(ConvertJavaStringToUTF8(env, java_start_url)); | |
pkotwicz
2016/08/09 14:35:43
Nit: |url| -> |start_url|
Xi Han
2016/08/11 19:01:15
Done.
| |
92 GURL scope(ConvertJavaStringToUTF8(env, java_scope)); | |
93 GURL web_manifest_url(ConvertJavaStringToUTF8(env, java_web_manifest_url)); | |
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 = static_cast<blink::WebDisplayMode>(java_display_mode); | |
100 info.orientation = static_cast<blink::WebScreenOrientationLockType>( | |
101 java_orientation); | |
102 info.theme_color = (long) java_theme_color; | |
103 info.background_color = (long) java_background_color; | |
104 info.icon_url = icon_url; | |
105 info.manifest_url = web_manifest_url; | |
106 | |
107 gfx::JavaBitmap java_bitmap_lock(java_icon_bitmap); | |
108 SkBitmap icon_bitmap = gfx::CreateSkBitmapFromJavaBitmap(java_bitmap_lock); | |
109 icon_bitmap.setImmutable(); | |
110 | |
111 std::string webapk_package; | |
112 ConvertJavaStringToUTF8(env, java_webapk_package, &webapk_package); | |
113 | |
114 content::BrowserThread::PostTask( | |
115 content::BrowserThread::UI, FROM_HERE, | |
116 base::Bind(&GetProfileOnUIThread, | |
117 info, icon_bitmap, webapk_package, java_webapk_version)); | |
118 } | |
OLD | NEW |