Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |