| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/android/download_controller.h" | 5 #include "content/browser/android/download_controller.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 282 | 282 |
| 283 return GetContentViewCoreFromWebContents(web_contents); | 283 return GetContentViewCoreFromWebContents(web_contents); |
| 284 } | 284 } |
| 285 | 285 |
| 286 ScopedJavaLocalRef<jobject> | 286 ScopedJavaLocalRef<jobject> |
| 287 DownloadController::GetContentViewCoreFromWebContents( | 287 DownloadController::GetContentViewCoreFromWebContents( |
| 288 WebContents* web_contents) { | 288 WebContents* web_contents) { |
| 289 if (!web_contents) | 289 if (!web_contents) |
| 290 return ScopedJavaLocalRef<jobject>(); | 290 return ScopedJavaLocalRef<jobject>(); |
| 291 | 291 |
| 292 NOTIMPLEMENTED(); | 292 ContentViewCore* view_core = web_contents->GetContentNativeView(); |
| 293 return ScopedJavaLocalRef<jobject>(); | 293 return view_core ? view_core->GetJavaObject() : |
| 294 ScopedJavaLocalRef<jobject>(); |
| 294 } | 295 } |
| 295 | 296 |
| 296 DownloadController::JavaObject* DownloadController::GetJavaObject() { | 297 DownloadController::JavaObject* DownloadController::GetJavaObject() { |
| 297 if (!java_object_) { | 298 if (!java_object_) { |
| 298 // Initialize Java DownloadController by calling | 299 // Initialize Java DownloadController by calling |
| 299 // DownloadController.getInstance(), which will call Init() | 300 // DownloadController.getInstance(), which will call Init() |
| 300 // if Java DownloadController is not instantiated already. | 301 // if Java DownloadController is not instantiated already. |
| 301 JNIEnv* env = AttachCurrentThread(); | 302 JNIEnv* env = AttachCurrentThread(); |
| 302 ScopedJavaLocalRef<jclass> clazz = | 303 ScopedJavaLocalRef<jclass> clazz = |
| 303 GetClass(env, kDownloadControllerClassPathName); | 304 GetClass(env, kDownloadControllerClassPathName); |
| 304 jmethodID get_instance = GetStaticMethodID(env, clazz, "getInstance", | 305 jmethodID get_instance = GetStaticMethodID(env, clazz, "getInstance", |
| 305 "()Lorg/chromium/content/browser/DownloadController;"); | 306 "()Lorg/chromium/content/browser/DownloadController;"); |
| 306 ScopedJavaLocalRef<jobject> jobj(env, | 307 ScopedJavaLocalRef<jobject> jobj(env, |
| 307 env->CallStaticObjectMethod(clazz.obj(), get_instance)); | 308 env->CallStaticObjectMethod(clazz.obj(), get_instance)); |
| 308 CheckException(env); | 309 CheckException(env); |
| 309 } | 310 } |
| 310 | 311 |
| 311 DCHECK(java_object_); | 312 DCHECK(java_object_); |
| 312 return java_object_; | 313 return java_object_; |
| 313 } | 314 } |
| 314 | 315 |
| 315 DownloadController::DownloadInfoAndroid::DownloadInfoAndroid( | 316 DownloadController::DownloadInfoAndroid::DownloadInfoAndroid( |
| 316 net::URLRequest* request) { | 317 net::URLRequest* request) { |
| 317 request->GetResponseHeaderByName("content-disposition", &content_disposition); | 318 request->GetResponseHeaderByName("content-disposition", &content_disposition); |
| 318 request->GetResponseHeaderByName("mime-type", &original_mime_type); | 319 request->GetMimeType(&original_mime_type); |
| 319 request->extra_request_headers().GetHeader( | 320 request->extra_request_headers().GetHeader( |
| 320 net::HttpRequestHeaders::kUserAgent, &user_agent); | 321 net::HttpRequestHeaders::kUserAgent, &user_agent); |
| 321 GURL referer_url(request->GetSanitizedReferrer()); | 322 GURL referer_url(request->GetSanitizedReferrer()); |
| 322 if (referer_url.is_valid()) | 323 if (referer_url.is_valid()) |
| 323 referer = referer_url.spec(); | 324 referer = referer_url.spec(); |
| 324 if (!request->url_chain().empty()) { | 325 if (!request->url_chain().empty()) { |
| 325 original_url = request->url_chain().front(); | 326 original_url = request->url_chain().front(); |
| 326 url = request->url_chain().back(); | 327 url = request->url_chain().back(); |
| 327 } | 328 } |
| 328 } | 329 } |
| 329 | 330 |
| 330 DownloadController::DownloadInfoAndroid::~DownloadInfoAndroid() {} | 331 DownloadController::DownloadInfoAndroid::~DownloadInfoAndroid() {} |
| 331 | 332 |
| 332 } // namespace content | 333 } // namespace content |
| OLD | NEW |