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

Side by Side Diff: chrome/browser/android/webapk/webapk_update_manager.cc

Issue 2943913002: [Android WebAPK] Make webapk_installer.cc return proto as base64 string
Patch Set: Created 3 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/android/webapk/webapk_update_manager.h" 5 #include "chrome/browser/android/webapk/webapk_update_manager.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 17 matching lines...) Expand all
28 #include "url/gurl.h" 28 #include "url/gurl.h"
29 29
30 using base::android::JavaRef; 30 using base::android::JavaRef;
31 using base::android::JavaParamRef; 31 using base::android::JavaParamRef;
32 using base::android::ScopedJavaGlobalRef; 32 using base::android::ScopedJavaGlobalRef;
33 33
34 namespace { 34 namespace {
35 35
36 // Called with the serialized proto to send to the WebAPK server. 36 // Called with the serialized proto to send to the WebAPK server.
37 void OnBuiltProto(const JavaRef<jobject>& java_callback, 37 void OnBuiltProto(const JavaRef<jobject>& java_callback,
38 std::unique_ptr<std::vector<uint8_t>> proto) { 38 std::unique_ptr<std::string> proto) {
39 base::android::RunCallbackAndroid(java_callback, *proto); 39 JNIEnv* env = base::android::AttachCurrentThread();
40 base::android::ScopedJavaLocalRef<jstring> j_proto =
Xi Han 2017/06/19 17:14:14 Nit: rename j_proto to java_proto, since we alread
41 base::android::ConvertUTF8ToJavaString(env, *proto);
42 base::android::RunCallbackAndroid(java_callback, j_proto);
40 } 43 }
41 44
42 // Called after the update either succeeds or fails. 45 // Called after the update either succeeds or fails.
43 void OnUpdated(const JavaRef<jobject>& java_callback, 46 void OnUpdated(const JavaRef<jobject>& java_callback,
44 WebApkInstallResult result, 47 WebApkInstallResult result,
45 bool relax_updates, 48 bool relax_updates,
46 const std::string& webapk_package) { 49 const std::string& webapk_package) {
47 JNIEnv* env = base::android::AttachCurrentThread(); 50 JNIEnv* env = base::android::AttachCurrentThread();
48 Java_WebApkUpdateCallback_onResultFromNative( 51 Java_WebApkUpdateCallback_onResultFromNative(
49 env, java_callback, static_cast<int>(result), relax_updates); 52 env, java_callback, static_cast<int>(result), relax_updates);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 java_is_manifest_stale, 132 java_is_manifest_stale,
130 base::Bind(&OnBuiltProto, ScopedJavaGlobalRef<jobject>(java_callback))); 133 base::Bind(&OnBuiltProto, ScopedJavaGlobalRef<jobject>(java_callback)));
131 } 134 }
132 135
133 // static JNI method. 136 // static JNI method.
134 static void UpdateWebApk(JNIEnv* env, 137 static void UpdateWebApk(JNIEnv* env,
135 const JavaParamRef<jclass>& clazz, 138 const JavaParamRef<jclass>& clazz,
136 const JavaParamRef<jstring>& java_webapk_package, 139 const JavaParamRef<jstring>& java_webapk_package,
137 const JavaParamRef<jstring>& java_start_url, 140 const JavaParamRef<jstring>& java_start_url,
138 const JavaParamRef<jstring>& java_short_name, 141 const JavaParamRef<jstring>& java_short_name,
139 const JavaParamRef<jbyteArray>& java_serialized_proto, 142 const JavaParamRef<jstring>& java_serialized_proto,
140 const JavaParamRef<jobject>& java_callback) { 143 const JavaParamRef<jobject>& java_callback) {
141 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); 144 DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
142 145
143 ScopedJavaGlobalRef<jobject> callback_ref(java_callback); 146 ScopedJavaGlobalRef<jobject> callback_ref(java_callback);
144 147
145 Profile* profile = ProfileManager::GetLastUsedProfile(); 148 Profile* profile = ProfileManager::GetLastUsedProfile();
146 if (profile == nullptr) { 149 if (profile == nullptr) {
147 base::ThreadTaskRunnerHandle::Get()->PostTask( 150 base::ThreadTaskRunnerHandle::Get()->PostTask(
148 FROM_HERE, 151 FROM_HERE,
149 base::Bind(&OnUpdated, callback_ref, WebApkInstallResult::FAILURE, 152 base::Bind(&OnUpdated, callback_ref, WebApkInstallResult::FAILURE,
150 false /* relax_updates */, "" /* webapk_package */)); 153 false /* relax_updates */, "" /* webapk_package */));
151 return; 154 return;
152 } 155 }
153 156
154 std::string webapk_package = 157 std::string webapk_package =
155 ConvertJavaStringToUTF8(env, java_webapk_package); 158 ConvertJavaStringToUTF8(env, java_webapk_package);
156 GURL start_url = GURL(ConvertJavaStringToUTF8(env, java_start_url)); 159 GURL start_url = GURL(ConvertJavaStringToUTF8(env, java_start_url));
157 base::string16 short_name = ConvertJavaStringToUTF16(env, java_short_name); 160 base::string16 short_name = ConvertJavaStringToUTF16(env, java_short_name);
158 std::unique_ptr<std::vector<uint8_t>> serialized_proto = 161 std::unique_ptr<std::string> serialized_proto =
159 base::MakeUnique<std::vector<uint8_t>>(); 162 base::MakeUnique<std::string>();
160 JavaByteArrayToByteVector(env, java_serialized_proto, serialized_proto.get()); 163 ConvertJavaStringToUTF8(env, java_serialized_proto, serialized_proto.get());
161 164
162 WebApkInstallService::Get(profile)->UpdateAsync( 165 WebApkInstallService::Get(profile)->UpdateAsync(
163 webapk_package, start_url, short_name, std::move(serialized_proto), 166 webapk_package, start_url, short_name, std::move(serialized_proto),
164 base::Bind(&OnUpdated, callback_ref)); 167 base::Bind(&OnUpdated, callback_ref));
165 } 168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698