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

Side by Side Diff: chrome/browser/android/download/chrome_download_delegate.cc

Issue 2437623003: Use native implementation of dangerous download infobar (Closed)
Patch Set: nits Created 4 years, 1 month 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/download/chrome_download_delegate.h" 5 #include "chrome/browser/android/download/chrome_download_delegate.h"
6 6
7 #include <jni.h> 7 #include <jni.h>
8 8
9 #include <string> 9 #include <string>
10 #include <type_traits> 10 #include <type_traits>
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 // Returns true if a file name is dangerous, or false otherwise. 45 // Returns true if a file name is dangerous, or false otherwise.
46 static jboolean IsDownloadDangerous(JNIEnv* env, 46 static jboolean IsDownloadDangerous(JNIEnv* env,
47 const JavaParamRef<jclass>& clazz, 47 const JavaParamRef<jclass>& clazz,
48 const JavaParamRef<jstring>& filename) { 48 const JavaParamRef<jstring>& filename) {
49 base::FilePath path(base::android::ConvertJavaStringToUTF8(env, filename)); 49 base::FilePath path(base::android::ConvertJavaStringToUTF8(env, filename));
50 return safe_browsing::FileTypePolicies::GetInstance()->GetFileDangerLevel( 50 return safe_browsing::FileTypePolicies::GetInstance()->GetFileDangerLevel(
51 path) != safe_browsing::DownloadFileType::NOT_DANGEROUS; 51 path) != safe_browsing::DownloadFileType::NOT_DANGEROUS;
52 } 52 }
53 53
54 // Called when a dangerous download is validated.
55 static void DangerousDownloadValidated(
56 JNIEnv* env,
57 const JavaParamRef<jclass>& clazz,
58 const JavaParamRef<jobject>& tab,
59 const JavaParamRef<jstring>& jdownload_guid,
60 jboolean accept) {
61 std::string download_guid =
62 base::android::ConvertJavaStringToUTF8(env, jdownload_guid);
63 TabAndroid* tab_android = TabAndroid::GetNativeTab(env, tab);
64 DownloadControllerBase::Get()->DangerousDownloadValidated(
65 tab_android->web_contents(), download_guid, accept);
66 }
67
68 // static 54 // static
69 bool ChromeDownloadDelegate::EnqueueDownloadManagerRequest( 55 bool ChromeDownloadDelegate::EnqueueDownloadManagerRequest(
70 jobject chrome_download_delegate, 56 jobject chrome_download_delegate,
71 bool overwrite, 57 bool overwrite,
72 jobject download_info) { 58 jobject download_info) {
73 JNIEnv* env = base::android::AttachCurrentThread(); 59 JNIEnv* env = base::android::AttachCurrentThread();
74 60
75 return Java_ChromeDownloadDelegate_enqueueDownloadManagerRequestFromNative( 61 return Java_ChromeDownloadDelegate_enqueueDownloadManagerRequestFromNative(
76 env, chrome_download_delegate, overwrite, download_info); 62 env, chrome_download_delegate, overwrite, download_info);
77 } 63 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 java_ref_ = env->NewGlobalRef(jobj); 128 java_ref_ = env->NewGlobalRef(jobj);
143 } 129 }
144 130
145 void ChromeDownloadDelegate::OnDownloadStarted(const std::string& filename) { 131 void ChromeDownloadDelegate::OnDownloadStarted(const std::string& filename) {
146 JNIEnv* env = base::android::AttachCurrentThread(); 132 JNIEnv* env = base::android::AttachCurrentThread();
147 ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString( 133 ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString(
148 env, filename); 134 env, filename);
149 Java_ChromeDownloadDelegate_onDownloadStarted(env, java_ref_, jfilename); 135 Java_ChromeDownloadDelegate_onDownloadStarted(env, java_ref_, jfilename);
150 } 136 }
151 137
152 void ChromeDownloadDelegate::OnDangerousDownload(const std::string& filename,
153 const std::string& guid) {
154 JNIEnv* env = base::android::AttachCurrentThread();
155 ScopedJavaLocalRef<jstring> jfilename = ConvertUTF8ToJavaString(
156 env, filename);
157 ScopedJavaLocalRef<jstring> jguid = ConvertUTF8ToJavaString(env, guid);
158 Java_ChromeDownloadDelegate_onDangerousDownload(env, java_ref_, jfilename,
159 jguid);
160 }
161
162 void ChromeDownloadDelegate::RequestFileAccess(intptr_t callback_id) { 138 void ChromeDownloadDelegate::RequestFileAccess(intptr_t callback_id) {
163 JNIEnv* env = base::android::AttachCurrentThread(); 139 JNIEnv* env = base::android::AttachCurrentThread();
164 Java_ChromeDownloadDelegate_requestFileAccess( 140 Java_ChromeDownloadDelegate_requestFileAccess(
165 env, java_ref_, callback_id); 141 env, java_ref_, callback_id);
166 } 142 }
167 143
168 void Init(JNIEnv* env, 144 void Init(JNIEnv* env,
169 const JavaParamRef<jobject>& obj, 145 const JavaParamRef<jobject>& obj,
170 const JavaParamRef<jobject>& jweb_contents) { 146 const JavaParamRef<jobject>& jweb_contents) {
171 auto* web_contents = WebContents::FromJavaWebContents(jweb_contents); 147 auto* web_contents = WebContents::FromJavaWebContents(jweb_contents);
172 ChromeDownloadDelegate::CreateForWebContents(web_contents); 148 ChromeDownloadDelegate::CreateForWebContents(web_contents);
173 ChromeDownloadDelegate::FromWebContents(web_contents)->SetJavaRef(env, obj); 149 ChromeDownloadDelegate::FromWebContents(web_contents)->SetJavaRef(env, obj);
174 } 150 }
175 151
176 bool RegisterChromeDownloadDelegate(JNIEnv* env) { 152 bool RegisterChromeDownloadDelegate(JNIEnv* env) {
177 return RegisterNativesImpl(env); 153 return RegisterNativesImpl(env);
178 } 154 }
179 155
180 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ChromeDownloadDelegate); 156 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ChromeDownloadDelegate);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698