| 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_android_impl.h" | 5 #include "content/browser/android/download_controller_android_impl.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 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 } | 72 } |
| 73 } | 73 } |
| 74 | 74 |
| 75 // Initialize references to Java object. | 75 // Initialize references to Java object. |
| 76 void DownloadControllerAndroidImpl::Init(JNIEnv* env, jobject obj) { | 76 void DownloadControllerAndroidImpl::Init(JNIEnv* env, jobject obj) { |
| 77 java_object_ = new JavaObject; | 77 java_object_ = new JavaObject; |
| 78 java_object_->obj = env->NewWeakGlobalRef(obj); | 78 java_object_->obj = env->NewWeakGlobalRef(obj); |
| 79 } | 79 } |
| 80 | 80 |
| 81 void DownloadControllerAndroidImpl::CreateGETDownload( | 81 void DownloadControllerAndroidImpl::CreateGETDownload( |
| 82 RenderViewHost* render_view_host, | 82 int render_process_id, int render_view_id, int request_id) { |
| 83 int request_id) { | 83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 84 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
| 85 int render_process_id = render_view_host->GetProcess()->GetID(); | |
| 86 GlobalRequestID global_id(render_process_id, request_id); | 84 GlobalRequestID global_id(render_process_id, request_id); |
| 87 | 85 |
| 88 // We are yielding the UI thread and render_view_host may go away by | 86 // We are yielding the UI thread and render_view_host may go away by |
| 89 // the time we come back. Pass along render_process_id and render_view_id | 87 // the time we come back. Pass along render_process_id and render_view_id |
| 90 // to retrieve it later (if it still exists). | 88 // to retrieve it later (if it still exists). |
| 91 GetDownloadInfoCB cb = base::Bind( | 89 GetDownloadInfoCB cb = base::Bind( |
| 92 &DownloadControllerAndroidImpl::StartAndroidDownload, | 90 &DownloadControllerAndroidImpl::StartAndroidDownload, |
| 93 base::Unretained(this), render_process_id, | 91 base::Unretained(this), render_process_id, |
| 94 render_view_host->GetRoutingID()); | 92 render_view_id); |
| 95 BrowserThread::PostTask( | 93 |
| 96 BrowserThread::IO, FROM_HERE, | 94 PrepareDownloadInfo( |
| 97 base::Bind( | 95 global_id, |
| 98 &DownloadControllerAndroidImpl::PrepareDownloadInfo, | 96 base::Bind(&DownloadControllerAndroidImpl::StartDownloadOnUIThread, |
| 99 base::Unretained(this), global_id, | 97 base::Unretained(this), cb)); |
| 100 base::Bind(&DownloadControllerAndroidImpl::StartDownloadOnUIThread, | |
| 101 base::Unretained(this), cb))); | |
| 102 } | 98 } |
| 103 | 99 |
| 104 void DownloadControllerAndroidImpl::PrepareDownloadInfo( | 100 void DownloadControllerAndroidImpl::PrepareDownloadInfo( |
| 105 const GlobalRequestID& global_id, | 101 const GlobalRequestID& global_id, |
| 106 const GetDownloadInfoCB& callback) { | 102 const GetDownloadInfoCB& callback) { |
| 107 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 103 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 108 | 104 |
| 109 net::URLRequest* request = | 105 net::URLRequest* request = |
| 110 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); | 106 ResourceDispatcherHostImpl::Get()->GetURLRequest(global_id); |
| 111 if (!request) { | 107 if (!request) { |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 referer = referer_url.spec(); | 333 referer = referer_url.spec(); |
| 338 if (!request->url_chain().empty()) { | 334 if (!request->url_chain().empty()) { |
| 339 original_url = request->url_chain().front(); | 335 original_url = request->url_chain().front(); |
| 340 url = request->url_chain().back(); | 336 url = request->url_chain().back(); |
| 341 } | 337 } |
| 342 } | 338 } |
| 343 | 339 |
| 344 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {} | 340 DownloadControllerAndroidImpl::DownloadInfoAndroid::~DownloadInfoAndroid() {} |
| 345 | 341 |
| 346 } // namespace content | 342 } // namespace content |
| OLD | NEW |